Repository navigation
docs(compliance): key the validation rows to the Beta 2 constraint names and re-ground the state rows - #1536
Merged
Merged
Conversation
…mes and re-ground the state rows 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)".
|
…s and restore the region-exit row's PSSM source Co-Authored-By: jason.han <hanhuijun@gmail.com>
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
Documentation and manifest only; no runtime behaviour changes.
docs/project/constraint-manifest.json'sspecificationsblock now pins the KerML 1.1 Beta 2 and SysML v2.1 Beta 2 PDFs the pinned release ships (doc/1-Kernel_Modeling_Language.pdf,doc/2a-OMG_Systems_Modeling_Language.pdf, "Release 2026-07", SHA-256 recorded) instead of KerML 1.0formal/26-03-01/ SysML 2.0formal/26-03-02, andformal-constraints -updatere-derived everyspec.nameand spec-sourced row from those texts. The validation-rule rows ofdocs/project/spec-compliance.md(the four Xpect-suite sections and thevalidate*rows elsewhere) show the Beta 2 name first and the pilot validator's name second where they differ (validateFeatureEndMultiplicity(pilotvalidateFeatureEndFeatureMultiplicity), 32 such names), and a check the Beta 2 text does not state is marked pilot-only check (42 names, mostly thevalidate…UsageTypefamily, which Beta 2 states only ascheck…Specializationimplied specializations). The four section headers no longer claim the rows came from the reference's validator source alone.bin/sysml -validateand the pinned pilot validator rather than guessed:validateAttributeDefinitionFeatures/validateAttributeUsageFeatures(§8.3.7.2 / §8.3.7.3) andvalidateControlNodeIsComposite(§8.3.17.6) are satisfied by construction from the notation — §7.7.2 makes an attribute's owned features referential whether or notrefis written (both validators silent onattribute def SensorRecord { part sensor : Sensor; attribute reading : Real; }; api-json exports every such memberisComposite: false), and the grammar gives a control node norefprefix (ref fork f;is a syntax error in both parsers).validateUsageOwningTypeis not a constraint of either Beta 2 text: the SysML text uses the name only as an example of the naming convention (§8.3.1 "validateUsageOwningType"), neither §8.3 states it and the validation library does not declare it, so no row was added.action count : Count;in apart def, started only by an explicitstart) now rests on SysML v2.1 Beta 2 §8.4.7.1 Parts Semantics —ownedActionsis "a subset of Actions::actions and Objects::ownedPerformances that collects the values of the composite ActionUsages featured by a Part", whileperformedActionssubsetsObjects::enactedPerformances— and onObjects.kerml, whereownedPerformancessubsetsinvolvingPerformances,timeEnclosedOccurrencesandsuboccurrencesbut notenactedPerformances: the declared action is an owned performance within the part's lifetime, not one the part enacts, so creating the part starts nothing andthisis not the part as performer until a start is performed; fUML §8.8.1 / §8.10.2 stay as corroboration. The concurrent-region-exit row keeps its 🧩 Extension (UML-derived) status: no Beta 2 clause mandates the order among sibling regions' exits (§7.18.2 says only that the states nested in a parallel state "can be performed concurrently", §8.4.14 says nothing about exit order, andStatePerformances.kermlorders a substate's exit only before its composite's own), so the row now says the SysML v2 specification is silent and PSSM §8.5.5 is the source.Realis now stated as a tool decision, not as faithful to the clause: KerML 1.1 Beta 2 §9.3.2.2.9 definesRealas the extended reals, ±∞ included; the implementation holdsRealto finite IEEE 754 binary64 values and*is its only unbounded value, in multiplicity andLiteralInfinitypositions. The row and the Function Library prose block say so; the row staysseq#(i)out of range stays a typed error; the row carries no clause number to correct (its cite is the library declarationSequenceFunctions::'#',in index: Positive[1], which matches KerML 1.1 Beta 2 §9.4.14.2), so it is untouched.tools/census/formal/formal.go's page-footer pattern admits the Beta 2 footers (Kernel Modeling Language v1.1, Beta 2,Systems Modeling Language v2.1, Beta 2, Part 1) beside the formal ones; the fixture informal_test.goexercises one.Specification basis
KerML 1.1 Beta 2 §7.4.11 (Feature Values), §8.3 Constraints subsections, §9.3.2.2.9 (
Real), §9.4.14.2 ('#'),Objects.kerml(ownedPerformancesvsenactedPerformances); SysML v2.1 Beta 2 §7.7.2 (attribute members referential), §7.18.2 (parallel states performed concurrently — no exit-order mandate), §8.4.7.1 (Parts Semantics,ownedActions), §8.3.7.2 / §8.3.7.3 / §8.3.17.6, §8.3 Constraints subsections. The pinned pilot is treated as an oracle: where its validator name differs from the Beta 2 name the row says so, and where it checks something Beta 2 does not state the row says pilot-only check.Rows and baselines that moved (every one, by object)
Compliance map (
docs/project/spec-compliance.md):Realrow: text and status cell wording (Census (
docs/project/constraint-manifest.json, rendered invalidation-constraints.md):validateAttributeDefinitionFeatures,validateAttributeUsageFeatures(pilot rows): ❔ unknown → ⛔ deliberate, with implementationsemantics/annotations.go:Model.reflectiveFeatureFlags; export/composite.go:usageCompositeByDefault— the same recording asvalidateEnumerationDefinitionIsVariation, the existing "unobservable in text, derived by the model" row. Census line: 5 ⛔ → 7 ⛔, 49 ❔ → 47 ❔; reported count 163 of 217 unchanged.validateControlNodeIsComposite(spec-sourced row): ❔ unknown → ⛔ deliberate, implementationparser/behavior.go:Parser.parseActionMember.validateAssignmentActionUsageReferentIsTimeVarying(spec.namewas the formalvalidateAssignmentActionUsage; Beta 2 uses the pilot's name) andvalidateSendActionUsagePayloadArgument(gainsspec.name; Beta 2 renamed the formalvalidateSendActionParametersto the pilot's name).checkIncludeUseCaseSpecialization→checkIncludeUseCaseUsageSpecialization,deriveMetadataAccessExpressionReferencdElement→deriveMetadataAccessExpressionReferencedElement,deriveOwningNamespace→deriveElementOwningNamespace;validateSendActionParametersdropped (it is the pilot row above). 40 spec-sourced rows refresh theirchecks/ocltext to the Beta 2 wording; no clause, status or implementation moved.No test, golden, oracle baseline or
training_examples_expected.txtrow moved.How it was verified
make docs-counts(runsdoc-counts,doc-counts -check,validation-census -check,transformation-census -checkand the census/referee unit tests): current, 217 constraints agree.go run -C tools ./cmd/formal-constraints -kerml build/spec-docs/pdf/1-Kernel_Modeling_Language.pdf -sysml build/spec-docs/pdf/2a-OMG_Systems_Modeling_Language.pdf -check: 623 constraints (KerML 258: 80/90/88; SysML 365: 128/145/92), 449 spec-sourced rows current.python3 scripts/check-doc-ids.py,scripts/check-doc-links.py(0 broken),scripts/check-doc-figures.py,python3 scripts/changelog.py check: pass.mkdocs build --strict: built.go test -C tools -count=1 ./...andgo test -count=1 ./tests/hygiene/...: ok.gofmt -l toolsempty,go vetclean.bin/sysml -validateandbuild/pilot-sysml-validator/validate-sysml-batchon an attribute definition and usage withpart/item/attributemembers (both silent),bin/sysml -convert api-jsonon the same (sixisComposite: false), andref fork f;in an action (syntax error in both parsers).9ca600a(pilot pin 2026-09) in a detached worktree: conflicts in the two section headers that name the pilot tag, the generated census summary lines and one row block (chore(pilot): pin the OMG pilot implementation to release 2026-09 (0.63.0) #1529 reworded the neighbouring connection/flow-end row); resolved by taking chore(pilot): pin the OMG pilot implementation to release 2026-09 (0.63.0) #1529's pilot tag and row and regenerating the summary (165 of 219 — 158 ✅, 7 ⚠️, 7 ⛔, 47 ❔), after whichvalidation-census -check(219 constraints agree),make docs-countsandformal-constraints -checkare green on the merged tree. Dry-merge againstorigin/develop(e5f9c3fca, which adds one view row to the compliance map) merges clean andmake docs-countsis current on the merged tree. (check-doc-links.pyreportsthird-party-notices.md → assets/landing/libavoid-js.LICENSE.txtmissing in any fresh worktree, bareorigin/developincluded; the file is generated by the site build and present in a built checkout, so it is not from this change.)Checklist
make testandmake lintpass locally — the documentation and tools gates above; the Go suite outsidetools/andtests/hygieneis untouched by this changeformal_test.gofixture footer)changes/unreleased/compliance-beta2-constraint-names.changed.mdmake docs-countsrunLink to Devin session: https://nasa-jpl-demo.devinenterprise.com/sessions/bef6a11727134f2fa22bd2a2cbc65c03
Open in Devin Desktop: https://nasa-jpl-demo.devinenterprise.com/desktop/session/bef6a11727134f2fa22bd2a2cbc65c03?variant=devin
Requested by: @HuiJun