Files
ARCADIA-Studio/harness/focus-optical-validation-20261001.md
T

216 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Two-axis Focus optical result — 2026-10-01 PDT
This is a bounded experiment for [issue 38](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/38),
tested at source **38789512626cb24f78f274998977fc8c6cf960d1** on
`codex/focus-workspace-experiment-01a0d717-20261001`. The
[predeclared plan](experiments/focus-optical-20261001/plan.md) defines the question,
fixed inputs, alternatives and acceptance limits. [PROJECT_GOAL.md](../PROJECT_GOAL.md)
remains authoritative. This result does not complete dense-diagram usability,
accept an editable Focus workspace, or alter a published release.
## Result and decision
Recovering both canvas axes gives a substantial full-scene magnification gain on
the mixed and nested examples. The ordinary small view correctly remains at the
existing 150% Fit clamp at full window size. Retain Focus as a useful workspace
hypothesis; **do not promote it as a sufficient readability remedy**. Parent
inspection still sees foreign-line label crossings and shared allocation runs.
No new unassisted reading was obtained: a fresh-reader spawn failed with `agent
thread limit reached`, and existing readers know the semantic answer key.
Assisted inspection and magnification do not substitute for that gate.
All entries below use logical client **1440 × 900**, observed Iced window scale
**1.0**, the same pinned executable/runtime and the complete admitted Project.
Native screenshots include decorations and are 1442 × 932; those dimensions are
not the client size. Zoom values are rounded here; raw measurements retain their
full f32 values.
| Complete saved view | Nodes / ports / edges | Baseline canvas / Fit | Focus canvas / Fit | Magnification ratio |
| --- | --- | --- | --- | --- |
| Mixed eight-card traceability | 8 / 6 / 12 | 824 × 535 / 0.5152723 | 1440 × 824 / 0.9243028 | 1.7938144 |
| Nested OA allocation | 12 / 0 / 7 | 824 × 540.6 / 0.72186 | 1440 × 824 / 1.20872 | 1.6744548 |
| Nested SA allocation | 12 / 20 / 12 | 824 × 540.6 / 0.66568 | 1440 × 824 / 1.04865 | 1.5753145 |
| Small OA functional dataflow | 3 / 0 / 1 | 824 × 574.6 / 1.5 | 1440 × 824 / 1.5 | 1.0 |
Each case starts Baseline → Focus → Baseline at the same window/DPI. Returned
Baseline viewport, camera, header height, client and scale match exactly. Actual
width and height resizes then produce client **1100 × 700** and newer measurement
generations. In the mixed view, Baseline becomes 484 × 335 at 0.2895086 and Focus
1100 × 624 at 0.6985392; its resized Baseline return also matches. Resized OA/SA
and small cases retain their complete content. All 22 measurement captures pass
whole-value/byte conservation and independently recomputed Fit checks.
The original eight-card source is unchanged: 138661 bytes, SHA-256
`9db1015369f450d5810c96a01fddb8a009d57f6aafbda5182703f15ded23d9c8`.
It contains one preexisting `work_without_behavior_context` warning; the exact
independently retained baseline agrees. The unrelated routing-workshop and
coastal-rescue sources are schema3 and are admitted through the identified
production decoder into schema7. Their complete migration reports and 29 / 5
warnings are inventoried, with no admission errors. OA and SA runs of the same
legacy file yield equal complete admitted Projects and diagnostics. The Python
checker does not independently regenerate those migrations or establish a
predeclared legacy-warning baseline.
## Architecture and mechanical verification
The opted-in runner freezes a validated Project and uses `App::with_project`
only to present Baseline chrome. It admits Architecture diagrams only, synchronizes
layer/Explorer/create-kind state, and verifies complete Document admission. A
pre-dispatch inert wrapper excludes child input, focus operations, overlays and
clipboard access. The canvas adapter calls the production `DiagramCanvas::draw`
with fresh optical state and an unavailable cursor; it cannot dispatch the
production App reducer or subscription. No route, core, model, schema, label,
port or endpoint-marker implementation is changed.
Private generation-stamped layout owns viewport and Fit. Header/client/scale
measurement and a later matching draw acknowledgment gate capture; every actual
resize invalidates readiness. The acknowledgment proves CPU draw invocation,
**not GPU completion**. Visible native captures supply separate display evidence.
Terminal faults refuse queued captures; Close always attempts a truthful,
create-new PASS/FAIL receipt and exits rather than trapping the window.
Baseline uses the real body, navigation, docks, palette, tool rows and footer.
Its header replaces only the action area, using the shared production header.
Measured Baseline header height is 67.39999389648438; Focus uses a 48-unit header
and 28-unit status row. Ordinary opt-out launch shows Home and the original
New/Hosted models/Open/Save as/Save all controls. A native Open of the exact copied
eight-card input, OA → SA navigation and selection of the saved mixed diagram
work normally. At 1440 × 900 and at width1100, header and canvas boundaries align
visually with optical Baseline; this is visual comparison, not an instrumented
normal-header measurement or pixel-equality claim.
Windows verification uses Rust1.98.1, `x86_64-pc-windows-gnullvm`, LLVM-MinGW
20260826 UCRT, jobs1 and incremental compilation disabled. Tests and executable
are dev/unoptimized with debug assertions. The serialized gate records 533
unchanged source-input hashes:
```powershell
cargo fmt --all -- --check
cargo test --locked -p oa-desktop -- focus_optical diagram:: --test-threads=1
cargo clippy --locked -p oa-desktop --all-targets -- -D warnings
cargo build --locked -p oa-desktop --bin arcadia-studio
```
All pass: **92 tests, zero failed/ignored, 1466 filtered**. These include nine
optical tests for actual spy-widget input/focus/overlay exclusion, draw-only
behavior, exact Fit, stale/repeated sizing, invalid admission, schema3/SA
coherence, opt-in dispatch and terminal-fault/Close recovery. This is not a new
full-suite or workspace gate. Initial formatting failed; its 79955-byte stdout
and exit1 are retained, followed by successful formatting and the final check.
Pinned executable: 121832448 bytes, SHA-256
`1be6034951f664b493c5cf7ab806618e216dc840f30ea849dc2354893ab195e4`.
Pinned `libunwind.dll`: 190976 bytes, SHA-256
`f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4`.
Five actual native processes exit normally with code0 and empty stdout/stderr:
mixed3356, OA9180, SA5324, small8268 and ordinary4568. All binary and optical
input hashes remain unchanged. Ordinary's separately copied input is checked
by the parent outside its fixture-null launcher receipt.
## Review, falsifiers and remaining limits
Independent proposal/source review preceded compilation. It found stale capture
after terminal fault and a Close path that could trap the window; both were
fixed before the tested build. The original source review pins its preformat
handoff and does not retrospectively claim compilation/native coverage.
Independent evaluator review showed that the first checker accepted wrong case
attribution, a wrong diagram, stale generation and zero scale. It also accepted a
synthetic four-case corpus made by copying the mixed case. Those artificial data
are confined to the inventoried review corpus. The authorized repair recomputes
fixed binary/input hashes, checks launcher/admission/capture identity and raw
logs, requires finite positive measurements and neutral state, and verifies
generation transitions. The original checker and failed probes are preserved.
Parent reviewed the repair and executed it once against all four actual cases:
exit0, stderr0; final report SHA-256
`0ba442b4eff4138821baa1a2687d8af2f38aa8c3a5016a8abc4985722926a402`.
Checker SHA-256 is
`8b88f148e6a4137375d9784494a15c894c45bb8f3c2379ea2bc954e68c61421f`.
It compares complete Project/scene/SVG bytes over time and rounds each independent
Fit arithmetic intermediate to f32 using recorded bounds and viewport. It does
not independently regenerate projection/routing, validate semantic correspondence
to SVG, measure glyph ink, prove screenshot freshness or supply first-reading
acceptance. A coordinated root-and-all-capture scene mutation remains accepted
and explicitly demonstrates that scope limit. Fabricated non-null migration
metadata and erased legacy warnings likewise expose the declared migration/
legacy-baseline limits rather than a passed semantic evaluator.
A different reviewer independently checked the repaired evaluator and all four
actual cases, verified the 533 gate source hashes and raw log sizes, and rejected
twelve further isolated mutations. No blocker was found within temporal
conservation and recorded-bounds f32 Fit scope. That reviewer authored the Rust
runner, so this is an independent review of the checker/evidence, not a fresh
review of their own runner. They also compared the complete actual OA/SA migration
objects (equal, from3/to7, one generated interface allocation,37 semantic
defaults) and inventoried the small report (20 defaults); no required resolutions
or unresolved message values occur. Their original report, probe and full
reviewed-file inventory are preserved alongside the prior source/evaluator reviews.
Native failure probes remain visible in the evidence. An initial body-border
drag did not resize. A later attempt to grow the window beyond screenshot bounds
was rejected by Computer Use before input; no post-resize restoration to the
original window size is claimed. The initial same-size return remains exact.
Indexed Open-dialog actions did not activate Open; a refreshed coordinate click
did, followed by settled native verification. Ordinary screenshots named
`01-normal-loaded-model` and `02-normal-load-settled` still show the dialog;
`03-normal-load-visible` is the actual completed load. The ordinary height drag
also left the screenshot at 1102 × 932: filenames `07-normal-small-exact-eight`
and `08-normal-resize-settled` do **not** establish a 1100 × 700 ordinary run.
No literal text was injected into inert Inspector controls without verified
focus. Canvas drag and Delete attempts had no effect; capture004 preserved the
complete mixed model/scene/SVG afterward.
Named DataAssociation ends, broad projection coverage, other fonts/DPI,
accessibility, manual camera, editable lifecycle, save/history, held gestures and
pending navigation remain outside this experiment. Linux/WSL is user-deferred.
Peer #43 and other owned/paused work are untouched. A later editable promotion
requires the lifecycle gates in the plan; a notation follow-up must distinguish
relationship category from individual identity on shared paths.
The [independent next-candidate critique](experiments/focus-optical-20261001/next-category-critique.md)
reconfirms those witnesses in the frozen current scene. The proposed two dash
patterns are identical for their first19 units; the specified Allocation pattern
still paints18.5 of the24 units through the conversation-label bounds, including
its center. Identical kind/phase cannot encode member identity on a shared prefix.
These are deductive limits under the proposed phase/centerline policy, not a
native dash-rendering trial or proof that whole-scene tracing is impossible.
The critique pins primary Capella notation precedent and compares interaction,
labels, lanes and bundles; no numeric dash vocabulary or next renderer is adopted.
## Reproduction and evidence
Build the identified source with the environment above; general platform setup
is in [README](../README.md) and [Windows packaging](../docs/windows-packaging.md).
No private executable or package is published for this experiment. The existing
[save-diagnostics release](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.save-diagnostics.20261001)
remains the latest delivered production scope.
Launch the experimental binary with an unchanged JSON, its saved Architecture
diagram UUID and a **fresh** evidence destination, for example:
```powershell
& '<binary-directory>\arcadia-studio.exe' --focus-optical `
'<checkout>\harness\experiments\focus-optical-20261001\eight-card.json' `
'00000000-0038-4000-8000-000000000001' '<fresh-output-directory>'
```
Wait for readiness, capture Baseline, switch/capture Focus, return/capture
Baseline, exercise actual resizing and close normally. The remaining UUIDs and
exact fixture hashes are in the plan. Launch without the flag to exercise the
normal application. Matching DLL/toolchain provenance is required for the
recorded Windows environment.
The raw packet preserves watcher/runner receipts, complete inputs/models/scenes/
SVGs, screenshots, logs, failed probes, gates, helpers and original review
challenges. Host-specific QA helpers deliberately pin this source/build and
create new outputs; on another host adapt paths only, preserve hashes and
identities, and retain those adaptations separately. They must not point at
synthetic challenge data as though it were native output. The packet inventory
and [independent final checker review](experiments/focus-optical-20261001/evidence/reviews/final-review.md)
are linked from the [experiment entrypoint](experiments/focus-optical-20261001/README.md).
The [final index](experiments/focus-optical-20261001/evidence/index-final.json)
covers 29 files / 17465556 stored bytes and 1805 archived members. Parent's
portable content verifier passes with all 1823 retained originals compared;
this is byte-integrity evidence, separate from the experiment's acceptance.