Production browser checks red: theme long tasks, terminal resume/latency probe, access-screen first paint #176
Open
opened 2026-10-12 03:50:31 +00:00 by kayg
·
85 comments
No Branch/Tag specified
main
j470b-server-mesh-rejoin
mesh-compat-382
j444b-d381-key-wins-flood
j461b-macos-utun-reader-thread
j475b-remove-host-motion
fix-reconnect-new-link
j481-d380
dev
j479-mesh-soak
fix/j476-host-facts
j475-motion-pill-split
j470-mac-node-join
root-upgrade-d376
j474-review-merge
latency-targets-120hz
nightly-suite-shards
gotatun-pin-j469
macos-utun-reader-thread
fix-flood-echo-stall
wip/j416
motion-fast-ease-out
mesh-addhost-j259
takeover-close-terminals-d368
kbd-instant-followups
fix-trust-key-double-click
nightly-suite-partial-report
appwin-icons-j207
rusqlite-slice1
swipe-content-first-d374
mesh-mtu-381
addhost-instant-open
glass-contrast-d365-mock
glass-contrast-d365
signout-followups-442
fix-startup-toast-red
research-gotatun-matrix-j317
themes-sync-j304
fix-load-flakes
fix-nix-zig-patch
fix-compute01-browser-baseline
ratchet-size-baseline-419
predict-auto-d130
revoke-coverage-d367
nightly-suite-queue-timeout
nightly-browser-suite
fix-rustsec-2026-0459
fonts-ioskeley-obel
log-retention-d375
fix-kbd-no-anim-427
fix-dev-red-specs-2
takeover-proof-305-j205
wip/j410-server-pump
ui-consistency-d372
fix-osc52-clipboard
libghostty-vt-1.0
forget-retired-host-d369
j404-merge-426
fix-setup-lock-race
fix-touch-select-426
revoke-access-report-ui
fix-predictive-echo-specs
fix-selinux-agent-exec
wip/j395-checkpoint2
wip/j395
j391-review-scratch
ui-consistency-j195-deferred-rebased
fix-rustc-paths-421
decisions-wording-341
fix-install-suite-red
fix-dev-rtt-specs
fix-pending-removal-align
fix-privileged-skip
fix-install-suite-404
review-j368
mesh-dns-j254
revoke-access-report-d356b
revoke-privilege-round5
fix-removal-confirm
review-j360
gotatun-rotation-367
deps-refresh-340
review-j354
review-J351
review-j350
addhost-takeover-d359
revoke-report-items-347
revoke-end-sessions-d362
review-j348
size-mesh-ssh-346
size-trim-337
revoke-access-diff-d356
j259-pre-rebase-b06c5a6
j305-ended-at-start-spec
addhost-sudo-consent
fix-layout-real-specs-411
fix-shell-open-411
fix-console-hosts-373
fix-shell-exit
fuzz-host-name-353
fix-host-details-410
macos-filter-j197
research-gotatun-tricks
revoke-p3-j216l
stale-state-pill
revoke-followups-j216k
revoke-progress-j216e
backup/macos01-20261106/lume/j197
backup/macos01-20261106/lume/appwin-icons-j207-stash0
backup/macos01-20261106/claude/stash-0
backup/macos01-20261106/claude/stash-1
backup/macos01-20261106/claude/J80-macos-s1
backup/macos01-20261106/claude/J80
backup/macos01-20261106/claude/J80-slice1-20261102
backup/macos01-20261106/claude/J16b-appwin-on-dev
backup/macos01-20261106/claude/appwin-launch-idle-146
backup/macos01-20261106/claude/J80-s1-run
wip/j259
trust-285-p3c
runtime-lock-j216f
mesh-ssh-p3-j175
tun-proof-p3b
trust-285-p3
terminal-polish-j271
tun-proof-p3
ssh-install-flakes-j216i
fuzz-fixes-j264
trust-285-a
trust-285-b
restart-oversized-fixture-j198
backup/macos01-20261106/lume/appwin-icons-j207
restart-bound-j216h
up-preflight-p3-j198
backup/macos01-20261106/lume/j251
up-preflight-j198
wip/up-preflight-j198-j245-p2
wip/up-preflight-j198-j245-p1
agent-fsync-offloop-j196
wip/up-preflight-j198-j245
settings-offscreen-j231
wip/up-preflight-j198-j226-inspection
wip/j103f
themes-j206
wip/up-preflight-j198-j226
flakes-j216c
backup/macos01-20261106/claude/j197
flakes-j216b
backup/macos01-20261106/claude/j197-red
wip/up-preflight-j198-review
flakes-j216
backup/macos01-20261106/claude/appwin-icons-j207
engineering-j208b
appwin-mock-j209
toast-stack-j165
engineering-j208
decisions-d351
decisions-d350
decisions-d349
appearance-presets-mock-j129
decisions-d348
docs-audit-spec
doc-coverage-baseline-raise
decisions-d347
decisions-d346b
decisions-d346
j88h-profile
ui-consistency-j195-deferred
ui-consistency-j195
engineering-practices-j194
preferred-login-ui-j166
signin-pools-263-j174
macos-node-265-s1
decisions-d345
decisions-d344
proxy-cgroup-j164
verify-quick-fuzz-329
proxy-start-io-j168
timing-flakes-j163
up-263-s1
mcp-events-j147
verify-quick-fuzz-j158
proxy-p3-j159
agent-resource-j157-detect
wip/j103d-final
remote-cancel-hang-j155
proxy-traefik-281-j62d
j149-verify-quick
proxy-traefik-281-j62b
j150-drop-unnamed
wip/j79d-red-r4
wip/j103d-d332
rootless-toast-j142
wip/j103d-head
wip/j103d
j125c-mcp
macos-build-j136
backup/macos01-20261106/claude/j136
wip/j79d-red-cli
wip/j79d-red-server
j121-link-liveness
j118c-tracer-failures
wip/j79c-head
release-desktop-j131
j124c-signed-macos
wip/j79c-red-p3
wip/j79c-red-p23
wip/j79c-red-p22
merge-j128-check
perf-deferred-j128
sidebar-toggle-260
j127-shortcut-changed-dot
j125-mcp
j118-tracer-failures
j126-account-summary
settings-sections-mock-j92
j120-pinch-lock
sidebar-292
backup/macos01-20261106/claude/j120
taste-2026-11-03
row-actions-242-215
backup/macos01-20261106/claude/stash-0-untracked
backup/macos01-20261106/claude/J80-265-s1-run
backup/macos01-20261106/claude/J80-macos-s1-20261102
j112-canvas-commands
ui-no-overshoot-scroll
fix-recovery-restart
backup/macos01-20261106/claude/stash-1-untracked
taste-2026-11-02
size-baseline-ratchet
machine-cards-structure-j108
j109-boot-copy-mockups
fix-dev-red
wip/up-263-s1
j95b-settings-rows
proxy-traefik-281
j95-option-rows
docs-human-j91
docs-keys-palette
fix-flood-1013-270-j38d
mesh-ssh-s1
mesh-ssh-s0
addhost-d291-tunnel
test-stability-load
mesh-relay-220
repro-296
shim-thp-off-24
mesh-pins-258-v2
mesh-dns
signin-d311-merged
docs-pages
ui-size-283
fix-ui-batch-specs
wip/j12b-edge-update
gate-on-arm
fix-rename-sync-293
trust-285-j60b
fix-focus-ring-clip
integ-ui-1101
edge-update-v2
signin-d311
taste-2026-11-01
layout-per-tab-250
ui-approved-splitopt-224
ui-approved-splitopt-224-on-dev
icon-text-centre-282
ui-approved-189-212-216
research-reverse-proxy
transfer-budget-320
review-mesh-pins-258-r2
sidebar-pill-259
review-mesh-relay-220
wip/j12-edge-update-v2
nix-package
status-crash-loop-237
fix-dev-test-failures
fix-fixture-socket-path
wip/mesh-relay-220-pre-dev-advance-rebase
fix-canvas-side-clip
research-head-to-head
frosted-real-256
review-mesh-pins-258
wip/mesh-relay-220-pre-final-rebase
review-layout-per-tab-250-r2
broad-suite-triage
nix-devshell
review-status-crash-loop-237-r3
wip/nix-devshell-pre-p3
taste-frosted-real
wip/code-serve-demo-2026-10-30
wip/code-serve-glass-2026-10-30
wip/code-serve-clusters-2026-10-30
wip/code-merge-release94-dev-2026-10-30
wip/rproxy-delta-scratch-2026-10-30
wip/stale-note-257-staged-2026-10-30
wip/d241-size-staged-2026-10-30
review-broad-suite-207
wip/mesh-pins-258-pre-split
wip/mesh-relay-220-pre-rebase
mesh-measure-220
plan-211-update
review-edge-autoupdate-r3
perf24-reconnect
review-stale-note-r2
release-prod-live
d241-shell-marker
review-mesh-pins-server-258
review-revocation-r3
review-setup-token-r2
review-sync-journal-r3
wip/review-mesh-pins-258-prune-review-1995fee46
frosted-scroll-256
sync-journal-r3
revocation-per-account-wip
review-tokio-asyncfd-0386
review-sync-p3s
wip/stash-8by64-stash0-2026-10-30
mesh-drag-r2
setup-token-data-wip
release-9-4
auth-busy-1013
mesh-view-overlap
sync-p3s
review-auth-busy-wake
review-readd-r8-wip
mesh-drag-bounds
audit-auth-93
app-windows-stream-start
review-authority-cap-r3
app-windows-r7-measure
readd-minimal-r6
readd-minimal-r5
app-windows-r7-soak
readd-minimal-r4
app-windows-r7
app-windows-r6
readd-minimal-r3
readd-minimal-r2
readd-minimal
merge-release8-dev
review-busy-page-liveness-r2
review-busy-page-liveness
mesh-view-trim
review-authority-read-retry-r2
review-remove-uninstall-r2
release-retry-reattach
release-retry
review-remove-uninstall
review-authority-read-retry
app-windows-ship
mesh-autoswitch-p2
mesh-ssh
mesh-relay
mesh-macos-node
screen-and-control
session-labels
review-real-logins-r5
review-real-logins-r4
review-real-logins-r3
shim-memory-r2
review-real-logins-r2
shim-memory
shadow-addhost-instant
shadow-real-logins
shadow-same-session-flood
shadow-prod-perf-fix
hosts-from-server
app-windows-real
app-windows-transport
release-prod-6w
mesh-policy-verify
quiet-close-toast
dev-merge-r4
review-mesh-agent-transport
review-app-windows-transport
settings-roundtrip
review-release-pipeline-r4
mesh-agent-transport
ended-strip-fix
review-audit-ca-update-d244
settings-rows
phone-width
signout-clear
fix-restart-tests
dev-merge-rp
signer-hardening
review-audit-ca-update
terminal-fidelity
review-audit-ca-update-wip
mesh-integrate
review-mesh-agent-transport-515d3712
review-mesh-dataplane-feec1988
mesh-dataplane
signout
research-canvas-node
wip/review-renderer-cost
wip/review-terminal-fidelity
padlock-glyph
review-release-pipeline-2e95b689
phone-polish
sidebar-polish
inbox-generic
review-mesh-dataplane-378d4055
prod-batch
ui-inbox
ui-ca-unlock
ui-machine-sections
review-mesh-dataplane-a5f744fb
tls-session-prod
session-bounds-prod
fix-dead-session
session-bounds
tls-session
palette-polish
shortcuts-d222
research-appmeta
phone-gutter
ui-centre-button
wip/ui-centre-button
wip/tls-session
review-addhost-breakit
ui-platform
renderer-cost
remote-agents
mesh-api
ssh-bootstrap
prod-hotfix2
prod-fixes
review-remote-agents
review-mesh-dataplane
session-life
research-browser
review-mesh-api
research-capture
review-mesh-api-round3
review-mesh-api-round1
gate-stability
review-gate-stability
review-relay-direct
review-mesh-api-findings
proto-sessions
font-picker
proto-addhost
proto-windows
mesh-core
latency-gate
research-bsd
research-discovery
keytray-mods
mock-core
ui-tweaks
fix-motion-sel
fix-motion
integrate2
fix-robust
t-web
t-server
vt-ghostty
fix-snap-echo
t-web-auth
review-vt2
t-agent
lane-protocol
lane-shim
lane-auth
s1-base
s1-contracts
s1-workspace
No results found.
No labels
launch-qa
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/infraternal#176
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by the prod3 A/B (~/.local/state/codex-jobs/infraternal/prod3-ab/ab.md, posted on #169): these fail on live production
b4ae9e22and on1f77a449alike. Owner 2026-10-12: fix immediately. Job: prod-perf-fix.Starting #176 on prod-perf-fix, base/head
1f77a449ed(production release-prod-3). Read #176 and parent #169 history/A-B evidence; no prior #176 work. D81/D188 budgets and visuals remain unchanged. Browser plugin unavailable; use production Playwright at unique port 4976 under local CPUWeight=10000 scopes. First capture main-thread attribution and cold request waterfall, then atomic repairs, interleaved baseline/head 3 each, and final gates. No deployment.Baseline diagnostics (#176): production theme test fails with 5 long tasks (52,53,89,52,53 ms); switch p99=13.5ms, palette setters p50=0ms, repaint p50=26.7ms. LOAF attributes deferred repaint forced style/layout up to32.3ms. Chromium timeline separately shows UpdateLayoutTree/Layout/Paint/Layerize/Commit; a56.042ms timer callback used9.325ms thread CPU, so shared-host descheduling contributes. Renderer assigns canvas font per row (vendor renderAsciiRunsAndComplexCells); terminal.ts font wrapper currently calls native setter even for unchanged fonts. Testing a guarded native setter with reset detection; no pixel/geometry changes.
Cold baseline waterfall: HTML→main.js end1933.5ms→static dependencies2283.3→auth/status2630.5→auth/session2965.4; 8 blocking sheets209380B identity +main111556B +static9483B +default font46432B. Plain theme fixture retained10000rows/605847output bytes, WASM35848192B. Evidence diagnostic-base.log/theme-timeline-base.log and public asset/LOAF/timeline artifacts. Budgets/RTT/sample counts unchanged. Initial inline-document experiment remains red, not accepted; correcting early preload discovery and measuring again.
Login root cause: src/auth.ts made six serial requests login-start→login-finish→unlock-session→wraps→unlock-finish→session before terminal setup; at300ms RTT these alone cost1800ms. Restricted unlock-session and encrypted wraps are read-only under the same pending cookie; fetch them concurrently, preserving the transaction-bound unlock-finish, PRF fallback, unwrap and logout cleanup. Unchanged10-sample sign-in checks now p99=4524.6 and4484.7ms versus5000ms; these are exploratory loaded-host runs, not final interleaved evidence. No server/auth contract changes.
Prediction root cause: src/predictive-echo.ts draws immediately on input then redraws the unchanged overlay in its visibility rAF. New production-renderer regression fails on untouched1f77a449 (2draws, expected1), passes after repair (1draw; K still visible). Visibility still recorded at the next frame, never at JS insertion. Evidence prediction-red.log/head5.log. Reduced work does not yet establish glyph p99 or overall gate PASS.
Deferred repaint lowers median JS repaint27.2→7.1→4.4ms, but long tasks persist under load46–80 and are not waived. Access remains red. Kept main.js module identity after rejecting duplicate inline startup; now testing only access CSS inline, other unchanged sheets loaded alongside login before terminal mount, and lazy recovery codecs. All budgets/assertions/sample counts/RTT unchanged.
Host-load finding: infraternal-dev reports12online CPUs; load reached107.08/79.63/59.50 during exploratory runs. All browser benchmarks stay in CPUWeight=10000 scopes. Own cold native gate scope reduced toCPUWeight=100 during browser investigation (native gate is not a benchmark) to avoid competing with the measured browser. No CPU load generators, SSH, perfVM, budget changes or exemptions. Prediction CPU p99=1.2ms passes2ms, but rAF visibility p99=70.6ms and reconnect1095.7ms still fail17/900ms; theme tasks persist despite median repaint4.4ms. These failures remain unwaived. Will finish prescribed interleaved baseline/head and separate actual scheduler limits from code work.
Completed logical step
c2e5d528: unchanged predictive glyph is drawn once, then visibility is recorded at the next animation frame without a redraw. Pushed prod-perf-fix only. Baseline production renderer regression2draws→head1draw, visible K unchanged; head5.log. Typecheck PASS, source/crypto/document153PASS/0FAIL (step-check.log/step-tests.log). Overall browser budgets remain red and unwaived; no deployment.Completed/pushed only prod-perf-fix:
8d72edaaconcurrent restricted login reads;ecf956c6two exact-transaction overlap/refusal regressions;c0db6ca7native canvas font setter guard with reset detection. Per-step fmt/typecheck PASS; latest source/crypto/document gate155PASS/0FAIL/11254assertions,1029ms (head9-tests.log). Auth regressions baseline0PASS/2FAIL→head2PASS; native-font production regression baseline34assignments/unchanged redraw→head0, backing reset restores requested face (font-red.log/prod-head.log). No authority, appearance, budget or foundational dependency change. Actual production-build diagnostic also remains red under shared load, so no preview-build-only cause or completion claim. Input-before-painter regression is red on baseline and green experimentally; next atomic step pending.Milestone scripts/verify fast reached fmt/nativefmt/clippy/cargo-deny PASS. Test row FAIL(101) is exit101, not101failed tests: agent_review initial_attach_requires_explicit_credit_before_replay failed because its Python fixture assumes relative target/ exists despite CARGO_TARGET_DIR (FileNotFoundError target/ac4149150). Added only an ignored target symlink into this job's HOME scratch; isolated fixture rerun in progress. No product/Rust change or load exemption. Static row also fails unchanged production snapshot: static x86size20093776B >16404816B; same inherited #169 blocker, budget unchanged. Full milestone log fast-milestone.log; final full head gate still required. Browser exploratory head11 fixture stopped during the run (socket hang-up then ECONNREFUSED), after four regression cases passed; no app success claim from that incomplete run.
Additional measured causes: plain/soft theme choices reinstalled an identical adopted backdrop stylesheet via CSSStyleSheet.replaceSync. Production-base regression records1replacement for Paper→Ink despite both using none; cached identical rules eliminate it without changing CSS. Native prediction font setter regression records1redundant assignment on a subsequent glyph; shared packages/ui cache now records0, with geometry invalidation/reset detection retained. Head11 four renderer/input regressions passed, then fixture vanished (socket hang-up/ECONNREFUSED); rerunning at new unique port5026. No timing waiver.
Cookie-read floor: previous document waited status→session (HTML300+status300+session300ms). Start both reads with the document; setup and invalid status must discard unused session snapshot before registration/retry. Regression0PASS/2FAIL on1f77a449; prototype invalid-status case1PASS/1FAIL before cleanup repair. Also prepare public core/terminal modules, selected font and WASM concurrently with the post-login cookie read; no terminal/socket/renderloop starts before existing identity checks. Inline bootstrap bytes now count against unchanged D188 JS limits. Final gates and interleaved comparison remain due.
Completed/pushed logical step
bb22741c93: Send and predict input before waking the host painter. fmt/typecheck/source+crypto+document gate PASS; logs input-order-{fmt,check,tests}.log. The renderer wakes by painting synchronously. Handle input before that wake, Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
84d3c7f794: Protect input dispatch ahead of the unchanged painter. fmt/typecheck/source+crypto+document gate PASS; logs input-order-test-{fmt,check,tests}.log. The regression captures only operation order, never frame contents. It fails Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
dbdc9f0111: Share in-flight terminal engine initialization. fmt/typecheck/source+crypto+document gate PASS; logs engine-prepare-{fmt,check,tests}.log. Fifty concurrent cold preparations created fifty real WASM instances and Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
d17c83d75f: Exercise fifty concurrent preparations against real WASM. fmt/typecheck/source+crypto+document gate PASS; logs engine-prepare-test-{fmt,check,tests}.log. Measure actual compilation/instantiation and initial memory for fifty callers. Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
8d66a294b6: Reuse the prediction canvas font until native state changes. fmt/typecheck/source+crypto+document gate PASS; logs overlay-font-{fmt,check,tests}.log. Every predicted glyph reassigned its unchanged native font. Cache the request Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
8be4e3c699: Protect native font reuse and backing reset recovery. fmt/typecheck/source+crypto+document gate PASS; logs font-state-tests-{fmt,check,tests}.log. Production renderer checks require zero setters on unchanged redraw/glyph Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
9206c76051: Load recovery codecs only when a ceremony needs them. fmt/typecheck/source+crypto+document gate PASS; logs recovery-codecs-{fmt,check,tests}.log. The English word list and recovery codec were on every access document Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
17dc46bee9: Consume parallel startup reads once and discard stale snapshots. fmt/typecheck/source+crypto+document gate PASS; logs startup-auth-{fmt,check,tests}.log. The access document can start status and session in parallel with assets. Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
7afa3c4b13: Protect fresh cookie reads after setup and status failure. fmt/typecheck/source+crypto+document gate PASS; logs startup-auth-tests-{fmt,check,tests}.log. Both baseline regressions retain the unused startup response; head discards Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
4b90d49886: Avoid redundant theme stylesheet work and separate repaints. fmt/typecheck/source+crypto+document gate PASS; logs theme-work-{fmt,check,tests}.log. Plain/soft theme choices replaced identical backdrop rules and globally Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
4c6839431e: Protect reuse of unchanged backdrop rules. fmt/typecheck/source+crypto+document gate PASS; logs theme-work-test-{fmt,check,tests}.log. The real production-base palette action replaces an unchanged sheet once; Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
d55a7bffb2: Build parallel asset discovery with the unchanged access styles. fmt/typecheck/source+crypto+document gate PASS; logs critical-document-{fmt,check,tests}.log. Preserve cascade bytes and entry-module URL identity, inline access styles, Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
9de27d59ae: Protect cascade order and entry identity in generated documents. fmt/typecheck/source+crypto+document gate PASS; logs critical-document-test-{fmt,check,tests}.log. Exercise static graph discovery, unchanged style ordering, preserved main Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
42743c22f3: Overlap access assets and authenticated terminal preparation. fmt/typecheck/source+crypto+document gate PASS; logs access-startup-{fmt,check,tests}.log. Eight blocking sheets and serial script/font discovery consumed several Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
8a80d0690e: Check the built access critical path. fmt/typecheck/source+crypto+document gate PASS; logs cold-document-test-{fmt,check,tests}.log. The baseline built HTML has blocking terminal sheets and serial entry Browser budgets remain unwaived; final interleaved/full gates pending.Completed/pushed logical step
9cf26b07f0: Include inline bootstrap in the strict transfer budget. fmt/typecheck/source+crypto+document gate PASS; logs inline-budget-{fmt,check,tests}.log. Inline discovery code still transfers before first paint. Count it with the Browser budgets remain unwaived; final interleaved/full gates pending.Code head frozen at9cf26b07, all logical code/test slices pushed separately on prod-perf-fix; each SHA/gate recorded above. Source+crypto+document159PASS/0FAIL,11266assertions; typecheck/fmt PASS. Real50-caller initialization: baseline50instances/62259200initial bytes→head1/1245184; no terminal state included. Strict production transfer including787inline JS bytes: criticalgzip294968/307200,Brotli245444/256000; deferred48923/51200,43230/45056. Cold built-document regressionPASS. Author review reviewer-checklist.md.
Started exact prescribed original three-spec comparison (dead-session,terminal-theme,terminal), base1f77a449 thenhead9cf26b07 repeated3each; ports5036/5026; RTT300/jitter30; CPUWeight10000; no concurrent builds will replace either dist during the comparison. An earlier exploratory dist rebuild overlapped a browser run; its later samples are invalid and excluded from acceptance. Temporary target symlink is untracked (not ignored), will be removed with scratch at finish. Corrected real attach-credit fixture8PASS/0FAIL20.76s. No deployment or budget changes.
Frozen code head
9cf26b07: required six interleaved 300ms RTT runs complete; all original specs/sample counts unchanged. Returning sign-in head p99 4173.1/4401.2/4612.8ms PASS. Theme repaint medians base11.9/11.0/13.6 -> head1.9/2.2/4.8ms, but head long-task counts1/2/2 FAIL. Prediction p99 21.0/18.6/41.1ms FAIL; negative rAF medians invalid evidence. Access head2 setup/signin p99 1843.2/1039.3ms FAIL; head3 1597.4/1358.1ms FAIL. Head1 reset socket hung. Baseline also has fixture errors; not waived. Evidence: evidence/prod-perf-176/ab-{base,head}-{1,2,3}.log and ab-runs.json. Full final native/additional browser gates underway. Acceptance not met; no deployment or issue closure.Remaining acceptance failures, not waived: Chromium diagnostic (full document + history + 50 unchanged switches) reports 24 switching long tasks under increased host load, theme repaint median2.2ms / clickp998.4ms. Trace slices include style/layout/paint/compositor; several >50ms wall tasks use9–19ms renderer CPU. Summary evidence/prod-perf-176/traces/final-main-thread-summary.json excludes payloads. Diagnostic returning signinp995059.8ms now FAIL; six-run comparison improvement is load-window limited. Prediction rAF timestamps can predate input (negative medians); no passing visibility claim can use them. Requires correcting measurement chronology, then new comparisons.
Potential design-sensitive next step: main.ts:157–161 deliberately awaits selected font or800ms timeout before rendering access UI. Removing that wait can expose fallback text (CSS font-display:swap). Brief prohibits appearance changes: defer such a change to the design pass rather than implementing it here. Default font is already preloaded and access CSS now inline; no new foundational library chosen. No assertion, budget, sample count, RTT or deadline raised/reduced. Host scheduling contribution is measured, not grounds to waive zero-long-task/17ms/1000ms requirements. Orchestrator needs to arrange a controlled load window for further physical paint evidence; this job will not touch other hosts or jobs.
Additional gate on code9cf26b07: 54pass/2fail of56 checks. All27 addhost-wizard, font-switch3, native-font-state2, prediction-order/draw2, theme-rule1 and screenshotcapture1 pass; sessions-canvas18/20. Failures: combined empty/loading/error case hits unchanged30s timeout; manager idle script count39->43 afteropen. Same-window exact2case run on production1f77a449: combinedcase30s timeoutFAIL, managerPASS. Head targeted repeat: same combinedcaseFAIL, managerPASS. Thus combinedcase reproduces on both revisions; idlefetch failure intermittent, not erased/waived. Logs final-additional.log additional-baseline.log additional-head-repeat.log. Six explicit production screenshots retained evidence/prod-perf-176/screenshots at1440x900/393x852, empty setup/sign-in and mockterminal only; for independent review. Full native suite still running; no acceptance/completion claim.
Completed/pushed evidence step2562ee8895c4fc879aa367756f9dd9afe26ac972. Code remains9cf26b07; no source changes. Six interleaved logs, sanitized wall/CPU trace summaries, regression failures, full native/code-head outputs and six explicit production captures committed under evidence/prod-perf-176/README.md. Evidence commit fmt/check/155 source tests PASS. #176 acceptance remains unmet: three requested specs red; additional suite54pass2fail; inherited static-size gate red. Final full scripts/verify fast now running on2562ee88 withumask022/CPUWeight10000. No deployment/issue closure.
Final run record / acceptance NOT MET. Branch prod-perf-fix, pushed head
2562ee8895; source unchanged from9cf26b07. No deployment, issue remains open.Six interleaved production1f77a449/head9cf26b07 runs at300ms RTT, unchanged counts/assertions. Returning sign-in head p994173.1/4401.2/4612.8ms passes in that window; heavier diagnostic5059.8ms fails. Theme head long tasks1/2/2, prediction p9921.0/18.6/41.1ms and access upper bounds remain red. Negative cached-rAF prediction medians are invalid paint evidence, not improvements. Reconnect also remains over900ms. Additional suite54pass2fail; combined-state timeout reproduces on baseline/head, idle-fetch failure intermittent and retained. No waivers/budget/sample/RTT changes.
Standalone required gates PASS: bun run check; bun test src155pass0fail10943assertions; production build; transfer critical gzip294980/307200 Brotli245433/256000, inline startup counted. Final scripts/verify fast on this exact head exits1: fmt/nativefmt/clippy/workspace tests/cargo-deny PASS; inherited static binary20093776 bytes >16404816 FAIL. Default group-writable umask permission failure was corrected withumask022, no source/assertion change. All per-step code/test commits were pushed; final evidence commit42 files9846lines, fmt/check/source tests PASS.
Evidence committed: evidence/prod-perf-176/README.md, six raw interleaved logs and ab-runs.json, sanitized wall/CPU trace summaries, failing-first regressions, original additional suite plus baseline/head diagnostics, production captures1440x900/393x852 (empty access and mockterminal only), reviewer-checklist.md. Independent visual review required; author makes no visual-quality/iPhone claim.
Remaining work: zero long tasks and17ms/1000ms tails still unmet. Orchestrator must arrange a controlled load window to separate scheduling from work; this job did not use another host or touch other jobs. Owner/design pass required for the proposed font-wait removal, since rendering before selected-font readiness can expose fallback text (main.ts157–161 currently waits selected font or800ms). Visibility measurement chronology must be corrected before accepting cached-rAF deltas as paint evidence. These are unresolved requirements, not a request to raise limits. This run stops short of completion under the brief's visual-change boundary.
Exact final branch-head command: umask022; systemd-run --user --scope -p CPUWeight=10000 env CARGO_TARGET_DIR=$HOME/.cache/codex-scratch/prod-perf-fix/target INFRATERNAL_TEST_STATE_ROOT=$HOME/.cache/codex-scratch/p176 RUST_TEST_THREADS=4 TRACER_TEST_PORT=5026 scripts/verify fast. Full output verbatim follows (no gate skipped or edited):
Starting independent review on local branch review-prod-perf-fix. Target head:
2562ee8895; diff base:93b00f5ab9. The Forgejo issue API is currently returning an invalid content type, so I could not read the existing comments before starting.Finding F-001 (P1), committed as
dfddaec3cc.crates/plugins/ssh/src/bootstrap.rs:413ignores the failure-cleanup timeout. Regressionbootstrap_runtime::remote_backend::tests::cancellation_retries_retirement_after_temporary_writer_contentionuses the real SQLite backend, holds the writer during cancellation, then releases it. It failed in 5.07s: activeremote_hostswas 2, expected 1. The invitation remains active after cleanup times out.Finding F-002 (P2), committed as
4e3a2692. Incrates/plugins/ssh/src/install.rs:217, Join failures pass throughFailure::in_mode;crates/plugins/ssh/src/model.rs:283maps status 71 without considering the failed step. The Join script uses 71 for transaction-state guards, so the guidance wrongly claims the rootless data directory is foreign or unsafe.join_stage_state_refusal_keeps_join_recovery_guidancefails with that exact message. Test-only evidence is onreview-prod-perf-fix.Perf VM comparison complete: base
1f77a449vsorigin/release-prod-3w(4855e033), 3 interleaved runs each oftest/terminal-theme.spec.tsandtest/terminal.spec.ts, 300 ms RTT ±30 ms. Host: Debian 13, kernel 6.12.69, 4 vCPUs; Bun 1.4.2, Playwright 1.61.1, Chromium 149.0.7827.55. Each slot had a unique port and held/var/lock/perf-bench.lock; load below is 1/5/15-minute average immediately before the slot. Locally built production bundles were served by the VM. Results and raw reports:evidence/perf-vm-browser/20261012T083333Z-726800496-2080513/summary.md.Interpretation: the theme long-task failure did not reproduce in any of the six low-load VM slots (0/50 long tasks each; switch p99 1.0–2.5 ms), so the earlier shared-host theme result is load-sensitive evidence. Resume remains over budget in all five slots that emitted a measurement (973.0–1015.2 ms vs 900 ms), and setup/sign-in render tails fail in all six (1.655–2.926 s vs 1 s), so those failures are real on both revisions and are not explained by the earlier build-host load. BASE-3 is recorded as a test failure, not a resume pass.
Additional terminal metrics varied by slot: returning sign-in p99 was 5013.4 / 5016.7 ms on BASE-1/2 and 4010.4 / 5015.0 / 4966.7 ms on HEAD-1/2/3 against 5000 ms; predicted glyph p99 was BASE 13.9 / 27.4 / — ms and HEAD 14.7 / 13.9 / 26.5 ms against 17 ms. Full first-contentful-paint samples, per-test outcomes, failures, versions, loads, and raw JSON are in the evidence directory above.
Review complete. Target head:
2562ee8895. Evidence branch head:4e3a2692. Verdict: HOLD (P0/P1 present): 0 P0, 1 P1, 1 P2, 0 P3.F-001 P1:
cancellation_retries_retirement_after_temporary_writer_contentionfailed against the real SQLite/backend fixture: after the held one-connectionBEGIN IMMEDIATEtransaction was released, 2 remote hosts remained active; expected 1. Committeddfddaec3.F-002 P2:
join_stage_state_refusal_keeps_join_recovery_guidancefailed because a Join-stage status 71 was reported as a rootless data-directory ownership refusal. Committed4e3a2692.scripts/verify faston target head2562ee8895, output summary verbatim:+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | FAIL (101) |
| test | FAIL (101) |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+
The Clippy build failed when Zig could not fetch pinned public dependencies (
HttpConnectionClosing). The test row failed inremote_server::tests::failed_restart_endpoint_does_not_prevent_http_serving: HTTP startup deadline, with SQLite connection acquisition logged at 4.11s; this test is outside the brief's named load exemptions and remains unwaived. Static build output: x86_64 musl binary 20,093,776 bytes against a 16,404,816-byte budget. The job report also says theme long tasks, predicted glyph latency, and access paint tails remain red. I did not remeasure performance because this review brief explicitly prohibits using the performance VM, and build-host timing is not valid evidence.No push or issue closure.
Orchestrator: round-1 review HOLD findings F-001/F-002 are inherited add-host defects from the release-prod-3 base, fixed on addhost-fixes2 round 3 (
6be5514d). Round 2 (queued after perf-vm-browser) merges dev/addhost-fixes2, confirms both review tests pass, and fixes the reported clippy failure.Starting round 2 on prod-perf-fix at
2562ee8895. Read #176 and parent #169 history, contracts, and round-1 evidence. Integrate origin/perf-vm-browser and current origin/dev (21b37bca), retaining original budgets/auth checks. Measurements only on VM208 via scripts/perf-vm/shared lock (D256); no deployment. Confirm inherited F-001/F-002 regressions and Clippy, then interleaved 1f77a449/HEAD baseline before repairs. D259 resume and single-surface theme fade acceptance included. Push only prod-perf-fix.Runner finding: scripts/perf-vm-remote.sh:101 acquires the shared lock once before all six A/B slots and releases only at process exit; scripts/perf-vm:remote_rsync_path also locks artifact transfers. This conflicts with D256 short measurement-only ownership. Baseline is already staged, no mutation of its inputs. Next runner slice will acquire/release per slot, avoid locking transfer, and use a run-specific temporary alias. Original specs/budgets unchanged.
Integrated head finding: unchanged combined sessions empty/loading/error test passes (manager-original.log). New isolated Retry regression retains the loading assertion and six rows within original 6000ms deadline, verifies its HTTP response and zero page errors: 3/3 pass locally (functional evidence only). This does not erase release-prod-4 VM failures. No inventory source fix or timeout increase is justified yet; compare isolated and original cases on VM208 after current baseline. Integration merges 567cab9f/35382a10 pushed; tracer check/181 source tests passed. Runner history corrected to
b6def4d3with exact-head lease after accidental inclusion of pending review tests; tests remain uncommitted until their native gates finish.Review continuation:
4e3a2692exact Join status-71 test PASS; retained inda4f74eb. Default server/SSH all-target Clippy and fmt PASS without exceptions (round2/review-regressions.log). Initial F-001 invocation selected zero tests because remote is now a removable feature; corrected --features remote selected the exact test and failed at its obsolete fixture (RecvError, before durable-count assertion; review-remote-regression.log). Old HeldStage compares CHECK_SCRIPT equality, but current probe appends setup-state checks. Adapt fixture to the existing PausedInvitation committed-transaction barrier and watch channel completion; preserve active-host count=1 and original 7-second cancellation bound. Rerun in progress. Isolated Retry regression committede172d166; 3/3 functional PASS, no inventory source change. Theme acceptance regression fails before prototype (0 surface transitions vs required 1); prototype functional 4/4 PASS, perf/frame evidence still pending.Perf VM browser A/B — #184
Setup
1f77a449ede540281319ba01d149a2f60d584f3b.35382a108cb8a0d0f5c34293fc04af9719e2ad53.test/terminal-theme.spec.ts, test/terminal.spec.ts, test/dead-session.spec.ts.TRACER_TEST_PORT; tests use the locally built production bundle.Runs
1f77a44935382a101f77a44935382a101f77a44935382a10Timing checks
Resume tails are not yet valid: the probe leaves the previous numeric result visible during the next trial. A new functional regression reproduces this stale-report defect; fix pending-state publication, then remeasure all trials. Captured frame prototype on VM208: p50/p99 frame gaps16.7/50ms,88 of299 gaps >16.7ms,zero long tasks. Not accepted. Its sanitized histogram/spans are under20261012T222010Z-1873564931-3332391/decoded. Access waterfall main body takes
480ms after response headers, despite parallel discovery; fixture sends79KB identity main vs24KB Brotli shipped sidecar. Production web_assets.rs enables Brotli/gzip but mock serveDist serves identity only; confirm/repair fixture fidelity without claiming a production-source speedup. Native milestone fmt/VTfmt/compileout/Clippy/cargo-deny PASS, test FAIL due job TMPDIR-generated Unix socket path>SUN_LEN, static budgets FAIL22465520/19899080 bytes vs16404816/13817816; no waiver. Short real scratch path prepared for final gate.Baseline driver completed all six measurements and copied results, then hit a shell parse error because its script file changed while running; frozen VM inputs unchanged and no run omitted. Original runner retained six-slot lock; future runs use per-slot ownership.
D259 protocol proposal (before code): the current resumed connection spends an HTTP upgrade RTT then an application restore RTT, with the graceful-close RTT before them. Keep the WebSocket transport and audited frame codec. Advertise an additive initializer capability in server Hello; only after that advertisement, permit a bounded initial Hello/Resume/AttachTerm/Credit/Resize packet in WebSocket subprotocol offers, selecting only a fixed protocol name in the response. No Input, Call or Subscribe, no capability in URLs/storage, no header/subprotocol logging. Seed the existing receive buffer after unchanged Origin/cookie admission; existing resume ownership, active=0, token rotation, plugin checks, quotas and replay-fence checks remain mandatory. A brief bounded wait for an authenticated old closing connection may preserve active=0 without a race; do not implement active-connection takeover or relax exclusivity. Overlap explicit reconnect with graceful-close acknowledgement, with legacy fallback for unadvertised servers; measure on VM208 at LAN/150/300ms. This adds no standby sockets or idle timers and chooses no new library/engine. Parser/authority tests and malformed-initializer fuzz coverage are required before accepting it. Current fade capture remains unaccepted (50ms frame gaps); investigate registration/scoping of inherited theme tokens without changing appearance. Source suite181/0 on VM208; held-fence and real renderer/query/clock functional gates7/7; stale resume-report test reproduced before fix and now2/2 functional gates pass, with unchanged budgets.
Completed measurement fidelity corrections:
8e4f0d23clears the previous completed resume value before each trial (regressioncd1b3f12was red before).03bd529aserves prebuilt br/gzip and representation Content-Length in the browser fixture; production already does this in crates/infraternal-server/src/web_assets.rs. Regressiond41b02e0was red before (accepted br returned no Content-Encoding). Tracer check passed; asset negotiation, repeated-resume report and replay-readiness functional cases: 3 passed. Logs: evidence/prod-perf-176/round2/asset-representation-{check,functional}.log.715129d1removes redundant root attributes around captures; same 180ms single opacity fade, functional ready check passes. VM remeasure in progress; no speedup claimed until VM evidence.VM remeasure
715129d1(evidence/perf-vm-browser/20261012T233835Z-2160640603-152699): corrected production precompressed asset fixture, setup upper p99 758.30ms / FCP 695.40ms; sign-in upper p99 727.60ms / FCP 673.40ms (30 samples each, 300ms RTT±30ms, pre-load .05/.07/.31, 4 vCPU). This is fixture fidelity, not a production-code startup speedup. Fresh independent resume n=20 p50 979.80/p99 996.70ms: still fails unchanged 900ms assertion. Predicted glyph n=20 p50 10.40/p99 15.30ms passes 17ms with corrected causal clock.Theme removal of redundant capture root attribute: p99 50.1ms, 12 gaps >33.4ms, one long task. Candidate universal CSS token registration (
80147f05), computed paint values identical, no improvement: both variants p99 50.1ms, 12 >33.4ms, zero long tasks in that separate run (evidence/perf-vm-browser/20261012T234017Z-142666671-159160). Candidate remains test-only.New deterministic session-manager finding: a pointer close callback executes after a replacement manager opens and unconditionally clears the current manager reference (apps/tracer/src/canvas/windows/session-ui.on-demand.ts). Inventory updates then leave its visible rows stale. Regression evidence/prod-perf-176/round2/session-manager-owner-red.log: expected replacement row count 2, received 1; repeated-resume regression in same run passes. Fix guards cleanup by manager identity. The isolated retry VM failure occurs before the error card exists, a separate scene initialization issue still being investigated.
Reconnect ordering regression evidence/prod-perf-176/round2/reconnect-order-red.log: replacement socket count stays 1 when the old close event is withheld. Locally retiring a requested drop after sending Close lets the bounded retry overlap the closing flight; server active=0 resume exclusivity is unchanged. Functional regression passes after fix; VM speed evidence pending.
Completed
9c85d82aVM check: all 3 selected production-renderer tests pass (terminal interaction/prediction/resume, manager ownership, isolated error/retry). 300ms RTT±30ms, 4vCPU, pre-load .07/.08/.19. Fresh n=20 resume p50/p99 changes from 979.80/996.70ms at715129d1to 680.00/697.30ms afterdf3e2747locally retires the closing socket (no authority/exclusive-writer change); unchanged 900ms gate now passes. Predicted glyph p50/p99 8.70/14.40ms, 17ms gate passes. Returning sign-in p50/p99 4122.00/4131.40ms under5000ms. Table/raw reports: latest evidence/perf-vm-browser run for9c85d82a, evidence/prod-perf-176/round2/reconnect-manager-driver.log. Three interleaved before/after repetitions now running.Manager repair
314e34f1, regression9c85d82a: current card keeps inventory updates while prior pointer-close retires. Local exact regression passes; VM exact regression and Retry both pass. Reconnect regression6d1bd70d: withheld old close callback passes; stale resume-result regression passes in isolated run. Tracer check passed. Batched local runs also recorded two fixture reset socket-hangups and intermittent absent scene manager, not papered over or timeout-raised.WebKit attempt could not launch: existing shared config passed Chromium-only --disable-renderer-backgrounding, which WebKit rejects. Need engine-specific launch options before WebKit timing evidence; no numbers reported for that failure.
Interleaved VM before/after completed (
715129d1->9c85d82a; evidence/perf-vm-browser/20261012T235254Z-2480351818-297896/summary.md). Both use corrected compressed-asset fixture and distinct resume samples.4vCPU VM208, 300ms RTT±30ms, unique ports4735..4740; pre-loads recorded per slot. All seven ended-session cases pass on all6slots. Retry absent initial error card: base1 andhead2; remaining4 pass. Theme retained-history/ANSI/colors and JS-click/long-task assertions pass, but selection after a theme choice fails unchanged distance<=3 with119 on all6slots. Investigating publication before the capture update completes, without weakening the assertion.
Source suite on VM after recovery-prediction change:181pass/0fail/11016expectations (evidence/prod-perf-176/round2/offline-prediction-source-vm.log). All-target native server clippy passes for bounded metadata parser and the initial real-TCP authority tests (3pass: rotation without body handshake, active/wrong-token refusal, Origin/cookie ordering). Metadata remains behind existing auth and inactive-writer checks; packet has no Input/Call/Subscribe and is bounded4KiB. Fuzz target being built.
New long-lived-socket finding: client spent its120s resume grace from Welcome even though server starts it at disconnect. Virtual-clock regression resume-window-red.log fails because neither binary Resume nor metadata is offered after10min of live use. Fix aligns grace with actual drop and never renews it for failed attempts.
Round 2 progress at
adb20e6a: bounded initialized-upgrade parser/client/native route and protocol description are committed separately (278f57d7,51d79c88,8d067a32,2d8cdc91,0381c780,5ac3117a). Native upgrade authority tests: 3 pass; full auth suite: 109 pass, 0 fail; VM source tests: 183 pass, 0 fail. Seeded upgrade parser fuzz: 1000 runs pass, coverage/ASAN enabled (fuzz-only LTO disabled to resolve instrumentation link failure). No auth checks or active-writer guards relaxed.New reproducible manager cause: lazy module completion retained a detached window/anchor after a rebuild. Held-chunk browser regression fails before the fix and passes after
f02ab474; replacement-manager regression passes too. Testf093e751. Retry still intermittently fails before initial error-card opening, so it remains unresolved.D259 strict retained-glyph/replay-fence test
d9be3d3anow queued on VM at 150 ms together with original theme selection assertions. Prewarm-theme candidate41e8ad4fqueued on VM; no production culling shipped. Evidence/logs: evidence/prod-perf-176/round2/{session-rebuild-red.log,session-rebuild-green.log,upgrade-auth-full.log,upgrade-metadata-fuzz-seeded.log,upgrade-source-vm.log}. Final full fast gate still pending; static transfer caps previously fail on inherited production sizes (#175), no waiver applied.Completed steps: 577bfc19/4a621e9c finish palette color transitions before capture and publish usable theme readiness after the native 180 ms opacity ends. Functional regression red: live input target was HTML and four independent color transitions survived capture; green: hit target is the terminal and zero paint transitions. CSS pointer overrides were tested and rejected; native captured contents cannot receive pointer input during the fade (https://www.w3.org/TR/css-view-transitions-1/). Production colors and duration unchanged.
468e4216/2f3ae76c give pending parsed output one local paint frame to publish its safe resume cursor before choosing the initialized upgrade; deterministic test red then 3 assertions green, tracer check passes. Longer writes retain binary fallback, no cursor/auth approximation. Current dev merged as
54cee075(D250). Headca108359pushed; integrated fast gate and VM source gate running.VM candidate
41e8ad4f: Chromium theme frames baseline p99 50.1 ms, narrow 120 px prewarm p99 16.8 ms, zero long tasks, identical body rectangles; raw >16.7 counts 93 baseline/79 prewarm include timestamp quantization and remain a literal acceptance miss. No production culling shipped yet. VM evidence 20261013T023643Z-647961738-1989884, 4 vCPU, load before 0.46/1.03/1.35. WebKit comparison queued.Strict D259 first run
adb20e6aat actual 150±30 ms: retained glyph p50/p99 3.7/5.4 ms (all retained); replay-ready 174.7/342.1 ms, FAIL 200 ms. Original theme selection still FAIL distance119. These failures remain evidence. New helper and pending-paint repair being remeasured. Runner zero-jitter descriptor initially did not reach relay;ca108359includes deterministic red/green configuration tests and propagation repair. First requested-zero run still used historical ±30 ms and will not be cited as a zero-jitter result.Head
c596e243pushed. Chromium production body parking eee61621/d470c8db/1b746d4a: opt-in shared window state, 120 px crossing-only prewarm observer, active/goo exceptions, unchanged intrinsic geometry; functional suite 4 pass including Retry, manager replacement and held-chunk rebuild. Build-host cluster tests must enable INFRATERNAL_CLUSTERS_PREVIEW=1; runs without it are fixture-admission misses, not application Retry evidence.VM production
1b746d4aat LAN: retained glyph p50/p99 3.6/4.4 ms, replay fence 24.4/25.3 ms (50 ms budget), all retained; Chromium frame timeline p99 16.8 ms, zero long tasks, raw >16.7=97/330 includes quantization and is NOT claimed as strict zero-over acceptance. VM 20261013T025519Z-3108259674-2167494. Fixed 150 msca108359: cached 3.7/5.6 ms, replay 175.5/191.1 ms (200 ms budget), pass. At fixed 300 ms1b746d4a: cached 3.7/4.8 ms, replay 325.2/341.1 ms (350 ms), pass; repeated runs pending.WebKit production still HOLD: frame p99 480 ms with body parking (before baseline519 ms), all23 sampled gaps>16.7; longtask observer unsupported so zero cannot be proven. Its plain-HTTP single-terminal fixture reached auth instead of a probe.
c596e243now initializes via the existing HTTP preview-owner route; no native auth/cookie rule changed. Remeasure queued.D259 common baseline object 9ff74a3d9f854194adcb599402c2a16f6260a3b9 derives from715129d1, changes only identical strict resume test and explicit RTT/jitter configuration. The first comparison object0226d06 lacked disconnect observation and is invalid for before/after: legacy ready bit survives socket closing.
3be6af8fstrengthens the harness to observe disconnect before a new fence. Six interleaved slots per LAN/150/300 queued with the strengthened identical harness. No budget/assertion weakened.Integrated VM source suite:184 pass,0 fail,11027 assertions. Full integrated fast gate still running; fmt/clippy passed so far, native lifecycle/auth suites progressing. Evidence under evidence/prod-perf-176/round2 and per-run VM environment records.
Finding: VM
b02aa832Retry repeat3 is missing its initial card in2/3. Inventory is error, no admitted anchor, no page errors; public JS dependencies finish at5108/5547 ms versus4374 ms in the passing trial (evidence/perf-vm-browser/20261013T031749Z-3913223146-2474566 scene-state attachments). This is late manager module discovery, not a raised Retry budget. Testing public code warming alongside canvas setup instead of waiting for idle, without awaiting it or creating manager DOM. Existing on-demand byte class and all auth/error/loading/six-row assertions remain unchanged; first-paint and glyph VM remeasure required. Reject raising the five-second assertion or forcing an extra test click.WebKit engine-only shared-helper control: idle p99 17 ms, surface p99 25 ms (37 frames), document visible. Production idle14–18 ms, old-capture entry214–255 ms, update83–99 ms, ready353–405 ms; opacity completion746–874 ms. A root opacity-layer hint lowers some old-capture entries to54 ms but updates80–89 ms and finishes652–746 ms, still HOLD. This is application capture/update work, not globally slow idle cadence. Evidence VM20261013T032207Z-1212980113-2532315 and20261013T032620Z-3170706403-2580361. No hint shipped.
Native integrated gate: all tests passed, x86 static artifact22541488 bytes >16404816 cap, unchanged HOLD #175. ARM/minimal CLI builds still running. Real native PTY initialized-resume regression79a7dcad staged on VM to test the TLS fixture bridge, which currently drops subprotocol metadata.
Strict D259 identical-harness interleaved3 is complete on
c596e243vs9ff74a3d (legacy715129d1 plus only test/link config). Per-run replay-ready p50/p99 ms:|RTT|BASE1|HEAD1|BASE2|HEAD2|BASE3|HEAD3|
|0|74.9/91.9|24.2/27.1|74.8/91.5|24.4/26.0|74.5/90.8|23.5/24.8|
|150|see VM030234 receipt|all HEAD pass200ms|see receipt|all HEAD pass|see receipt|all HEAD pass|
|300|987.3/991.5|325.3/341.0|986.8/991.7|325.1/341.5|974.4/991.8|324.9/341.0|
Every cached glyph retained; exact per-trial/public frame projections collected under evidence/prod-perf-176/round2/vm-records, aggregate vm-results.json. Source VM runs030233Z-2032244995-2281431,030234Z-776270688-2281647,030235Z-2969516128-2281778. Re-baseline full browser slots on07c52166 all preserved: original theme/terminal/ended assertions pass on HEAD except intermittently missing initial Retry scene card; no assertions raised.
New finding resolves missing-card phase: loader READY, active eligible windows, but no toggle request/mount before deadline (VM045048Z-2776242115-3310704). Rejected eager-manager-warming candidate428691c6 (3/3 initial card misses). Fixture scene discovered after world/inventory and a spare400ms timer.6292e62d starts explicitly requested scene code alongside reads and removes that spare timer, preserving palette/camera settling and all five-second assertions; unchanged Retry VM repeat3 now passes.791f7794 held-code test matches actual createSessionUi export so exclusions in critical chunks cannot deadlock fixture startup.
Native PTY initialized resume: strengthened test requires an actual baseline echo, advertised capability, an initialized offer, native selection and resumed echo. It failed with empty output through the TLS fixture;75f189e5/93e36938 forward the offer in memory, echo only fixed protocol and close selection mismatch; real native functional case passes. No native auth checks changed. The old native VM fixture path failed SUN_LEN before auth;7a95c364 shortens owned aliases (byte-length regression passes). Functional native source equivalent to79a7dcad; no local timing used as evidence.
Full integrated fast gate
ca108359: fmt PASS, VT native fmt PASS, CLI plugin compile-out PASS, clippy PASS, test PASS, cargo-deny PASS, static builds FAIL(1): x8622541488>16404816, ARM19955528>13817816 (#175 unchanged HOLD). Final exact-head gate still required.Shared capsule refresh structural regression: same settled selection performs two needless geometry reads per control; appearance invokes three such controls in hidden Settings. Testing no-op refresh plus button ResizeObserver coverage, preserving existing in-flight glide behavior. WebKit native timeline now works: style max81.54ms, layout34.71ms, paint184.76ms, rendering-frame94.48ms and script scopes94.44ms, so strict zero-long-task/frame acceptance remains HOLD. Whole-frame parking and opacity-layer hints insufficient; canceling color transitions worsened p99 to660ms and is rejected.
Step
2cddbef8(implementationc5612ade): native WebKit attribution maps the ~80 ms forced RecalculateStyles call to perf-hud.on-demand.ts readColors (public bundle source retained from VM run 20261013T052011Z-4168058191-3510298). Its data-theme observer called getComputedStyle on the meter and forced document style work. Read the same literal root palette tokens instead; disabling the meter was rejected. Regression: old implementation 1 computed-style read; repaired 0, drawn color remains in the active palette. Tracer check and functional browser case pass (hud-theme-real-red.log / hud-theme-green.log). Interleaved WebKit and Chromium VM measurements queued; no frame-budget acceptance claim yet.Step
a74377a3(fixturec63cd564): exact-head native PTY resume check exposed a fixture race: relay output can precede the client paint callback, so immediate close correctly used the binary fallback (zero initialized offers). The fixture now retains only aggregate output/credit byte totals. The case requires returned credit covering all observed output before close, then still requires the initialized offer, native protocol selection and real resumed-54 PTY echo. Tracer check passes; real-resume-painted.log: 1 passed. This strengthens the precondition, not a timing/budget assertion; no native authority or production cursor eligibility changed.Continuing #176 on prod-perf-fix, base/head
a74377a34b. Read issue history and parent #169, project contracts and round-2 record. Resume interleaved D259 evidence already passes; strict Chromium/WebKit theme timeline remains HOLD. Verify meter repair measurements, continue remaining native style/paint attribution and finalize exact-head gates without budget/auth/visual changes. Latest origin/dev contains owner D262: new evidence will attach to this issue rather than be committed. No deployment.Continuing #176 on prod-perf-fix, base/head
48dc925d0b. Read #176 and parent #169 history, round-1/round-2 evidence and repository contracts. Continue existing measurements and uncommitted detached-body candidate; D259 repairs already measured on VM208. Strict Chromium/WebKit theme frame target remains HOLD. Check final pending VM receipts and exact-head gates, keep all budgets/auth/visuals unchanged. Evidence attaches to this issue under D262. No deployment.Step
17f04abdpushed: VM-only theme attribution controls; no production behavior change. Tracer check PASS; VM diagnostics 3/3 complete, acceptance HOLD. VM208 Debian13, 4vCPU, WebKit26.5, Bun1.4.2/Playwright1.61.1, 300ms RTT±30ms, unique port4432, pre-load0.05/0.20/0.34.Inspector-free control still stalls: instrumentation does not explain WebKit failure. Off-document candidate preserves all19 body rectangles but reduces document nodes3068→1102 and still misses badly; rejected for production. WebKit longtask observation unsupported: task count unknown. No budget/assertion or auth/visual change. Native capture/update work remains the next profiling target. Latest original three-spec interleaved3 comparison is running on48dc925d; exact-head native fast gate is running.
Sanitized frame histograms (complete measured gaps and native capture phases; no network payload):
Gate setup finding on17f04abd: daemon_gone_tests.rs:111 failed before its assertion with InvalidInput, path must be shorter than SUN_LEN. TMPDIR /home/kayg/.cache/codex-scratch/pf176 plus the 25-byte random fixture directory and sessions/32hex.sock exceeds108 bytes. Exact case passes with owned shorter TMPDIR /home/kayg/.cache/codex-scratch/p7 (short-path-test.log). No product/test/assertion change or #118 waiver; full gate will rerun with the short path. Tracer check/source199pass0fail/build/transfer pass: critical gzip298696/307200, Brotli248645/256000; deferred50912/51200 and44936/45056; largest on-demand15946/20480 and14179/18432 bytes. No performance claim from functional durations.
VM clipping candidate rejected: pinned WebKit26.5 reports CSS.supports(overflow-clip-margin,12px)=false, so the required 12px lock-shackle margin cannot be preserved by adding overflow:clip to the existing viewport. No clipping change shipped; candidate reverted. VM208 4vCPU, 300ms RTT±30ms, pre-load0.14/0.47/0.48, run20261013T061541Z-1598577385-4026965, original control completed; candidate failed its feature-support precondition before timing. Next measure an outer clip box with the existing viewport geometry retained; appearance checks required before any production change.
Additional first-gate failure: static link used a stale cached build-script flag pointing to deleted perf-vm-browser/build.OeV0VO/repo/crates/infraternal/handoff-note.ld (build.rs:40 embeds CARGO_MANIFEST_DIR). Link failed before the size check. Refreshed only the existing build-script mtime to invalidate that cached output; no source/profile/linker/dependency changes. Re-running full scripts/verify fast with the short owned Unix-socket scratch path. Both original setup failures retained, no waiver.
Outer clip-box VM candidate completed on2f83693b: exact viewport/all-window rectangles retained, control frame p50/p99=286/539ms, candidate245/478ms; every frame gap over16.7ms (32/32 and33/33). 4vCPU VM208, WebKit26.5, pre-load0.45/0.49/0.49, port4458, 300ms RTT±30ms. Geometry-only success is not visual equivalence or acceptance. Candidate reverted; no production clipping or lifecycle change. Existing clip-path preserves the12px lock-shackle allowance on engines lacking overflow-clip-margin. Inspector-free and detached-body controls also miss, so neither tracing nor offscreen body style work alone explains the capture cost. Native control maxima: RecalculateStyles92.798ms, Paint196.539ms; detached-body41.318ms/173.287ms (nested spans not summed as CPU). Continue holding strict theme acceptance, no budget/design waiver.
Requested interleaved3 VM rebaseline complete: base1f77a449 vs head48dc925d (
17f04abddiffers only in the separately gated frame diagnostic). HEAD11/11,10/11,11/11; BASE5/8,6/8,5/8. Head2 pending-text "ok" failure is retained, not a missing/passing sample; base2 also fails a pending-text assertion. Terminal prediction cause remains under investigation. No budget/assertion changes. Setup/sign-in improvements include the already documented compressed-fixture fidelity correction, not solely a production-source speedup. Theme callback/long-task checks are NOT strict theme frame acceptance; native WebKit remains HOLD.Perf VM browser A/B
Setup
1f77a449ede540281319ba01d149a2f60d584f3b.48dc925d0ba8197c3b83eb3e5884821d495cc077.test/terminal-theme.spec.ts, test/terminal.spec.ts, test/dead-session.spec.ts.TRACER_TEST_PORT; tests use the locally built production bundle.Runs
1f77a44948dc925d1f77a44948dc925d1f77a44948dc925dPer-test results
Failed test details
Timing checks
Conclusion
Raw JSON reports, stderr, environment records, and generated test results are in
runs/. No arbitrary browser traces were captured.Deterministic prediction cause reproduced before any fix: browser production PredictiveEcho class, virtual clock only. Cached RTT330ms followed by a completed split paste echo at270/280ms (both inside the ±30ms link profile) leaves enabled=false after the echo; regression expected true, received false. predict-fallback-proof.spec.ts:42, prediction-proof-red.log. hostWritten only releases waitingForOutput when arrival time>=echoExpectedAt; an earlier complete echo is forgotten and no later output can release the wait before the next key falls back. Proposed bounded repair: match the entire outstanding printable fallback echo across chunks before releasing early, keep time-based fallback for unproved/editing output; never simply lower the horizon or use a timer to invent proof. The actual long interaction failure is still being instrumented; no assertion, RTT/budget or auth change. Initial diagnostic grep anchored at title start selected no cases (invalid run, not evidence); corrected full-case repeat3 is queued.
Shadow review of
prod-perf-fixat17f04abdDiff reviewed against merge-base
6afc910cwithorigin/dev. I focused on connection and resume, the sessions Retry fix, setup paint and the transfer budgets. The failing tests are on branchshadow-prod-perf-fix, head815f6bc7. Both commits are red on17f04abd. I ran the tests withbun testonly. I took no timings and changed nothing onprod-perf-fix.Findings, most serious first
P1-1. The D259 "typable within one RTT + 50 ms" result comes from a harness that leaves out connection setup. (No test: proving it needs a timing measurement on the VM.)
scripts/latency_proxy.pyaccepts the client's TCP connection on loopback, so the TCP handshake is never delayed. The mock server also has no TLS.resume-readiness.spec.tsdrops the connection withforceDrop(). This branch changedforceDrop()to retire the socket locally and reconnect with zero delay (df3e2747). That path only runs in the probe.active=1.wait_for_closing_connectionwaits 50 ms and then refuses the resume. The client keeps retrying until its 120 s grace runs out, then opens a fresh connection, andrestartCursors()clears any input that was never acknowledged.P1-2. The canvas connection indicator still shows live before the replay fence paints. On the initialized upgrade it shows live before Welcome. Test:
apps/tracer/test/terminal-live-indicator.test.ts.main.tsonReady).core.setConnectionfromMuxConnection.streamAttached(product.ts:66, connection.ts:249).tryAttach()still callsconn.streamAttached(true)at once.tryAttach(true)runs insideonopen, before the server has validated the Resume. If the resume is refused, the canvas shows live and then drops back.onReady(onTerminalAttached) fires at that same early point.P1-3. This branch conflicts with #199 (
stuck-after-restart). I checked withgit merge-tree: there are textual conflicts inapps/tracer/src/connection.ts,apps/tracer/src/terminal.tsandapps/tracer/src/canvas/sessions/live.ts.a9efb6e4here,1e9d8a6bthere), so that part does not regress.fastResume: delay 0, then one rAF, only when the server advertised capability 2. #199 hasfastRecoveryUntil: 5–10 ms, only after a confirmed terminal, and it backs off after a greeted refusal. #199'sconnection-restart.test.tsexpects a delay of at least 5 ms.caughtUp/onReadyand leavesstreamAttachedearly. #199 hasattachmentConfirmedand movesstreamAttached,startPingsandonAttachedbehind the fence.terminal.tswins the conflict, #199's canvas-dot fix is lost (see P1-2).P1-4. D262: the branch puts evidence back into the repo.
evidence/(about 26k lines plus PNGs and traces).scripts/perf-vmwrites its results to$REPO_ROOT/evidence/perf-vm-browser, and thedocs/PROCESS.mdhunk documents that path.evidence/and rewrites history to drop it. Before merging, these files need to come off the branch, and the runner should write to a scratch directory outside the repo.P2-5. Two sockets after
openStream()while a reconnect is pending. Test:apps/tracer/src/connection-reconnect-race.test.ts.openStream()callsconnect()wheneverthis.socketis unset. It does not checkretryTimeror the newretryFrame.connect()again. The replaced socket's handlers ignore its events, so it stays open and holds the server rowactive=1. The next resume is refused.forceDropnow retires the socket at once, and the rAF wait adds another window.P2-6. The wire and auth change was made inside the job.
Sec-WebSocket-Protocol(contracts/wire.md,upgrade_resume.rs).P3-7. The rAF wait in
scheduleReconnecthas no fallback timer. If the page goes hidden, or the browser throttles rAF, between scheduling and the frame, the reconnect waits until the page is visible again. If that takes longer than the 120 s grace, the result is the same fresh connection and lost input as in P1-1.What looked correct
314e34f1(if (manager === this) manager = undefined) stops a late close of an older card from cutting the current card off inventory updates.f02ab474resolves the window again after the chunk loads.9cf26b07).no-cache, and inlining removes a revalidation round trip./auth/sessionread: it is discarded after setup or a failed status check (checkStatusfinally block), so a stale cookie snapshot is not reused.Not verified
Completed/pushed module
f2d91608: bounded complete fallback-echo evidence avoids losing an echo that arrived before the prior RTT estimate. No shortened horizon/timer-based release. Printable evidence includes older pending bytes and all newer fallbacks, <=512 bytes; settled horizontal controls require exact echo AND real parser cursor/row/dimensions, not an arbitrary output packet. Layout/snapshot/disposal clear it; editing, partial, mismatched, oversized and overtaken replies keep waiting. Deterministic paste and settled-cursor cases red before;12 functional guard cases green. Tracer check/source199pass0fail/build/transfer PASS: critical gzip299076/307200, Brotli249155/256000; deferred50913/51200 and44915/45056. Prior plaintext-only VM variant2d955d4a full original terminal repeat3 passes (predicted glyph last p99=14.3ms); final cursor-proof interleaved3 comparison against17f04abd queued. No auth, wire, design or budget changes. New proof test and safe failure-state diagnostic are separate commits next.Final gate on28bbc0b6 will run scripts/verify fast unchanged. Its one RTT self-test row must be on VM208 under D256, so a job-local Python dispatch wrapper routes ONLY the exact latency_proxy.py self-test --samples3 invocation to the copied identical script on VM208/shared lock. Every other Python call executes the original interpreter locally. No row/assertion/threshold is skipped or edited. Original source SHA is recorded; native functional transcript times are not performance evidence. This does not change the repository gate script or any other job.
Owner decision D265 (dev
51a5a03a): resume token in the first message after the WebSocket opens (never a header/URL); one RTT + 50 ms when the link is reused/resumed with server pings; three RTT + 50 ms after a real network change; QUIC/WebTransport resumption researched next (queuedresearch-quic-resume). The prod-perf-fix continuation carries this.Completed steps
d126e2f8(12 proof guards) and28bbc0b6 (bounded pre-key/failure diagnostics), both pushed separately after tracer check/functional gates. Final interleaved3 comparison of production code17f04abd→f2d91608 completes all18 cases: both revisions pass9/9 in this window. Earlier original HEAD1/3 and diagnostic2/3 pending-text failures remain recorded; this passing comparison does not erase them or alone prove a frequency change. Deterministic red-before/green-after cases establish the repaired time-only wait defect; complete echo/cursor guards remain mandatory. Final branch28bbc0b6 has identical production code to measuredf2d91608. Fresh exact-head D259 repeats and full fast gate are running. Strict theme acceptance remains HOLD; no design/budget/auth waiver.Perf VM browser A/B
Setup
17f04abd04206c1df568589a27ad786809f7fc3a.f2d91608353df83835105e47abb4a7e4101f8f82.test/terminal.spec.ts.TRACER_TEST_PORT; tests use the locally built production bundle.Runs
17f04abdf2d9160817f04abdf2d9160817f04abdf2d91608Per-test results
Timing checks
Conclusion
Raw JSON reports, stderr, environment records, and generated test results are in
runs/. No arbitrary browser traces were captured.Final branch-head scripts/verify fast output verbatim, part 1/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 2/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 3/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 4/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 5/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 6/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 7/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 8/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 9/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 10/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 11/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final branch-head scripts/verify fast output verbatim, part 12/12. Head
28bbc0b6fa; exit1, only static sizes fail. SHA256 b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row ran on VM208/shared lock with identical script SHA815c3bee752af0471ab9bf47b671e4729f2ef0cb7659a6655e8b8e24e4b7b73d. Functional transcript durations are not accepted performance measurements.Final TypeScript/compiler/build/transfer gate on28bbc0b6, exit0, output verbatim. Fast dispatcher stops after the unchanged native size failure, so ts_verify_fast was run separately. SHA256 367261b55bf2c4ff6b4ef27d68ee353ee570a21d5e2103dbe9931ba043aab484. Required separate bun test src:199pass0fail; proof guards12pass0fail. Functional durations are not performance evidence.
Final D259 measurements on branch head28bbc0b6, VM208 Debian13/4vCPU, Chromium149.0.7827.55, Bun1.4.2/Playwright1.61.1, three20-trial repetitions per fixed RTT (jitter0), shared lock. All9 cases pass; all glyphs retained. These final-head repeats follow the already posted interleaved common-baseline comparison; they are not themselves newly interleaved.
Before replay-ready p50/p99 by run, identical strict harness9ff74a3d (production715129d1 plus test/config only): LAN74.9/91.9,74.8/91.5,74.5/90.8ms;150ms539.6/541.8,524.8/541.5,524.7/542.0ms;300ms987.3/991.5,986.8/991.7,974.4/991.8ms. Before cached-screen p99 ranges4.3–4.7/4.6–6.6/4.5–5.2ms respectively.
Budgets: cached<=16.7ms; ready<=RTT+50ms (50/200/350). No changed sample count, readiness/disconnect assertion or budget.
Public environment receipts (complete, no capabilities):
Result: HOLD. Pushed branch prod-perf-fix head
28bbc0b6fa; production code isf2d91608. No deployment or issue closure. All authorized source/test slices are atomic and pushed; no new evidence files committed (D262).New repair: a complete early paste/cursor echo was forgotten by a time-only prediction wait. Bounded ordered proof now releases only a complete echo; horizontal control also requires the native cursor/row/grid result. Partial, unrelated, oversized, stale and overtaken output stays blocked. Deterministic red-before/green-after guards12/12; source199/0; final TS/compiler/build/budget191/0 plus protocol37/0/34463assertions; native1029/0/135ignored. Review F-001 cancellation and F-002 Join71 both pass; no lint exceptions or #118 waiver.
Requested original1f77a449/head48dc925d interleaved3 table is posted above: HEAD11/11,10/11,11/11; one pending-ok failure retained. Subsequent diagnostic original-case repeat1/3passed (ok/Z failures retained); printable-proof variant3/3passed. Final unchanged original terminal spec interleaved17f04abd→f2d91608: both revisions9/9pass; this window does not prove a failure-frequency change. Final code's per-run p99s,300ms RTT±30ms on4-vCPU VM208:
D259 final-head fixed-link/jitter0 repeats are posted above (3×20/link): cached glyph p99≤8.8ms, all retained; replay-ready p99 LAN25.0–25.6ms/50,150ms191.3–191.5ms/200,300ms340.9–342.9ms/350. Earlier identical-harness interleaved baseline p99s90.8–91.9,541.5–542.0,991.5–991.8ms respectively. Machine/load/version receipts accompany the tables.
Still HOLD: strict theme frames. Chromium raw p99≈16.8–33.4ms, zero measured long tasks; literal zero-over16.7 target is not met. WebKit current inspector-free control488ms; native control521ms, detached candidate459ms; all32/32 gaps over16.7. Unsupported longtask API means unknown, not zero. Detaching19 bodies3068→1102nodes cuts native style92.798→41.318ms but paint196.539→173.287ms still dominates. Geometry-preserving outer clip539→478ms also fails. Both candidates rejected/reverted; no production visual/lifecycle change. Next unresolved work is whole-surface native capture/style/paint, with single180ms opacity maintained. No budget waiver or more-resource request.
Final scripts/verify fast exit1 only at inherited D243/#175 static sizes: x8622587984>16404816bytes; ARM19992104>13817816bytes. All other native rows pass. Full269271-byte output quoted verbatim in12preceding comments; SHA256b935fbfa77756bb873f44a315d1f3f61b1a57f4622068c4961eea6d8e8421447. RTT row was the identical source on VM208/shared lock (p99=299.85ms); functional transcript durations are not performance evidence.
Author review: no auth/wire/owner decision/dependency/threshold changes; native admission and replay fences retained; no new UI primitive; no idle loop/timer for fallback proof; proof bytes bound512/session; lifecycle/snapshot cleanup covered. Existing production captures require independent visual review. Attachment limitation: fj exposes comments but no authenticated file-upload operation. Text/JSON receipts and complete gates are on this issue; binary captures remain untracked locally under evidence/perf-vm-browser for the orchestrator's authenticated uploader. No credentials inspected. Remaining theme/design review and size-reduction work are explicit holds, not completion claims.
Owned build/fixture scratch cleanup follows; worktree source is clean.
Cleanup complete at pushed28bbc0b6fa18356a992c2ec215213d5d732d271b. Tracked source clean; remote branch matches. Removed owned51GiB build/fixture scratch and the VM-only final RTT script directory after every run finished. No registered scratch worktrees remain. Source/test commits and full gates/numbers remain on this issue; untracked binary captures are retained locally for the authenticated attachment uploader. HOLD remains: strict theme frames and unwaived D243/#175 sizes. No deployment or issue closure.
Start: QUIC/WebTransport resumption research (D265). Branch
research-quic-resume, basedcf9dbb94b52d5d2e805a0474e74dd42764159fe(origin/dev). Research only, no product code: browser support survey, stack/size/replay-safety analysis, native-client prototype measuring resume after a client address change at 150 ms RTT on the perf VM, recommendation in research/quic-resume/README.md.QUIC/WebTransport resumption research (D265): finished
The report is at
research/quic-resume/README.mdon branchresearch-quic-resume: head3f32aea4, basedcf9dbb9(origin/dev). It is research only. No product code changed. The owner decides.Short answer: 0–1 round trips after a real network change cannot be reached in browsers in 2026.
Measured on the perf VM with native clients (no headless browser is available there, and browsers cannot exercise migration anyway). Setup: netns + netem at 150 ms RTT, no jitter. The client moves to its second address on every sample. 41 samples per row; times are from the address change until the reply has fully arrived. Lock held 12:30–12:37 UTC (18:00–18:07 IST). Load average was 0.17 at the start and 0.07 at the end.
Size (static musl release probes, same echo server built three ways):
These deltas are upper bounds, because the product already links url, http, futures and similar crates. The delta in the product binary still needs to be measured. Both libraries are MIT OR Apache-2.0, which is compatible with AGPL.
Recommendation for the owner to decide:
onopenand 4 to the first resumed byte, because the token is sent after open.0-RTT replay safety: terminal input, actions, sign-in, and any rotation or consumption of the resume token must never travel in 0-RTT. The D265 first-message token is safe on WebTransport, because the draft forbids 0-RTT session setup. After a migration, no token is needed at all: it is the same authenticated connection.
Evidence (attached above): summary.csv, results-20261013T123020Z.tgz (raw CSVs and host record), proto-source.tgz (prototype and size probe), wtransport-0.7.2-research.patch (
Endpoint::rebindand an opt-in 0.5-RTT accept; these exist only for the research), run-vm.sh.txt, size-probes.txt. The perf VM work directory was removed after the run.Gate (
scripts/verify faston3f32aea4; the only change on top of dev is a markdown file). It fails on the dev base itself, and the failures are unrelated to this change. Full log: verify-fast.txtThe size failures are dev's known overshoot (D263 one-time exception, #198).
kayg referenced this issue2026-10-28 17:53:56 +00:00