Files
ARCADIA-Studio/harness/experiments/text-navigation-components-20260911/native-preparation
sorokin.oleg.edu 36db9356cc Add bounded definition and reference navigation for current source drafts
Preserve loaded draft bytes and model history, reject stale workspace and input events, and keep captured Escape under modal priority. Verified 181 focused Windows tests and strict desktop Clippy on exact inputs4; earlier full737 scope and component/native preparation evidence are archived separately. Native navigation acceptance remains pending.
2026-09-11 11:23:20 -07:00
..

Navigation native preparation

Prepared 2026-09-11 by Codex-9e8r6t /root/linux_readiness for Gitea #6. These are input fixtures and read-only oracle results, not native navigation acceptance. No GUI, compiler, server or WSL was launched.

Inputs

  • valid-baseline/project.arcadia: immutable v7 entry with four files, UTF-8 without BOM and CRLF throughout. valid-work is an exact separate copy for GUI use. Two OA activities live in Unicode folder 救援; links.arcadia contains one interaction with source @assess and target @confirm.
  • ambiguous-open/project.arcadia: duplicate assess declaration with its own UUID, preserving confirm. Copy this directory to a new trial directory before opening or repairing it. Expected draft lookup: two assess definitions and one lexical use, explicit row choice; no accepted-model success is assumed.
  • missing-include-open/project.arcadia: valid fixture plus include "missing/not-loaded.arcadia";; the target is intentionally absent. Copy before a repair trial. Expected loaded-source query scope is partial, with one loaded declaration/use for each alias; navigation must not fetch/create the missing file.
  • release1-baseline and release1-work: exact copies of all 37 files in examples/release1, including its 30 reachable Arcadia files. This is a realistic walkthrough, not the separate 100-module performance fixture.

The valid fixture uses stable UUIDs 9e8f0000-0000-4000-8000-000000000001 through ...0004 for project, assess, confirm and handoff respectively. The duplicate has ...0005. Expected aliases, excluded prose/comment occurrences, exact byte spans and one-based line/UTF-8 byte-column positions are in expected-locations.json; those expectations were calculated directly from authored bytes, independently of the application lexer.

Useful valid locations:

Kind Path Line:byte-column Alias bytes [start,end)
Declaration assess 救援/assess.arcadia 2:13 59..65
Declaration confirm 救援/confirm.arcadia 1:13 12..19
Live assess use links.arcadia 2:52 137..143
Live confirm use links.arcadia 2:68 153..160

There are five excluded @assess occurrences across descriptions/comments. The quoted Unicode text before live references exercises byte columns that differ from character columns. A use's selection excludes its @ marker. No scalar-column or normalized-newline position is substituted.

Native procedure for root

  1. Launch the separately identified new GUI using its established private environment. Open valid-work/project.arcadia through the real picker. Open links.arcadia, put the caret on the live assess use (not the description), press F12, inspect the exact declaration selection and viewport, then Alt+Left to return. Repeat with confirm. Buttons should also work; shortcut handling requires editor focus.
  2. From the assess declaration, Shift+F12 should show exactly one declaration and one lexical use. Prose/comment occurrences must not appear. Inspect Unicode path, locations, scope and any selected source bytes. Opening a unique validated included declaration may navigate directly.
  3. Edit a source draft without Apply, query again and observe explicit choice/draft status. Change an indexed source after a result is shown and verify stale results cannot jump; rerun. Check Back after changing its origin draft restores the current cursor rather than an obsolete selection. Preserve raw screenshots/logs and do not count planned behavior as a pass.
  4. Run separate Open repair trials on fresh copies of the two invalid fixtures. Observe real application admission and loaded-file state before asserting result counts. The negative oracle proves loader rejection, not that the GUI reaches a particular repair panel.
  5. For unchanged-model/source acceptance, use a fresh valid work copy or explicitly revert every intentional draft edit before Save. Compare the immutable baseline against the actual saved directory using the oracle below. Do not compare an intentionally edited draft checkpoint and call its expected mismatch a product defect.
  6. The release1 copy supports a realistic modular trial. A measured 100-module trial remains separate work; no performance result is claimed here.

Oracle evidence and reproduction

Existing executable: ../staged-source-oracle-20260911/staged-source-authoring-contract.exe, SHA256 967d9ba3c6fb3a7efb410833903ec94556ca2d48a67d5072c8bb160f40a00f9c. It loads both projects, compares complete decoded Project/identities and exact reachable SourceBundle, and compares all physical .arcadia files. Its same command exposes no full-model JSON output; the full-model equality claim comes from those assertions, not an exported model artifact.

From repository root, with the existing compatible runtime on a process-local PATH:

$navRepo = (Get-Location).Path
$navInputs = Join-Path $navRepo '.local/text-navigation-native-20260911-preparation'
$navOracle = Join-Path $navRepo '.local/staged-source-oracle-20260911/staged-source-authoring-contract.exe'
$env:PATH = "$navRepo\.local\toolchain\llvm-mingw-20260826-ucrt-x86_64\bin;$env:SystemRoot\System32;$env:SystemRoot"
& $navOracle same "$navInputs\valid-baseline\project.arcadia" "$navInputs\valid-work\project.arcadia"
# Preserve stdout, stderr and the actual $LASTEXITCODE for each new checkpoint.

check.py is the completed, one-shot preparation check and refuses to overwrite its result records. prepare.py likewise refuses existing authored paths; do not rerun either helper over these preserved inputs. Reuse the direct oracle command with fresh log/result names for native checkpoints.

Actual preparation results:

  • valid-same: exit 0, complete model/identity and 4 reachable/4 disk files equal.
  • release1-same: exit 0, complete model/identity and 30 reachable/30 disk files equal.
  • ambiguous-rejected: exit 101, expected duplicate_declaration loader error.
  • missing-include-rejected: exit 101, expected missing_include loader error.
  • Initial helper failed before any oracle process because Python environment key SystemRoot was absent in that spelling. Corrected to a case-insensitive Windows key lookup; helper-initial-failure.json records the scope. No fixture/executable correction was necessary.
  • All 90 fixture files, 592459 bytes, match fixture-manifest.json after execution. check-summary.json records commands, exits, timing and runtime hash. Timing is oracle execution only, not GUI or navigation performance.

Manifest SHA256: edd4157fc31823f4494dee91862728b87f12ef51c49b8d1fd86a954bc9ecc1ed. Expected-locations SHA256: 81574d2c9c0aec1657a293af52a469506ccddfa2914e820c61af619d5622837f.