Skip to content

test(ui-react): split navigation reach pointer case families - #2434

Draft
schlessera wants to merge 2 commits into
mainfrom
as/split-navigation-browser-tests
Draft

schlessera wants to merge 2 commits into
mainfrom
as/split-navigation-browser-tests

Conversation

@schlessera

@schlessera schlessera commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Draft continuation at 86457357cc94d5917c98aa49f6941f3c2158eab8: the nine audit-fixture failures are repaired locally without changing production qualification. Initial hosted run 39217736277 failed overall; all three browser jobs passed and their 24 navigation measurements are below 250 seconds. Native blocker #2350, successful-run weights and final complete candidate confirmation remain open. No new ready event or expensive retry is requested.

Refs #2417; part of #1849.

What changed

The navigation reach proof now schedules its seven existing case families as separate files. An eighth wrapper preserves the formerly side-effect-imported durable Actions cases exactly once in each rail pointer project. The shared fixture retains its original hooks, scene ownership, abort checks and resource disposal.

Why this shape

This follows the existing declaration boundaries. All width, start, target, theme and pointer variants remain; no assertions, deadlines, capture paths, project defaults or concurrency bounds change. The rail discovery entry is a glob over the new leaves. Each leaf owns a fresh isolated Vitest module/fixture. The durable wrapper imports its existing suite before the reach fixture, preserving hook registration order and both cleanup layers.

The current timing table remains historical evidence. Every new leaf is explicitly unmeasured and receives the sequencer’s existing positive default; these weights are not an allowlist. The configuration/source change invalidates prior retained proof. A successful hosted run must supply the refresh before qualification. No product code or shipped package surface changes, so no changeset or contract update is needed.

Proof

  • Source: head 17766e9a065e1e8dfb58c33c36af7f27991ed77e, base 90a95123cfceb169bd2ecf7c213544db742eaed7.
  • Source equivalence: all 62 non-import/export top-level TypeScript statements (including type declarations) are retained byte-for-byte by AST getText(), including complete parameter loops, helpers and hooks. All 42 assertion expressions have an exact original-to-new mapping below. These are static source counts, not executed assertion counts.
  • Omission controls: changing the discovery glob to only the counts file fails the real inventory guard with Undiscovered browser scenario: packages/ui-react/tests/browser/navigation-reach.desktop.pointer.tsx; deleting Sessions once fails source-statement equivalence. Both mutations were restored.
  • Restored installed Vitest discovery: 24 unique instances, eight files × three rail pointer projects, all in required browser proof; all 24 new costs explicitly unmeasured. The shared fixture is not a discoverable leaf.
  • Strict TypeScript passes. bun run check:pr --base origin/main passes: 235 fast tests / 2,315 assertions; import-graph feedback finds no affected Bun tests, which is not browser proof.
  • Native browser: 24 file/project instances and 2,151 cases passed, no skips/failures/unhandled errors. The actual case report reconciles against independent discovery and the exact head/tree/parent. Seven direct families contribute 605 cases per pointer; the unchanged durable suite contributes 112 (717 × 3 total). Static source equality also verifies all 43 durable-suite top-level statements, including imports, capture paths and deadlines.
  • Exact native tree: 07874b2132e08cde15e0e0b8d743f483a1f59fba. Runtime: Bun 1.4.2, Vitest 4.1.11, Playwright 1.63.0, pinned image mcr.microsoft.com/playwright@sha256:eff16c30e6f3f4af0a03fa4b706120d5e9b0891c344a27d64559aff5900a4a27 (image Node 24.20.0; host Node 24.21.0). Native invocation used scripts/visual.mjs --inside --project=rail-fine --project=rail-coarse --project=rail-mixed --filter=navigation-reach. --proof-report inside that image with ordinary UID 1000, dropped capability sets, no new privileges, network none, and no outward IPv4/IPv6 routes; repository guards and default per-project scheduling remain intact.
  • Initial browser bootstrap checks failed before tests: an escaping mistake in the external capability assertion and an overly strict assertion rejecting loopback IPv6 routes. Both were corrected in external measurement code; no repository guard changed. The first equivalence checker also rejected two identical assertion texts until mapping used their owning unchanged statement. These diagnostic failures are retained separately from passing product proof.

Case-family mapping

All paths below are under packages/ui-react/tests/browser/; original line numbers refer to the base’s navigation-reach.pointer.tsx. Each family runs in all three unchanged pointer projects.

Original declaration / range New file Expanded cases per pointer
422–427, matrix count completeness navigation-reach.counts.pointer.tsx 1
429–445, inventory / phone guard navigation-reach.inventory.pointer.tsx 14
447–465, desktop reach matrix navigation-reach.desktop.pointer.tsx 429
467–507, dedicated route / palette parity navigation-reach.parity.pointer.tsx 84
584–616, conditional backend handoff navigation-reach.handoff.pointer.tsx 7
618–651, palette hit targets / density navigation-reach.targets.pointer.tsx 10
653–693, keyboard reach / focus navigation-reach.keyboard.pointer.tsx 60
Import at 38, all durable Actions cases navigation-reach.durable-actions.pointer.tsx imports the same durable-actions.layout.tsx 112

The seven direct declarations expand to 605 cases per pointer / 1,815 across three pointers. The existing durable Actions suite is additional and preserved as a whole, including its capture identifiers. Fixtures at original 40–420 and 509–582 move to navigation-reach-fixture.tsx; the parity-only PHONE_PATHS stays beside its loop. No current code citation moved in docs; historical wait-evidence records retain their original SHA and locations.

Exact assertion mapping

Each row names one original expect or expect.poll site and its unchanged complete matcher expression. Repeated dynamic executions retain the original loops.

navigation-reach-fixture.tsx

Original line New line Unchanged assertion
116 114 expect(matchMedia("(any-pointer: coarse)").matches, "coarse media premise").toBe(mode !== "fine")
117 115 expect(matchMedia("(any-pointer: fine)").matches, "fine media premise").toBe(mode !== "coarse")
118 116 expect(matchMedia("(prefers-reduced-motion: reduce)").matches, "reduced motion premise").toBe(true)
225 223 expect(name, `a named control: ${el.outerHTML.slice(0, 80)}`).not.toBe("")
228 226 expect(r.height, `44px target height: ${name}`).toBeGreaterThanOrEqual(43.5)
229 227 expect(r.width, `44px target width: ${name}`).toBeGreaterThanOrEqual(43.5)
233 231 expect(el.contains(hit), `nothing covers ${name} at ${point.x},${point.y}: ${hit?.outerHTML.slice(0, 120)}`).toBe(true)
415 413 expect.poll(() => (el = step.find(s)) !== null && !moving(el), { interval: 16, message: `${step.name} on screen and at rest, toward ${toward}` }).toBe(true)

navigation-reach.counts.pointer.tsx

Original line New line Unchanged assertion
424 6 expect(Number.isInteger(allowed(name, start, width)), `${name} from ${start} at ${width}`).toBe(true)
426 8 expect(new Set(PALETTE_ROWS).size, "one target per palette row").toBe(PALETTE_ROWS.length)

navigation-reach.inventory.pointer.tsx

Original line New line Unchanged assertion
437 12 expect(ui$(s).paletteOpen, "phone guard clears programmatic opening").toBe(false)
438 13 expect(s.host.querySelector('[data-palette]'), "no hidden modal below 480").toBeNull()
442 17 expect([...rows].sort(), `the palette at ${width} lists the routed commands`).toEqual([...PALETTE_ROWS].sort())
443 18 expect(rows.filter((r) => r === "Sessions"), "Sessions once").toHaveLength(1)

navigation-reach.desktop.pointer.tsx

Original line New line Unchanged assertion
455 12 expect.poll(() => target.reached(s), { message: `${name} from ${start} at ${width} (${mode}) after ${steps.length}` }).toBe(true)
456 13 expect.poll(() => SURFACE[name]!(s), { message: `${name} is drawn, not only flagged, from ${start} at ${width}` }).toBe(true)
457 14 expect(steps.length, `activations to ${name} from ${start} at ${width} (D52 §2)`).toBe(allowed(name, start, width))
462 19 expect.poll(() => s.writes, { message: `${name} from ${start}: requests that write` }).toEqual(job)
463 20 expect(document.documentElement.scrollWidth, "no horizontal overflow").toBeLessThanOrEqual(width)

navigation-reach.parity.pointer.tsx

Original line New line Unchanged assertion
490 27 expect.poll(() => target.reached(s), { message: `${name} by the palette row` }).toBe(true)
500 37 expect.poll(() => target.reached(s), { message: `${name} by its route` }).toBe(true)
504 41 expect({ ...routed, paneFocused: name === "Sessions" ? routed.paneFocused : null }, `${name}: route and palette agree`) .toEqual({ ...reference, paneFocused: name === "Sessions" ? reference.paneFocused : null })

navigation-reach.handoff.pointer.tsx

Original line New line Unchanged assertion
594 14 expect([...paletteRows(s)].sort(), "the palette lists the routed commands and the handoff").toEqual([...PALETTE_ROWS, HANDOFF].sort())
598 18 expect.poll(() => handoffOpen(s), { message: `${HANDOFF} by the palette row` }).toBe(ITHACA.id)
604 24 expect(reference.review, "the palette row opened a review").toBe(ITHACA.id)
609 29 expect.poll(() => handoffOpen(s), { message: `${HANDOFF} by the row's overflow` }).toBe(ITHACA.id)
613 33 expect({ ...routed, panels: routed.panels.filter((p) => p !== "sessionPanelOpen"), paneFocused: null }, `${HANDOFF}: the overflow and the palette agree`).toEqual({ ...reference, panels: reference.panels.filter((p) => p !== "sessionPanelOpen"), paneFocused: null })

navigation-reach.targets.pointer.tsx

Original line New line Unchanged assertion
632 18 expect(rows.length, "the palette lists its rows").toBe(PALETTE_ROWS.length)
641 27 expect(row.contains(hit), `the row's own box takes a press at ${x},${y}: ${name} hit ${hit?.outerHTML.slice(0, 120)}`).toBe(true)
644 30 expect(Math.round(r.height * 10) / 10, `fine-pointer density: ${name}`).toBe(/sync|spends/.test(name) ? 35.7 : 34)
646 32 expect(r.height, `44px target height: ${name}`).toBeGreaterThanOrEqual(43.5)
647 33 expect(r.width, `44px target width: ${name}`).toBeGreaterThanOrEqual(43.5)

navigation-reach.keyboard.pointer.tsx

Original line New line Unchanged assertion
669 21 expect(document.activeElement, "Tab reaches All commands").toBe(all)
673 25 expect(dialog(), "Enter opens the palette").not.toBeNull()
674 26 expect(document.activeElement, "focus enters the query").toBe(dialog()!.querySelector("input"))
677 29 expect(dialog()).toBeNull()
678 30 expect(document.activeElement, "Esc returns focus to All commands").toBe(all)
683 35 expect(index, `${target.palette} is listed`).toBeGreaterThanOrEqual(0)
686 38 expect((document.activeElement?.textContent ?? "").startsWith(target.palette!), `arrows reach ${target.palette}`).toBe(true)
689 41 expect.poll(() => target.reached(s), { message: `${name} by keyboard` }).toBe(true)
690 42 expect.poll(() => SURFACE[name]!(s), { message: `${name} is drawn after the keyboard route` }).toBe(true)
691 43 expect(dialog(), "running a row closes the palette").toBeNull()

Local measurements (qualification cost, not a hosted speedup)

Fresh private frozen-lockfile install used copyfile and an empty private Bun cache. No mutable dependency/build outputs were shared with another checkout. GNU time receipts are command-local; CPU is user + system charged to that process and waited descendants, not VM-wide or sampled container CPU. Build and typecheck overlapped, so their summed wall cost is not elapsed critical path.

Scope Wall seconds Accounted CPU seconds
Private frozen install 61.22 11.42
UI React and forward workspace dependency build 18.46 33.83
Locked font preparation 1.33 0.19
Strict types 30.96 48.77
Required local preflight 20.99 35.93
Focused browser command, outer Docker invocation 332.28 0.05 (host launcher only)
Same browser command, inside container (overlaps outer) 331.86 89.32

Vitest reports 328.70 seconds elapsed, 0.238 seconds setup, 17.03 seconds imports and 930.89 summed test seconds across parallel projects. These framework phases are not complete lifecycle setup costs; fresh installation, build and font setup are separate above. Additional discovery/omission/equivalence/receipt commands and both failed bootstrap launches are retained in the handoff’s measurement ledger. One diagnostic Docker sample observed 6.011 GiB used; it is not peak memory or a resource comparison. The largest file is 160.354 seconds locally. This does not establish the hosted per-file threshold or replace the required weight refresh.

File suffix Fine seconds Coarse seconds Mixed seconds
counts.pointer.tsx 0.096 0.104 0.1
desktop.pointer.tsx 142.363 159.666 160.354
durable-actions.pointer.tsx 32.882 32.928 32.877
handoff.pointer.tsx 6.763 7.778 7.789
inventory.pointer.tsx 3.594 3.599 3.582
keyboard.pointer.tsx 36.872 36.979 36.985
parity.pointer.tsx 63.479 72.97 72.885
targets.pointer.tsx 5.197 5.559 5.493

Checklist

  • Complete selected hosted proof passed.
  • All acceptance criteria met; the outstanding measurements are below.
  • Upcoming release 0.44.0 verified against live milestones and npm latest 0.43.1; issue and PR both assigned and read back.
  • No consumer-visible change; no changeset needed.
  • No machine-surface or provider-history change.
  • Local leakage gates pass; public text screened.

Anything left open

The initial hosted measurement is complete and failed overall. Every new navigation file/project is measured below 250 seconds, and all shard job costs are recorded below. The existing tool refuses failed overall runs, so successful-run weights remain pending. After #2350 is resolved, a worker must reclaim #2417 and complete successful proof, the admitted weight refresh and final updated-candidate confirmation before merge. #2417 stays open; no whole-CI improvement is claimed.

Audit fixture repair and initial hosted measurements

2026-10-19 — #2417 continuation r2, under the parent's existing claim e1849-2417-20261019-r1.

The nine relevant unit failures are repaired in 86457357cc94d5917c98aa49f6941f3c2158eab8. Positive browser-document, inactive-command and worker-boundary fixtures now read independently owned raw Git blobs from delivered base 90a95123cfceb169bd2ecf7c213544db742eaed7; document directory membership and binary fonts are frozen too. Actual current config/caller/producer bytes are tested separately. Production qualification hashes, audit implementations, offline guards, images, deadlines and navigation cases are unchanged. This follows delivered #2374/#2388 rather than granting qualification to changed source.

Focused evidence: the original three files reproduce exactly 24 pass / 9 fail. Repaired tests pass 38/38, 181 assertions, with all original assertions retained. Bypassing the document config check fails all four current-document negatives; bypassing worker enforcement fails the real current-config negative even after recomputing the manifest; bypassing the command digest fails its drift guard, and admitting just the actual changed config fails CURRENT_COMMAND_SOURCE_DRIFT_REQUIRES_FRESH_PROOF. Changing the positive fixture owner to the PR's unreviewed config fails the original and added positive assertions. Every mutation is restored byte-for-byte. Initial strict types caught a readonly test.each input; copying that list resolves it. Final strict types pass (31.79 s wall, 49.54 s accounted CPU); required bun run check:pr --base origin/main passes 719 fast tests / 4,622 assertions plus 38 affected import-feedback tests / 181 assertions (64.69 s wall, 91.17 s accounted CPU); focused execution is explicit because the initial split preflight did not select these tests. No failing setup is represented as behavioral evidence.

Source equivalence is rechecked: all 62 direct top-level statements / 42 assertion sites and all 43 imported durable-suite statements / 138 assertion sites remain exact. Fresh private empty-cache frozen copyfile dependencies match qualified identity 0c2758c046f2b69d5f33b66521baf3098db5f44256b73ec96961c98d381e6245 (843 packages, 59,516 files, 1,833,832,361 bytes).

Initial hosted measurement: run 39217736277 attempt 1 failed overall. Its three browser jobs succeeded. Their actual checkout logs, case/resource artifacts and immutable Git API agree on synthetic 4e2448ea8ab6402f64413e1080738eb09fd27b8e, tree 07874b2132e08cde15e0e0b8d743f483a1f59fba, parents base 90a95123cfceb169bd2ecf7c213544db742eaed7 and original split head 17766e9a065e1e8dfb58c33c36af7f27991ed77e. This is evidence for the original split, not new hosted proof of the repair head.

Downloaded immutable browser artifacts have verified ZIP SHA-256:

All 330 discovered browser file/project instances reconcile exactly once across the three shards. All 24 navigation instances and 2,151 cases pass, with case names matching the prior complete local receipt, zero navigation skips/failures and zero unhandled errors. The complete browser domain reports 9,056 passed and 10 skipped cases outside navigation; those skips are not hidden in the navigation count. Every navigation file/project is below 250 seconds, maximum 186.961 seconds. The table records logged file elapsed time, not summed case-body time; every entry has passed status.

File suffix Cases per pointer Fine s Coarse s Mixed s
counts.pointer.tsx 1 0.174 0.185 0.183
desktop.pointer.tsx 429 163.335 182.984 186.961
durable-actions.pointer.tsx 112 33.996 33.64 34.917
handoff.pointer.tsx 7 7.442 8.335 8.321
inventory.pointer.tsx 14 4.33 4.406 4.624
keyboard.pointer.tsx 60 42.068 41.387 41.425
parity.pointer.tsx 84 74.917 83.702 85.133
targets.pointer.tsx 10 5.929 6.309 6.24
Browser shard Whole job s Build s Browser command s VM active CPU s Sampled peak used bytes
1 881 106.1 729.183 1879.57 11303219200
2 416 105.647 264.918 698.07 6673592320
3 898 106.799 745.892 1833.37 11814854656

Browser job IDs are 117945823735, 117945823953 and 117945823662. All used the unchanged pinned image mcr.microsoft.com/playwright@sha256:eff16c30e6f3f4af0a03fa4b706120d5e9b0891c344a27d64559aff5900a4a27, with four logical CPUs and approximately 16.77 GB VM memory. VM active CPU and sampled used memory cover proof commands including containers; they are not process CPU or exact peak memory. Whole-job times include setup/finalization; build/browser phases overlap that wall interval and are not extra costs.

Historical scheduling evidence at main 7f22bb6ac2892360f3a5c4d3a1f93d9997af43e8, run 39109891338, recorded the original single navigation file at approximately 481/411/428 seconds (fine/coarse/mixed). The split's largest files are 163.335/182.984/186.961 seconds respectively; summed navigation file time is 1,060.943 seconds versus about 1,320 historical seconds. These different-source observations establish smaller measured scheduling units, not a controlled speedup. Historical browser job walls were 808/887 seconds across two shards (1,695 total); this initial three-shard run is 881/416/898 (2,195 total). No whole-browser job-wall improvement is observed or claimed; the unmeasured new files still use positive default weights.

The established scripts/refresh-browser-costs.ts admission requires a successful overall CI run, not merely successful browser jobs. Executing it against this run refuses with A successful attributed CI run/attempt is required. Its checks and the existing weights remain unchanged. The issue's successful-run weight criterion remains pending even though this initial measurement meets the numeric per-file threshold.

PR #2434 stays draft and uses Refs #2417. Native mount-inspector blocker #2350 remains unresolved; no native code was changed, no expensive confirmation/ready event was requested, and no merge is claimed. Remaining: resolve that blocker, obtain successful complete candidate proof, refresh weights through the established tool, then qualify the final refreshed source. The initial base remains unchanged; no rebase or main integration was performed. Coordinating review is now complete. Claim e1849-2417-20261019-r1 and its assignment are released; see the final handoff below.

Coordinating handoff

2026-10-19 — coordinating review and blocked handoff.

Reviewed repair 86457357cc94d5917c98aa49f6941f3c2158eab8 (tree 67bc17bd4f246677483d4b27baffbe031f3abfc8) against the original split. The five-file correction supplies independently frozen positive browser fixtures, including directory membership and binary font blobs, and explicitly tests current-source drift. Production pins and runtime guards are unchanged. No navigation assertions, scenarios or deadlines changed. Independent review found no actionable defect; receipt hashes match, named causal mutations fail on the intended assertions, restoration passes 38 tests / 181 assertions, and strict types plus required preflight pass. Current-head draft gates and contract checks pass; their intentionally skipped product jobs are not complete candidate proof.

The preceding head's hosted browser measurements retain their original identity: run 39217736277 attempt 1, head 17766e9a065e1e8dfb58c33c36af7f27991ed77e, base 90a95123cfceb169bd2ecf7c213544db742eaed7, checkout 4e2448ea8ab6402f64413e1080738eb09fd27b8e. All 2,151 navigation cases in 24 file/project instances pass without navigation skips/errors; the largest instance is 186.961 seconds, below the 250-second criterion. Browser shard job walls are 881 / 416 / 898 seconds. This provides smaller scheduling units, not a controlled whole-CI speedup: current summed browser job walls are 2,195 seconds versus 1,695 in the differently sourced historical two-shard comparison. Weight refresh correctly refuses this failed overall run, so its successful-run prerequisite and final confirmation remain outstanding. These browser receipts are not executions on the repaired head.

#2350 remains open with needs: repro. PR #2434 stays draft and #2417 stays blocked/open, both retaining milestone 0.44.0. Implementation is preserved on as/split-navigation-browser-tests; clean implementation checkouts are retained. Claim e1849-2417-20261019-r1 is released with this invocation's assignment. Continuation r2 is complete; no child work remains.

Resume after #2350 is resolved and qualified: explicitly reclaim #2417, assess live base/source changes, run required preflight, verify requested and actual synthetic identities, obtain complete passing hosted confirmation, refresh browser weights through the existing admitted-run tool, and confirm the resulting final candidate before merge and actual-main reconciliation. No unchanged retry, pin relaxation, skipped runtime or increased timeout is accepted as proof.

@schlessera schlessera added this to the 0.44.0 milestone Oct 19, 2026
@schlessera schlessera added type: test Coverage, harness or proof work with no behaviour change. area: ui-react React chat/files/voice components, stores, WebSocket transport. area: ci CI workflows, the gates they run, release scripts, packaging. labels Oct 19, 2026
@schlessera
schlessera marked this pull request as ready for review October 19, 2026 07:42
@schlessera
schlessera marked this pull request as draft October 19, 2026 08:00
@schlessera

Copy link
Copy Markdown
Owner Author

2026-10-19 — #2417 continuation r2, under the parent's existing claim e1849-2417-20261019-r1.

The nine relevant unit failures are repaired in 86457357cc94d5917c98aa49f6941f3c2158eab8. Positive browser-document, inactive-command and worker-boundary fixtures now read independently owned raw Git blobs from delivered base 90a95123cfceb169bd2ecf7c213544db742eaed7; document directory membership and binary fonts are frozen too. Actual current config/caller/producer bytes are tested separately. Production qualification hashes, audit implementations, offline guards, images, deadlines and navigation cases are unchanged. This follows delivered #2374/#2388 rather than granting qualification to changed source.

Focused evidence: the original three files reproduce exactly 24 pass / 9 fail. Repaired tests pass 38/38, 181 assertions, with all original assertions retained. Bypassing the document config check fails all four current-document negatives; bypassing worker enforcement fails the real current-config negative even after recomputing the manifest; bypassing the command digest fails its drift guard, and admitting just the actual changed config fails CURRENT_COMMAND_SOURCE_DRIFT_REQUIRES_FRESH_PROOF. Changing the positive fixture owner to the PR's unreviewed config fails the original and added positive assertions. Every mutation is restored byte-for-byte. Initial strict types caught a readonly test.each input; copying that list resolves it. Final strict types pass (31.79 s wall, 49.54 s accounted CPU); required bun run check:pr --base origin/main passes 719 fast tests / 4,622 assertions plus 38 affected import-feedback tests / 181 assertions (64.69 s wall, 91.17 s accounted CPU); focused execution is explicit because the initial split preflight did not select these tests. No failing setup is represented as behavioral evidence.

Source equivalence is rechecked: all 62 direct top-level statements / 42 assertion sites and all 43 imported durable-suite statements / 138 assertion sites remain exact. Fresh private empty-cache frozen copyfile dependencies match qualified identity 0c2758c046f2b69d5f33b66521baf3098db5f44256b73ec96961c98d381e6245 (843 packages, 59,516 files, 1,833,832,361 bytes).

Initial hosted measurement: run 39217736277 attempt 1 failed overall. Its three browser jobs succeeded. Their actual checkout logs, case/resource artifacts and immutable Git API agree on synthetic 4e2448ea8ab6402f64413e1080738eb09fd27b8e, tree 07874b2132e08cde15e0e0b8d743f483a1f59fba, parents base 90a95123cfceb169bd2ecf7c213544db742eaed7 and original split head 17766e9a065e1e8dfb58c33c36af7f27991ed77e. This is evidence for the original split, not new hosted proof of the repair head.

Downloaded immutable browser artifacts have verified ZIP SHA-256:

All 330 discovered browser file/project instances reconcile exactly once across the three shards. All 24 navigation instances and 2,151 cases pass, with case names matching the prior complete local receipt, zero navigation skips/failures and zero unhandled errors. The complete browser domain reports 9,056 passed and 10 skipped cases outside navigation; those skips are not hidden in the navigation count. Every navigation file/project is below 250 seconds, maximum 186.961 seconds. The table records logged file elapsed time, not summed case-body time; every entry has passed status.

File suffix Cases per pointer Fine s Coarse s Mixed s
counts.pointer.tsx 1 0.174 0.185 0.183
desktop.pointer.tsx 429 163.335 182.984 186.961
durable-actions.pointer.tsx 112 33.996 33.64 34.917
handoff.pointer.tsx 7 7.442 8.335 8.321
inventory.pointer.tsx 14 4.33 4.406 4.624
keyboard.pointer.tsx 60 42.068 41.387 41.425
parity.pointer.tsx 84 74.917 83.702 85.133
targets.pointer.tsx 10 5.929 6.309 6.24
Browser shard Whole job s Build s Browser command s VM active CPU s Sampled peak used bytes
1 881 106.1 729.183 1879.57 11303219200
2 416 105.647 264.918 698.07 6673592320
3 898 106.799 745.892 1833.37 11814854656

Browser job IDs are 117945823735, 117945823953 and 117945823662. All used the unchanged pinned image mcr.microsoft.com/playwright@sha256:eff16c30e6f3f4af0a03fa4b706120d5e9b0891c344a27d64559aff5900a4a27, with four logical CPUs and approximately 16.77 GB VM memory. VM active CPU and sampled used memory cover proof commands including containers; they are not process CPU or exact peak memory. Whole-job times include setup/finalization; build/browser phases overlap that wall interval and are not extra costs.

Historical scheduling evidence at main 7f22bb6ac2892360f3a5c4d3a1f93d9997af43e8, run 39109891338, recorded the original single navigation file at approximately 481/411/428 seconds (fine/coarse/mixed). The split's largest files are 163.335/182.984/186.961 seconds respectively; summed navigation file time is 1,060.943 seconds versus about 1,320 historical seconds. These different-source observations establish smaller measured scheduling units, not a controlled speedup. Historical browser job walls were 808/887 seconds across two shards (1,695 total); this initial three-shard run is 881/416/898 (2,195 total). No whole-browser job-wall improvement is observed or claimed; the unmeasured new files still use positive default weights.

The established scripts/refresh-browser-costs.ts admission requires a successful overall CI run, not merely successful browser jobs. Executing it against this run refuses with A successful attributed CI run/attempt is required. Its checks and the existing weights remain unchanged. The issue's successful-run weight criterion remains pending even though this initial measurement meets the numeric per-file threshold.

PR #2434 stays draft and uses Refs #2417. Native mount-inspector blocker #2350 remains unresolved; no native code was changed, no expensive confirmation/ready event was requested, and no merge is claimed. Remaining: resolve that blocker, obtain successful complete candidate proof, refresh weights through the established tool, then qualify the final refreshed source. The initial base remains unchanged; no rebase or main integration was performed. The parent retains the assignment and claim, and owns the next hosted decision and final handoff. No competing claim or unassignment is introduced.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, the gates they run, release scripts, packaging. area: ui-react React chat/files/voice components, stores, WebSocket transport. type: test Coverage, harness or proof work with no behaviour change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant