61 lines
8.7 KiB
Markdown
61 lines
8.7 KiB
Markdown
# Contextual source native v2: remaining acceptance
|
||
|
||
Codex-9e8r6t /root/behavior_audit, 2026-09-11. Prepared from `ca53f574e57381a523e946d5277b4081cff74355`, the frozen [fixture](fixtures/staged-source-authoring/README.md), unchanged [oracle](release-staged-source-authoring-oracle-20260911.md), and [v1 evidence](release-contextual-source-native-20260911.md). This is a source-derived plan, not new native acceptance by this reviewer. The latest reboot was 13:59:33.500 UTC. Old52's first reopen attempt reached only the file picker before interruption. Root's separate second attempt subsequently completed real Open → SA machine view → Save; the unchanged complete Machine and same-model/original-ID/six-file oracles passed, and the app closed normally. The [preserved second-run evidence](experiments/contextual-source-reopen-20260911/README.md) establishes old52 persistence. Fresh Machine Redo history and acceptance of the new matching GUI/layout remain necessary below.
|
||
|
||
## Keep two independent trials
|
||
|
||
Use a new `.local/native-qa/contextual-source-20260911-v2/` with a newly verified GUI/runtime and private profiles. Preserve v1, its archived evidence, and all original checkpoints. Record final build inputs, executable/DLL hashes, launch/close, client size, each observation, checker exit and immutable checkpoint before advancing. Start at 1100×700 with both side panels. Source-card/caption acceptance requires the new matching GUI; old52 cannot provide it.
|
||
|
||
- **A — direct Lifeline:** copy the complete frozen `harness/fixtures/staged-source-authoring/base/` into `v2/lifeline/work/`.
|
||
- **B — fresh Machine history:** copy the complete v1 `checkpoint-chain-redo/` into `v2/machine/work/`. Keep v1 `checkpoint-lifeline/` and `checkpoint-chain/` as its original UUID carriers. Do not seed B from v1 `work/` or `checkpoint-machine-undo/`: those contain the two known detached machine files. Do not combine A's new lifeline UUIDs with B's old chain.
|
||
|
||
Read-only preparation confirmed the fixture's two published hashes and that v1 Chain Redo has exactly the same four `.arcadia` paths and hashes as its first commit. This byte comparison does not replace the existing complete core oracle. Before native input, run its baseline/self-check and B's complete Chain check again against the copied input.
|
||
|
||
Use the unchanged oracle `967D9BA3C6FB3A7EFB410833903EC94556CA2D48A67D5072C8BB160F40A00F9C` at `.local/staged-source-oracle-20260911/staged-source-authoring-contract.exe`. Its matching libunwind is `F45604A12E8BCD839FD86F667C1BE1CC7C4F9DA2B3C69FF381AC708F0E1AE7D4`; scope PATH to a verified runtime directory plus Windows system directories. The preserved v1 loader failure is not a semantic result. Check nonzero exits even when stdout is empty. Adapt the old wrapper's v1 paths and refuse to overwrite logs/checkpoints; do not alter oracle predictions.
|
||
|
||
## A: cancellation/recovery before direct creation
|
||
|
||
1. In Operational assessment, **Add first lifeline**. For this cancellation-only control, enter parent ` Retain parent 雨 ` and child Activity ` Retain source Δ ` at the OA root. On initial child open, capture Name, current parent and determined Activity without scrolling; Back/Use must remain reachable. These temporary names will never be submitted.
|
||
2. Before Use or Save, verify the actual completed private recovery checkpoint contains the baseline accepted bundle and both exact raw names, source kind/root, and reserved identities. A ten-second tick alone is not proof that writing completed. Root may stop only this isolated GUI without applying/saving, reopen the same private profile, and use the recovery entry. Recovery must show the raw child in an **unsaved local copy**, with accepted model unchanged and no inherited Undo history. Compare its authored draft payload with the pre-stop record; envelope timestamps are not draft identity. Original files remain untouched.
|
||
3. With focus in child Name, Escape must dismiss only the child and preserve the parent raw name. Reopening the child must be blank, with its permitted kind/root; unadopted child text is discarded. Enter a valid temporary source, Use, then explicitly **Cancel the parent**. No source or consumer may be accepted; Undo must report no change. Save the recovered copy **only after Cancel**, to a separate fresh directory, and require strict `same BASE CANCELLED_COPY`.
|
||
4. Reopen untouched A's baseline to start clean history. Enter the exact final lifeline **Assessment lifeline**, create root Activity **Assess incident work**, and Use. Before Save, record the two independent names, staged source and still-two accepted elements. Click the actual parent **Create** first, observe selected Lifeline, then Save. This discriminates direct Create from v1's valid Save-adoption route. One Undo/Save and one Redo/Save must use separate immutable checkpoints and the first commit's UUIDs.
|
||
|
||
Recovery restores draft intent, not the old in-memory history (`recovery.rs:Snapshot::restore`, `app/checkpoints.rs:checkpoint_loaded`). Child Escape and parent cancellation follow `app.rs:Message::Escape`. Save/Save As applies valid drafts; disk equality before Save alone proves persistence only, so pair it with the accepted model/UI observation.
|
||
|
||
## B: complete new Machine history, then reopen
|
||
|
||
Open the verified fresh Chain copy. Choose SA **New → State machine**, name **Field team operating modes**, then Create new owner. At minimum height, Name, SA root and **both explicit System/System actor choices** must be reachable; select **System actor**, name **Field rescue team**, and Use. Check both independent names and the staged New owner label without a false `Selected: Missing element`. Before Save, accepted state must remain Chain.
|
||
|
||
Opt into **Create the first state view**, then click **Create and open** once and Save. Preserve the first Machine checkpoint. Undo once, Save and check; Redo once in that same live session, Save and check. Only then close normally, relaunch/open through the real picker, Save and compare the final checkpoint. A reboot/reopen before Redo destroys the required history experiment; it cannot be credited as Redo.
|
||
|
||
The existing oracle expects only root SystemActor, its owned machine, and the requested `Field team operating modes · states` diagram/root placement. No region or state is implicit. Source names, aliases, defaults, ownership, links, sequence membership and layout stay exactly as predicted in the frozen contract.
|
||
|
||
## Exact checker mapping
|
||
|
||
All symbols below are entry-file paths. `BASE` is the frozen fixture; `OLD_L1`/`OLD_C1` are v1 first-commit carriers; `A1` and `B1` are the newly preserved first commits. Never use Redo/reopen output as its own UUID authority.
|
||
|
||
```text
|
||
self-check BASE
|
||
check baseline BASE A_INITIAL
|
||
check chain BASE B_INITIAL OLD_L1 OLD_C1
|
||
same BASE A_CANCELLED_COPY
|
||
check lifeline BASE A1 A1
|
||
same BASE A_UNDO A1
|
||
check lifeline BASE A_REDO A1
|
||
check machine BASE B1 OLD_L1 OLD_C1 B1
|
||
same OLD_C1 B_UNDO B1
|
||
check machine BASE B_REDO OLD_L1 OLD_C1 B1
|
||
check machine BASE B_REOPEN OLD_L1 OLD_C1 B1
|
||
same B_REDO B_REOPEN
|
||
```
|
||
|
||
Counts: A first/Redo has three reachable and physical source files; A Undo has two reachable and exactly three physical files. B first/Redo/reopen has six; B Undo has four reachable and exactly six physical files. Only `same … UNDO_FROM` permits the explicitly proven retained bytes. Unknown, changed or missing detached files fail; ordinary cancellation/reopen checks remain exact.
|
||
|
||
Record one pending child at wide size and back to minimum without losing raw input. Observe immediate typing after child Use/Escape and recovery separately: incorrect return focus or scrolling is exposure for peer956's FormShown/workspace work, not permission to change the fixture or claim focus passed. User issue 2's complete canvas workflow remains open.
|
||
|
||
## Overflow regression correction: independent source readback
|
||
|
||
The real focused3 gate ended 13:57:36 UTC, exit101: 25 passed, one failed at the long-parent fixture's `parent_bounds.height > fields.height` assertion. Earlier Name, three kinds and first-line assertions passed. The old eight repetitions did not force the claimed overflow; preserve this as a test failure.
|
||
|
||
Reviewed correction `source_draft.rs` SHA256 **85D543CC288E48B4C13001E4E386B5B54D9B1E349A5AC31E4E307572F2D8FB3C** against exact ca53f574 through MCP. Five test-only hunks increase the authored name to 32 repetitions, capture the actual `behavior-source-fields` content rectangle, improve diagnostics, and additionally require overflowing content containing the entire parent. Real `graphics::text::Paragraph`, 340×215 host, original paragraph overflow inequality, all visibility/order/footer/raw assertions and production text are unchanged. No material source finding remains. Corrected runtime execution and rebuilt native visibility are still pending; this reviewer ran no compiler, native input or Git command.
|