Files
ARCADIA-Studio/harness/experiments/text-diagnostics-20260913
sorokin.oleg.edu 9fd76aef3a Add current-draft diagnostic underlines and passive hover
Preserve raw include diagnostic provenance and derive bands from the existing shaped editor. Retain deferred tooltip paragraphs through rendering. Include source, regression, failure and native-trial evidence; corrected native acceptance remains pending.
2026-09-13 01:43:22 -07:00
..

Text diagnostic evidence, 2026-09-13

This archive preserves CPU tests, source captures, reviews, failed experiments and Windows dependency-notice checks for the diagnostic underline/hover candidate. It does not establish native GUI, packaged runtime or release acceptance. Publication remains the integration/release owner's responsibility.

Verify without executing the historical tools

From this directory, with Python 3.9 or later:

python -B verify.py

The verifier is read-only and uses the standard library. It checks exact archive membership and hashes from files.json, copy receipts, all nine source ZIPs' exact member sets, CRCs and uncompressed content hashes, gate receipt/capture/log bindings and test summaries, and the probe's 77 inputs and result/log bindings. It also resolves archived build/oracle/launch evidence, checks the saved oracle reports against raw logs and fixtures, and checks diagnostic UTF-8 bounds and line/column coordinates. It does not open original private paths, execute Cargo, inspect mutable shared binaries, or treat historical reviews as new runtime tests. Keep any redirected verification output outside this directory: exact membership deliberately rejects extra files. The externally recorded hash of files.json supplies the integrity anchor; this is not a signed manifest.

index.json maps every original payload to its archive-relative destination and SHA-256. copy-record.json records source identities, exact destination readbacks and source rechecks. Original payload bytes were not rewritten. Equal input ZIPs and manifests are stored once under captures/<ZIP-SHA256>/; each gate resolves them through captureRef. Source captures are opaque ZIPs until intentionally extracted into a separate scratch checkout.

What ran

All Cargo gates used Windows stable-x86_64-pc-windows-gnullvm, Cargo 1.98.1, rustc 1.98.1 and the recorded linker/cache environment. Test, build and Clippy commands used --locked --offline --message-format=json; the formatting command is recorded separately below. Raw command arrays, timings, artifact readback receipts and logs remain under gates/<name>/.

Gate Test arguments after common Cargo options Passed / failed / ignored
annotation-attempt-1 -p oa-desktop source_annotations -- --nocapture 10 / 0 / 0
provenance-app-1 -p oa-desktop includes_loaded_ -- --nocapture 4 / 0 / 0
provenance-core-full-1 -p oa-core 447 / 0 / 1 across 41 result groups
mounted-annotation-1 -p oa-desktop source_annotations -- --nocapture 15 / 0 / 3
annotation-admission-1 -p oa-desktop annotation_snapshot -- --nocapture 2 / 0 / 0
annotation-manual-1 -p oa-desktop source_annotations -- --ignored --nocapture --test-threads=1 0 / 3 / 0, exit 101
annotation-corrected-1 -p oa-desktop source_annotations -- --include-ignored --nocapture --test-threads=1 18 / 0 / 0
annotation-projection-cost-2 same annotation command as corrected-1 18 / 0 / 0
desktop-full-1 -p oa-desktop 892 / 0 / 6
desktop-cli-final-1 -p oa-desktop -p oa-cli 904 / 0 / 6: 892 desktop and 12 CLI

The projection-cost and desktop-full gates share optimized capture c5a6e697e1490a0be7af39c30b926a31e09a42e5a4120b40157d807eca7e7a70 (604 inputs). desktop-full-1 reused the exact Cargo test binary from the projection gate according to its original artifact receipt. No archived executable is supplied or newly rehashed here. Six ignored tests in the full suite do not mean those six all ran in another gate; the focused include-ignored annotation gate establishes only its named scope.

Each capture is base b4b860f2776aa8251306d83ff58362c0359176ef plus captured working-tree changes, not a claim that the base commit contains this implementation. The first two gates captured 529 inputs. That early selector omitted 72 later-captured files under build, docs and examples; preserve its narrower evidence and do not retroactively claim complete build-input capture. The later core capture contains 601 inputs; subsequent annotation captures contain 604. Captures cover their enumerated scope, not toolchains, complete dependency caches, packaging scripts or every possible external input. The notices scripts and license supplements are included separately. Core coverage does not validate later UI edits; its review records that distinction. Four core example artifacts were built, not executed.

The manual failure contains two genuine anchor defects (shared-cluster EOF and an omitted bidi separator) plus an unsettled-scroll performance fixture defect. The corrected and optimized gates provide the subsequent positive evidence. Timing is debug CPU layout/projection evidence; see the final geometry review for distributions and limitations. That review truthfully says the full desktop suite was still running when authored; the later closed receipt above adds its result without rewriting the review.

Three closed strict Clippy runs are preserved. All used cargo clippy --locked --offline --message-format=json --workspace --all-targets -- -D warnings and executed no tests; their zero test-summary counts do not represent test passes.

Gate Result Source capture
strict-clippy-1 Exit 101: one clippy::collapsible_if error Same optimized capture as desktop-full-1
strict-clippy-2 Exit 101: seven clippy::single_range_in_vec_init test-code errors after the nested guard repair 8d15fab20876d3c8e899589f4e445f399930a63fae2ae5f5b0ed88db4a4a5169, 604 inputs
strict-clippy-3 Exit 0, unchanged inputs, after seven one-range slices became std::slice::from_ref calls b860a8fd4cb733540290faa4bcf5c805e207f23e595fe56e708199a3b4e82b84, 604 inputs

The passing Clippy run's input-manifest SHA-256 is 1483d0d67756ee6c6b4dff640150a71a87b4fc9e842bbfd22a1e2388e9bf1000. This same 604-input manifest and ZIP now bind the closed desktop-cli-final-1 (904 passed, zero failed, six ignored) and format-final-1 (cargo fmt --all -- --check, exit 0, empty logs). Formatting executes no tests. The earlier desktop-full-1 result remains attached to its preceding capture.

The final source-delta review verifies the only two changes from the optimized/manual evidence: an equivalent nested-guard collapse and seven equivalent range-slice arguments. It supports reuse of the prior geometry/manual/performance evidence without claiming final-byte performance was remeasured. Its statement that the final desktop/CLI run was still pending is preserved as historical context; the later receipt supplies the result above. Its native-recorder section is static review; the helper is now archived under native-preparation, and neither the helper nor that review establishes native acceptance.

The closed original Windows build and initial native trial are included below. The trial confirms a correct visible underline and tooltip box whose body/footer text stayed blank. This is blocking native negative evidence, not acceptance. A subsequent ownership correction and its closed gates are now captured separately; the corrected build and strict Clippy attempts failed on disk-full conditions, so corrected native acceptance remains pending. No packaged result or current-source equivalence is implied after a captured candidate changes.

Closed build and saved CLI oracles

windows-build-final-1 completed cargo build --locked --offline --message-format=json -p oa-desktop -p oa-cli, exit 0 with the same final 604 inputs. The original Cargo artifact records and preservation receipt pin the development GUI (114,478,080 bytes, SHA-256 4ec7a4dcd1eace2fab231132c7c7caf714a7ce94fe5272d47c5f5899ea891961) and CLI (20,331,520 bytes, d6e0cc0fbb4a206bbd8d16c6da167dbf25b7c99e294a4ee5c1221195d92a268b). The executable bytes and runtime DLL are external. Archive verification checks receipt relationships and original raw Cargo artifact membership, without rehashing those binaries.

The source-bound current CLI ran lint <saved-entry> --json on fresh fixture copies. Current oracle and candidate oracle receipts bind the exact helper, source/build result, CLI artifact, raw stdout/stderr and physical fixture bytes. All four reports specify input coordinates, no writes and no proposed changes.

Saved fixture Exit Exact diagnostics and half-open UTF-8 spans
Missing include 3 Two missing_include errors at project.arcadia 113..141, line 3 column 5
Complete, raw no-ID declarations 0 Five warnings: missing_system at project 11..107; unallocated_leaf and work_without_behavior_context each at functions 171..489 and 491..701; two identities to stabilize
Append LF + } 1 One invalid_source error at functions 1127..1128, line 33 column 1
Append LF + sa_function unfinished "Unfinished" { 1 One invalid_source error at empty EOF 1164..1164, line 33 column 38

The complete declaration ranges span multiple lines; the four declaration warnings omit temporary object IDs. All related-location arrays are empty. The verifier checks raw/parsed report equality, exact saved input hashes, candidate literal suffixes, bounds, UTF-8 boundaries, line/column coordinates and expected candidate spans. This is evidence for saved source producers; it does not establish unsaved GUI publication, hover, rendering or model-state behavior.

native-preparation/ preserves the actual helpers and both preparation reviews without rewriting their earlier unexecuted status. The older historical-cli-fixture-preflight records two startup exits 3221225781 and empty output; its second attempt gives exits 3/0 on an older CLI, without current source provenance. Keep both as historical preparation, not current acceptance. The corrected launch preparation, original pre-binding version, launch manifest, recorder and trial plan are also retained. The launch manifest admits a development trial only. Its reviewed launcher uses a fresh hard link to the separately preserved GUI artifact, with no silent copy fallback; this is static helper evidence, not proof of a closed native run.

These helpers retain absolute historical paths and are not directly runnable after relocation. Reproducing an oracle requires a separately prepared same-source Windows CLI, reviewed runtime dependency and new scratch fixture/output paths. Do not execute the archived launch/build/oracle helpers blindly. The initial trial is now closed and archived below; executable/DLL bytes and profile data remain excluded.

Closed initial native trial: blocking tooltip defect

Trial-diagnostic-1, PID 3708, ran from 07:32:44.503787 to 07:38:12.417080 UTC on 2026-09-13. The retained-child closure receipt records exit 0, empty stdout/stderr, unchanged GUI and DLL, unchanged preserved binary, matching hard-link identity and no launch-receipt error. These are original launcher readbacks, not new binary checks by this archive. The parent used Discard to close; an immediate list_windows still showed the closing window, and the later child receipt establishes exit. There is no final closed-window screenshot.

All 19 raw JPEGs and 15 metadata records from labels 001–015 are preserved under native-trials/trial-diagnostic-1/screenshots. Metadata references cover every image, including the extra picker surfaces. The independent review viewed original captures 008, 009 and 013: a red include underline and blank tooltip persisted in a settled capture, and orange broad declaration underlines also produced a blank details box. Missing-include UI showed one error, whereas the saved CLI report has two diagnostics on the same include range; exact UI/CLI count parity is not claimed. The included-file state showed five warnings and broad raw declaration markers, consistent with the saved oracle, without establishing complete geometry acceptance.

The exact two-file work fixture matches the current oracle's complete fixture. Parent reports no editor edits, Save or Apply: the only fixture change was copying the included file before Load includes. Disk equality verifies saved bytes, not absence of transient edits or transient model equality. Private profile data adds no necessary evidence for these bounded claims and is excluded.

Recorder execution has an explicit limit. The first Node attempt used eval(readFile(native-recorder.js)) and failed with “Code generation from strings disallowed” after obtaining state; no input occurred. Parent then defined equivalent recorder functions inline in Node. The prepared file is preserved as a reference; its hash is not proof that those file bytes were loaded or executed. Captures begin at 001. Metadata timestamps describe archival time rather than independently timed pixel acquisition.

The pointer-position experiment used zero-delta sky.scroll. A hover box was observed, but this does not prove that no WheelScrolled event was delivered or that the raw interaction clock remained unchanged. The trial does not validate passive hover authority, navigation-ticket preservation, later unsaved syntax scenarios or a corrected tooltip. The blank body/footer is a blocking defect; the separate widget fix and correction gates below are not folded into this historical capture. No corrected native rerun is included.

Tooltip lifetime correction and disk-full evidence

The independent lifetime review traces the blank text to deferred WGPU preparation holding a weak paragraph reference after the old draw-local owner could drop. The correction retains body/footer paragraph owners in widget Tree state. Its tests exercise real weak-reference lifetime after draw, replacement and retirement; they do not establish corrected GPU raster output. The review's then-pending compilation language remains unchanged; these subsequently closed gates add their actual results.

All five runs below bind one new 604-input capture: manifest SHA-256 49e02d011fd23d4ad9cde2848f8cae0cd9b98ea0ebc524177728cabfc76028ea, ZIP e3bf575df0961db3cd0bdea56122534ff888d7e6165c14b4cdfb8383ad31fbaa. They recorded unchanged source inputs.

Gate Actual result
tooltip-lifetime-focused-1 cargo test --locked --offline --message-format=json -p oa-desktop source_annotations: 17 passed, zero failed, three ignored
format-final-2 cargo fmt --all -- --check: exit 0
desktop-cli-final-2 cargo test --locked --offline --message-format=json -p oa-desktop -p oa-cli: 906 passed (894 desktop + 12 CLI), zero failed, six ignored
windows-build-final-2 Build exit 101: rustc-LLVM ERROR: IO failure on output stream: No space left on device
strict-clippy-4 Strict Clippy exit 101: query-cache write failed with Windows disk-full error 112

The last two rows are infrastructure failures, not successful corrected binary or strict-lint evidence. No successful corrected development build, corrected native trial or release is claimed. The prior successful build and original native failure stay bound to their original capture.

The ZIP reclamation receipt records removal of eleven duplicate private gate ZIPs after exact comparison with the already archived copies, reclaiming 26,121,904 bytes. Literal original and retained paths are preserved. This archive remains self-contained: verification resolves retained captures and never attempts to read or recreate the missing private ZIPs. Restore a retained copy to its exact original path only if later authorized to execute a historical path-based helper; no restoration was performed here.

Parent reports that automatic review rejected a proposed old-cache deletion before execution; no cache deletion followed. The separately archived read-only cache audit is not proof of deletion. The actual compression receipt records lossless NTFS compression of 1,040 files in two older cache roots, both commands exiting 0 and all file bytes unchanged. Its before inventory has exact per-file hashes and a logical total of 1,381,604,275 bytes. Archive verification checks receipt counts, totals and containment, not current external cache bytes or physical disk allocation.

The subsequently closed second compression receipt, its plan and before inventory are also preserved. Nine operations over seven retained executables and two closed cache roots succeeded; the receipt records all 1,048 files unchanged, 2,273,210,127 logical bytes, and 809,324,544 free bytes at receipt time. The GUI hard link is counted once. These are original operation records: the verifier checks the plan hash, exact planned binary pins, inventory membership/totals and recorded outcomes, without touching the external files or treating the free-space snapshot as current. No cache deletion or binary content change is claimed.

prepared-recovery-helpers/gate-no-incremental.py and build-and-preserve-no-incremental.py were first captured prepared, not executed. The new runner sets CARGO_INCREMENTAL=0 only in its process environment, records that flag and its own helper hash, and leaves the original helpers untouched. A closed formatting run now supplies execution evidence for the exact already archived runner bytes, as described below. Preparation alone did not establish a successful retry. These remain historical private-path tools and must not be executed blindly from the archive.

Canonical source and execution-pinned formatting/Clippy

format-final-3 completed cargo fmt --all -- --check, exit 0 with empty logs, unchanged 604 inputs and CARGO_INCREMENTAL=0. Its receipt pins the runner to SHA-256 3c9b21fa243c618a190c6746fcfc67442a51f84afc6c0fda6b9afed2b77abe74; the verifier resolves that pin to the identical archived prepared-recovery-helpers/gate-no-incremental.py. This specific receipt supports execution provenance for those helper bytes; it does not retroactively add helper pins to older gates.

strict-clippy-5 also completed on those exact canonical 604 inputs and runner bytes: cargo clippy --locked --offline --message-format=json --workspace --all-targets -- -D warnings, exit 0, unchanged inputs, 1,226.986 seconds from 08:13:52.198518 to 08:34:20.721664 UTC. This is successful strict Clippy evidence; it executes no tests and does not establish a corrected native build. The earlier disk-full Clippy failure remains preserved separately.

The canonical input-manifest SHA-256 is 129607a08fea6f9eeae0d40982111c7513b243f6bb311bea8fd59026ce388076; ZIP SHA-256 is 03c73f62ac5e8a276684ee4d4964f481e19fcb05c4edba9648167fdd9751da99. The prior mixed-line-ending 604-input capture remains intact and distinct. The normalization receipt records exactly three CRLF pairs changed to LF at widget lines 423–425. The verifier compares both captured manifests and file contents: every other input identity matches, and exactly those three replacements reconstruct the canonical 13,720-byte file from the original 13,723 bytes. It does not read the current worktree or infer staged status from archive bytes.

The staged integration review is preserved with its actual scope and pending canonical gate/native statements. It notes that its author also authored the tooltip lifetime correction, so that portion is not an additional independent review. It also records two upstream trailing-space exceptions in the unchanged vendored button source; a blanket staged whitespace-check pass is not claimed.

Canonical desktop-cli-final-3 and windows-build-final-3 were still running when this extension was authorized and are excluded. Corrected native acceptance remains pending. Parent reports that the same bounded cache-removal proposal was again blocked by automatic policy before execution, despite explicit user authorization; there is no removal receipt and no cache deletion. The actual resource-recovery claims remain ZIP deduplication and lossless compression only.

Coordination clarification: remote Gitea Codex contributors run on separate computers. An earlier assumption that a remote contributor's native trial blocked this machine was incorrect; historical raw reviews are preserved without extending that assumption. Locally spawned agents share this worktree filesystem. Disk-recovery records concern this computer only.

Reproduce the standalone geometry probe

probe/ retains the exact 77 frozen inputs, including the original 70-file private iced_widget tree. In a separate scratch copy of probe/, supply a compatible Windows Rust/Cargo/LLVM-MinGW environment and all registry packages pinned by Cargo.lock, then run:

cargo run --locked --offline --manifest-path Cargo.toml

The historical command was the same command with the original absolute manifest path. run_probe.py accepts a fresh record label relative to its own probe root, but inspect its recorded environment assumptions before reuse. Do not overwrite records/attempt-1. No toolchain or dependency cache is bundled, so offline reproduction requires those external prerequisites. Probe success is CPU-only: actual editor geometry, wrap/Unicode clusters, retained widget tree and Word/Line selection/text/scroll checks; it is not a GPU/native/tooltip observation.

Two historical statements need context. The frozen probe README incorrectly says .cargo-checksum.json was retained: it is absent from both the original vendor manifest and the probe tree. The original result review observed only the shared-target executable; a 7,511,040-byte copy was preserved privately later, with recorded SHA-256 0b22491b6387a8fc8f1c50acce05df9b9f2fb7357bae44e6b222ba597af7a120. It is not required for source reproduction and is excluded here. No new binary readback is claimed.

The adopted vendor tree has 71 files. All 68 common files match the probe tree; the private tree alone contains .cargo-ok and its nested Cargo.lock, while adoption adds LICENSE, ARCADIA-PATCH.md and UPSTREAM-MANIFEST.json. The exact adopted provenance and license are inside the source captures. The upstream MIT license is also provided separately, without changing the frozen probe inputs. The project license applies to project contributions. Raw notice supplements retain their own notices and attribution.

Notices, historical helpers and cleanup

notices/synthetic-1 preserves the script regression result. notices/notices-actual-1 failed before collector invocation because the child shell could not resolve Get-FileHash; notices/notices-actual-2 used the same helper bytes under PowerShell 7 and passed: 266 packages, 485 notice inputs and 71 vendor files. The full vendor inventory and compact package summary are retained, not the complete transitive registry source inventory. No package was built by that preflight.

notices/scripts/ contains the collector, synthetic tests, manifest and supplements for reproduction after supplying a scratch checkout, the external dependency cache and LLVM runtime. The recorded invocation was Get-ArcadiaNotices with repository C:/ar-text-9e8r6t, target x86_64-pc-windows-gnullvm, manifest scripts/windows-notices/manifest.json and the recorded LLVM-MinGW root. Inspect the exact arguments in notices/notices-actual-2/run.ps1; adapt paths only in a new scratch helper. The checked vendor has its own LICENSE and ARCADIA-PATCH notice, source = null, local path provenance and no registry checksum. This evidence does not imply all cached packages will be available elsewhere.

Historical gate-helpers/, notice helpers and environment/env.ps1 are raw provenance, not portable launch scripts. Do not execute them blindly: some contain absolute private paths. The environment file was inspected and contains only relative toolchain/PATH/linker settings, no credentials. Historical gate receipts did not independently pin their runner's bytes; archived runner bytes must not be presented as cryptographically proved execution inputs.

cleanup/ preserves failed/superseded candidate records and actual completion receipts. index.json retains the original restoration references and their pinned counterpart identities; it does not package the referenced release ZIPs, executables or caches. Some old paths no longer exist after documented cleanup. Verifying those older inventories requires restoration from the exact referenced counterparts. Do not amend historical receipts to hide removals, infer deletion from a candidate list, or treat this archive's successful verification as revalidation of external restoration artifacts.