Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
192 commits
Select commit Hold shift + click to select a range
896d355
fix(lower): perform inherited action steps and inherit step multiplicity
devin-ai-integration[bot] Oct 2, 2026
7d444a7
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 2, 2026
0b89e14
fix(lower): prefer owned action successions when merging inheritance
devin-ai-integration[bot] Oct 2, 2026
e8c2e78
feat(runtime): execute repeated steps in block flows, part performs, …
devin-ai-integration[bot] Oct 2, 2026
b6e2cae
test(parser): add parse goldens for repeated steps in loop bodies and…
devin-ai-integration[bot] Oct 2, 2026
1b0a8c9
fix(runtime): give each repeated part performance its own occurrence
devin-ai-integration[bot] Oct 2, 2026
d7aa314
fix(runtime): merge typed action bodies without forwarding writes pas…
devin-ai-integration[bot] Oct 2, 2026
38a960f
docs(changelog): describe inherited action steps from the user's side
devin-ai-integration[bot] Oct 2, 2026
c371570
feat(runtime): execute repeated steps adjacent to control nodes and g…
devin-ai-integration[bot] Oct 2, 2026
b136561
fix(runtime): observe change-trigger conditions at every feature write
devin-ai-integration[bot] Oct 2, 2026
d045c9d
feat(lower,runtime): run effects and pseudostate routes of transition…
devin-ai-integration[bot] Oct 2, 2026
7e1a828
test(runtime): admit both composite-entry interleavings
devin-ai-integration[bot] Oct 2, 2026
defa001
docs(changelog): name inherited-step examples without probe labels
devin-ai-integration[bot] Oct 2, 2026
e3b0aea
feat(smt): encode exact repeated action steps
devin-ai-integration[bot] Oct 2, 2026
17b0c65
test(parser): add parse golden for a guarded succession's written tar…
devin-ai-integration[bot] Oct 2, 2026
0b6beaa
fix(smt): refuse the repeated-step shapes CheckStep refuses
devin-ai-integration[bot] Oct 2, 2026
0c8dda8
docs(project): record repeated-step coverage in the semantic oracle a…
devin-ai-integration[bot] Oct 2, 2026
5b15750
fix(lower): bound typed-body merging of actions nested in their own type
devin-ai-integration[bot] Oct 2, 2026
b4eeb7a
fix(ast): encode the written target end of a succession through the c…
devin-ai-integration[bot] Oct 2, 2026
b938fe8
docs(states): derive entry-transition effects and write-granular chan…
devin-ai-integration[bot] Oct 2, 2026
73dcd6d
fix(export): carry a guarded succession's written target end
devin-ai-integration[bot] Oct 2, 2026
e74b1a9
refactor(lower): remove dead code flagged by staticcheck
devin-ai-integration[bot] Oct 2, 2026
68fea83
fix(check): keep the accepter-source diagnostic for a triggered trans…
devin-ai-integration[bot] Oct 2, 2026
82a9904
docs(states): name the accepter rule for a triggered transition out o…
devin-ai-integration[bot] Oct 2, 2026
9984eae
fix(runtime): credit a synchronization to the token whose try perform…
devin-ai-integration[bot] Oct 2, 2026
9bed268
fix(smt): spend a move on a repeated step's split
devin-ai-integration[bot] Oct 2, 2026
a75f494
chore(workspace): regenerate the stdlib snapshot for the succession t…
devin-ai-integration[bot] Oct 2, 2026
4d5eb10
fix(runtime): perform every target of several successions out of an o…
devin-ai-integration[bot] Oct 3, 2026
3556c2c
Merge remote-tracking branch 'origin/develop' into fix/succession-fan…
devin-ai-integration[bot] Oct 3, 2026
0692e61
docs(skills): note fan-out CLI checks in the REPL testing skill
devin-ai-integration[bot] Oct 3, 2026
0be6afc
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 3, 2026
13ca61f
fix(lower): fix a control node's count to a repeated step's only wher…
devin-ai-integration[bot] Oct 3, 2026
40784aa
fix(exec): report repeated steps in block bodies as observed rather t…
devin-ai-integration[bot] Oct 3, 2026
280647c
docs(project): derive control-node and block-body repeated-step seman…
devin-ai-integration[bot] Oct 3, 2026
028fa48
chore(ci): re-run checks after a transient Reference-FMUs download fa…
devin-ai-integration[bot] Oct 3, 2026
1a94509
fix(runtime): read entry-route junctions before the entry effect, kee…
devin-ai-integration[bot] Oct 3, 2026
1f83547
refactor(runtime): drop the dead choice branch from defaultEntryRoute…
devin-ai-integration[bot] Oct 3, 2026
68b1876
fix(lower): read an unwritten control node's count as one unless its …
devin-ai-integration[bot] Oct 3, 2026
861a436
docs(project): describe the one-performance reading for unwritten nod…
devin-ai-integration[bot] Oct 3, 2026
68038a5
fix(lower): thread the resolver into block flows and refuse clock wai…
devin-ai-integration[bot] Oct 3, 2026
3d70265
Merge remote-tracking branch 'origin/develop' into fix/state-machine-…
devin-ai-integration[bot] Oct 3, 2026
6c75505
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 3, 2026
b274b0f
test(conformance): pin the merge per-performance exploration budget
devin-ai-integration[bot] Oct 3, 2026
8258d4c
fix(smt): keep the token's identity when one succession out of an ord…
devin-ai-integration[bot] Oct 3, 2026
5dbdd03
refactor(lower): group succession edge lowering fields
devin-ai-integration[bot] Oct 3, 2026
4da614e
test(smt): keep the one-guard fan-out referee case within the solver …
devin-ai-integration[bot] Oct 3, 2026
3defde1
Merge branch 'develop' into feat/repeated-step-coverage
devin-ai-integration[bot] Oct 3, 2026
9c9a7ff
fix(runtime): read a nested default entry's junction when its entry t…
devin-ai-integration[bot] Oct 3, 2026
174a894
test(runtime): make the outer-effect entry junction fixture discrimin…
devin-ai-integration[bot] Oct 3, 2026
208fd8c
docs(states): state the outer-effect entry junction fixture without r…
devin-ai-integration[bot] Oct 3, 2026
4b7de41
test(smt): restore the false-guard writer and give its referee case a…
devin-ai-integration[bot] Oct 3, 2026
ddf1f71
fix(smt): land a fork's token pending at a repeated target so its spl…
devin-ai-integration[bot] Oct 3, 2026
9b23742
fix(runtime): capture coverage notes in snapshots and fold them durin…
devin-ai-integration[bot] Oct 3, 2026
8386c65
fix(exec): prune a literal-false succession into a single performance…
devin-ai-integration[bot] Oct 3, 2026
a52b1a6
fix(exec): return every direct behavior match so repeated performance…
devin-ai-integration[bot] Oct 3, 2026
563c516
docs(project): note the pending fork landing at a repeated target and…
devin-ai-integration[bot] Oct 3, 2026
ba5eeea
Merge remote-tracking branch 'origin/develop' into feat/repeated-step…
devin-ai-integration[bot] Oct 3, 2026
6c336f8
Merge remote-tracking branch 'origin/develop' into feat/repeated-step…
devin-ai-integration[bot] Oct 3, 2026
95c1c27
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 3, 2026
27af513
Merge remote-tracking branch 'origin/develop' into fix/succession-fan…
devin-ai-integration[bot] Oct 3, 2026
b1c1d21
merge(develop): integrate ba598d4a
devin-ai-integration[bot] Oct 3, 2026
308d6a6
fix(ir): preserve inherited assertions and pin bindings
devin-ai-integration[bot] Oct 3, 2026
65e6405
fix(lower): preserve unchecked inherited assertions
devin-ai-integration[bot] Oct 3, 2026
a3e6b18
fix(lower): carry ordered assertions through action inheritance
devin-ai-integration[bot] Oct 3, 2026
89015cf
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 3, 2026
a6754f9
Merge origin/develop
devin-ai-integration[bot] Oct 3, 2026
cf69161
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 3, 2026
579c4f1
Merge remote-tracking branch 'origin/develop' into fix/state-machine-…
devin-ai-integration[bot] Oct 3, 2026
a950917
Merge remote-tracking branch 'origin/develop' into feat/repeated-step…
devin-ai-integration[bot] Oct 3, 2026
8bafcaa
fix(runtime): sequence nested typed action output reads
devin-ai-integration[bot] Oct 3, 2026
393eb33
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 3, 2026
82ab7bc
fix(lower): preserve inherited succession flow gates
devin-ai-integration[bot] Oct 3, 2026
c0ae1f3
Merge remote-tracking branch 'origin/develop' into feat/repeated-step…
devin-ai-integration[bot] Oct 3, 2026
9a56d8d
fix(lower): let a specialization's own flows connect inherited steps
devin-ai-integration[bot] Oct 3, 2026
aeae45b
fix(lower): resolve inherited gates in their declaring scope
devin-ai-integration[bot] Oct 3, 2026
53401b1
Merge remote-tracking branch 'origin/develop' into fix/succession-fan…
devin-ai-integration[bot] Oct 3, 2026
abaeabf
test(lower): sequence inherited action fixture steps
devin-ai-integration[bot] Oct 3, 2026
526dd0d
Merge remote-tracking branch 'origin/develop' into feat/repeated-step…
devin-ai-integration[bot] Oct 3, 2026
6adea4d
feat(libs): pin and sync the vendored extension libraries from OpenSy…
devin-ai-integration[bot] Oct 4, 2026
928d62a
test(libs): hold the runtime registry and bound names to engine-contr…
devin-ai-integration[bot] Oct 4, 2026
c5aa23d
ci,docs: extension-libraries drift check, advisory upstream workflow,…
devin-ai-integration[bot] Oct 4, 2026
f499baf
fix(contract): re-pick extensions pin; reject duplicate manifest entr…
devin-ai-integration[bot] Oct 4, 2026
0f33df3
docs: exclude the extension-libraries engineering record from the bui…
devin-ai-integration[bot] Oct 4, 2026
7a0eda4
fix(libs): refuse an upstream without engine-contract.json; test the …
devin-ai-integration[bot] Oct 4, 2026
d8e3469
chore: retrigger pull request checks
devin-ai-integration[bot] Oct 4, 2026
d33fcb8
Merge branch 'develop' into feature/pinned-extension-libraries
devin-ai-integration[bot] Oct 4, 2026
265c440
chore(libs): pin the extension libraries to the merged Extensions-Lib…
devin-ai-integration[bot] Oct 4, 2026
e2c82c9
Merge branch 'develop' into feature/pinned-extension-libraries
devin-ai-integration[bot] Oct 4, 2026
734d3fc
chore: retrigger pull request checks
devin-ai-integration[bot] Oct 4, 2026
53516ef
Merge branch 'develop' into feature/pinned-extension-libraries
devin-ai-integration[bot] Oct 4, 2026
b75c1dd
Merge remote-tracking branch 'origin/develop' into fix/succession-fan…
devin-ai-integration[bot] Oct 5, 2026
ab39491
Merge remote-tracking branch 'origin/develop' into fix/state-machine-…
devin-ai-integration[bot] Oct 5, 2026
c6090f9
Merge remote-tracking branch 'origin/develop' into fix/inherited-acti…
devin-ai-integration[bot] Oct 5, 2026
5f60c40
fix(lower): retain inherited case-step lowering
devin-ai-integration[bot] Oct 5, 2026
1cbef30
Merge remote-tracking branch 'origin/develop' into feat/repeated-step…
devin-ai-integration[bot] Oct 6, 2026
d9a7dbf
test(runtime): state every interleaving of a repeated step's unordere…
devin-ai-integration[bot] Oct 6, 2026
0a10cad
Merge branch 'develop' into feature/pinned-extension-libraries
devin-ai-integration[bot] Oct 6, 2026
c1e99ab
Merge remote-tracking branch 'origin/fix/body-feature-value-bindings'…
devin-ai-integration[bot] Oct 8, 2026
386b7d5
Merge remote-tracking branch 'origin/fix/succession-fan-out' into fix…
devin-ai-integration[bot] Oct 8, 2026
3dfbdb7
fix(runtime): keep change-condition read sets across snapshot restore
devin-ai-integration[bot] Oct 8, 2026
41fc64a
Merge remote-tracking branch 'origin/fix/state-machine-semantics' int…
devin-ai-integration[bot] Oct 8, 2026
c139caf
fix(lower): let a specialization's pin binding replace the inherited one
devin-ai-integration[bot] Oct 8, 2026
fc1245e
test(runtime): order the typed-node output read with then in state_bl…
devin-ai-integration[bot] Oct 8, 2026
30b9425
fix(client): restore generated Java protobuf sources byte-for-byte
devin-ai-integration[bot] Oct 8, 2026
bc8bf9a
Merge remote-tracking branch 'origin/fix/inherited-action-steps' into…
devin-ai-integration[bot] Oct 8, 2026
f800aff
test(check): expect open order for a repeated step in an unordered in…
devin-ai-integration[bot] Oct 8, 2026
5dbda12
fix(parser): read a guarded succession's written target end through t…
devin-ai-integration[bot] Oct 8, 2026
399921a
test(semantics): expect both guarded-succession spellings as transiti…
devin-ai-integration[bot] Oct 8, 2026
b3e922c
test(smt): expect the inherited repeated-step count to encode
devin-ai-integration[bot] Oct 8, 2026
888a763
fix(lower): keep a differently guarded inherited succession alongside…
devin-ai-integration[bot] Oct 8, 2026
3517c76
chore(changes): drop fragment for a fix that never shipped
devin-ai-integration[bot] Oct 8, 2026
6da4b65
fix(smt): let a fork honour a repeated step's pending gate
devin-ai-integration[bot] Oct 8, 2026
e9d8d90
fix(runtime): report open order for a false guard into an inherited r…
devin-ai-integration[bot] Oct 8, 2026
c20671d
fix(runtime): bound a performed action's performance count
devin-ai-integration[bot] Oct 8, 2026
0b1fe31
style: shorten new test comments to the house limit
devin-ai-integration[bot] Oct 8, 2026
a9256ae
Merge remote-tracking branch 'origin/fix/inherited-action-steps' into…
devin-ai-integration[bot] Oct 8, 2026
9d25656
fix(lower): keep an inherited succession whose ends carry multiplicities
devin-ai-integration[bot] Oct 8, 2026
a5dbc9d
fix(lower): deduplicate a restated succession by its ends' ranges
devin-ai-integration[bot] Oct 8, 2026
848b53e
fix(libs): qualify the SI magnetic dipole moment units through the er…
devin-ai-integration[bot] Oct 9, 2026
491b43f
test(model): shorten the hidden-name correction comments
devin-ai-integration[bot] Oct 9, 2026
70c9701
docs(project): record the imported-collision constraint as approximate
devin-ai-integration[bot] Oct 9, 2026
909de94
docs(project): record the approximate status in the validation-census…
devin-ai-integration[bot] Oct 9, 2026
9c22c3b
feat(migrate): a strict migration refers to no OpenSysML library
devin-ai-integration[bot] Oct 9, 2026
af562a2
fix(migrate): a strict probability note reaches an edge whose guard i…
devin-ai-integration[bot] Oct 9, 2026
3f39a59
test(migrate): a strict probability note reaches an edge whose guard …
devin-ai-integration[bot] Oct 9, 2026
e31e283
fix(migrate): a strict else branch negates the choice's other guards;…
devin-ai-integration[bot] Oct 9, 2026
6903ad0
fix(migrate): a strict else negates only the guards of transitions st…
devin-ai-integration[bot] Oct 9, 2026
a2398c7
feat(migrate): use case diagrams draw actor associations, includes, e…
devin-ai-integration[bot] Oct 9, 2026
ddd3091
test(migrate): pin the vehicle report counts a refine written as a co…
devin-ai-integration[bot] Oct 9, 2026
42b5485
Merge pull request #1020 from Open-MBEE/fix/isq-magnetic-dipole-momen…
HuiJun Oct 9, 2026
5599812
Merge remote-tracking branch 'origin/develop' into feature/pinned-ext…
devin-ai-integration[bot] Oct 9, 2026
338d4b3
Merge remote-tracking branch 'origin/develop' into fix/succession-fan…
devin-ai-integration[bot] Oct 9, 2026
1abf553
build(libs): pin the extension libraries to the develop sync branch
devin-ai-integration[bot] Oct 9, 2026
2d091f7
Merge remote-tracking branch 'origin/fix/succession-fan-out' into fix…
devin-ai-integration[bot] Oct 9, 2026
afa0b31
fix(migrate): a «Refine» with several ends is a connection per pair; …
devin-ai-integration[bot] Oct 9, 2026
489b49d
Merge remote-tracking branch 'origin/fix/state-machine-semantics' int…
devin-ai-integration[bot] Oct 9, 2026
eeb1bf9
feat(migrate): -portable appends the OpenSysML library packages the o…
devin-ai-integration[bot] Oct 9, 2026
64d4cfc
chore(migrate): drop the unused topLevelNamed helper
devin-ai-integration[bot] Oct 9, 2026
2e7b76e
fix(cli): -portable is a migration flag, refused without -migrate
devin-ai-integration[bot] Oct 9, 2026
52c989f
Merge remote-tracking branch 'origin/fix/inherited-action-steps' into…
devin-ai-integration[bot] Oct 9, 2026
6a435f1
fix(cli): the v1 migration feature lists -portable among its flags; r…
devin-ai-integration[bot] Oct 9, 2026
f6c1381
feat(migrate): actors and use cases are usages; use case connections …
devin-ai-integration[bot] Oct 9, 2026
4f1b6e6
fix(migrate): named relationship connections keep their kind as doc; …
devin-ai-integration[bot] Oct 10, 2026
88fd1eb
Merge pull request #837 from Open-MBEE/fix/succession-fan-out
HuiJun Oct 10, 2026
66ea4c9
fix(migrate): classifier tables list actors and use cases by name; ce…
devin-ai-integration[bot] Oct 10, 2026
5c97cbd
wip: untyped property kind
devin-ai-integration[bot] Oct 10, 2026
f64be24
fix(migrate): an Actor or UseCase table over a model without them lis…
devin-ai-integration[bot] Oct 10, 2026
da5dd3e
fix(migrate): an empty Actor or UseCase table lists the empty sequenc…
devin-ai-integration[bot] Oct 10, 2026
d1bf839
build(libs): pin the extension libraries to OpenSysML-Extensions-Libr…
devin-ai-integration[bot] Oct 10, 2026
83a7824
Merge pull request #1032 from Open-MBEE/fix/strict-migration-self-con…
HuiJun Oct 10, 2026
4242ff7
fix(migrate): an untyped property follows its tool's kind marker; unm…
devin-ai-integration[bot] Oct 10, 2026
e65d811
fix(stdlib): pin the extension libraries with library package declara…
devin-ai-integration[bot] Oct 10, 2026
56aa7e1
chore(oracle): re-record the pilot differential baseline for the libr…
devin-ai-integration[bot] Oct 10, 2026
a3aade5
fix(runtime): observe writes of behaviors a store starts after the store
devin-ai-integration[bot] Oct 10, 2026
8f27bac
fix(runtime): terminate the machine at an entry route's terminate action
devin-ai-integration[bot] Oct 10, 2026
37c9337
fix(migrate): a slot of an untyped part is typed by its individual in…
devin-ai-integration[bot] Oct 10, 2026
91f9d38
fix(runtime): restore change trigger state on store rollback
devin-ai-integration[bot] Oct 10, 2026
3e71505
fix(runtime): stop region entry after termination
devin-ai-integration[bot] Oct 10, 2026
1888dee
fix(migrate): a slot of an untyped part is checked against the type t…
devin-ai-integration[bot] Oct 10, 2026
bc1bace
refactor(runtime): journal change-trigger bookkeeping per transition
devin-ai-integration[bot] Oct 10, 2026
404a6af
fix(migrate): a slot of an untyped part is checked against every type…
devin-ai-integration[bot] Oct 10, 2026
df6dc88
feat(migrate): a v1 requirement is a requirement usage; satisfy, veri…
devin-ai-integration[bot] Oct 10, 2026
645df3d
feat(verify): bind the in parameters of a constraint or requirement a…
devin-ai-integration[bot] Oct 10, 2026
a1cb301
fix(migrate): a named satisfy or verify subsetting a requirement usag…
devin-ai-integration[bot] Oct 10, 2026
ee32612
chore(client): order Rust capability imports for rustfmt; keep the Py…
devin-ai-integration[bot] Oct 10, 2026
a3ee5eb
fix(semantics): a declaring satisfy or verify relates its subject to …
devin-ai-integration[bot] Oct 10, 2026
d070d92
fix(runtime): keep a renamed inherited input's slot and default when …
devin-ai-integration[bot] Oct 10, 2026
2b8a231
fix(matlab): send verification namedArguments given as a containers.Map
devin-ai-integration[bot] Oct 10, 2026
792474f
Merge pull request #1033 from Open-MBEE/feat/use-case-connections
HuiJun Oct 10, 2026
02db635
Merge pull request #833 from Open-MBEE/fix/state-machine-semantics
HuiJun Oct 10, 2026
1909536
Merge pull request #1036 from Open-MBEE/feature/verify-arguments
HuiJun Oct 10, 2026
2d46044
Merge remote-tracking branch 'origin/develop' into fix/untyped-proper…
devin-ai-integration[bot] Oct 10, 2026
baea625
fix(lower): find an action step's symbol through the scope's declarat…
devin-ai-integration[bot] Oct 10, 2026
c8da68c
fix(lower): keep the binding of inherited pins on bodied typed usages
devin-ai-integration[bot] Oct 10, 2026
fa8f501
fix(lower): keep inherited successions whose end multiplicities differ
devin-ai-integration[bot] Oct 10, 2026
7747327
test(runtime): cover inherited content in composite redefining steps
devin-ai-integration[bot] Oct 10, 2026
54ec475
Merge remote-tracking branch 'origin/fix/inherited-action-steps' into…
devin-ai-integration[bot] Oct 10, 2026
d7148a1
Merge pull request #830 from Open-MBEE/fix/inherited-action-steps
HuiJun Oct 10, 2026
d860787
Merge pull request #1035 from Open-MBEE/fix/untyped-property-kind
HuiJun Oct 10, 2026
09396c9
Merge pull request #1038 from Open-MBEE/fix/action-step-symbol-lookup
HuiJun Oct 10, 2026
9cce728
docs(readme): name the REDK as the second-generation Model Developmen…
devin-ai-integration[bot] Oct 10, 2026
fac80dd
build(libs): pin the extension libraries to OpenSysML-Extensions-Libr…
devin-ai-integration[bot] Oct 10, 2026
c6e4a51
Merge remote-tracking branch 'origin/develop' into feature/pinned-ext…
devin-ai-integration[bot] Oct 10, 2026
4465363
Merge pull request #1040 from Open-MBEE/docs/readme-mdk2
HuiJun Oct 10, 2026
bc3333c
Merge pull request #834 from Open-MBEE/feat/repeated-step-coverage
HuiJun Oct 10, 2026
64524ad
Merge remote-tracking branch 'origin/develop' into feature/pinned-ext…
devin-ai-integration[bot] Oct 10, 2026
bc2ee83
ci(docs): pin pymdown-extensions and take mkdocstrings 1.0.7
devin-ai-integration[bot] Oct 10, 2026
4ea7100
ci(docs): keep mkdocstrings 1.0.6 and pin pymdown-extensions to 12.1
devin-ai-integration[bot] Oct 10, 2026
b3e3218
Merge pull request #1055 from Open-MBEE/fix/docs-toolchain-mkdocstrings
HuiJun Oct 10, 2026
9c8962b
Merge remote-tracking branch 'origin/develop' into feature/pinned-ext…
devin-ai-integration[bot] Oct 10, 2026
b5b381d
Merge pull request #881 from Open-MBEE/feature/pinned-extension-libra…
HuiJun Oct 10, 2026
4a6466b
chore(release): bring develop's extension libraries and documentation…
devin-ai-integration[bot] Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 25 additions & 4 deletions .agents/skills/testing-sysml-repl/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -1151,6 +1151,27 @@ changes:
`unresolved reference: n`; the CLI has **no** flag for action inputs, so exercise `in`/`out`
parameters by having a caller action invoke `action call = Callee(a = 3, b = 4);`.

## Action fan-out CLI checks

- Use explicit succession syntax in minimal repros: `succession a then done;`
or `first a then done;`. A bare `a then done;` inside an action body can be
rejected as `expected a body member` before execution; do not mistake that
diagnostic for a runtime fan-out refusal.
- The default scheduler is `reverse`, not `declared`. Compare explicit
`-schedule declared` with `-schedule reverse`; a no-flag run normally agrees
with reverse.
- `-engine smt -action <name>` asks whether execution holds, not for the table
of final values. Use `-engine smt -action <name> -check-diverge <feature>` to
request two witnessed final values. `-engine check` and `-schedule explore`
expose outcomes directly. SMT may explicitly refuse an implicit join at a
plain node, whereas the runtime supports it; use an explicit join for a
cross-engine scheduling comparison.
- Bound adversarial loops with `OPENSYSML_MAX_ACTION_STEPS=200`, and wrap the
command with `timeout 30`. Assert the step-limit diagnostic and exit 2,
not watchdog exit 124. Report CLI diagnostics separately from Go error
identity: the CLI does not expose `errors.Is`, and static merge/join
validation may prevent reaching the runtime guard.

## Control flow inside an action node body

`while`, `loop … until` (braced and unbraced), `for … in` and `if`/`else` execute inside an
Expand Down Expand Up @@ -4139,10 +4160,10 @@ Traps and recipes:
- Error wordings to assert: non-Boolean guard →
`error: execution failed: type mismatch: node s1: guard must evaluate to boolean, got constant`;
unresolvable name in a guard → `error: execution failed: eval guard of node s1: unresolved
reference: nosuch`. Two guards out of one action node that both hold →
`error: execution failed: more than one succession is enabled: action node check has multiple
successors` (wraps the `ErrAmbiguousSuccession` sentinel; the run stops with the token still on the
node and neither branch's attribute written — assert that with `%tokens`, not just the message).
reference: nosuch`. Two guards out of one ordinary action node that both hold are no error: each
succession is its own `HappensBefore` link, so the token splits as a fork's does and both branch
attributes are written (assert both in `Results:`). Only a `decide` node picks one of several
holding guards; a `join` or `merge` with two outgoing successions is still refused.
- Places a guard could still be silently ignored, all worth a one-liner fixture: succession out of a
real initial node (`then start s1 if …;`), out of a `merge`, out of a `join` (must not deadlock —
the branch tokens are consumed either way), and one whose target is `done`.
Expand Down
66 changes: 33 additions & 33 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ executors:
# It carries Node LTS, 24 or later, which the gate needs.
- image: cimg/go:1.25-node
resource_class: medium

python-executor:
docker:
- image: cimg/python:3.11
Expand Down Expand Up @@ -1047,7 +1047,7 @@ jobs:
executor: python-executor
steps:
- checkout

- attach_workspace:
at: .

Expand All @@ -1070,7 +1070,7 @@ jobs:
mkdir -p ~/.opensysml/bin
cp bin/sysml-grpc ~/.opensysml/bin/
chmod +x ~/.opensysml/bin/sysml-grpc

- run:
name: Install Python client
command: |
Expand All @@ -1083,7 +1083,7 @@ jobs:
# its wheels with python -m build.
pip install --only-binary :all: jupyter_client==8.10.0 build==1.6.1
make jupyter-kernel-install

# The integration tests connect to a service on the standard port with
# auto_start=False, which is the explicit opt-in to one the client does not
# manage; without it they skip, exercising nothing, so one runs here for
Expand Down Expand Up @@ -2251,66 +2251,66 @@ jobs:
- go/load-cache
- go/mod-download
- go/save-cache

- run:
name: Build release binaries
command: |
VERSION=${CIRCLE_TAG}
COMMIT=${CIRCLE_SHA1}
BUILD_TIME=$(date -u '+%Y-%m-%d_%H:%M:%S')
GO_VERSION=$(go version | awk '{print $3}')

# Build for multiple platforms using make
mkdir -p dist

GOOS=linux GOARCH=amd64 make build-sysml VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml dist/sysml-linux-amd64

GOOS=linux GOARCH=arm64 make build-sysml VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml dist/sysml-linux-arm64

GOOS=darwin GOARCH=amd64 make build-sysml VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml dist/sysml-darwin-amd64

GOOS=darwin GOARCH=arm64 make build-sysml VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml dist/sysml-darwin-arm64

GOOS=windows GOARCH=amd64 make build-sysml VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml dist/sysml-windows-amd64.exe

GOOS=linux GOARCH=amd64 make build-lsp VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-lsp dist/sysml-lsp-linux-amd64

GOOS=linux GOARCH=arm64 make build-lsp VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-lsp dist/sysml-lsp-linux-arm64

GOOS=darwin GOARCH=amd64 make build-lsp VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-lsp dist/sysml-lsp-darwin-amd64

GOOS=darwin GOARCH=arm64 make build-lsp VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-lsp dist/sysml-lsp-darwin-arm64

GOOS=windows GOARCH=amd64 make build-lsp VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-lsp dist/sysml-lsp-windows-amd64.exe

# The gRPC service backs the Python client, which downloads one
# file per platform and verifies it against a .sha256 sidecar, so
# these are published raw rather than archived. They are built into
# a subdirectory to keep them out of the archive globs below.
mkdir -p dist/grpc

GOOS=linux GOARCH=amd64 make build-grpc VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-grpc dist/grpc/sysml-grpc-linux-amd64

GOOS=linux GOARCH=arm64 make build-grpc VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-grpc dist/grpc/sysml-grpc-linux-arm64

GOOS=darwin GOARCH=amd64 make build-grpc VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-grpc dist/grpc/sysml-grpc-darwin-amd64

GOOS=darwin GOARCH=arm64 make build-grpc VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-grpc dist/grpc/sysml-grpc-darwin-arm64

GOOS=windows GOARCH=amd64 make build-grpc VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/sysml-grpc dist/grpc/sysml-grpc-windows-amd64.exe

Expand Down Expand Up @@ -2345,7 +2345,7 @@ jobs:
mkdir -p dist/wasm
make build-release-wasm VERSION="$VERSION" COMMIT="$COMMIT" BUILD_TIME="$BUILD_TIME" GO_VERSION="$GO_VERSION"
mv bin/wasm/release/sysml-wasm.wasm bin/wasm/release/wasm_exec.js dist/wasm/

# Create tarballs
cd dist
for binary in sysml-*; do
Expand All @@ -2355,7 +2355,7 @@ jobs:
tar czf "${binary}.tar.gz" "$binary"
fi
done

# Bundle archives: both binaries under their plain names
# (sysml, sysml-lsp), which is the layout a Homebrew formula or a
# PATH install expects, with their manual pages beside them under
Expand All @@ -2376,7 +2376,7 @@ jobs:
cp sysml-lsp-windows-amd64.exe stage/windows-amd64/sysml-lsp.exe
(cd stage/windows-amd64 && zip -q ../../opensysml-windows-amd64.zip sysml.exe sysml-lsp.exe)
rm -rf stage

# The checksum manifest and the per-file sidecars are
# build-release's, once the Python distributions exist to list.
ls -l . grpc jupyter
Expand Down Expand Up @@ -2457,17 +2457,17 @@ jobs:
name: Assemble the release and write its checksum manifest
command: |
cd dist

# The opensysml wheel and sdist, released with the binaries they drive,
# and the jupyter-opensysml-kernel platform wheels and sdist likewise.
cp ../client/python/dist/opensysml-*.whl ../client/python/dist/opensysml-*.tar.gz .
cp ../client/jupyter-kernel/dist/jupyter_opensysml_kernel-*.whl \
../client/jupyter-kernel/dist/jupyter_opensysml_kernel-*.tar.gz .

# Checksums over every published archive, so a Homebrew formula
# (or a careful user) can verify a download.
sha256sum ./*.tar.gz ./*.zip ./*.whl | sed 's|\./||' > SHA256SUMS.txt

# Same for the raw gRPC binaries, through the per-file sidecars
# written beside them when they were built, the only checksum
# opensysml reads: checked against the bytes here, then folded in.
Expand Down Expand Up @@ -2623,7 +2623,7 @@ jobs:
<(jq -r '.dsseEnvelope.payload' provenance.intoto.json.bundle | base64 -d \
| jq -r '.subject[] | "\(.name) \(.digest.sha256)"' | sort)


- rehearsal-skip:
what: "cosign keyless signing and attestation (they write to the public Rekor log)"
- run:
Expand Down Expand Up @@ -3311,7 +3311,7 @@ jobs:
- rehearsal-tag
- attach_workspace:
at: .

- unless:
condition: << pipeline.parameters.release_rehearsal >>
steps:
Expand All @@ -3325,7 +3325,7 @@ jobs:
fi
echo "Publishing release $VERSION"
ls -la dist/

# Move only tarballs to a release directory
mkdir -p dist/release
mv dist/*.tar.gz dist/*.zip dist/release/ 2>/dev/null || true
Expand All @@ -3343,14 +3343,14 @@ jobs:
mv dist/provenance.intoto.json dist/provenance.intoto.json.bundle dist/release/
echo "Release artifacts:"
ls -la dist/release/

# Try different token variable names
TOKEN="${GITHUB_TOKEN:-${GH_TOKEN:-${CIRCLE_TOKEN}}}"
if [ -z "$TOKEN" ]; then
echo "Error: No GitHub token found. Tried GITHUB_TOKEN, GH_TOKEN, CIRCLE_TOKEN"
exit 1
fi

# '-replace' reuses an existing release and only re-uploads assets of
# the same name, so hand-written notes, title and prerelease/latest
# flags survive a re-run. Never '-delete': that is an alias of
Expand Down
97 changes: 97 additions & 0 deletions .github/workflows/extension-libraries-upstream.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Extension libraries upstream

# Advisory: does the extension-libraries upstream's ref still run under
# OpenSysML? It syncs the ref into the vendored directory and runs the whole
# suite. It is scheduled rather than a required check: it downloads from
# upstream and takes minutes, so a failure here surfaces what broke without
# blocking pull requests. It never pushes and never opens issues.
on:
schedule:
- cron: '41 4 * * *'
workflow_dispatch:
inputs:
ref:
description: 'Extension-libraries ref to sync (branch or tag)'
required: true
default: main

permissions:
contents: read

jobs:
upstream:
name: OpenSysML against upstream extension libraries
runs-on: ubuntu-latest
timeout-minutes: 120
env:
REF: ${{ inputs.ref || 'main' }}
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true

- name: Install Z3
run: |
sudo apt-get update
sudo apt-get install -y z3
z3 --version

- name: Install cvc5
run: |
curl -fsSL --proto '=https' --proto-redir '=https' -o /tmp/cvc5.zip \
https://github.com/cvc5/cvc5/releases/download/cvc5-1.3.4/cvc5-Linux-x86_64-static.zip
echo "dcdbfada0ce493ee98259c0816e0daafc561c223aadb3af298c2968e73ea39c6 /tmp/cvc5.zip" | sha256sum --check --strict
unzip -p /tmp/cvc5.zip '*/bin/cvc5' > /tmp/cvc5-bin
sudo install -m 0755 /tmp/cvc5-bin /usr/local/bin/cvc5
cvc5 --version | head -1

- name: Sync the upstream ref
id: sync
run: |
out="$(scripts/sync-extension-libraries.sh --ref "$REF" | tee /dev/stderr)"
sha="$(sed -n 's/^Resolved .* to \([0-9a-f]*\)$/\1/p' <<<"$out" | tail -1)"
{
echo "### Synced upstream \`$REF\` at \`$sha\`"
echo '```'
git status --porcelain -- "internal/workspace/libs/stdlib/OpenSysML Libraries/"
echo '```'
} >> "$GITHUB_STEP_SUMMARY"

- name: Check the library snapshot
id: snapshot
run: |
if make stdlib-snapshot-check; then
echo "Snapshot unchanged." >> "$GITHUB_STEP_SUMMARY"
else
echo "Snapshot regenerated for the synced libraries." >> "$GITHUB_STEP_SUMMARY"
make stdlib-snapshot
fi

- name: Run the test suite
id: tests
run: |
go test ./...
go test -C tools ./...

- name: Report the verdict
if: always()
run: |
if [ "${{ steps.tests.outcome }}" = "success" ]; then
echo "Upstream \`$REF\` runs clean under OpenSysML." >> "$GITHUB_STEP_SUMMARY"
else
{
echo "**Upstream \`$REF\` breaks OpenSysML.**"
echo ""
echo "| step | outcome |"
echo "| --- | --- |"
echo "| sync | ${{ steps.sync.outcome }} |"
echo "| snapshot | ${{ steps.snapshot.outcome }} |"
echo "| tests | ${{ steps.tests.outcome }} |"
} >> "$GITHUB_STEP_SUMMARY"
fi
git checkout -- "internal/workspace/libs/stdlib/OpenSysML Libraries/" 2>/dev/null || true
6 changes: 6 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@ jobs:
BASE_REF: ${{ github.base_ref }}
run: scripts/ci-changed-areas.sh "origin/$BASE_REF" HEAD | tee -a "$GITHUB_OUTPUT"

# The vendored copy is checked in this job, not static-and-integrity: the
# changed-areas filter may skip that job for a non-Go change, but drift
# between the vendored libraries and their pin must always fail.
- name: Check the vendored extension libraries against their pin
run: make extension-libraries-check

race-tests:
name: Go race tests (${{ matrix.shard }})
needs: changes
Expand Down
Loading
Loading