# Text diagnostics: integration evidence and remaining acceptance This contribution implements [issue 12](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/12): passive source underlines and hover explanations tied to the exact displayed draft. **The corrected Windows replay confirms readable tooltip text**, wrapped/scrolled placement, word editing and Undo, actual parser-token/EOF errors, and modal suppression. Source is published at `9fd76aef3ae2810667d3f2b031fc43692fc04c89`. The first Windows trial's blank-tooltip failure remains preserved. This report does not accept the newer [issue 27 integration](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/27), a package, or the full application. The implementation builds on `b4b860f2776aa8251306d83ff58362c0359176ef`, including the [published Text workspace contribution](text-workspace-verified-20260913.md) at `2df7f580aa4bd728a728c83ac10e6ccc956ef069`. That predecessor supplies the permanent editor layout, diagnostic publication/visit guards, Find focus preservation and source navigation behavior. The diagnostic captures contain working changes over that base; the base commit alone does not contain this contribution. ## Behavior and integration seams The [rendering contract](text-diagnostic-rendering-contract-20260913.md) owns the exact authority, geometry and lifecycle rules. Core source discovery and App include completion now preserve diagnostic provenance against the raw returned files and retained draft overlays. A newly assigned publication ID cannot make ranges from different text current. Delayed or mismatched include results must pass their existing context and retained-source checks before publishing. `source_annotations::Index` maps primary Error/Warning UTF-8 spans to the existing graphics editor's actual shaped, wrapped and scrolled buffer. It handles repeated text by byte identity, preserves disjoint bidi bands and uses bounded insertion markers for empty/EOF/separator ranges. Related locations stay explanatory. Hover uses those same clipped current bands, names severity/code/message and directs bounded or abbreviated details to Source problems. It does not navigate, edit, focus, consume input, or measure ranges by moving a selection. The Text view wraps its existing editor in permanent `Decorations`, inside the existing viewport sensor. It passes `app.source_annotation_snapshot()` and the existing navigation-availability guard; Problems visibility does not own annotations. Peer integration into the newer chooser/Text UI should preserve this editor/sensor/input topology, snapshot admission and modal/menu hover suppression. Merge the core provenance, App publication/include handling, annotation module, view wrapper and dependency patch together. Do not replace the peer's chooser routing or use retained display diagnostics to authorize a new navigation action. The combined peer revision needs its own mounted lifecycle and native checks; predecessor and branch tests do not establish that union. Gitea contributors run on separate machines: use the published portable archive for handoff, and treat historical absolute paths as provenance rather than accessible shared storage. ## Dependency and maintenance The root Cargo patch selects the repository copy of pinned `iced_widget` 0.14.2. Its only upstream Rust change is the eight-line read-only `Content::with_editor` accessor; the graphics editor already exposes its real buffer. This avoids a second text editor or mirror layout. No global registry source is changed. Retain `crates/vendor/iced_widget/ARCADIA-PATCH.md`, `UPSTREAM-MANIFEST.json`, upstream provenance and LICENSE. Source capture must include the local dependency, and notices must identify its actual source and upstream license rather than applying the application license or pretending the modified copy has the registry checksum. On an Iced upgrade, review accessor borrowing, paragraph splitting, cluster/scroll geometry and deferred renderer ownership, then repeat the corresponding evaluators. ## Verified evidence and limits The [portable evidence archive](experiments/text-diagnostics-20260913/README.md) provides exact capture references, commands, raw logs, original failures, independent reviews and a read-only verifier. It is the detailed evidence index; this report does not duplicate its hash history. - Core provenance coverage passed 447 tests, with one ignored. Later UI changes are outside that core execution. - The tooltip-corrected desktop/CLI suite passed 894 desktop plus 12 CLI tests, with six ignored overall. Two new deferred-Weak tests distinguish surviving post-draw text from the earlier eager recording test's false assurance. - Actual-layout and mounted tests cover shaped geometry, clipping, selection/input preservation and stale admission. CPU timing experiments cover index construction and visible projection, including long wrapped lines; they do not measure native paint or GPU frame latency. - Corrected native trial 2 confirms readable missing-include messages, both real overlapping warnings on each declaration, wrapped/scrolled geometry, stale clearing on word replacement and Undo, and actual token/zero-width EOF messages at 33:1 and 33:38. Window reflow and modal cancellation/suppression were exercised. Independent review inspected 22 original JPEGs; the archive retains all 49 observations and 53 JPEGs. The trial closed normally with empty logs, unchanged GUI/DLL and exact original disk fixtures. No Save or Apply was performed. The blank tooltip resulted from draw-local paragraphs expiring before WGPU upgraded its queued weak references. Widget Tree state now owns the current body/footer paragraphs through deferred preparation and clears/replaces them during each draw. This is render-resource retention, not cached hit or publication authority. The deferred-Weak regression tests and independently reviewed corrected native replay support the correction. Canonical-LF formatting, strict workspace/all-target Clippy with warnings denied, full desktop/CLI tests (906 passed, zero failed, six ignored), and the Windows GUI/CLI build all passed on the same 604 captured inputs. The input manifest SHA256 is `129607a08fea6f9eeae0d40982111c7513b243f6bb311bea8fd59026ce388076`. Gates started before the source commit; their exact captured compilation bytes match the published commit. The replay used the preserved GUI with SHA256 `9cff5a094e3015d95a2c5fdb8b1ceaf03aced6a09670de32a4ec5ff8dcc94900`. Earlier disk-exhaustion failures are retained alongside recovery records, distinguishing user cache deletion from agent compression and read-only checks. Native acceptance is deliberately scoped. Triple-click did not establish full-line selection; Back after a Problems visit reported no previous location. The initial scroll and border-resize attempts did not move the content or window; later drawer scrolling and maximize/recovery supply the stated geometry evidence. Restore required recovery after a minimized-window capture failure. Zero-wheel pointer placement does not isolate passive CursorMoved or interaction clocks; mounted widget tests own that evidence. Find Escape was tested, not its Close button separately. Saved CLI spans and disk equality do not establish transient GUI model equivalence. See the archive's corrected-trial observations, acceptance record and independent review for exact limitations. ## Reproduction Use the recorded Windows `stable-x86_64-pc-windows-gnullvm` toolchain and linker/runtime environment. Relevant commands are `cargo clippy --locked --offline --workspace --all-targets -- -D warnings`, `cargo test --locked --offline -p oa-core`, `cargo test --locked --offline -p oa-desktop -p oa-cli`, `cargo fmt --all -- --check`, and `cargo build --locked --offline -p oa-desktop -p oa-cli`. Captured runs add JSON output for artifact/log binding; per-run environment changes, including disabled incremental compilation on disk-recovery retries, belong to their receipts. Offline reproduction requires the pinned dependencies locally available. Linux execution remains explicitly user-paused; no Linux or packaged-launch result is claimed.