Nightly snapshot 2026-09-20 (nightly-20260920-b8dd0e0c8)
Pre-releaseDevelopment snapshot of develop, not a release. Built 2026-09-20 from b8dd0e0, 1175 commits after v0.8.1 (compare), by this workflow run. Every binary reports nightly-20260920-b8dd0e0c8.
The snapshot is replaced each night and is never the latest release; Homebrew, PyPI, npm and the Windows installer follow the stable line only. The snapshot page explains what it is, how to verify it and what to expect from it; the install guide covers the stable releases.
opensysml-sysml.vsix is the VS Code extension built from the same commit: code --install-extension opensysml-sysml.vsix, with a snapshot's sysml-lsp on your PATH or named by opensysml.server.path.
Verify a download against the signed manifest:
sha256sum -c --ignore-missing SHA256SUMS.txt
cosign verify-blob SHA256SUMS.txt --bundle SHA256SUMS.txt.bundle \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity https://github.com/Open-MBEE/OpenSysML/.github/workflows/nightly.yml@refs/heads/developUnreleased changes in this snapshot
One line per entry; the full text is under changes/unreleased/ and CHANGELOG.md at this commit.
Added
- The analysis libraries' conformance is measured, per package, by a runtime test.
- A design note on surface parity
- A persistent session in the public Go API.
- Diagram layout is written into the document that declares what holds it, across the workspace.
RelatedElementstraverses requirement derivation and refinement.- The VS Code diagram is open by default.
- The VS Code diagram moves a declaration when a node is dropped on another with Shift held.
- The VS Code diagram panel opens a document that declares several views intelligently, and can show several of them at once.
- The VS Code diagram panel draws in the pilot visualizer's style, and in colour, on request.
- A due
dostep against the dispatch due at the same instant is a recorded choice point. - Document queries read the objects a session holds.
- Document queries report which constraints and requirements hold.
- An exploration runs a behavior on an object nested inside an assembly, named by a path from a declaration.
-instantiategives its object to every explored run.- A service request names the performer of an action or state machine.
- The fUML test models are read and every activity is classified before any is translated.
- The fUML reference implementation's activity tests are provisioned as an oracle for the action executor.
- The fUML test activities referee the action executor.
- A document query over gRPC binds an object the service holds.
ApplyEditsedits a model of several documents as one atomic batch.- The Java client wraps every RPC the service offers.
- A design for scaling to very large models
- Documents typeset LaTeX mathematics, inline and displayed.
- The language server runs the behavior a diagram draws.
- The Windows installer now runs a setup wizard.
- A nightly snapshot of
developis published as the prereleasenightly. - The nightly snapshot ships the VS Code extension.
sysml-lspis declared to OpenCode.- Document queries express requirement coverage gaps.
- The order in which a state's regions are entered, exited and fired across is a recorded choice point.
- A design note on the order of orthogonal regions
- A satellite-network stress workload and its scaling record.
- The architecture self-model now shows the runtime from the inside.
- A fifth runtime-showcase model: a spacecraft downlink.
- A document query reads the state a session's objects are in and the trace their run recorded.
- The trace is a typed record the printer writes from.
- A manual page tells the query kinds apart.
- A continuous model runs by time-stepping.
- A model states its own odds.
- Monte Carlo runs.
terminateruns in an action.terminateends an occurrence, a state's behavior or the state machine.- Four graded requirements-traceability examples in the manual.
- A wide table in a PDF lands on landscape pages.
RelatedColumn(name, relationshipKind, direction, maxDepth, aggregate)projects the elements a relationship reaches from each row.- A satisfaction asserted by an object's type and found again in a validation scope is reported once.
- The SysML v1 migration writes behaviors that run.
- A send addressed to a parameter, pin or local of the sending action reaches the object it holds.
perform action x ::> part.action;andexit part.action;run on the part.- A run resolves its random draws under a policy.
- A «Probability» that names a property is a feature reference.
- Simulation run configurations migrate.
- The tool's results come across, and a harness compares them.
- An object is validated as a whole.
- A worked example of verdict queries.
Changed
checkno longer reports exhaustive where its moves leave a run out.- The Python, Node, Java and Rust clients moved from
clients/toclient/, beside the Go client. - A completion enabled by a region's entry stays a run-to-completion step of its own; the design that would have drawn its firing inside the entry front is closed without code.
DiagnosticandSeveritymoved frominternal/core/passesto the leaf packageinternal/core/diag.- The PDF document backend sits beside the renderer it drives.
- The refusal of a session object under exploration says what to name instead.
- A check's outcome carries the attributes the performing objects hold.
- An action executed on an object performing it runs that one performance.
- Conversions are driven from
internal/core/convert, not from the RDF mapping. - The conformance mode lives with the diagnostics it grades.
- Atomic file replacement lives with the other file-level primitives.
- Normative library ids are minted in
identityitself. - A symbol's source origin is read off the symbol.
- Quick-fix edits live with the diagnostics that carry them.
- Rename conflict checking lives with the rename edit.
- The fUML referee driver source lives under
scripts/fuml-driver/io/opensysml/fuml/. - The test-suite figures are counted from the tree when the documentation site is built, never committed.
- The RDF exporter no longer carries the engine model forms.
sysml -helpand the manual page list the options by task.- A mistyped flag prints the error, the synopsis and
Run 'sysml -help' for the options. %helpgroups every REPL command under a heading and wraps its description.- The simple name a qualified name ends in is computed in one place.
- Moved the validation packages to
internal/check. - Moved the document packages to
internal/doc. - Moved the execution packages to
internal/exec. - Moved the frontend packages to
internal/frontend. - Moved the semantic IR packages to
internal/ir. - Moved the semantic packages to
internal/semantic. - Moved the foundation and syntax packages to
internal/syntax. - Moved the translation packages to
internal/translate. - Moved the workspace packages to
internal/workspace. - The notation-text helpers moved from
internal/core/lexertointernal/core/source. - The migration and referee XMI readers now share one parser.
- The conversion between runtime values and the API's protobuf messages is its own package,
internal/protoconv. - Every failing PSSM test is attributed.
- The PSSM referee classifies a guard whose behavior acts on the model as having no translation.
- The Python client is released with the core, from the same
v*tag and at the same version. - Qualified-name rendering and declaration-body lookup each have one home.
- A state's inline
dobody is interrupted between its statements. - Runtime and gRPC robustness cases are registered per feature, not in one shared function.
- The runtime no longer imports the parser.
- The runtime selects call overloads through the semantic model, with the argument typing its caller installed.
- Sorted map keys come from the standard library.
- The declared errata overlay now covers the bundled standard library.
- The built binaries are about a quarter smaller.
- A symbol's declaring element is read through one method.
- Test-support packages live under
tests/. - The OMG corpus gates and the RDF round-trip ratchet move to
tests/corpus. - The gRPC conformance suite and the external-package tests move under
tests/. - The parser's black-box suites move to
tests/parser. - The repository root gains a
tests/tree for black-box test code and fixtures. - The counting gates and the remaining unreleased programs live in the tools module.
- The development tools are a nested Go module,
tools/. - The errata overlay is split from the registry.
- The referees live in the tools module.
- PDF headings and captions stay with what they introduce.
- A workspace copy of a library file rooted at the library's packages is the library, as it is for the RDF mapping.
- A file opened under a bundled library's own name no longer removes that library from the workspace when it is closed.
- The XMI element walker the PSSM referee reads its suite with is now its own package,
internal/xmi
Fixed
- Several completion transitions out of one state are one choice.
- A diagram panel left open across an extension update restored blank.
explorevaries the first run's choice points earliest first.- A fork may enter orthogonal regions that have no initial state.
- A transition into a history pseudostate restores the configuration it is leaving.
- The PSSM referee's translation no longer folds an initial transition's effect into the entry action of the state or region it starts.
- A join runs the effect of every transition into it.
- A join's segments fire with their own trigger's arguments, and a refused replay undoes them all.
- A junction with several enabled outgoing branches draws one of them as a choice point.
- An edit no longer re-derives every wildcard import in the workspace.
- Completion keeps its name table across edits.
- Semantic tokens index the text they were computed from.
- SysML v1 migration no longer copies opaque expressions whose cast multiplicity bounds or body-local connection/flow endpoints name members the model lacks, and treats declared connector-end names as in scope within their connector bodies.
- A body inside a nested definition no longer reaches the enclosing definition's features by their bare names.
- The nightly snapshot signs again.
- The nightly snapshot's release notes no longer break mid-sentence: GitHub renders a release body with hard line breaks, so each paragraph is written as one line.
- The nightly snapshot no longer falls back past the commit it was last built from when
develop's head is red: the walk for the newest green commit ends at the published snapshot, so a night with nothing newer green leaves the previous snapshot standing instead of publishing an older commit — or failing on one that predatesscripts/build-release-artifacts.sh, which is now skipped. - The pilot corpus downloader refuses to report success over an empty corpus.
- The PSSM referee's translation carries the values a test's constructor writes.
- A redefinition is masked along an alias path too.
- A segment leaving a junction or choice declared inside a composite state runs its effect after that state's entry.
- The npm platform packages and the nightly pipeline build statically linked binaries too.
- A document binding may name a nested usage in dot notation.
- A verification case is matched to a requirement by the declaration it names.
- The pandoc PDF engine no longer receives a
document-cssvariable. - A wide table in a PDF document stays within the page.
- A transition from a substate into the composite state enclosing it no longer restarts that state's default substate: the composite is already active, so it is not re-entered, and the body the substate left completes — a composite with no other region completes and its completion transition fires, a parallel owner waits for its other regions.
- A parallel region stood for by a stateless state needs no initial.
- Every witness
checkwrites replays. - XMI metadata attributes on stereotype applications are no longer emitted as stereotype tags.
Performance
- A workspace keeps its semantic model between edits and invalidates it per document.
- Resolving a name through a scope no longer rescans every anonymous member of that scope for implicit parameters.
- Checking
nsatisfy assertions no longer walks the modelntimes for verification cases.