Record reviewed reuse and trade-study semantic gaps and acceptance fixtures

This commit is contained in:
2026-09-22 23:58:39 -07:00
parent 6a6cc83bc8
commit cc3d6a4875
2 changed files with 110 additions and 0 deletions
@@ -0,0 +1,77 @@
# Issue 28: S1/S7 analysis and contextual reuse assessment
2026-09-23 — Codex-956atf synthesis of the September 22 source assessment and [fresh independent review](issue28-s1-s7-independent-review-20260923.md). The review's three fixture gaps are incorporated below. This is an assessment and experiment proposal, not an adopted metamodel or delivered evaluation capability.
**Finding:** the analysis branch supplies useful typed expression, identity, unit and case-overlay machinery, but neither S1 contextual assembly inheritance/fixed bindings nor S7 reproducible trade studies is implemented by that machinery. The integrated source7 application has narrower data/interface inheritance and behavior reuse. This establishes specific semantic and workflow gaps, not a conclusion to retain every existing construct or replace the whole metamodel.
## Authority and scope
- **User input:** supplied research report, S1/S7 acceptance criteria and its mapping rules; local report SHA-256 `1eee1c75cde0e646c75e76015f476193e92e25b22f2d5b552ec16e7152c95f48`. The broader application specification requires calculations, quantities/units, reuse, graphical/textual parity and system-engineer usability. Current implementation limits do not narrow those requirements.
- **Report recommendation, not an adopted architecture:** use SysML v2 compositional mechanisms while retaining explicit ARCADIA meaning; distinguish definition/usage/participation/individual, identity from names, representation from evaluation, and exact preservation from unsupported interchange. The report's scenarios are original proposed fixtures, not executed tool benchmarks.
- **Source A:** published analysis `1b1c3e3abb6fc3d0934c9dbfbd21fddc8ae4f594`; inspected `.local/ai3` was clean at this commit. **Source R:** integrated root `4ffff0d9d94bd1875e6b316b84ac11e5c5c9657c`. All `A:`/`R:` file references below are pinned to these commits.
- Read Gitea #28 comments before assessment. Parent claim #1008 is the only S1/S7 claim in returned comments; peers' C1/C4 and C3/C5 ownership remains separate. No Gitea write, source/test change, compiler, GUI, target execution or new runtime test occurred here.
## Primary-source checks
The pinned [Redefinition Example](https://github.com/Systems-Modeling/SysML-v2-Release/blob/fb97b754f29588b8e9c7a35f370880cd15eb29e7/sysml/src/training/05.%20Redefinition/Redefinition%20Example.sysml) demonstrates specialized definitions redefining nested part usages and multiplicities. It does not execute the motor fixture. The pinned [ConstraintTest](https://github.com/Systems-Modeling/SysML-v2-Release/blob/fb97b754f29588b8e9c7a35f370880cd15eb29e7/sysml/src/examples/Simple%20Tests/ConstraintTest.sysml) demonstrates reusable constraint definitions, contextual bindings and aggregation. These support the positive S1 mechanism claim, not a measured productivity advantage or solver guarantee.
The retrieved [SysML 2.0 Language specification](https://www.omg.org/spec/SysML/2.0/Language/PDF) identifies itself as `formal/2026-03-02`, March 2026. Sections 7.13.1 and 7.13.4 distinguish fixed binding from an overridable default: redefinition cannot replace an already asserted fixed binding. Fixed/default is also separate from bound/initial; initialization may permit later time-varying values. Sections 7.22–7.23 associate analyses with subjects, objectives and results and allow externally solved analyses. Thus an editor may represent an analysis without executing it, but must not present parsing/static admission as a successful evaluation.
The pinned [TradeStudies library](https://github.com/Systems-Modeling/SysML-v2-Release/blob/fb97b754f29588b8e9c7a35f370880cd15eb29e7/sysml.library/Domain%20Libraries/Analysis/TradeStudies.sysml), lines 10–30, 32–108 and 110–161, defines a scalar evaluation function, objective specializations for minimizing/maximizing, alternatives and a selected-alternative result. The study connects these through its objective. The shown framework does not establish this battery study's feasibility filter, missing-data treatment, deterministic tie policy or persistent execution provenance. Those remain explicit project decisions. This supports S7's standard representation claim; it does not establish that any particular editor supplies the optimizer or that Capella cannot support an equivalent extension.
## Source-pinned mapping
| Report need | Existing representation/behavior | Gap or preservation condition |
| --- | --- | --- |
| Reuse a common calculation | `A:crates/oa-core/src/analysis/types.rs:38,85,97` defines local QuantityKind, Unit and Calculation definitions, scoped parameters and call expressions. `A:analysis/tests.rs:615` rejects free property capture in calculations and checks exact scoped argument binding. | Reusing an equation with explicit arguments is possible to represent. DefinitionBody has no assembly/feature usage specialization, inherited feature slots or contextual redefinition relation. Names or duplicated property records cannot substitute for those semantics. |
| Type and compare engineering quantities | `A:analysis/types.rs:45,58,65`; `A:analysis_numeric/quantity.rs:70,99,120,174,199,239,247` provide exact unit conversion, nominal kinds, dimensional/affine arithmetic rules and explicit kind assertions. The numeric module's root blob equals A's. | This is a reusable numeric kernel, not a model-expression evaluator. The motor expression can use typed parameters and an explicit Power-kind assertion after dimensional multiplication; no silent nominal equivalence should be introduced. |
| Apply a study-specific value | `A:crates/oa-core/src/model.rs:667,673` stores a property's base Binding and a case's property-ID override map. `A:analysis/resolve.rs:94` returns base or exact case override plus origin; explicit Unbound is distinct from absent override. | Case context addresses existing global property identities. It is not a usage path, instance, subclass or variant-selection semantics. A case's optional subject does not scope its override map to a subject subtree: admission checks same-layer targets (`A:analysis/admission.rs:560`) and resolution does not traverse subject containment. |
| Inherit defaults while preserving invariant bindings | `A:analysis/types.rs:92,178,184`: Binding is Unbound/Expression; contexts/origins are baseline/case. Every otherwise admitted property can receive an override. | There is no fixed/default discriminator or inheritance chain. Mapping both fixed and default values to an overridable base expression loses S1 meaning. A computed expression is not thereby an invariant. |
| Reuse typed architecture content in source7 | `R:docs/language.rst:973,982,1016` and `R:crates/oa-core/src/data.rs:58`: data defaults, same-family single supertypes and inherited field identities exist; local names cannot shadow inherited ones. Behavior reuse separately has contextual references. | Source7 Record/object instances and redefinition are outside that implemented contract. Ordinary unit strings are descriptive and expressions are unexecuted. Existing data/behavior reuse is neither nonexistent nor general assembly definition/usage inheritance. |
| Evaluate and report constraints | `A:analysis.rs:1` explicitly provides static admission only. `A:analysis/tests.rs:742` admits a false predicate and a well-typed 0/0 expression, while separately exercising numeric runtime errors. | Static validity does not establish 20/45 W, local compliance, total failure, unknown values or evaluator errors. Evaluation of effective case bindings remains unimplemented at this pin. |
| Reusable battery study with result/provenance | `A:crates/oa-core/src/model.rs:673,679`: AnalysisCase has subject/base/overrides; AnalysisCheck has optional subject/documented Constraint/predicate. | No study alternatives/objective/selected-result/run record fields. `A:analysis/types.rs:65` has Boolean, Number and Quantity scalar types and their lists, not candidate-object values. A numeric score or a manually named case cannot stand in for a typed selected-candidate identity or durable evidence. |
| Interchange/library identity | `A:analysis/types.rs:7` admits Local definition references only. Existing global/scoped identity tests preserve exact referents. | Pinned imported library/package resolution remains absent. A source location, BindingOrigin or artifact URL alone does not freeze the model/library/evaluator/policy inputs of an analysis run. |
In this table `A:analysis/...` abbreviates `A:crates/oa-core/src/analysis/...`; likewise `analysis_numeric/...`.
## Six proposed acceptance fixtures
These are model and result oracles, **not executable syntax, implemented tests or newly passed outcomes**. Give every definition, usage, feature, candidate, case and result a stable identity; preserve those identities across rename, save/reopen and interchange. Keep a usage's source-feature correspondence separate from physical/architectural ownership. Do not infer allocation, participation or deployment from the analysis structure.
1. **S1 motor baseline — preserve arithmetic and expose missing execution.** One Motor definition carries resistance 0.2 ohm and `loss = R * I²`; left/right usages bind 10/15 A and 30/50 W limits. Assert exact losses 20/45 W, both local checks true, total 65 W and total-limit check false at 60 W. Build one shared pure calculation and two contextual calls, not two copied formula definitions. A can represent the calls/checks and the kernel can support the arithmetic; claiming these model results requires an evaluator. Lowering units to unitless numbers is a loss.
2. **S1 local edit and shared revision — expose contextual identity.** Change only right cooling limit to 40 W: left loss/limit/check remain 20/30/true; right becomes false. Then revise the one shared resistance to 0.25 ohm: losses become 25 and 56.25 W, total 81.25 W, with local limits still 30/40. Both usages must refer to the same revised defining feature once, retain distinguishable contextual identities and avoid duplication on a repeated update. A usage identity plus defining-feature identity can provide stable contextual identity; this oracle does not require duplicated persisted field records. Copying two assemblies or merely evaluating the same global property under two cases does not establish this correspondence; run both usages together in one system context.
3. **S1 default versus invariant — explicit loss falsifier.** Create two otherwise identical reusable motors: one resistance is overridable default 0.2 ohm; the other is fixed-bound to 0.2 ohm. Redefining the default to 0.3 ohm is permitted and leaves a sibling usage at 0.2. Attempting to replace the fixed binding with 0.3 must not be admitted as a valid override; retaining a conflicting additional assertion must expose the conflict rather than discard the invariant. Round trip must distinguish these models even though their initial evaluated values match. A's current Binding/base/override fields cannot encode that distinction. A named fixed initial value is a separate temporal case and must not be conflated with this bound invariant.
Then combine local choice with shared revision: U inherits default 0.2 ohm, V explicitly binds 0.3 ohm, and W explicitly binds 0.2 ohm. Revise the shared default to 0.25 ohm; require U=0.25, V=0.3, W=0.2. Removing W's local binding makes W inherit 0.25. Repeat across save/reopen and rename, checking binding provenance and inherited calculation/constraint correspondence as well as values. An explicit choice equal to the old default must not disappear merely because values matched.
4. **S7 battery baseline — explicit feasibility and selection.** Stable candidates A=(8 kg,45 min), B=(10 kg,70 min), C=(12 kg,90 min). Study60 filters endurance >=60 min and minimizes mass: feasible {B,C}, selected B. A distinct Study80 reuses the study/calculation definitions with threshold 80 min: feasible {C}, selected C. Preserve each candidate reference, threshold, feasible set, score and selected identity. Treating the raw minimum mass as the answer incorrectly selects A. Existing case overrides could represent threshold inputs, but do not supply the study contract, candidate collection or result.
5. **S7 units, ties, missingness and failure — define project policy.** Repeat Study60 with endurance in seconds and mass in grams; normalized selection stays B. Add D=(10 kg,70 min): proposed policy returns the tied candidate set {B,D} and requires explicit selection/rationale; no name/order tie-break is implied. For Study80, make C endurance explicitly unbound: proposed policy reports incomplete evidence with no accepted selection, rather than treating unknown as zero, false or inherited data. Clearing an override restores baseline, whereas Unbound masks it. Wrong nominal kind and malformed input are admission errors; numerical domain error and insufficient evidence are distinct evaluation outcomes. These policies are proposals for ratification, not claims of SysML library defaults.
From a fresh A/B/C baseline with all inputs known, threshold 100 min produces an empty feasible set, no selected candidate and explicit **infeasible** status. Distinguish this from incomplete evidence and numerical failure. Proposed empty-input policy: an empty supplied candidate collection is invalid study input, distinct from a nonempty collection whose candidates are all infeasible. The SysML TradeStudies library's nonempty alternatives and selected-alternative contract cannot by itself encode this surrounding status policy. Every variation in fixtures 4–6 starts from a named independent baseline; D and C's missing value do not leak into other cases.
6. **S7 reproducibility and stale results — separate design from evidence.** Freeze the Study60 selection B with exact model/definition/library versions, candidate IDs and inputs, units, objective/filter/tie/missing-data policy, evaluator identity/version, result status and provenance. Change C mass from 12 to 9 kg: a new valid run selects C, while the old result remains attached to its original inputs and is not displayed as current evidence. Renaming B preserves its identity; deletion must not silently retarget an old result to a new same-named candidate. Export/import must preserve the record or explicitly report unsupported/opaque retention. A case override map or source-file snapshot alone cannot establish this whole contract.
## Existing verification and remaining work
Source-reviewed regressions at A establish their intended oracles: `complete_real_model_roundtrips_and_exposes_explicit_effective_bindings` (`analysis/tests.rs:355`), missing/clear/Undo/Redo (`:411`), global reidentification with scoped parameters (`:464`), case-only cycle rejection (`:574`), parameter purity (`:615`), nominal kind distinction (`:709`) and static-versus-runtime separation (`:742`). They do not assert an inherited assembly model or execute either fixture's decision.
Historical S2c raw full evidence at documentation commit `257984c5dae63dae116a1438fb2a5d3138df8431`, `harness/experiments/analysis-source-s2c-windows-20260913/raw/full-f1d79df.log`, records the named analysis cases passing on source `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4`; the full suite remains **136 passed / 16 failed, exit 101**, with public source8 unsupported. Read-only Git comparison found no analysis module/numeric source delta from f1 to A. These are reusable historical results, not execution of A or of new S3 work. The evidence archive was locally committed in the earlier bounded task; parent owns publication status.
At A, `language/analysis_source.rs:1` explicitly stages a private adapter; `language.rs:1335` still accepts public headers only 3–7 while `model.rs:9` is schema8. Private parser/writer/index/rename tests do not establish public source8, whole-bundle persistence, GUI/API execution or analysis results. This assessment ran no S3 tests; the new fixture suite remains entirely unimplemented/unrun.
## Proposed decision test
Compare two concrete mappings against the six fixtures: **(a)** a SysML v2 method-library/usage mapping that preserves ARCADIA endpoint roles and identities, and **(b)** an explicit contextual definition/usage and study/result extension using the current typed analysis substrate where it fits. Evaluate required semantic distinctions, loss reporting, implementable execution bounds, editing/cognitive load, migration and stable-reference costs. A larger replacement is a candidate only if those mappings fail an identified requirement or show unacceptable costs; reuse of today's internal types is not itself a success criterion.
Before ranking candidates, demonstrate the same shared-definition revision, local override/removal and study rerun through textual editing, graphical editing and the REST API. Compare stable semantic identities, effective bindings and origins, diagnostic meaning, and persisted run evidence after each route. Save/reopen and rename must preserve correspondence; Git diffs must identify the intended local or shared edit without unrelated rewrites. An unimplemented route is **unverified**, not a passing parity score.
For the same engineer task, record manual edit count, navigation/search steps, accidental inconsistencies and recovery steps, alongside the exact resulting model. Lossless required meaning and identity are hard gates; workflow effort is measured evidence and cannot compensate for semantic loss. The independently owned C1/C4 and C3/C5 assessments in issue28 must also inform a foundation decision; these S1/S7 fixtures cannot establish the other architectural distinctions.
The immediate useful deliverable is a pair of concrete representational mappings and loss-finding fixtures for definition/usage identity, fixed/default bindings, study objectives/statuses and immutable result provenance, followed by a bounded evaluator/workflow slice. Keep the existing source8 publication/persistence repair separately visible: these proposals neither bypass that boundary nor excuse it. No architecture adoption is claimed here.
## Evidence publication supplement
The source-pinned private S3 runtime evidence is now published at `345a42e4658f6e0e8e01ef64a2df8f4e28a8945a`; see [its exact scope and portable verifier](experiments/analysis-source-s3-windows-20260922/README.md). This supersedes only pending publication status, not historical raw observations. It establishes private parser/index/rename and cleanup checks, not execution of these six proposed fixtures. The [S2c evidence](experiments/analysis-source-s2c-windows-20260913/README.md) preserves the earlier full-suite failures. The fresh critic's original report is retained unchanged; its source pin and pre-synthesis hash identify the assessed version.
@@ -0,0 +1,33 @@
# Issue 28 S1/S7 independent review
2026-09-23 — fresh Astra critic, delegated by Codex-956atf. Local-only review artifact; parent owns synthesis and publication.
**Disposition:** accept the assessment as a source-grounded gap analysis and a useful proposal for the next experiment. Do not yet accept its six fixtures as a complete mapping-selection gate. No material factual contradiction was found in the inspected core claims. Address the three fixture/comparison gaps below before selecting a semantic foundation. They do not require adopting a metamodel now.
## Scope and evidence
- Reviewed `.local/issue28-s1-s7-assessment-956atf-20260922.md`, SHA-256 `4c1a425f65bfd4463fcfe882c0ced8bf3a3b2bd06b00b1ca8e52b9626ad9512f`; user report SHA-256 `1eee1c75cde0e646c75e76015f476193e92e25b22f2d5b552ec16e7152c95f48`; `PROJECT_GOAL.md` and root `AGENTS.md`.
- Independently verified clean root at `4ffff0d9d94bd1875e6b316b84ac11e5c5c9657c` (R), and clean `.local/ai3` at `1b1c3e3abb6fc3d0934c9dbfbd21fddc8ae4f594` (A). All code references below refer to these pins, not an assumed current remote head.
- Parent separately reported actual remote default `main` at `5ae9137276d3287d859264da920fecac794fa646`, with its AGENTS blob equal to local (`767be18f086c04b7a688b107808e97ac98881356`). This is parent-supplied freshness evidence. Cached `origin/HEAD` is stale and was not used as instruction authority.
- Read-only source/web review only. No compiler, tests, GUI, production edits, Gitea writes, or architecture adoption. Historical test totals/publication status were not independently audited; the separate S3 evidence task owns its artifacts.
## Findings to address before the selection experiment
1. **P2 — combine local default override with a later shared revision.** Fixtures 2 and 3 separately test shared propagation and overriding a default, but do not test their interaction (assessment lines 43–45). A representation that remembers current values while dropping whether a value was inherited or explicitly chosen can pass the separate numerical checks and later overwrite an engineer's local choice. Extend fixture 3 with three usages of one defaulted definition: U inherits 0.2 ohm, V explicitly binds 0.3 ohm, and W explicitly binds 0.2 ohm. Revise the definition default to 0.25 ohm. Require U=0.25, V=0.3, W=0.2; after removing W's local binding require W=0.25. Repeat after save/reopen and rename, preserving correspondence and binding provenance. Include the inherited calculation/constraint correspondence in the structural oracle, rather than accepting only matching values. This is grounded in the report's S1 shared-update/local-choice requirement and the distinction between defaults and explicit values in [SysML 2.0 §7.13.1 and §7.13.4](https://www.omg.org/spec/SysML/2.0/Language/PDF), printed pages 64–65 and 72–73. It is a proposed strengthening, not an observed implementation defect.
2. **P2 — define a fully known infeasible result separately from incomplete evidence.** Fixture 5 covers missing endurance and ties, while fixture 4 always has feasible alternatives (assessment lines 47–49). Add a fresh baseline study with threshold 100 min: all three candidates have known inputs, the feasible set is empty, no selected candidate exists, and the outcome must explicitly communicate infeasibility rather than missing data or numerical failure. Also define whether an empty supplied candidate collection is an admission error or a separate study outcome. This affects the proposed standard-library mapping: the pinned [TradeStudies library](https://github.com/Systems-Modeling/SysML-v2-Release/blob/fb97b754f29588b8e9c7a35f370880cd15eb29e7/sysml.library/Domain%20Libraries/Analysis/TradeStudies.sysml#L110-L161) requires a nonempty study-alternative collection and derives one selected alternative. Passing an empty filtered collection into that contract is therefore not a complete mapping. Specify the surrounding result/status contract explicitly, without pretending that policy is supplied by the library. Make fixtures 4–6 start from named baseline snapshots so D's addition or C's missing endurance cannot accidentally carry into fixture 6.
3. **P2 — make the proposed comparison operational before ranking candidates.** The decision paragraph names editing/cognitive load and migration costs but provides no observable workflow or acceptance rubric (assessment line 63). `PROJECT_GOAL.md:64–71` explicitly requires graph/text parity, human/AI and Git editability, and programmatic model access; `:94–100` requires reduced cognitive load. For each candidate mapping, require a concrete path for the same shared-definition change, local override/removal, and study rerun through text, graphical editing, and API; compare resulting semantic identities, effective bindings, diagnostics, and persisted evidence. Prototype execution can be staged, but mark unimplemented paths as unverified rather than passing the comparison. Add a small diff/reopen/rename check and record manual edits and unresolved inconsistencies for the same engineer task, following the user report's proposed validation sequence step 5. Treat lossless semantic distinctions as hard gates and workflow effort as measured evidence, rather than allowing a vague score to trade away required meaning. These S1/S7 gates also cannot establish preservation of the report's independently owned C1–C6 architectural distinctions; link those reviews before a foundation decision.
## Claims accepted within scope
- A's `crates/oa-core/src/analysis/types.rs:38–97` contains quantity-kind, unit and pure calculation definitions and scalar/list analysis types, with `Binding` limited to `Unbound` or `Expression`. There is no assembly specialization or fixed/default discriminator in those types. `A:crates/oa-core/src/model.rs:667–682` has property bindings, case overlays and checks, with no typed trade-study candidate/result record. This supports the assessment's bounded absence claims.
- `A:crates/oa-core/src/analysis/resolve.rs:94–149` resolves by global property ID and optional same-layer case override; `analysis/admission.rs:560–599` checks override targets/layers, not a case-subject subtree. The assessment correctly rejects an inference from optional case subject to contextual assembly scope.
- `A:crates/oa-core/src/analysis.rs:1` states static admission only; `analysis/tests.rs:742–775` admits a false predicate and a well-typed zero division while testing numerical errors separately. Formula representation/numeric helpers therefore cannot substantiate model-level computed results. The numerical fixture oracles (20/45/65 W and 25/56.25/81.25 W) are arithmetically consistent; they remain unexecuted model oracles.
- `R:docs/language.rst:966–987,1014–1017` explicitly limits object literals/redefinition while retaining same-family inheritance and original inherited field identities. The assessment correctly acknowledges useful existing reuse rather than calling it nonexistent.
- The fixed-binding/default/initial distinctions match the inspected normative text. The assessment appropriately avoids claiming that an editor or optimizer implements every language mechanism. Its tie/missing-data choices are clearly labeled proposals.
- Independent read-only Git comparison found no file delta from `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4` to A within `crates/oa-core/src/analysis` or `crates/oa-core/src/analysis_numeric`. This supports reusing unchanged-source evidence narrowly; it does not validate the whole application or execute the proposed fixtures.
One representation-neutral clarification: “distinct local-feature/usage identities” in fixture 2 should allow a stable contextual identity such as usage identity plus defining-feature identity. Do not require a physically duplicated field record or fresh persisted UUID for every inherited feature merely to satisfy the oracle. Require distinguishable context, exact source correspondence, and stable references; let the candidate mapping demonstrate its mechanism.
The useful next outcome is two concrete representational mappings with explicit losses, policy/status contracts, and these strengthened oracles. This review does not authorize narrowing the application's broader requirements to the current analysis substrate or treating unexecuted proposals as delivered functionality.