Files
ARCADIA-Studio/harness/experiments/scenario-label-lookup-9b99e7c-20260913

Indexed label lookup evidence at 9b99e7c

All 28 functional tests passed: 25 normal tests and three individually isolated font tests. The optional timing diagnostic also passed exact old/new result comparison, including rectangle bits, and independent Paragraph geometry checks. Indexed lookup was substantially faster in these two debug samples, with visible timing variation. This remains an unwired CPU Iced/Cosmic experiment; no native responsiveness threshold, WGPU paint, navigation, or product acceptance is established.

Tested source: 9b99e7c62601efc338555cd886f0fd9923d2878c. The wrapper imports the actual committed module. Source bindings identify its 13 prepared source inputs, including four additional normal lookup tests and the unchanged font fixture. The previous 4c9 evidence remains separate and unchanged.

Closed stages

Stage Actual result
Strict standalone build Exit 0; empty compile log; 968 before/after input records identical
Literal list Exactly 29 unique names; no executed-test summary
Normal 25 passed, 0 failed, 4 ignored, 0 filtered; 11.95 s
Actual font-version invalidation, isolated 1 passed, 28 filtered; 0.31 s
Partial ffi cluster field, isolated 1 passed, 28 filtered; 0.68 s
Auto-to-Advanced final-buffer transition, isolated 1 passed, 28 filtered; 0.25 s
Timing, isolated 1 passed, 28 filtered; 5.63 s

The three font stages were dispatched from one sequential PowerShell chain, but each invoked its own fresh test executable process with one exact test and --ignored --show-output --test-threads=1. They did not share one font-mutated test process. The fourth ignored test in the normal run was the separately executed optional timing diagnostic. The actual font load increased face count 167 to 168 and Version 0 to 1, and rejected the retained label and old session.

The original attempt records preserve every raw log, command, receipt and predecessor binding. Verified results retain exact summaries and the raw timing JSON values.

Timing question and result

The diagnostic asks whether indexing improves full-field lookup without changing its result or merely moving the costly work into label resolution. For each input it constructs an independent actual Paragraph oracle before timing, resolves a label, times one preserved old lookup on that same immutable shaped label, then times three indexed lookups. It also times three fresh-cache resolution-plus-lookup calls. Every indexed/fresh result must equal the complete old result and independently expected geometry.

Input Old lookup, one sample Indexed lookup, three samples Fresh resolve + lookup, three samples
4,096 plain scalars/graphemes 3,387.5253 ms 18.4545 / 22.8564 / 10.4216 ms 90.1088 / 174.3921 / 146.8576 ms
4,096 combining-heavy scalars, 1,024 graphemes 782.1481 ms 1.8681 / 2.0950 / 35.6082 ms 59.7221 / 141.1583 / 73.8460 ms

Initial resolution alone was 76.4201 ms for plain text and 98.3189 ms for combining-heavy text. These are whole-field operations, not 4,096 independent lookup calls. The plain case produced 4,096 rectangles/clusters; the combining case produced 1,024. Both contained 4,096 source spans and 4,096 recorded overlap memberships.

The actual environment was Windows x86_64, debug assertions enabled, Segoe UI, Advanced shaping, zoom 1 and a 1,000,000-unit width preventing truncation. Fresh caches do not imply cold fonts or a fresh global renderer. The combining lookup spike and fresh-resolution variation are retained, not averaged away. These few samples are diagnostic evidence, not a controlled native latency benchmark. They do not establish globally linear shaping, general input complexity, cold-start cost or a product performance threshold. The preserved old lookup in this run provides a same-label comparison; earlier 4c timings are historical observations rather than a matched benchmark control.

Provenance and reproduction

Archive manifest binds 29 byte-identical copied files totaling 649,029 bytes: the exact recipe and closed nonbinary attempt records, plus unchanged font provenance/license/attributes. Archival checks verified build-manifest equality, every stage's actual names/flags/summary and receipt chain, 13 current prepared source inputs, 34 unique current run inputs, executable/runtime identity and copied bytes. The full current transitive dependency cache was not redundantly rehashed during archival; its closed build before/after proof is preserved. No compiler or test was invoked during archival.

The successful 8bf desktop LIST is the dependency reference, SHA-256 e2d9258afab904c7d0d9f3efbb3c3cc02511a33296c1698b3114b3d6b7a125a1, already preserved with the comparator evidence. It is not a new desktop/full gate result. Build receipt SHA-256: 694db9a2359e3b6810915e90d7e86f49369133276db4f9b6f1b3159e753c98cd.

Omitted artifact Bytes SHA-256
scenario-label-harness.exe 14,917,632 b0de4bdad6dba51330e48ba4223852e4630038435a2b138a52616c9cb4fc5b26
libunwind.dll 190,464 aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a
Source-pinned NotoSans-Regular.ttf 556,216 2ec33f84606cbaa0a1a944488e14f97faf2f6a25ecdd8354f5358f06da13c7d9

The Noto fixture is for isolated font tests, not the timing font. Its unchanged provenance and SIL OFL license are included.

Fetch exact 9b99 source and follow the preserved recipe with a reviewed matching desktop LIST/dependency graph and a fresh output directory. Run the stages separately and sequentially: list, normal, font, ffi, auto-transition, then optional timing. Exact source paths, compiler/fingerprint edges, native libraries and runtime must satisfy the builder's guards. Archived host paths are provenance; peers must recreate their own documented layout and fresh evidence. The original recipe's preparation-only wording is historical; the closed records above are the later results.

Raw-evidence .gitattributes prevents Git line-ending normalization. Publication must force-add ignored raw logs. No source change, staging, commit, push, WGPU or native action was performed during archival; the independent live desktop full stage is outside this archive.