67 lines
3.8 KiB
Markdown
67 lines
3.8 KiB
Markdown
# Semantic keyed native fixture
|
|
|
|
Open semantic-keyed.arcadia. This ignored fixture has 36 elements, 2 relationships,
|
|
2 named manual traces and pre-recorded explicit paired Annotation/Binding facts.
|
|
The normal Traceability "Review semantics…" entry needs no trace creation.
|
|
No diagram is required. All files here are local QA artifacts.
|
|
|
|
## 1. Take one qualified message value
|
|
|
|
Select trace "Navigation origin latitude review" (alias navigation_latitude_review)
|
|
and open Review semantics. Direction: Operational → System.
|
|
Enable Show unchanged if the historical paired fact is hidden.
|
|
Select the Annotation whose OA qualified field is
|
|
"OA Navigation origin / OA Navigation latitude" and whose SA field is
|
|
"SA Navigation origin / SA Navigation latitude". The destination-path annotation
|
|
is a separate sibling and must remain unchanged.
|
|
|
|
Click "Choose / change exact row identities…", retain the prefilled explicit
|
|
OA/SA keys, then "Use these addresses and review row". This deliberately installs
|
|
the typed path/field reference pairs; recorded history alone does not infer them.
|
|
Click "Take Operational". The System expression should become
|
|
`latitude_deg + 0.25` from `latitude_deg`. Additional changes: 0.
|
|
Apply once. The sibling expression stays `second independent` at its original
|
|
position. Compare the resulting accepted project with semantic-keyed.after-take.json
|
|
and exact single-file source with semantic-keyed.after-take.arcadia.
|
|
Undo restores semantic-keyed.json/source; Redo restores after-take.
|
|
|
|
## 2. Reject and repair one binding Candidate
|
|
|
|
Continue from after-take. Select trace "Rendezvous participant binding review"
|
|
(alias rendezvous_binding_review), Review semantics, Operational → System.
|
|
Enable Show unchanged if needed. Select the paired Binding keyed by
|
|
"OA Rendezvous referenced" / "SA Rendezvous referenced".
|
|
Click "Choose / change exact row identities…" and then
|
|
"Use these addresses and review row" to retain that explicit pair.
|
|
Click "Set final value…"; leave Include in destination collection checked.
|
|
Choose local lifeline "SA Rendezvous extra local". The sibling binding already
|
|
uses it, so preview must reject with:
|
|
`duplicate_lifeline_binding: Scenario-use lifeline bindings are one-to-one.`
|
|
Apply must stay disabled; source/project/history remain exactly after-take.
|
|
The chosen invalid local and presence draft must remain visible across tab changes.
|
|
|
|
Repair the local picker to "SA Rendezvous alternate". Additional changes: 0.
|
|
Apply once. Only the selected row's local lifeline changes; the sibling binding
|
|
and row order remain intact. Compare accepted project/source with
|
|
semantic-keyed.after-repair.json / semantic-keyed.after-repair.arcadia.
|
|
One Undo restores after-take exactly; Redo restores after-repair. Save/reopen must
|
|
preserve the exact leading comment and all typed review history.
|
|
|
|
## Validated core oracles
|
|
|
|
`semantic-keyed.validation.txt`: all three projects pass core validation,
|
|
production source and JSON decode round trips; successful plans have zero impacts.
|
|
`semantic-keyed.take-request.json` and `semantic-keyed.take-plan.json`: direct core
|
|
Take oracle against initial project.
|
|
`semantic-keyed.invalid-request.json` and `semantic-keyed.invalid.txt`: rejected
|
|
Candidate against after-take; the accepted project is unchanged.
|
|
`semantic-keyed.repair-request.json` and `semantic-keyed.repair-plan.json`: repaired
|
|
Candidate against after-take.
|
|
`semantic-keyed.manifest.json`: exact trace, occurrence, field and lifeline IDs.
|
|
|
|
Source oracles were generated through source_project::update_bundle, retaining
|
|
unmodified declarations and the fixture comment, rather than replacing the whole
|
|
file with a freshly formatted model. Generator source is generate-semantic-keyed.rs;
|
|
it reuses the production-tested r3_semantic payload/scenario-use constructors.
|
|
Standalone rustc output stays in this directory; Cargo and shared outputs untouched.
|