Files
ARCADIA-Studio/harness/release-source7-pending-contextual-recovery-oracle-20260907.md
T
Codex e2ecfea69b
Rust checks / check (ubuntu-latest) (push) Canceled after 0s
Rust checks / check (windows-latest) (push) Canceled after 0s
Checkpoint source 7 workflows and in-progress diagram authoring redesign
Preserve current core, source, REST, desktop, recovery, documentation and validation work, including AGENTS.md and the development summary. This is a work-in-progress checkpoint: the new compact palette has outstanding compilation errors and native acceptance; earlier passing gates retain their documented scope.
2026-09-10 10:06:55 -07:00

112 lines
7.0 KiB
Markdown

# Pending nested contextual-link recovery: native pass
Native recovery PASS on the staged `6BAB` binary: PID 8224 controlled Stop,
restart PID 10420. Root observed Recover restore the exact SA owner/reference paths,
raw name, and Exchange assembly with no evidence; Apply remained disabled. Switching
back to Precedence revealed the exact spaced Unicode guard and enabled Apply through
fresh command validation. No accepted edit had occurred at this checkpoint. The
standardized `sa-nested` Apply/Save/Undo/Redo continuation remains a separate gate.
Independent read-only verification checked both preserved checkpoint hashes against
their result logs, compared all parsed fields with deterministic key ordering and
exact string/array values, and compared accepted text against the tracked baseline.
The only differing fields are the three documented envelope fields below.
| Preserved evidence | SHA256 |
|---|---|
| `.local/native-qa/source7-pending-contextual-before.json` | `3E50C49A2BC3033CE01565F6012CC243D5E50A0F3D1C9AC9FCE6C29BDD94DB86` |
| `.local/native-qa/source7-pending-contextual-after.json` | `2751794637222AC293AF44B91D6548F7312D59E23AE31686096BA5551EAA331D` |
| Original and tracked baseline `project.arcadia` | `5474D8CA05FD1375220DC0AD40D913631FDE51159E9632BB9F290D1ECDAB8DD7` |
| Original and tracked baseline `rationale.arcadia` | `E6A600E13036D4AD594A65380ED1B3D82D1772D583041BB0A624C9588A73047A` |
The original source files remain unchanged. Exact fields: accepted, behavior,
name, property, selected, version, workflow, workspace. Checkpoint ID changes from
`b8d5c6e3-6104-4d0c-bc32-b8176a30416d` to
`bef57f71-0fc7-4c37-8c49-1a2adb6ea53a`; modified seconds advance from
`1788768039` to `1788768113`; the original absolute sa-nested entry path becomes
null. Both `source7-pending-contextual-{before,after}-result.json` logs report PASS.
No production changes or Cargo runs were needed for this oracle.
Use the unchanged `.local/native-qa/source7-cases/sa-nested/project.arcadia` and
its complete tracked fixture/oracle in `harness/fixtures/source7-native`.
## Minimal native sequence
1. Open that clean baseline. Choose SA → Behavior → `Caller with three assessments`
(`@sa_caller`). Click **Qualified link / assembly…**.
2. Under **Choose source**, select direct `X · Check authorization` (`@sa_x`).
Under **Choose target**, click **Enter reference** for `Nested assessment`
(`@sa_r3`), then **Enter reference** for `Inner assessment` (`@sa_inner`),
then select `B · Review assessment` (`@sa_b`). Keep that browsing scope.
3. Enter Link name exactly ` Pending nested gate 雨 ` (two surrounding spaces).
With **Precedence**, enter guard exactly ` Check accepted && 雨 `.
Switch purpose to **Exchange assembly** and leave its evidence picker empty.
This deliberately makes the draft non-applicable while retaining both exact
endpoints and the now-hidden raw guard. **Apply link** must be disabled and
the form must show `Choose the exact exchange used for assembly.`
4. Wait for the automatic checkpoint, preserve/check it with Capture below,
then have the root kill/restart the app and choose this checkpoint's Recover.
Do not modify the recovered form before Compare. It should reopen Behavior,
retain both full path labels and Exchange assembly, and still refuse Apply.
5. After the recovered checkpoint is preserved and compared, switch to
**Precedence**. The exact spaced Unicode guard must reappear. The form computes
a fresh valid command; it has no persisted approval flag or cached command.
Accepted sources must remain unchanged until explicit Apply.
6. Optional continuation reuses the existing complete native oracle: replace name
with `First assessment gate`, guard with `Check accepted`, keep Precedence and
the same endpoints, then Apply once. Save a fresh folder and run
`.local/native-qa/source7-native-contract.exe check sa-nested SAVED/project.arcadia`.
The existing oracle predicts every record and both source files, admitting
only the one new relation UUID. Undo/save must match `baseline`; Redo/save
must match the same accepted identity. This continuation is a separate gate.
## Read-only checkpoint verifier
PowerShell 7 script: `.local/native-qa/verify-source7-pending-contextual.ps1`.
Pass the actual automatic checkpoint file paths selected from the isolated
appdata recovery directory; never point Compare at the original old checkpoint.
```powershell
& .local/native-qa/verify-source7-pending-contextual.ps1 -Mode Capture -Checkpoint BEFORE_KILL.json
& .local/native-qa/verify-source7-pending-contextual.ps1 -Mode Compare -Checkpoint NEW_RECOVERED_CHECKPOINT.json
```
It creates immutable `source7-pending-contextual-before.json` / `-after.json` copies
and corresponding `-result.json` logs under `.local/native-qa`; existing copies
are never overwritten. Both checkpoints must contain the exact clean two-file
baseline, clean source text/baselines, the expected SA owner and qualified paths,
the exact raw name/guard, and the rejected new Exchange-without-evidence draft.
Compare checks every saved field, including the entire behavior and workspace
DTOs, exact selection, browsing search/page/scope, and null property/workflow.
It does not normalize IDs, whitespace, Unicode or source text.
Only three top-level envelope differences are permitted and checked explicitly:
- `id`: new nonnil checkpoint ID. `checkpoint_loaded` calls App reset, which
allocates a new `canvas_document`; `checkpoint_tick` uses that as snapshot ID.
- `modified`: equal or later Unix seconds, assigned by `Snapshot::capture`.
- `origin`: initial absolute file path becomes null; `checkpoint_loaded` calls
`reset(..., None)` to recover an unsaved copy without overwriting the origin.
All other differences fail, including selection changes. Source checkpoint hashes
are checked before/after reading and preserved copies are hashed. The expected
baseline file comparison plus unchanged accepted bundle rules out automatic
creation; the native disabled-button/error check establishes preview refusal.
The script does not claim to execute the Rust validator or inspect a cached plan.
## Existing implementation evidence and limits
`topology::Draft` and `contextual::Draft` serialize closed raw authoring fields;
`State::from_recovery` restores only that draft with transient state defaulted.
`contextual::Draft::purpose` rejects missing Exchange evidence before command
creation; `topology/view.rs` recalculates `d.command(p)` to enable Apply, and Submit
prepares the command against the accepted Project again. Arbitrary guard text is
not treated as invalid syntax: it is retained text, hence the explicit missing
evidence refusal rather than a fictional guard-parser failure.
Existing focused tests include exact combined operation/contextual draft recovery,
rejected qualified endpoints remaining rejected after recovery, and valid nested
GUI proposals matching core. They do not substitute for this native crash case.
The verifier passed PowerShell syntax parsing and both actual native checkpoint
checks. The independent full-field/source comparison above corroborates its results.