Repository navigation
chore(release): bring develop's post-cut changes into 0.10.0 - #1024
Merged
Merged
Conversation
Co-Authored-By: jason.han <hanhuijun@gmail.com>
…urce spelling Co-Authored-By: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com>
A branch stating its source twice, in either spelling, was read from the first value alone, so a second source beside the member before it was dropped. Every stated source must be the member before it. Co-Authored-By: jason.han <hanhuijun@gmail.com>
… term A source spelled as a literal with the preceding member's IRI text passed the branch check and was dropped; the check now compares the complete term. Co-Authored-By: jason.han <hanhuijun@gmail.com>
Whole, the package took 31-57 minutes under -race on the CI runners, straddling its 55-minute per-package limit. The conformance-corpus-wide suites (exploration, check/explore agreement, witness replay, execution conformance and its policies) take about half of that, so they run as the runtime-corpus shard and the rest of the package as the runtime shard. The coverage merge collapses the blocks the two shards share. Co-Authored-By: jason.han <hanhuijun@gmail.com>
The merge now runs scripts/dedupe-coverage.py, which the job had no checkout for. Co-Authored-By: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com>
…n asked Run is now Listen then Serve. Listen binds the five channels and returns the connection they are bound on: a TCP channel whose port is 0 takes a free port and the connection reports it, while a port given is bound as given, so a connection file keeps naming the ports Jupyter chose. The kernel's tests used to reserve five free ports, release them and have the kernel bind them later; another process on a busy CI runner could take one in between, the kernel's Run failed, and the test then waited minutes on a dial nothing answered. The tests now bind on port 0 and dial the ports Listen reports, and a kernel that cannot bind fails the test at once. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…s, refuse a second Listen Listen now returns an error while a binding is still unserved, so a repeated call cannot replace the first binding's stop before failing on its ports. The channels close once their context ends, whether or not Serve is called, so a kernel that was only listened on releases its ports; Serve shares the same single close. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…documents and %views Co-Authored-By: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com>
* feat(cli): list a model's documents, views and diagrams with -list, %documents and %views Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(cli): refuse -list with -import flags and with -html-default-css Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
…te grammars gengrammar now also writes editors/jupyterlab/src/syntax.json, the keyword, constant, contextual-word and operator tables the JupyterLab tokenizer reads, from the same lexer keyword lists as the VS Code grammars; the multi-character operators the grammars match come from one list too. A test holds the committed table to the generator's output, as it does the grammars. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…ng for JupyterLab 4 and Notebook 7 A prebuilt JupyterLab extension under editors/jupyterlab registers the sysml (text/x-sysml, .sysml) and kerml (text/x-kerml, .kerml) CodeMirror 6 languages with a StreamLanguage tokenizer driven by the generated syntax table: keywords and contextual words, line and block comments, doc and comment bodies, strings with escapes, numbers, unrestricted and qualified names, operators and punctuation, and a cell's leading kernel command. The kernel reports codemirror_mode sysml, and a test holds its language_info to what the extension registers. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…d the sdist make jupyterlab-build puts the extension's build in client/jupyter-kernel/ labextension/, and setup.py installs it as shared data under share/jupyter/labextensions/jupyterlab-opensysml in the platform wheels, the pure wheel and the sdist, refusing to build any of them without it; the sdist still carries no kernel. build-jupyter-kernel-dist.sh builds the extension once before the distributions and checks all six carry the same bundle; the CircleCI job runs on the Node variant of the Python image and checks the installed wheel registered the extension, the nightly installs jupyterlab before the build, and the hygiene tests pin all of it. A jupyterlab area in the pull-request workflow tests and builds the extension, check_version --editors reads its manifest, and the docs describe what pip now ships. Co-Authored-By: jason.han <hanhuijun@gmail.com>
The Jupyter highlight style leaves the namespace tag uncolored, so ScalarValues in ScalarValues::Real looked like any other name; the segments before :: now take the special-name tag the style colors. Co-Authored-By: jason.han <hanhuijun@gmail.com>
An unquoted :all: makes the workflow file invalid YAML, so no check of the pull-request workflow could start. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…mmand plain The lexer reads //* as a multiline note, so the CodeMirror tokenizer and the TextMate grammars now carry it to the closing */ instead of ending it at the line. A block comment that closes mid-line also marks the line as occupied, so a % token after it is no longer a meta-command. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…t version jupyter labextension list reports the manifest's version, so the nightly stamps editors/jupyterlab with the snapshot's npm version before the kernel distributions are built and checks the wheel's labextension carries it. Co-Authored-By: jason.han <hanhuijun@gmail.com>
* ci: run internal/exec/runtime as two race shards split by test name Whole, the package took 31-57 minutes under -race on the CI runners, straddling its 55-minute per-package limit. The conformance-corpus-wide suites (exploration, check/explore agreement, witness replay, execution conformance and its policies) take about half of that, so they run as the runtime-corpus shard and the rest of the package as the runtime shard. The coverage merge collapses the blocks the two shards share. Co-Authored-By: jason.han <hanhuijun@gmail.com> * ci: check the tree out before merging the race shards' profiles The merge now runs scripts/dedupe-coverage.py, which the job had no checkout for. Co-Authored-By: jason.han <hanhuijun@gmail.com> * ci: shorten the runtime shard comments to two lines Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
* fix(jupyter): bind the kernel's channels in Listen, on free ports when asked Run is now Listen then Serve. Listen binds the five channels and returns the connection they are bound on: a TCP channel whose port is 0 takes a free port and the connection reports it, while a port given is bound as given, so a connection file keeps naming the ports Jupyter chose. The kernel's tests used to reserve five free ports, release them and have the kernel bind them later; another process on a busy CI runner could take one in between, the kernel's Run failed, and the test then waited minutes on a dial nothing answered. The tests now bind on port 0 and dial the ports Listen reports, and a kernel that cannot bind fails the test at once. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(jupyter): close a listened kernel's channels when its context ends, refuse a second Listen Listen now returns an error while a binding is still unserved, so a repeated call cannot replace the first binding's stop before failing on its ports. The channels close once their context ends, whether or not Serve is called, so a kernel that was only listened on releases its ports; Serve shares the same single close. Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
* fix(export): refuse a decision branch that states a trigger Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(export): check a decision branch's source through either sysml:source spelling Co-Authored-By: jason.han <hanhuijun@gmail.com> * docs(export): record the decision branches the RDF decoder refuses Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(export): refuse a decision branch stating a second source A branch stating its source twice, in either spelling, was read from the first value alone, so a second source beside the member before it was dropped. Every stated source must be the member before it. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(export): compare a decision branch's stated source as a whole RDF term A source spelled as a literal with the preceding member's IRI text passed the branch check and was dropped; the check now compares the complete term. Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
…ghting * feat(editors): generate the CodeMirror syntax table beside the TextMate grammars gengrammar now also writes editors/jupyterlab/src/syntax.json, the keyword, constant, contextual-word and operator tables the JupyterLab tokenizer reads, from the same lexer keyword lists as the VS Code grammars; the multi-character operators the grammars match come from one list too. A test holds the committed table to the generator's output, as it does the grammars. Co-Authored-By: jason.han <hanhuijun@gmail.com> * feat(jupyterlab): jupyterlab-opensysml, SysML v2 and KerML highlighting for JupyterLab 4 and Notebook 7 A prebuilt JupyterLab extension under editors/jupyterlab registers the sysml (text/x-sysml, .sysml) and kerml (text/x-kerml, .kerml) CodeMirror 6 languages with a StreamLanguage tokenizer driven by the generated syntax table: keywords and contextual words, line and block comments, doc and comment bodies, strings with escapes, numbers, unrestricted and qualified names, operators and punctuation, and a cell's leading kernel command. The kernel reports codemirror_mode sysml, and a test holds its language_info to what the extension registers. Co-Authored-By: jason.han <hanhuijun@gmail.com> * feat(jupyter): ship the JupyterLab extension in every kernel wheel and the sdist make jupyterlab-build puts the extension's build in client/jupyter-kernel/ labextension/, and setup.py installs it as shared data under share/jupyter/labextensions/jupyterlab-opensysml in the platform wheels, the pure wheel and the sdist, refusing to build any of them without it; the sdist still carries no kernel. build-jupyter-kernel-dist.sh builds the extension once before the distributions and checks all six carry the same bundle; the CircleCI job runs on the Node variant of the Python image and checks the installed wheel registered the extension, the nightly installs jupyterlab before the build, and the hygiene tests pin all of it. A jupyterlab area in the pull-request workflow tests and builds the extension, check_version --editors reads its manifest, and the docs describe what pip now ships. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(jupyterlab): color the qualifying segments of a qualified name The Jupyter highlight style leaves the namespace tag uncolored, so ScalarValues in ScalarValues::Real looked like any other name; the segments before :: now take the special-name tag the style colors. Co-Authored-By: jason.han <hanhuijun@gmail.com> * ci: quote the --only-binary argument of the JupyterLab install step An unquoted :all: makes the workflow file invalid YAML, so no check of the pull-request workflow could start. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(editors): highlight //* notes to their */ and keep a mid-line %command plain The lexer reads //* as a multiline note, so the CodeMirror tokenizer and the TextMate grammars now carry it to the closing */ instead of ending it at the line. A block comment that closes mid-line also marks the line as occupied, so a % token after it is no longer a meta-command. Co-Authored-By: jason.han <hanhuijun@gmail.com> * ci(nightly): stamp the JupyterLab extension manifest with the snapshot version jupyter labextension list reports the manifest's version, so the nightly stamps editors/jupyterlab with the snapshot's npm version before the kernel distributions are built and checks the wheel's labextension carries it. Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
%viz [--view=<VIEW>] [--style=<STYLE>...] [<form>] <name> [<name>...] renders several named elements in one diagram through the pseudo-view path, in the kind --view names or, by default, the kind the elements call for (view.Renderer.DefaultKind). The pilot's directions set the rendering direction; its styles no form here draws are accepted and noted as not drawn. The Jupyter kernel shows a %viz cell with no form as Mermaid and, where Graphviz is installed, as SVG drawn from DOT. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…efault Viz to text - DefaultKind: a structural usage whose only connection is a feature bound by its value to another feature (attribute reading = second.y) is an interconnection, as the interconnection renderer draws that binding as an edge. - Completion: a --view or --style value typed in lower or upper case is offered in that case, so the candidate begins with the typed word and the prompt inserts it in place. - Session.Viz with no form and no fallback renders as text instead of panicking. - A form named after --style PUMLCODE is refused naming the style, as the reverse order already was. Co-Authored-By: jason.han <hanhuijun@gmail.com>
* feat(repl): draw named elements on demand with the pilot kernel's %viz %viz [--view=<VIEW>] [--style=<STYLE>...] [<form>] <name> [<name>...] renders several named elements in one diagram through the pseudo-view path, in the kind --view names or, by default, the kind the elements call for (view.Renderer.DefaultKind). The pilot's directions set the rendering direction; its styles no form here draws are accepted and noted as not drawn. The Jupyter kernel shows a %viz cell with no form as Mermaid and, where Graphviz is installed, as SVG drawn from DOT. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(repl): draw value bindings, keep typed case in %viz completion, default Viz to text - DefaultKind: a structural usage whose only connection is a feature bound by its value to another feature (attribute reading = second.y) is an interconnection, as the interconnection renderer draws that binding as an edge. - Completion: a --view or --style value typed in lower or upper case is offered in that case, so the candidate begins with the typed word and the prompt inserts it in place. - Session.Viz with no form and no fallback renders as text instead of panicking. - A form named after --style PUMLCODE is refused naming the style, as the reverse order already was. Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
A path ending in .ipynb loads the notebook's code cells in order, each a source named '<notebook> cell <n>', for what they declare: % command lines and bare expressions are skipped and counted in the report. --cells picks cells by position or tag, a cell tagged skip-load is never loaded, and a notebook written for another kernel language or in another nbformat is refused. Notebooks are collected beside .sysml and .kerml files by directory and pattern expansion, so the sysml command line loads them too. Co-Authored-By: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com>
The compiled calc tier held each scalar in 56 bytes and, for every parameter, local and result, boxed it back into the evaluator's constant to decide whether the declaration holds it, building the diagnostic a refusal would name whether or not one followed. A scalar is now the constant packed into 24 bytes (semantics.Packed), unpacked without allocating; which kinds a declaration holds whatever the value is decided once at compile time; the diagnostic is built only on refusal; and the step charge inlines into every node. Results, promotions, refusals, error messages and step counts are unchanged. Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
IsStateActivity, IsBaseThat and IsOccurrenceThis asked for a target's fully-qualified name on every feature-chain read to compare it against a known name; they now match the owner chain segment by segment with symbols.HasFQN, so a conformant body allocates nothing for the question. Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
The REPL, Jupyter and CLI additions, the decision-branch and kernel-port fixes, the runtime shard split and the six performance changes landed on develop after release/0.10.0 merged; their fragments now sit under 0.10.0 with the rest. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…was cut The JupyterLab extension's manifest and lock take the core version check_version.py --editors expects, releasing.md lists the manifest among the editors' lockstep surfaces, and the editors' and Java references name 0.10.0 where they still named 0.9.2. Co-Authored-By: jason.han <hanhuijun@gmail.com>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
An «ItemFlow» whose source and target are the parts on the realizing connector's ends, the blocks typing them, or the connector's owner at its own port — as Cameo writes a flow drawn between parts — now flows between the ports those ends name instead of being left as a comment. lower: a view, viewpoint, rendering or metadata member of a state def is not state content, so a usage typed by it inherits past it instead of failing to lower, which left migrated state diagrams empty. Co-Authored-By: jason.han <hanhuijun@gmail.com>
A repository or notebook command given wrong arguments returns its usage as a *UsageError, whose Error() is only the first line; the terminal loop printed that line alone, leaving out the line saying what was wrong, while the Jupyter kernel's traceback showed both. The loop now prints every line the error holds, the first under the error prefix as before. Co-Authored-By: jason.han <hanhuijun@gmail.com>
HuiJun
marked this pull request as ready for review
October 9, 2026 11:40
…tate rendering Direction audits of migrated item flows against the source XMI, the pre-change-binary negative control for lowering fixes, and the positioned-view pitfalls (-render-unplaced strip, -graphs) that make an empty state graph look like a placement issue or vice versa. Co-Authored-By: jason.han <hanhuijun@gmail.com>
… given a direction Two same-typed parts at same-typed ports let a flow from the block to the port type stand for either end; only the ends' roles may then tell them apart, and when they cannot the flow is left as a comment instead of taking the connector's end order. lower: a parallel state def's views, viewpoints, renderings and metadata are no regions, so a usage typed by it lowers as an ordinary one does. Co-Authored-By: jason.han <hanhuijun@gmail.com>
… branch read honest A next-page link to another host, port or plaintext is refused like a redirect there instead of being followed with the token; the repository URL the environment supplies is held to the plaintext rule before any request; a branch read before its first commit is still checked for a head that appeared since; and %publish by name resolves the project the session loaded by id, so a namesake no longer makes the name ambiguous. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…flow-block-ends * migrate: find item flow ends through the parts and blocks a tool names An «ItemFlow» whose source and target are the parts on the realizing connector's ends, the blocks typing them, or the connector's owner at its own port — as Cameo writes a flow drawn between parts — now flows between the ports those ends name instead of being left as a comment. lower: a view, viewpoint, rendering or metadata member of a state def is not state content, so a usage typed by it inherits past it instead of failing to lower, which left migrated state diagrams empty. Co-Authored-By: jason.han <hanhuijun@gmail.com> * migrate: an item flow whose ends stand for both connector ends is not given a direction Two same-typed parts at same-typed ports let a flow from the block to the port type stand for either end; only the ends' roles may then tell them apart, and when they cannot the flow is left as a comment instead of taking the connector's end order. lower: a parallel state def's views, viewpoints, renderings and metadata are no regions, so a usage typed by it lowers as an ordinary one does. Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
…ion-rendering * skills: testing-sysml-repl covers v1 migration audits and inherited-state rendering Direction audits of migrated item flows against the source XMI, the pre-change-binary negative control for lowering fixes, and the positioned-view pitfalls (-render-unplaced strip, -graphs) that make an empty state graph look like a placement issue or vice versa. Co-Authored-By: jason.han <hanhuijun@gmail.com> * ci: rerun Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com>
…till names so A tracked project renamed or deleted on the server no longer answers to the requested name, so the publish falls back to resolving the name afresh under the ambiguity rules instead of committing into the renamed project or creating a new one over its namesake. Co-Authored-By: jason.han <hanhuijun@gmail.com>
* fix(sysmlapi): keep the bearer token on the configured server and the branch read honest A next-page link to another host, port or plaintext is refused like a redirect there instead of being followed with the token; the repository URL the environment supplies is held to the plaintext rule before any request; a branch read before its first commit is still checked for a head that appeared since; and %publish by name resolves the project the session loaded by id, so a namesake no longer makes the name ambiguous. Co-Authored-By: jason.han <hanhuijun@gmail.com> * fix(sysmlapi): publish by name only through a tracked id the server still names so A tracked project renamed or deleted on the server no longer answers to the requested name, so the publish falls back to resolving the name afresh under the ambiguity rules instead of committing into the renamed project or creating a new one over its namesake. Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
…rror-lines * fix(repl): print every line of a usage error at the prompt A repository or notebook command given wrong arguments returns its usage as a *UsageError, whose Error() is only the first line; the terminal loop printed that line alone, leaving out the line saying what was wrong, while the Jupyter kernel's traceback showed both. The loop now prints every line the error holds, the first under the error prefix as before. Co-Authored-By: jason.han <hanhuijun@gmail.com> * refactor(repl): keep usage-error comments to two lines Co-Authored-By: jason.han <hanhuijun@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: jason.han <hanhuijun@gmail.com>
…0.10.0 The item-flow endpoint and state-def view fixes to the SysML v1 migrator, the terminal prompt's full usage errors, and the SysML v2 API client's token, branch-head and publish-by-id corrections landed on develop after the previous fold; their fragments now sit under 0.10.0 with the rest. Co-Authored-By: jason.han <hanhuijun@gmail.com>
5 of 6 tasks
4 of 6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
release/0.10.0merged tomainbeforedevelopfinished landing the work the maintainers chose for 0.10.0. This hotfix, cut frommain, mergesdevelop(d681851) into the release tree so the tag carries it, and folds the fragments those changes added into the already-dated## 0.10.0section ofCHANGELOG.md, as a hotfix onmainmust.What it brings over, by merge into
develop:-list/%documents/%views(feat(cli): list a model's documents, views and diagrams with -list, %documents and %views #1012), JupyterLab syntax highlighting (feat(jupyter): SysML syntax highlighting in JupyterLab 4 and Notebook 7, shipped in the pip package #1003),%viz(feat(repl): draw named elements on demand with the pilot kernel's %viz #1000), notebook%load(feat(repl): load the SysML code cells of a Jupyter notebook with %load #1004), the SysML v2 API repository commands%repo/%projects/%load/%publish(feat(repl): repository commands %repo, %projects, %load and %publish over the SysML v2 API #1005).%publishby name reaching the project loaded by id (fix(sysmlapi): keep the bearer token on the configured server and the branch read honest #1029).The hotfix's own commits: the two
developmerges, the two changelog folds, and the version bump of the surfacesdevelopadded since the cut —editors/jupyterlab/package.json(+ lock) to 0.10.0, and the0.9.2mentions ineditors/README.md,docs/reference/java-api.mdand the Java agent skill that the release cut missed.How it was verified
On the merged tree (82f0fac):
gofmt -l .(empty),go build ./...,go vet ./...,make lint;go test -race -count=1 -timeout 60m ./...withOPENSYSML_REQUIRE_TRAINING_CORPUS,OPENSYSML_REQUIRE_PILOT_CORPORA,OPENSYSML_REQUIRE_PILOT_LIBRARY_XMIandOPENSYSML_REQUIRE_PSSM_SUITEset (all packages ok);go test -run TestStdlibConformance ./internal/workspace/libs;make proto-breaking BUF_BREAKING_REF=origin/main;python3 scripts/changelog.py check,scripts/check-doc-ids.py,scripts/check-doc-links.py,make docs-check;CIRCLE_TAG=v0.10.0 client/python/scripts/check_version.py --editors→ 0.10.0; Python client suite 1454 passed. The kernel wheel was built with the CircleCI step commands and installed into a clean virtualenv: the JupyterLab extension registers at 0.10.0, and the CLI listing,%documents/%views,%viz, notebook%loadand the repository usage errors behave as documented at the prompt and in the kernel.The release rehearsal (
release_rehearsal=true) is to be re-run onmainafter this merges and before the tag.Checklist
make testandmake lintpass locallychanges/unreleased/<slug>.<section>.md, not as an edit toCHANGELOG.md— a hotfix folds the fragments into the dated section insteadmake docs-countsrun if a gate count moved (none moved)F4,K5) in the body, docs, or changelogLink to Devin session: https://nasa-jpl-demo.devinenterprise.com/sessions/3db6a090aa214667b2a66d372c6e36b1
Open in Devin Desktop: https://nasa-jpl-demo.devinenterprise.com/desktop/session/3db6a090aa214667b2a66d372c6e36b1?variant=devin
Requested by: @HuiJun