Files
ARCADIA-Studio/harness/text-diagnostics-verified-20260913.md
T
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

6.7 KiB

Text diagnostics: integration evidence and remaining acceptance

This contribution implements issue 12: passive source underlines and hover explanations tied to the exact displayed draft. Source and CPU test evidence is available; corrected native tooltip acceptance is still pending. The first Windows trial found visible underline bands but blank tooltip text. This report does not accept the newer issue 27 integration, a package, or the full application.

The implementation builds on b4b860f2776aa8251306d83ff58362c0359176ef, including the published Text workspace contribution 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 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 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.
  • Initial native evidence confirms underlines and the blank tooltip defect. Saved CLI missing/complete and parser-token/EOF variants retain exact raw diagnostics and fixture bytes. Saved-byte checks do not establish transient GUI model equivalence.

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. Independent static review and the new tests support the correction; a corrected native visible-text replay remains required.

Canonical-LF formatting and strict workspace/all-target Clippy with warnings denied passed on the same 604 captured inputs. The canonical full-test and matching-build receipts are not included in this source checkpoint. Earlier corrected build/Clippy attempts failed on disk exhaustion; those failures are retained. Final verification must bind the same captured source and actual preserved GUI before native acceptance is added. No result is inferred from a started or prepared gate.

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.