Repository navigation
chore(pilot): pin the OMG pilot implementation to release 2026-09 (0.63.0) - #1529
Merged
Merged
Conversation
…63.0) Re-pins the OMG pilot to release 2026-09 / jupyter-sysml-kernel 0.63.0, re-provisions the corpora, grammars, Xpect suites and library XMI, syncs the vendored standard library (Flows.sysml and the 20260901 project stamps, the kpar fixtures with them) and re-records every oracle baseline at the new pin. The 2026-09 library publishes the Flows.sysml repair the errata overlay carried as Flows-46, Flows-99 and Flows-103, so those entries are retired. An alias member without a name (`alias for Base::exactlyOne;`), which AliasMember admits, now parses. 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)".
|
…usage constraints, baseline movements Documents the 2026-09 round of every oracle, retires the three Flows.sysml errata the published library now carries, adds the manifest rows for the pilot's validateConnectionDefinitionEndsAreUsages and validateFlowDefinitionEndsAreUsages, and moves every current-pin mention of 2026-08 / 0.62.0 in the README, docs and testing skills to 2026-09 / 0.63.0. Co-Authored-By: jason.han <hanhuijun@gmail.com>
…in the two flow diagnostics `flow-def-too-many-ends` and the flow usage typing diagnostic said "flow connection definition" and "flow connection", the SysML v2.0 names of FlowDefinition and FlowUsage; the 2026-09 pilot's Xpect suite declares the v2.1 wording (`A flow definition can have at most two ends.`, `A flow usage must be typed by flow definitions.`), so the four rows agree word-for-word again. Also records the census probes for the pilot's two new end-usage constraints, drops the retired Flows errata from the manifest, moves the Xpect suite census and the rejection skill counts to the 2026-09 figures, and regenerates the ontology table's provenance header at the new pin. Co-Authored-By: jason.han <hanhuijun@gmail.com>
The pilot's exporter now fails on the three metadata examples whose enumeration-valued bindings it evaluates (pilotFailed 56 → 59); the scorecard, root and gap-table figures move with the re-run. Co-Authored-By: jason.han <hanhuijun@gmail.com>
5 of 6 tasks
…2026-09 Co-Authored-By: jason.han <hanhuijun@gmail.com>
…26-09 Co-Authored-By: jason.han <hanhuijun@gmail.com> # Conflicts: # .agents/skills/testing-pilot-corpora-gate/SKILL.md # .agents/skills/testing-pilot-differential/SKILL.md # .agents/skills/testing-pilot-execution-referee/SKILL.md # .agents/skills/testing-pilot-xpect/SKILL.md # README.md # docs/internals/architecture.md # docs/project/adjudications.md # docs/project/api-json-differential-baseline.json # docs/project/api-json-differential.md # docs/project/pilot-differential-baseline.json # docs/project/pilot-differential.md # docs/project/pilot-xpect-baseline.json # docs/project/pilot-xpect.md # docs/project/spec-compliance.md # docs/project/validation-constraints.md # internal/workspace/libs/stdlib.snapshot
Regenerates the stdlib snapshot, the pilot differential, Xpect, rejection, API JSON differential, validation-census, grammar-coverage and metaclass-map baselines on the merged tree and restates the documents and skills that carry their figures. Co-Authored-By: jason.han <hanhuijun@gmail.com>
This was referenced Oct 26, 2026
6 tasks done
Contributor
Author
There was a problem hiding this comment.
🔍 Devin Review: 1 flag
Not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)
…2026-09 pin Co-Authored-By: jason.han <hanhuijun@gmail.com>
…rol-node notes Co-Authored-By: jason.han <hanhuijun@gmail.com>
…and control-node-keyword rows Co-Authored-By: jason.han <hanhuijun@gmail.com>
Co-Authored-By: jason.han <hanhuijun@gmail.com> # Conflicts: # docs/project/spec-compliance.md # docs/project/validation-constraints.md
…develop 9618afa Co-Authored-By: jason.han <hanhuijun@gmail.com>
6 tasks done
…ded baseline Co-Authored-By: jason.han <hanhuijun@gmail.com>
This was referenced Oct 26, 2026
fix(tools): score the pilot's JVM-dependent api-json values in a pilot-nondeterministic column
#1555
Merged
Co-Authored-By: jason.han <hanhuijun@gmail.com> # Conflicts: # docs/project/api-json-differential-baseline.json # docs/project/api-json-differential.md
…ed7728 The API-JSON differential is re-recorded with the canonicalized referee, which scores FeatureChainExpression.featuringType in the pilot-nondeterministic column; the grammar-coverage baseline re-measures the parser-fixture root develop grew. Co-Authored-By: jason.han <hanhuijun@gmail.com>
6 tasks done
…oduces at 2026-09 Co-Authored-By: jason.han <hanhuijun@gmail.com>
Merged
6 tasks done
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
Pins the OMG pilot implementation to release 2026-09 (
jupyter-sysml-kernel0.63.0; pilot38665073bbf02849bd309b106eba79cbb3a1ee1d, releaseb7a6b77000c9136f8f24822fc9d2cb237c76267f), re-provisions every pinned artifact at that pin, syncs the vendored standard library and the kpar fixtures, re-records every oracle baseline and moves every current-pin mention of2026-08/0.62.0in the README, docs and testing skills — the same file set as the 2026-08 bump.What moved upstream between 2026-08 and 2026-09
27 pilot commits. Of note:
validateConnectionDefinitionEndsAreUsagesandvalidateFlowDefinitionEndsAreUsages(217 → 219 constraints), andSystems Library/Flows.sysmlis repaired in the same change —Messageandmessagesownend occurrence source/targetusages redefiningTransfer::source/target,messagesbecomes anactionrather than amessage, plus a doc-comment typo fix. That is exactly the repair the errata overlay carried asFlows-46,Flows-99andFlows-103.FlowConnectionUsage_Invalid→FlowUsage_Invalidand reword its four messages to the SysML v2.1 names (A flow definition can have at most two ends.,A flow usage must be typed by flow definitions.); three suites are new (MultiplicityAlias_valid.kerml.xt,ConnectionUsage_End_Invalid.sysml.xt,FlowUsage_End_Invalid.sysml.xt).1.1.0-dev.20260801/2.1.0-dev.20260801→…20260901; the only library text change isFlows.sysml. The three Xtext grammars are byte-identical between the two tags (fetched at both commits and diffed), so the anonymous-alias form the new Xpect suite exercises was always grammar-admitted;SysML.ecore(20250201) andSysMLv1Tov2.xmidid not move either.Standard-library sync
internal/workspace/libs/stdlibis byte-identical to the release'ssysml.libraryagain: ten.project.jsonstamps andSystems Library/Flows.sysml(the upstream repair), snapshot regenerated (make stdlib-snapshot && make stdlib-snapshot-check). Per-file movement against develop: no new rows, no moved rows; three removed rows — the errata entriesFlows-46,Flows-99,Flows-103(registry 16 → 13 entries, 9 → 6 corrections) and the matchingvalidationStdlibCorrectionsrows ofinternal/workspace/model, whose gates (TestStdlibCorrectionsAreAccountedFor,TestStdlibValidationCorrectionsClearTheirFindings) now hold over an empty correction list.tests/kpar/testdata/omgcarries the ten…20260901.kpararchives.Two small code changes the pin surfaced
internal/syntax/parser/namespace.go):alias for Base::exactlyOne;—AliasMember'smemberNameis optional inKerML.xtext— was rejected with"for" is a reserved keyword; the pilot's newMultiplicityAlias_valid.kerml.xtdeclares it clean. Golden fixturetests/parser/testdata/parse/kerml_anonymous_alias.kerml.flow-def-too-many-endsand the flow usage-typing diagnostic said "flow connection definition" / "flow connection" (the v2.0 names ofFlowDefinition/FlowUsage); they now say what the pilot's Xpect rows declare, so those four rows agree word-for-word as before the rename.Oracle baselines — every movement and its adjudication
pilot-diffBound features should have conforming typeson ten enumeration-valued metadata bindings in its ownMetadata Examples/{Requirement,Risk,Verification}MetadataExample.sysml(totalRisk = high;withRiskLevelEnum :> RiskLevel,kind = (test,demo);withkind : VerificationMethodKind) — the literal's enumeration is the attribute's type or specializes it, so the bindings conform and silence is right:sysml-examplesfully agreeing 88 → 85, only-pilot 0 → 10.examples/self-model/document.sysml:403draws one more pilotDuplicate of inherited member name 'result'row (17 → 18, the reference's inherited-resultcascade,unmapped):examplesonly-pilot 61 → 62. Errata 16 → 13 / 9 → 6 as above.pilot-xpectMultiplicityAlias_valid(agrees after the alias fix),ConnectionUsage_End_InvalidandFlowUsage_End_Invalid(agree word-for-word). The four rewordedFlowUsage_Invalidrows agree word-for-word after the wording change. Suite census testtools/referee/xpect/w5c_census_test.gomoved to 304 + 128 files,errors463 /noErrors277 line notes.pilot-rejectsemantic/connection-def-end-not-usage.sysmlandsemantic/flow-def-end-not-usage.sysmlmove ours-only → both-reject: the pilot now implements the check ourW10BEndKindPassalready reported.validation-censusvalidateConnectionDefinitionEndsAreUsages/validateFlowDefinitionEndsAreUsages→connection-def-end-not-usage/flow-def-end-not-usage, with probes undertools/census/validation/testdata/probes/. The manifest's errata list drops the three Flows entries.grammar-coveragestdlib31227 → 31233 lines (Flows.sysml),parser-fixtures268 → 286 files (develop's fixtures added since the 2026-10-20 recording pluskerml_anonymous_alias.kerml),tests/testdata30 → 40 files,examples9653 → 9656 lines,spec-examples6344 → 6242 lines (the extraction fix3a9186342landed after that recording; the PDFs are unchanged).grammar-metaclass-mapKerML.xtext26 → 27 agree,SysML.xtext35 → 36: the two productions the 2026-08 jar exposed no reflective metaclass for (no-reflective-metaclass2 → 0) resolve against the 0.63.0 jar and agree with their assigned metaclass.pilot-apijson-diffElement.eResource()null) on the same threeMetadata Examples/*MetadataExample.sysmlfiles whose enumeration-valued bindings it evaluates — pilotFailed 56 → 59 (52 spec examples, 4 fixtures, these 3), sosysml-examplesmatched 26739 → 26536 and the headline moves with those three files. Scorecard rows 11730 → 11728; the launch-ready gap table indocs/project/api-json-differential.mdis re-stated from the baseline (its gated test passes). Nothing of ours changed.transformation-census-check -require-xmipasses unchanged (SysMLv1Tov2.xmidid not move).pssm-referee-checkpasses, bucket counts unchanged (the PSSM suite is not pinned to the pilot).ontologytableSysML.ecore20250201 unchanged: 415 properties / 175 classes, only the provenance header moves.Corpus gates:
TestTrainingExamples,TestPilotCorpora,TestSpecExamples(withOPENSYSML_REQUIRE_*set),TestPilotLibraryXMIandTestStdlibConformancepass with no per-file movement;tests/kparpasses over the 20260901 archives. The spec-example fixtures' digest moves only because each fixture header records the release tag — the two PDFs they are extracted from are byte-identical.Re-merges against develop
Develop was merged twice, each time once as a merge commit (no rebase, no force-push, no empty commits), and every baseline and derived document this PR records was regenerated on the merged tree with the same
-check→ read the diff →-updatediscipline.First re-merge, develop
ab1a9cf9a(after #1484, #1477, #1502, #1524 and #1523 landed): every conflict (the four testing skills, README, architecture, adjudications, the API-JSON / differential / Xpect baselines and their documents, spec-compliance, validation-constraints,stdlib.snapshot) was resolved by taking develop's current file and regenerating on the merged tree, then re-applying this PR's pin edits. Against develop's file and this PR's previous head4713bf893:stdlib.snapshotregenerated over develop's extension-library pin5c5deea6d(scripts/sync-extension-libraries.shin sync);pilot-differential-baseline.json521 → 518 fully agreeing, 359 → 359 only ours, 2450 → 2461 only pilot (pilot-side rows unchanged from this PR's adjudication; the only-ours drop 366 → 359 and fully agreeing +4 are develop's #1484, which withdrewpart-usage-part-definition);pilot-xpect-baseline.json1296/33 → 1299/30 agree/disagree (the +3 are develop's #1484,noErrors265 → 266 of 277);pilot-rejection-baseline.json337/12 → 339/10 (this PR's movement only);api-json-differential-baseline.json92658 → 92455 matched, pilotFailed 56 → 59 (the pin's part is the three metadata examples the 0.63.0 exporter fails on; the rest, 91667 → 92455 against the previous head, is develop's #1477/#1502 corpus growth); constraint manifest 217 → 219; grammar baselines re-measured (metaclass map agree 61 → 63); ontology table and Python metamodel provenance header only.Second re-merge, develop
9618afae5then0286c9845(after #1537, #1536, #1539, #1534, #1538, #1542, #1541, #1544, then #1547, #1546, #1545 landed). The only conflicts weredocs/project/spec-compliance.mdanddocs/project/validation-constraints.md, where #1536's Beta 2 constraint-name rows met this PR's end-usage row and pin wording: #1536's rows and formal names are kept as develop has them, this PR's 2026-09 / 0.63.0 mentions and its end-usage row are kept, and the derived census lines were rewritten byvalidation-census/doc-countsrather than by hand. The second merge (0286c9845) touched no oracle input — README, docs, the MDK Java plugin and the release-digest hygiene test — so every-checkwas re-run on that head and nothing moved. Each re-recorded artifact against develop's file and against this PR's previous head9ca600a59, by category:0286c98459ca600a59pilot-differential-baseline.jsonexamplesevidence-root digest, which develop moved (its own re-record over the grownexamples/) and this run reproducespilot-xpect-baseline.json/pilot-xpect.mdpilot-rejection-baseline.jsonapi-json-differential-baseline.json/.mdsysml-examplesrow re-stated from the baselinescorecard.FeatureChainExpression.featuringType284/230 → 287/227,pilot-examplesoursMissing 312072 → 312075 / absentBoth 577330 → 577327,unkeyedReferences111955 → 111958 (totals follow); plus develop'sexamplesdigestconstraint-manifest.json/validation-constraints.mdspec-compliance.mdFlows.sysmlcarries the repair) and the pilot's 2026-09 wording in the flow-ends row (A flow definition can have at most two ends.); no § number touchedgrammar-coverage-baseline.jsonexamplesroot 287 → 288 files, 6716 → 6729 lines (develop's examples added since the previous recording); no production or evidence verdict movedgrammar-metaclass-map-baseline.jsonstdlib.snapshotsync-extension-libraries.shin sync) and the 2026-09 standard librarymake stdlib-snapshot-checkpassesdoc-countscurrent on the merged tree-checkcurrentpymetamodel -checkcurrentFinal re-merge, develop
1ed77285e(after #1550, #1551, #1553, #1554, #1555, #1556, #1557 and #1558 landed). The only conflicts weredocs/project/api-json-differential-baseline.jsonanddocs/project/api-json-differential.md, where #1555's canonicalized referee (the declaredpilotNondeterminismlist and the seventh, pilot-nondeterministic scorecard column) met this PR's re-record at 2026-09: develop's two files were taken whole, the baseline was then re-recorded on the merged tree with the canonicalized referee, and the document's pin wording, headline,pilotFailedsentence and five root rows were re-stated from that baseline (the declared-nondeterminism section is develop's, plus one sentence recording that the disagreement reproduces at 2026-09).spec-compliance.mdandvalidation-constraints.mdmerged clean — the rows #1550, #1551, #1553 and #1554 added land beside this PR's — and every other-checkwas re-run on the merged tree. Each re-recorded artifact against develop's file and against this PR's previous pushed head9ca600a59, by category:1ed77285e9ca600a59api-json-differential-baseline.json/.mdFeatureChainExpression.featuringTyperow moves whole into the seventh column:[0, 0, 284, 0, 230, 0]→[0, 0, 0, 0, 0, 0, 514], so ours-missing 1074296 → 1074012 and absent-both 1973602 → 1973372 (−514 together), unkeyed references 111955 → 111949 (the row's six); every other row, root and total identicalgrammar-coverage-baseline.jsonparser-fixturesroot 287 → 290 files, 6716 → 6751 lines (develop's fixtures from #1551 and #1558); no production or evidence verdict movedpilot-differential-baseline.jsonexamplesevidence-root digest develop moved-checkreproduces, no row movedpilot-xpect-baseline.json,pilot-rejection-baseline.json,grammar-metaclass-map-baseline.jsonno-reflective-metaclassproductions resolve against the 0.63.0 jar)-checkreproducesconstraint-manifest.json/validation-constraints.md/spec-compliance.mdstdlib.snapshot, ontology table, Python metamodel, doc-counts figures-checkcurrent on the merged treeAPI-JSON nondeterminism. The three-element
FeatureChainExpression.featuringTypeflip this PR documented against its earlier heads (284/230 ↔ 287/227 between ours-missing and absent-both, reproduced by this PR's own runs, by develop's history and by develop's nightlyoracle-reproduction) is the row #1555 declares intools/referee/apijson/nondeterminism.go; the canonicalized referee scores every comparison of that row pilot-nondeterministic, so the re-recorded baseline reproduces on every JVM and-checkno longer depends on the exporter's phase. The disagreement still reproduces at 2026-09, so the declaration stays, and the document says so.Gates on the final head (
1ed77285emerged):go build,go vet,gofmt -l .empty;pilot-diff/pilot-xpect/pilot-reject/pilot-apijson-diff/validation-census -require-jar/transformation-census -require-xmi/pssm-referee-checkall pass;grammar-coverageandgrammar-metaclass-mapreproduce their baselines byte for byte; corpus gates withOPENSYSML_REQUIRE_*set,TestPilotLibraryXMI,TestStdlibConformance,make stdlib-snapshot-check,pymetamodel -checkpass;make test-quick,go test -C tools ./...andgo test ./...(full run,-timeout 0) pass;doc-counts -check, doc ids/links and the changelog check are clean.Specification PDFs
The four specification PDFs under the release's
doc/(1-Kernel_Modeling_Language,2a-OMG_Systems_Modeling_Language,2b-SysML_v1_to_v2_Transformation,3-Systems_Modeling_API_and_Services) have identical blob ids at 2026-08 and 2026-09, so the clause numbersdocs/project/spec-compliance.mdcites do not move; that file's § numbers are left to #1526 — only its pin mentions, the end-usage row and the flow-ends row's quoted pilot wording change here; #1536's Beta 2 constraint-name rows are carried as develop has them.Specification basis
The alias fix implements
KerML.xtextAliasMember: … 'alias' ( '<' declaredShortName '>' )? declaredName? 'for' …(KerML 1.0 §8.2.3.4.3); the wording change follows the SysML v2.1 names ofFlowDefinition/FlowUsage. No compliance row moves.How it was verified
go build ./...,go vet ./...,gofmt -l .(empty),go test ./...(full run,-timeout 0: 122 packages ok, 0 failed;cmd/sysmlandtests/codegenexceed the 10-minute default under parallel load on this machine, as they did before this PR);go test -C tools ./...passes.go run -C tools ./cmd/doc-counts -check,python3 scripts/check-doc-ids.py,python3 scripts/check-doc-links.py,python3 scripts/changelog.py checkall clean.-checkrun first, the movement read from the diff, then-update; the table above is that reading.Checklist
make testandmake lintpass locallychanges/unreleased/<slug>.<section>.md, not as an edit toCHANGELOG.mdmake docs-countsrun if a gate count moved (compliance rows need nothing: the census is counted at docs build)F4,K5) in the body, docs, or changelog