6.0 KiB
Independent ordered semantic review
Working-tree slice on DATA c091f80. This does not claim full semantic GUI or
release acceptance. Owned production files are semantic_review.rs and its subtree;
the public Workflow interface, core, language and REST contract remain unchanged.
Implemented contract
Members / rows now exposes ordered Steps and Fragment branches using the existing explicit OA/SA pair and presence workflow. Paths cover Process / FunctionalChain, Scenario, Branch occurrences and Fragment branches. Membership does not create or reparent a referenced object. Keep, Take and Candidate presence affect only the selected entry; the existing exact pairing/reset and constructor-overlap checks remain applicable.
Order is an independent fact. Keep retains the frozen target order. Take follows typed explicit correspondences; destination-only members retain their positions when the mapped source already agrees with their surrounding order. Taking an incoming member uses the core's unique adjacent-anchor rules. Ambiguous placement blocks until an explicit final Order is selected.
Set final value shows named positions with Up/Down controls. Its complete order must include every surviving destination member once. The order draft is initialized from the proposed membership, then remains authored state: changing membership, leaving decisions unselected, preview errors and recovery do not silently replace it. The explicit Reconcile with selected membership action removes excluded rows, retains surviving authored positions, and appends newly included rows for deliberate placement. Invalid or obsolete order drafts remain visible and block Apply until repaired. A provisional membership list exists only for these editing controls; the actual request always receives complete validation.
The GUI composes members before order, submits one complete candidate record, and uses the unchanged core for exact history, scope overlap, impacts and atomic Document/source application. Recovery adds typed ordered draft rows with the same accepted-model fingerprint check and no persisted computed commands.
Review and verification
The independent behavior-review agent compared the anchor algorithm, target-local Take exception, final member-set checks and recovery path against the core and reported no concrete defect. Their suggested multi-insertion falsifier was added: two incoming members must retain source order despite independent UUID ordering.
Eight focused tests cover both directions, all four owner shapes, single and
multiple uniquely anchored insertions, ambiguous insertion with a destination-local
step, independent Keep/Take/Candidate removal, order-only scope, membership picker
ownership, rejected/stale/restored draft retention and explicit reconciliation,
direct core preview/result comparisons, and exact source/history Undo/Redo/reopen.
The first test run found an invalid scenario fixture using sequence-only Controls;
the fixture was corrected to scenario Actions without changing production behavior.
The focused run passed 8 tests, 0 failures, 0 ignored (4.70 seconds;
.local/semantic-ordered-test.log). Owned-file rustfmt passed. Full desktop
regression, strict checks and native acceptance remain root-owned gates.
Native acceptance still required
Validated standalone fixtures and exact core request/result/source oracles are
available in ignored .local/native-fixtures/semantic-ordered*, with main steps in
semantic-ordered.steps.md. Five fixtures cover the main sequence, reverse sequence,
Scenario, Branch steps and Fragment branches. Each initial/final model validates and
round-trips through source and JSON; ambiguous Take rejects and the explicit final
order has zero additional impacts. These are programmatic oracles, not native evidence.
Use an OA Process traced to an SA FunctionalChain, with explicit corresponding occurrences Request start, Energize and Verify interlock. OA order is Request, Verify, Energize. SA order is Request, Local self-test, Energize, with the mapped Verify occurrence owned by the chain but not included. Supply explicit reference pairs for the three mapped occurrences.
- In Members / rows choose Ordered steps, stage the Verify pair and Take Operational. Expect a unique-anchor error; Local self-test makes placement ambiguous. No accepted model/source/history change occurs.
- Use Review final order, then Set final value. The initial named draft retains Request, Local self-test, Energize and appends Verify. Move Verify Up once to choose Request, Local self-test, Verify, Energize. Preview must preserve the independent local occurrence and show only the explicit member/order facts.
- Toggle membership of another paired occurrence while retaining the order draft. Expect an exact-member-set error. Reconcile explicitly, inspect the retained positions, then move the newly appended entry. Cancel/reopen recovery must retain the rejected raw order; stale accepted models must reject recovery.
- Apply, inspect the unchanged unrelated source/comment text and exact history, Undo once, Redo, Save and reopen. Repeat in reverse and for Scenario, Branch and Fragment branch order at normal and minimum window sizes.
Root also observed Reference pairs buttons clipped at the right edge in the previous native binary. This slice explicitly bounds that panel's scrollable, content column and rows to available width. Recheck Use pair and every Remove pair with long identity labels at 1440x900 and 1100x700; the layout change has not yet received native acceptance. The footer now accurately leaves attached-record and multi-source review pending.
Root also observed top-level Model checks and Engineering guide disappearing at
1100x700 behind the previous horizontal navigation. The exact navigation container
in views.rs::view now uses task_nav.wrap() with unchanged buttons/actions/styles.
No app.rs handler was changed. Owned rustfmt passed; verify all nine pages remain
visible and usable at 1100x700 and 1440x900 in the rebuilt native binary.