Renderer cost dominates theme, font and resize switches at 4x CPU #97
Open
opened 2026-10-08 11:51:17 +00:00 by kayg
·
154 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#97
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?
The demo-preview work-timing audit (docs/perf/work-timing.md on demo-preview,
443d539) shows the remaining over-budget operations at 4x CPU are bound by the terminal renderer: theme switch about 44/74 ms p50/p95 (a style recalc of about 350 elements plus the renderer recolouring every row), cold font switch 42/99-124 ms and window-resize commit (cell re-measure and full redraw). Target per the owner's instant-work rule: our work at most 16 ms p95 at 4x CPU. Investigate renderer-side: recolour by palette swap without re-rasterising unchanged glyphs, an incremental re-measure, a glyph atlas reused across themes, and moving the recolour off the critical task. Measure on the perf VM and confirm on the macOS test VM (real GPU compositing). Codex job (performance work).Launched renderer-cost (Codex GPT 6 Luna Max: scoped perf work with a measured repro). Branch renderer-cost from dev
c0a0982.Starting renderer-cost on branch
renderer-cost, basec0a0982a0eca991fadfcc7bf597f2db6b5d36ccd. The issue and archived timing audit are read.fj issue view ... commentscurrently fails with InvalidContentType while listing the single comment; I’m resolving that before edits. No benchmark or code changes yet.Baseline source evidence (
git show 443d539:docs/perf/work-timing.md, n=14, 4x): theme switch 44.1/74.3 ms p50/p95, cold font 42.4/124.3 ms, resize commit 23.9/31.2 ms.infraternal-devis the benchmark host (8 CPUs); current load average is 20.29/19.97/22.05.Reproduced on
infraternal-devat basec0a0982, 4x CDP,n=14,CPUWeight=10000,TRACER_TEST_PORT=4497. Under host load 55.47→49.83 (1m load; 5m/15m 43.10/31.61→43.97/32.75), current harness measured our-work p50/p95: theme 83.7/181.4 ms, warm font 40.9/132.4 ms, cold font 154.1/421.1 ms, resize 47.8/63.6 ms. This run is load-contaminated versus the archived 44.1/74.3, 22.1/27.6, 42.4/124.3, and 23.9/31.2 ms.Benchmark harness finding: product canvas includes four static Settings windows, so global
.ui-windowcounts overstate live terminals; the spec now scopes to Console. At 8 Console windows, all eight renderer metrics existed but only five surfaces were allocated after Escape, so the harness now invokes the explicitcanvas:overviewaction and checks all eight surfaces before sampling. Diagnostic baseline (4x, n=2,CPUWeight=10000, host load 21.93/24.67/30.28): 1 terminal used 8.48 MiB WASM+canvas; theme first-window CPU 148.6 ms, warm font 54.6 ms, cold font 56.3/68.2 ms p50/p95, resize 52.8 ms. At 4 terminals, 24.61 MiB/session; theme 211.6 ms, warm font 85.7 ms, cold font 89.5/188.8 ms, resize 75.3 ms. These are harness diagnostics under concurrent host load, not final comparison values. 8-terminal run is being corrected and rerun.The product-canvas bench now completes at 1/4/8 visible terminals (
renderer-cost.spec.ts, Chromium CDP 4x,CPUWeight=10000, n=2; load average 25.92/27.67/30.37 -> 18.72/23.79/28.52). First-window CPU p50/p95, ms: theme 1/4/8 = 203.7/203.7, 111.9/111.9, 232.8/232.8; warm font = 28.2/28.2, 44.5/44.5, 90.8/90.8; cold font = 44.9/121.4, 59.8/95.1, 79.9/127.5; resize = 52.5/52.5, 63.3/63.3, 74.5/74.5. Low n and concurrent host load make these diagnostic only. The raw WASM memory counter increases across session counts; checking whether sessions share the reported memory before calculating the D170-scale estimate. The 8-terminal screenshot is attached by the spec.Memory correction from the benchmark identity check: all sessions in a page share one WASM memory object, so the earlier 24.61/46.12 MiB per-session figures were repeated module totals and are invalid. At n=2 the unique WASM allocation was 7.06/22.81/43.81 MiB for 1/4/8 terminals; canvas backing is 1.22 MiB per terminal. Amortized total is 8.29/6.93/6.70 MiB per terminal, or 1,060.5/886.5/857.5 MiB at 128 sessions. That scale uses the 128-session capacity in
docs/S1-VT-GHOSTTY.mdbecause D170 is absent from this checkout. The run load was 19.24/22.22/27.54 -> 35.82/29.76/29.47, so CPU timings remain diagnostic only.Fast-gate setup finding: with
CARGO_TARGET_DIRunder the required scratch path,initial_attach_requires_explicit_credit_before_replayfailed becausescripts/verify-agent-attach-credit.pycreatestarget/ac…relative to the worktree and that path did not exist. I mapped worktreetargettemporarily to the same scratch directory; the gate is rerunning. Its aarch64 Zig native build is still active; observed load was 40.46/33.33/29.99.Finding: the first queued redraw called vendored
renderer.render()after painting its slices. The renderer unconditionally marks every scrollback viewport row for painting (apps/tracer/vendor/ghostty-web/dist/ghostty-web.js), so a scrolled theme/font redraw repeated the full viewport in one synchronous task. The slice completion now updates only cursor and scrollbar state;git diff --checkis clean. Measurement is pending on infraternal-dev after host load settles.Finding: moving appearance tokens to
.terminal-screenleft detachedcl-summaryand Mesh confirmation surfaces inheriting document defaults. The shared floating-token copier now feeds those surfaces from the scoped screen and refreshes them on appearance changes (packages/ui/src/tooltip.ts,apps/tracer/src/canvas/views/world.ts,apps/tracer/src/canvas/mesh/index.ts). No benchmark evidence yet; the production build/browser gate is pending.Finding: fast-gate Rust test
vt_reconnect::snapshot_limits_never_close_live_reconnectfailed waiting for reconnect (crates/infraternal/tests/vt_reconnect.rs:20) while infraternal-dev loadavg was 25.51/22.78/25.74. Other Rust tests shown in this run passed. I will rerun the unmodified gate once after load settles, as required; no test thresholds changed.The fast-gate retry passed through 100 Rust integration cases, then
vt_credit::unaffordable_repaints_park_until_sufficient_creditfailed: its 2 MiB producer did not finish within 1.5 s (target/review-vt3-fixes/t1-gate-approximate-16384.stdout.log). Host load was 15.41/12.57/17.74 before the run and 16.57/12.92/17.79 afterward. No gate threshold was changed; I will retry after load settles.Harness review found the benchmark opened empty mock sessions, while the existing palette regression seeds 10,000 ANSI history rows (
apps/tracer/test/mock-server.ts:950). I added that fixture before the first terminal connection and require every measured session to reach 10,000 scrollback rows. The 1/4/8 samples now exercise the archived renderer workload.The production font-picker regression now checks the scoped screen: after selecting Geist Mono, the renderer reports
geist-monobut#terminal-screencomputes to Maple Mono NF (test/font-picker.spec.ts:43). Moving--font-faceoff:rootleft inheritedfont-familyand--font-uistale. I am scoping those resolved tokens and shared UI type roles to the screen, with sans mode still inherited from the root.Committed screen-scoped theme/font tokens and shared floating-surface appearance at
50b23ef957e5a1166e1c8738c4dfe7016b8c4dfe. Production Chromium checks:font-picker.spec.ts+font-switch.spec.ts, 5/5 passed in 53.1 s; this also verifies interface text, terminal canvas and reload. Fast gate is next.The production
terminal-theme.spec.tsrun failed its 16.67 ms click assertion: n=50, p50 0.800 ms, p99/max 59.600 ms, with 87 observed long tasks over 50 ms. Host load at completion was 45.59/36.21/28.44; palette setter p50 was 0.000 ms. This run is load-contaminated, so I will rerun the renderer suite under the requested CPU weight once load settles.The preview production bundle's
transfer-budget.tscheck reports critical JavaScript at 320,542 B gzip / 268,087 B brotli against 307,200 / 256,000 B; deferred is 44,454 / 39,405 B against 51,200 / 45,056 B. This dist was built by Playwright withINFRATERNAL_CLUSTERS_PREVIEW=1andINFRATERNAL_RECOVERY_UI=preview; I am comparing the same build flags on baseline before attributing the critical overage to this renderer change.Matched default production builds pass D188: baseline critical 281,247 B gzip / 233,253 B brotli; current 284,913 / 236,532 (delta +3,666 / +3,279), under the 307,200 / 256,000 caps. Deferred is 47,866 / 41,460 baseline and 47,929 / 41,513 current (delta +63 / +53), under 51,200 / 45,056. Preview-flag builds both exceed the critical cap (baseline 316,845 / 264,865; current 320,542 / 268,087), with a +3,697 / +3,222 delta. The fast gate's default production build is the shipping-budget check; I will report both configurations.
The first product-canvas baseline run timed out after 60 s waiting for the 10,000-row theme fixture; the live session had retained 1,250 rows. That fixture belongs to the exhaustive palette regression and makes the scale benchmark slow and load-sensitive. I am parameterizing the shared fixture and using 128 history rows plus its existing 64 busy rows for 1/4/8-session timing, while retaining the 10,000-row default in the palette regression.
Baseline scale finding: at 4 visible terminals the benchmark fixture check found one server session and three terminals with outputSequence=0/scrollbackRows=0. The test double handled only mux stream 1, while the product opens odd streams per terminal. The 1-terminal baseline run at 4x CPU on infraternal-dev (start load 24.92/24.98/26.55) measured theme first-window CPU p50/p95 104.5/211.7 ms, cold font 207.1/257.5 ms, warm font 61.6/117.1 ms, and resize 96.8/256.1 ms; memory was 10.6 MiB/terminal (1.32 GiB × 128). These high-load partial baseline figures are not the completed scale comparison. Extending the test double to track session/output state per mux stream before rerunning.
Current renderer cost run finding: at 1 terminal, theme input script/style/layout p95 was 327.3 ms, renderer slice p95 104.2 ms, and frame-gap p95 429.3 ms; the benchmark correctly failed the 16 ms/60 fps checks. The host started at load 31.11/29.81/28.62 and was 32.92/30.45/28.90 after.
psshowed concurrent rustc at 133% and 73.5% CPU plus two zig jobs at 50.5%/43.7%, so this run is load-contaminated and stopped before the 4/8 terminal counts. Waiting for the host build load to clear before rerunning; no budget thresholds changed.Completed paired baseline harness step at 6382c0a. 14 samples, Chromium 4x on infraternal-dev, CPUWeight=10000; load 32.20/29.07/27.84 → 32.15/29.80/28.57. Baseline first-window script/style/layout p50/p95: theme 1/4/8 terminals 181.6/321.9, 184.2/241.7, 180.5/286.5 ms; cold font 175.5/236.4, 167.3/339.6, 152.8/449.9 ms; warm font 50.2/139.7, 62.9/122.5, 74.6/96.6 ms; resize 129.2/182.0, 95.9/174.0, 91.9/195.4 ms. Memory 10.60/7.11/6.87 MiB per terminal, ×128 = 1324.5/888.5/858.5 MiB. Fixture validation confirmed 4/4 and 8/8 visible terminals each received 13,527 bytes and retained 218 rows. Host load was high throughout; current-run comparison is pending a lower-load rerun.
Gate finding after 6382c0a:
scripts/verify fastlatency self-test passed (p50=297.03 ms, p99=318.27 ms), butvt_credit::unaffordable_repaints_park_until_sufficient_creditfailed after 11.04 s withcredit probe failed: t1-gate-approximate-1. At 23:44:28 UTC host load was 43.48/40.19/34.06 with concurrent rustc and zig builds. No thresholds changed; one required gate retry remains.Fast-gate retry for 6382c0a completed with no threshold changes. The latency self-test passed again (p50=301.25 ms, p99=315.66 ms); fmt, VT native fmt, clippy, cargo-deny, and static builds passed. The same
vt_credit::unaffordable_repaints_park_until_sufficient_credittest failed again, this time after 5.14 s withcredit probe failed: t1-gate-approximate-1. Full retry log:/home/kayg/.cache/codex-scratch/renderer-cost/fast-6382-retry.log. The gate remains red; the test is outside the browser renderer path.Amended the benchmark commit from 6382c0a to
a70e788to correct its scale projection: D170 extrapolation now multiplies terminal-local allocations and charges the shared glyph atlas once per page. The 14-sample baseline timing results and per-terminal local memory measurements are unchanged; the prior 128-session baseline totals do not include an atlas because the baseline renderer had none. Re-running the required gate for the amended head.Fast gate finding on
a70e788: network RTT self-test passed (p50=306.81 ms, p99=310.53 ms); fmt, VT native fmt, clippy, cargo-deny, and static builds passed.vt_credit::unaffordable_repaints_park_until_sufficient_creditfailed after 9.86 s withcredit probe failed: t1-gate-approximate-1. Host load at 23:55 UTC was 43.12/40.01/36.43 with concurrent rustc/infraternal server builds. No threshold changes. One retry for this head remains.The one fast-gate retry for
a70e788completed. RTT self-test passed again (p50=320.51 ms, p99=327.27 ms); fmt, VT native fmt, clippy, cargo-deny, and static builds passed. This run failedagent_review::repeated_tiny_credit_pauses_preserve_shell_progressafter 38.47 s atassert len(client.snapshots) == count and client.out == cursor; the prior run failedvt_credit::unaffordable_repaints_park_until_sufficient_creditafter 9.86 s. Retry start load was 37.64/38.93/36.28 and load after was 51.20/43.49/38.34. No thresholds changed. Full outputs are retained at/home/kayg/.cache/codex-scratch/renderer-cost/fast-a70e788.logandfast-a70e788-retry.log.Current timing status: the only current-renderer run stopped at 1 terminal under load 31.11/29.81/28.62 (theme input p95 327.3 ms, slice p95 104.2 ms, frame-gap p95 429.3 ms). Subsequent host load has climbed to 69.22/62.66/49.68 with active rustc, zig, and chrome-headless processes. These readings cannot establish the 4x renderer budget; 4/8 current counts and the owner screenshot remain pending a lower-load window. No benchmark thresholds were changed.
The weighted 14-sample post-change run again stopped at 1 terminal under high host load (infraternal-dev, load 53.63/56.80/54.75; concurrent Rust/Zig builds). Theme p50/p95: input script/style/layout 87.2/161.2 ms, input task 140.1/258.5 ms, renderer slice 32.6/71.0 ms, frame gap 151.1/275.5 ms; atlas hits/misses 56/0. The run fails its budget assertions and is not a valid low-load comparison. Log: /home/kayg/.cache/codex-scratch/renderer-cost/current-n14-load50.log.
Blocked on a usable timing window, not on code access: current load is 82.40/67.48/59.34 with several concurrent Rust/Zig builds, infraternal services, and headless Chromium processes. Two weighted post-change runs failed the p95/frame assertions under loads 31–54 and stopped at 1 terminal, so they do not establish 1/4/8 results. I will continue when the host load falls enough for a comparable run; no thresholds have been changed.
Finding: the existing production rule already has
contain: styleon.terminal-screen(apps/tracer/style.css:312), alongside the screen-scoped appearance tokens. A new production Chromium assertion passed 1/1 in 11.0 s on port 4497; this guards the containment invariant and requires no CSS or vendor patch.The full-data weighted run started at load 79.63/76.81/68.67. It completed 1-terminal theme (input script/style/layout p50/p95 84.9/203.9 ms; input task 152.3/275.8 ms; slice 29.6/56.8 ms; frame gap 162.0/326.0 ms), cold font (85.9/161.8, 199.9/423.9, 23.0/97.2, 225.2/352.3 ms), and warm font (88.2/172.9, 205.1/363.6, 21.8/64.8, 178.3/337.0 ms). It then failed the resize fixture: the first east-edge drag left the grid at 53 columns for 8 seconds. The page snapshot shows the All views overview with unrelated Settings panes. I changed setup to focus the Console view; no budget threshold changed. No resize, 4/8-terminal, or memory result from this run is usable. Log: /home/kayg/.cache/codex-scratch/renderer-cost/current-n14-full-resizefix.log.
Completed a two-sample Chromium 4x sweep on infraternal-dev after switching the fixture to All views and viewport resize; all 1/4/8 canvases were live. Load average was 12.96/21.88/41.91 -> 8.06/16.32/36.82. Theme input task p50/p95 was 88.4/88.4 ms (1), 108.3/108.3 ms (4), and 121.6/121.6 ms (8); resize input was 16.4/16.4, 13.3/13.3, and 53.5/53.5 ms. Frame gaps and redraw timeouts also exceeded budget under this host load. The benchmark fails its unchanged 16 ms / 16.67 ms assertions. Results and full metrics are in apps/tracer/test-results/... and /home/kayg/.cache/codex-scratch/renderer-cost/current-n2-overview-resize.log. Shared atlas memory was 1.03 MiB; projected renderer-local + atlas memory at 128 sessions was 1319.6/1011.6/917.6 MiB for 1/4/8 terminal measurements. This is loaded-host evidence, not a clean pass.
Benchmark step: commits
3ce3317(frame-sliced terminal appearance updates) and2b637b4(1/4/8 production Chromium bench). The renderer-cost smoke tests passed (2 passed, 6.1s). Five-sample 4x run on infraternal-dev used load average 9.46/9.57/25.89 -> 14.95/12.77/23.55. Input-task p95 by scale, theme/cold-font/warm-font/resize: 1 terminal 187.4/59.0/53.6/33.0 ms; 4 terminals 120.7/458.1/113.2/145.3 ms; 8 terminals 270.3/374.7/169.5/110.7 ms. Frame-gap p95 reached 390.0 ms; redraw timeouts occurred. The 16 ms and 16.67 ms assertions fail; this run does not meet the performance budget. Full table and memory projection are in docs/perf/renderer-cost.md.scripts/verify fastoutput (verbatim):METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=302.57 p99_ms=311.75 result=PASS
JavaScript transfer, critical: identity=926068 gzip=285011/307200 brotli=236646/256000 bytes
stream differential: 134 streams, 11439 schedules, zero divergences
7 pass
0 fail
Ran 7 tests across 2 files. [2.31s]
The fast gate after docs commit
4ac851fchad RTT self-test PASS but the Rust test gate failed on four existing server WebSocket tests: review3_busy_logout, review3_pending_routes_and_idle_expiry_recovery, clean_control_close_is_not_an_internal_error, and recovery_subscription_updates_every_signed_in_socket. All panicked at the shared helper withserver closed websocket unexpectedly: None. Cargo-deny and both static builds passed. Host load at gate end was 52.71/27.11/18.85. I am retrying the unchanged gate once; thresholds and tests remain untouched.The unchanged fast-gate retry after
4ac851fcalso failed. RTT self-test passed (p50_ms=296.80 p99_ms=347.26). Rust tests had one failure:repeated_tiny_credit_pauses_preserve_shell_progress, withscripts/verify-agent-snapshot.pyassertinglen(client.snapshots) == count and client.out == cursor; the preceding fiveagent_reviewtests passed.cargo-denyand both static builds passed. Final gate table:This is the one unchanged retry required after the first fast-gate failure; no tests or thresholds were changed. The renderer benchmark remains above the 16 ms p95 budget at every tested terminal count, as recorded in
docs/perf/renderer-cost.md. Continuing the renderer investigation.Finding from the five-sample benchmark: the redraw queue is configured for a 4 ms page budget, but its callback renders one full terminal row synchronously (
apps/tracer/src/terminal.ts,scheduleRendererRedraw,renderer.renderLine). The maximum renderer-slice p95 was 23.0 ms at 1 terminal, 33.2 ms at 4, and 51.2 ms at 8 (docs/perf/renderer-cost.md, table “P95 maximum renderer-slice and frame-gap times”). A single-row call is indivisible, so the scheduler cannot enforce its 4 ms budget; this explains why the associated frame-gap p95 reached 390.0 ms. I’m evaluating bounded column rendering in the pinned vendored renderer while keeping the same engine.The rebuilt production renderer passed terminal palette pixel checks through the theme loop, but
TRACER_TEST_PORT=4497 bun x playwright test test/terminal-theme.spec.ts test/renderer-cost.spec.ts --workers=1failed the existing theme click latency assertion: n=50, p50=0.800 ms, p99/max=139.700 ms, with 139 long tasks over 50 ms. The failure is atapps/tracer/test/terminal-theme.spec.ts:289; it measures the synchronous theme action and ran without CPU throttling while the host was loaded. I’m keeping this as a host-contaminated smoke finding and will use the required 4x benchmark under the configured systemd scope for the comparison.Correction:
terminal-theme.spec.tsdoes not capture/proc/loadavg, so I cannot attribute its 139.7 ms p99 to host load. Treat the result as an observed failure; the required controlled 4x run will include load measurements.The first systemd-scoped two-sample 4x matrix completed and failed the unchanged budgets at 1/4/8 terminals (
sliced-columns-n2.log). At eight terminals, theme slice p95 was 41.2 ms, frame-gap p95 179.6 ms, and redraw timed out in 2/2 samples. Host load rose from 39.31/34.57/30.18 to 55.05/45.47/35.45. Inspection found the new column background API still called clearRect/fillRect over the full row on the first column range, so its work was not spatially bounded. I’m changing it to clear each bounded range and will keep the complete browser budget assertions unchanged.The bounded-range rerun’s first scale measured theme input-event latency p95 69.9 ms and handler p95 56.5 ms under 4x throttling; host load at start was 41.66/47.63/41.51. Inspection found an avoidable synchronous style read on the appearance event path:
packages/ui/src/tooltip.ts::syncFloatingAppearancecallsgetComputedStyle(source)afterapplyThemeupdates screen tokens, which can force the large terminal-screen tree to recalculate when a tooltip is open. I changedcopyFloatingAppearanceto copy inline values from the nearest#terminal-screenstyle scope and let root variables inherit into detached surfaces. The production tooltip/theme checks will verify that appearance is preserved, and the controlled benchmark will measure the effect.Finding: the
packages/uishared confirmation still fails its production Chromium material assertion after the appearance-sync change. At 4x CPU,test/add-host-prototype.spec.ts --grep 'shared confirmation'reports expected transparent/16px blur but received rgba(28,28,30,0.7)/8px blur. The sync deferral alone does not preserve the nested confirmation surface contract; investigating source token selection before committing.Correction: the prior confirmation finding was an incorrect test oracle, not a surface regression. The detached confirmation correctly carries the terminal-screen palette; the comparison probe was appended to
document.body, outside the screen-scoped theme. The probe now sits inside.terminal-screen, andtest/add-host-prototype.spec.ts --grep 'shared confirmation'passes (1/1, 4x CPUWeight run).Finding: the diagnostic run on
infraternal-dev(4x CPU, n=2, start load 21.31/24.45/32.92) still exceeded budgets: theme input-handler p95 reached 192.9 ms at 8 terminals, and max redraw slice p95 reached 73.6 ms at 4 and 50.0 ms at 8. These loaded-host numbers are not clean comparisons. Source review foundapps/tracer/src/canvas/views/world.tsstill synchronously callscopyFloatingAppearancefromtracer:appearance; that helper reads computed styles after screen token writes. I’m moving that path to the shared deferred appearance-copy scheduler, then will remeasure.The completed 4x n=2 diagnostic on
infraternal-devended at load 23.41/24.48/31.16 (start 21.31/24.45/32.92); all four operations still failed the 16 ms/frame checks. Theme input-handler p95 was 142.7/126.2/192.9 ms at 1/4/8 terminals; redraw-slice p95 was 20.9/73.6/50.0 ms; frame-gap p95 was 216.7/205.2/358.6 ms. Cold/warm font and resize also exceeded p95, with redraw timeouts at 4/8 terminals. These numbers are diagnostic under substantial host load, and the current run's screenshot is attached in Playwright output.Stopped the second 4x n=2 diagnostic before full scale collection when
infraternal-devload rose from 19.69/22.51/29.62 to 60.65/34.85/32.97. At 4 terminals the theme input-handler p95 reached 462.8 ms and redraw-slice p95 67.2 ms; this run is retained only as overload evidence, not as a performance comparison. The earlier completed n=2 run and browser screenshot remain available in the job scratch output.Step complete:
5c12d67fadds the minimal pinned renderer range API and generated artifact. The production palette pixel suite passed 3/3 with all curated themes; the 50-switch probe measured p50 0.5 ms, p99/max 3.4 ms, and zero >50 ms tasks.scripts/verify fastafter the commit stopped at the unchanged RTT self-test on both allowed attempts. Outputs verbatim:latency proxy: configured 300 ms RTT did not arrive: p50=370.79 ms p99=587.75 mslatency proxy: configured 300 ms RTT did not arrive: p50=480.00 ms p99=1035.58 msThe retry observed host load 67.61/66.67/55.92. The Rust and TypeScript fast gates did not run; no threshold was changed.
Production theme smoke after the deferred appearance scheduler and 8-column slice change: all curated-theme pixel assertions progressed, click-to-full-paint p99 was 7.7 ms, but the test failed its unchanged long-task assertion with two entries (64 ms, 59 ms). The last host load sample before the run was 18.65/41.11/49.68. This does not isolate whether those tasks came from renderer work or host contention; I’ll repeat after load falls, without changing the threshold.
The repeat production theme smoke still passed the palette pixel checks and measured p99 click-to-full-paint 7.2 ms, but failed the long-task assertion with seven entries: 52, 51, 77, 58, 67, 83, and 74 ms. Host load before the run was 14.71/34.22/46.46. The click threshold remains unchanged; the long tasks are not isolated to the palette handler, so I’m leaving the result recorded and will use the 4x operation harness for the scale attribution.
Step complete: runtime scheduler commit
ecf3815cadds the page-shared fit/redraw queues, 8-column renderer slices, and deferred floating-token reads. TypeScript and the nested confirmation production test passed. The production theme pixel test passed all curated palettes and measured p99 click-to-paint 7.2 ms, but its long-task observer reported seven 52–83 ms entries under host load; that remains recorded without a threshold change.scripts/verify fastpassed after the commit. Relevant output verbatim:METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=298.97 p99_ms=311.61 result=PASS| fmt | PASS || VT native fmt | PASS || clippy | PASS || test | PASS || cargo-deny | PASS || static builds | PASS |dist/ghostty-web.js: OKdist/ghostty-vt.wasm: OKdist/index.d.ts: OKJavaScript transfer, critical: identity=927587 gzip=285462/307200 brotli=237022/256000 bytes34 pass7 passefd18d09fast gate completed with failure. RTT self-test passed:METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=304.01 p99_ms=317.35 result=PASS. Rust gate summary:| test | FAIL (101) |; four unrelatedinfraternal-serverwebsocket socket tests failed after running under high host load (load average 30.09/19.19/24.76):clean_control_close_is_not_an_internal_error,fragmented_wire_frame_has_a_completion_deadline,incomplete_rfc_message_still_loses_authority_on_revocation, andrecovery_subscription_updates_every_signed_in_socket. Other Rust gates, cargo-deny, and both static builds passed. No RTT retry was needed. Renderer browser and benchmark evidence remains separate.The final 14-sample 4x-CDP run completed on
infraternal-devat loadavg 20.06/20.18/23.69 -> 17.50/18.39/21.84. It failed the unchanged budgets at 1/4/8 terminals. Input event latency p95 (theme / cold font / warm font / resize) was 305.6/84.0/83.3/165.9 ms at 1, 229.5/179.0/89.8/40.5 ms at 4, and 106.5/236.6/91.1/146.0 ms at 8. Renderer slice p95 was 73.6/30.8/48.5/31.3 ms at 1, 50.3/36.1/27.6/27.1 ms at 4, and 14.1/11.5/20.4/33.7 ms at 8. Redraw timed out in 12/14, 2/8, 12/14, 7/14 samples at 1; 14/14, 8/8, 14/14, 14/14 at 4; and 14/14, 8/8, 14/14, 14/14 at 8 (theme/cold/warm/resize). The 8-terminal theme slice met 16 ms, but input latency and frame gaps failed throughout. Renderer-local scale projection (128 sessions, one shared atlas): 1319.6 MiB at 1, 883.6 MiB at 4, 981.6 MiB at 8. Log:$HOME/.cache/codex-scratch/renderer-cost/final-14.log; production screenshot:apps/tracer/test-results/renderer-cost-renderer-the-26839--the-visible-terminal-scale/attachments/renderer-cost-product-canvas-8-fea996108f700233c46fb43ce39e17485007c871.png. These are host-loaded diagnostic measurements and do not demonstrate the 16 ms/60 fps target.The first
RENDERER_COST_SAMPLES=2spot-check after round-robin slicing did not improve theme input latency under host load 21.61/20.91/21.82: p95 was 91.7 ms at 1 terminal and 234.2 ms at 4; theme redraw timed out 2/2 at both. Renderer-slice p95 was 38.8 ms and 33.6 ms. The run is still collecting 4/8-terminal font and resize results; this is preliminary and not a clean-host comparison.After the redraw-queue rotation, viewport reuse, and deferred theme application, the 2-sample spot check (cold-font sweep covers 8 undeclared faces) ran on
infraternal-devat loadavg 15.12/18.06/20.34 -> 7.67/13.54/18.17. Theme input-handler p95 fell from the prior loaded 14-sample run's 221.3/195.5/76.7 ms at 1/4/8 terminals to 2.7/3.5/6.6 ms; theme renderer-slice p95 was 11.7/16.2/13.7 ms. Theme redraw completed 2/2 at 1 terminal, but timed out 2/2 at 4 and 8. Cold-font input-handler p95 remained 44.8/9.0/14.1 ms; this points to synchronous coldloadFontsetup still on the click task at 1 terminal. Resize input-handler p95 was 0.1/0.0/0.4 ms. Event-latency and frame-gap budgets still fail in this loaded-host spot check, and it is not the final 14-sample evidence.After deferring font loading to the next animation frame, the 2-sample scale sweep ran on
infraternal-devat loadavg 16.98/14.71/18.08 -> 9.03/11.89/16.37. Input-handler p95 (theme / cold font / warm font / resize) was 3.1/11.0/7.0/0.1 ms at 1 terminal, 3.2/10.6/9.9/0.1 ms at 4, and 4.8/11.7/7.1/0.4 ms at 8. Theme slice p95 was 6.3/8.3/13.4 ms. The work slices now stay near the 16 ms target, but redraw timeouts remained 1/2 at 4 terminals and 2/2 at 8; event latency and frame-gap p95 still exceeded budgets on this loaded host. This confirms responsive synchronous input handlers but does not yet establish 60 fps or completion at scale. Renderer-local 128-session projections were 1319.6/1011.6/917.6 MiB at 1/4/8 terminals. Full 2-sample log:$HOME/.cache/codex-scratch/renderer-cost/after-font-defer-2.log.With an 8 ms shared redraw budget, the 2-sample 4x run on
infraternal-devwent from loadavg 3.63/9.64/15.24 to 3.69/7.56/13.63. At 4 terminals, theme and resize had 0/2 redraw timeouts; at 8 terminals, theme/warm-font/resize still timed out 2/2, while theme input latency p95 was 9.5 ms, handler p95 2.9 ms, and slice p95 16.0 ms. The 8 ms budget improves catch-up at 4 terminals without exceeding the slice threshold at 8, but does not finish the 8-terminal redraws in the current 1-second collection window. Next I am reducing the number of background ranges per row and measuring that separately.The 16-column background-range experiment failed at the 1-terminal theme slice budget: renderer-slice p95 was 25.1 ms (the prior 8-column result was 12.9 ms); redraw completed 2/2. Loadavg moved 6.38/7.04/12.86 -> 11.91/8.22/13.12. I am collecting the remaining scale output before choosing a narrower range.
The whole-canvas background reset experiment ran at loadavg 6.37/7.58/11.63 -> 8.35/7.72/10.94. At 8 terminals, renderer-slice p95 was 18.4 ms for theme and 38.2 ms for cold font; theme, warm-font and resize redraws timed out 2/2. The 4-terminal resize finished 2/2, but theme and both font classes timed out. I am reverting this reset path and restoring per-range clearing; it keeps slices shorter and had lower p95 in the earlier 8 ms run.
Renderer-cost 14-sample diagnostic completed on infraternal-dev, Chromium at 4x CPU. Host load was 11.04/9.17/10.75 at start and 10.36/12.10/11.79 at end, peaking at 19.62 during the run. The measurements failed the 16 ms / 60 fps budget and are not a clean-load comparison. p50/p95 input-event latency (ms), by theme / cold font / warm font / resize: 1 terminal 13.9/34.5, 10.7/31.5, 25.9/55.0, 11.0/39.8; 4 terminals 28.2/73.7, 39.6/238.2, 55.7/135.5, 45.1/56.4; 8 terminals 30.5/53.4, 26.1/30.9, 39.9/61.8, 27.2/101.8. Renderer max-slice p50/p95 (ms): 1 terminal 8.2/16.3, 2.5/8.5, 7.2/22.8, 3.7/8.8; 4 terminals 18.4/39.7, 9.3/20.0, 16.9/28.1, 9.7/52.8; 8 terminals 13.7/25.9, 4.3/8.4, 8.7/21.4, 9.0/15.8. Redraw timeouts were 0/0/2/1, 13/7/14/10, and 14/3/14/14 respectively. At 128 sessions, renderer-local projected memory was 1319.6/1011.6/853.6 MiB for 1/4/8 visible terminals (one shared glyph atlas). Full log: $HOME/.cache/codex-scratch/renderer-cost/final-selected-14.log. Next: repeat after host load falls.
Second 14-sample diagnostic completed on infraternal-dev, Chromium at 4x CPU under CPUWeight=10000. Loadavg was 7.72/9.89/10.97 at start and 9.55/13.62/12.54 at end, peaking at 25.55, so this remains a loaded-host diagnostic. p50/p95 input-event latency by theme / cold font / warm font / resize (ms): 1 terminal 8.3/16.5, 15.2/27.5, 11.7/35.1, 12.4/16.4; 4 terminals 14.7/63.6, 52.7/145.6, 42.6/76.6, 39.2/146.2; 8 terminals 28.3/60.9, 27.8/31.3, 37.2/47.3, 20.0/43.9. Renderer max-slice p50/p95 (ms): 1 terminal 4.6/7.8, 1.8/8.2, 2.1/4.2, 3.1/5.3; 4 terminals 13.8/31.6, 9.9/31.9, 18.2/28.0, 13.1/106.9; 8 terminals 15.0/45.2, 3.3/5.4, 4.6/8.2, 4.8/16.4. Redraw timeouts were 0/0/0/0, 7/3/14/11, and 14/3/14/14. Projected renderer-local memory at 128 sessions: 1319.6/1011.6/853.6 MiB at 1/4/8 terminals. Full output: $HOME/.cache/codex-scratch/renderer-cost/final-selected-repeat-14.log. All scale evidence is retained; no 16 ms / 60 fps claim is supported.
Deferred palette dismissal for theme and committed-font picks, and kept font loading in the next animation frame. apps/tracer
bun run checkandgit diff --checkpass. A 2-sample exploratory run (infraternal-dev, Chromium 4x, CPUWeight=10000) showed theme input-handler p95 0.8/2.7/1.1 ms at 1/4/8 terminals; corresponding input-event-latency p95 was 12.6/28.1/34.6 ms and max renderer-slice p95 was 9.5/13.8/10.3 ms. Other operations still exceed the 16 ms / 60 fps budgets; redraw timed out 2/2 for theme, warm font and resize at 4 and 8 terminals. Host load was 8.02/9.98/11.23 -> 13.97/12.51/12.01. This confirms the click handler is shorter but does not establish a passing switch or frame budget. Log: $HOME/.cache/codex-scratch/renderer-cost/final-deferred-close-2.log.Committed terminal redraw rotation and viewport-cell reuse as
f837e637. The 14-sample Chromium 4x diagnostic under host load (7.72/9.89/10.97 -> 9.55/13.62/12.54; peak 25.55) measured input-event p50/p95 theme/cold/warm/resize of 8.3/16.5, 15.2/27.5, 11.7/35.1, 12.4/16.4 ms at 1 terminal; 14.7/63.6, 52.7/145.6, 42.6/76.6, 39.2/146.2 ms at 4; 28.3/60.9, 27.8/31.3, 37.2/47.3, 20.0/43.9 ms at 8. Redraw timeouts were 0/0/0/0, 7/3/14/11, 14/3/14/14. Projected renderer memory at 128 sessions: 1319.6/1011.6/853.6 MiB at 1/4/8. Loaded run does not meet or establish the budgets.scripts/verify fastpassed on the first run. Verbatim gate output excerpts:METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=312.42 p99_ms=325.52 result=PASS
JavaScript transfer, critical: identity=928104 gzip=285571/307200 brotli=236982/256000 bytes
7 pass
0 fail
34390 expect() calls
Ran 7 tests across 2 files. [2.60s]
Committed the screen selection path as
3246cb29. In the 2-sample exploratory run after deferring palette dismissal, theme input-handler p95 was 0.8/2.7/1.1 ms at 1/4/8 terminals; event-latency p95 remained 12.6/28.1/34.6 ms. The full 14-sample result before this final palette-close change and the 2-sample follow-up both miss overall frame/redraw budgets at multi-terminal scale; host load reached 13.97 during the follow-up.scripts/verify fastreturned exit 1. RTT passed (p50 313.11 ms, p99 320.87 ms); fmt, clippy, cargo-deny and static builds passed. At load 24.72, one timing-sensitive integration test failed:test repeated_tiny_credit_pauses_preserve_shell_progress ... FAILEDcatch-up 0: 12 MiB shell completed; 1-byte credit paused; funded Snapshot=481 bytes seq=12583542: PASSassert len(client.snapshots) == count and client.out == cursorThe other five tests in
agent_reviewpassed. Full log: $HOME/.cache/codex-scratch/renderer-cost/verify-fast-3246.log. I’ll retry the gate once after the host load falls.The single retry of
scripts/verify fastfor3246cb29passed without changing thresholds or tests. RTT:METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=292.63 p99_ms=322.40 result=PASS. Rust server suite:test result: ok. 100 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 132.60s. Critical transfer:JavaScript transfer, critical: identity=928104 gzip=285567/307200 brotli=236937/256000 bytes. Protocol:7 pass,0 fail,34390 expect() calls,Ran 7 tests across 2 files. [2.54s]. First-run-only shell-progress assertion is retained above with its load evidence. Retry log: $HOME/.cache/codex-scratch/renderer-cost/verify-fast-3246-retry.log.Final committed-code 14-sample run completed on infraternal-dev, Chromium 4x, CPUWeight=10000. Loadavg start was 4.44/8.13/11.18; observed peak during the run was 21.12 and load at completion was 19.51. For theme/cold font/warm font/resize, p95 input-event latency, renderer max slice, frame gap, and click-to-redraw wall (ms) were:
1 terminal: event 24.8/33.6/103.7/127.2; slice 21.5/17.8/25.2/31.6; frame 191.2/318.5/248.3/286.9; wall 642.8/1514.6/1628.2/1538.5.
4 terminals: event 65.6/108.1/112.1/66.2; slice 33.5/16.1/31.6/16.1; frame 225.4/270.3/227.6/228.7; wall 1581.3/1627.2/1558.8/1946.2.
8 terminals: event 41.1/36.2/104.7/98.5; slice 33.2/8.1/29.9/21.6; frame 199.4/233.1/158.9/301.1; wall 1480.4/2578.0/1539.9/2915.0.
Redraw timeouts (theme/cold/warm/resize) were 0/1/5/13, 12/5/14/13, and 14/4/14/14 at 1/4/8 terminals. Theme atlas p95 hits were 210/869/1289 with zero misses. The run fails the 16 ms and 60 fps budgets. Renderer-local memory projected to 128 sessions was 1319.6/1011.6/725.6 MiB at 1/4/8 terminals. Log: $HOME/.cache/codex-scratch/renderer-cost/final-committed-14.log. Screenshot attachment: test-results/renderer-cost-renderer-the-26839--the-visible-terminal-scale/attachments/renderer-cost-product-canvas-8-fea996108f700233c46fb43ce39e17485007c871.png. Visual judgment and real-device frame-meter check remain with the owner.
Measured a 4-column redraw candidate after the 8-column final run.
apps/tracerTypeScript check andgit diff --checkpass. Under infraternal-dev Chromium 4x, loadavg rose 7.62/10.49/12.74 -> 36.22/22.60/16.94. Theme renderer max-slice p50/p95 fell from 6.0/21.5, 17.5/33.5, 10.3/33.2 ms at 1/4/8 terminals to 5.8/6.7, 11.7/26.3, 12.4/18.6 ms. Theme input-handler p95 was 1.0/6.6/2.2 ms; redraw timeouts were 0/2/2 of 2 samples. This reduces the synchronous paint unit, but the sample still fails frame-gap and multi-terminal budgets and is heavily loaded. Exploratory log: $HOME/.cache/codex-scratch/renderer-cost/column-four-2.log.Committed the four-column synchronous range as
cb09cbf1. The exploratory 2-sample p95 theme slice fell to 6.7/26.3/18.6 ms at 1/4/8, but host load rose to 36.22; frame and click latency budgets still fail.The first
scripts/verify fastexited 1 at loadavg 25.37/22.96/19.44. RTT passed:METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=315.85 p99_ms=318.05 result=PASS. fmt, VT fmt, clippy, cargo-deny and static builds passed. One unrelated timing-sensitive credit test failed:test unaffordable_repaints_park_until_sufficient_credit ... FAILEDcredit probe failed: t1-gate-approximate-1The failure is in
crates/infraternal/tests/vt_credit.rs:22; I’ll retry the full gate once after host load falls. Full log: $HOME/.cache/codex-scratch/renderer-cost/verify-fast-cb09.log.The one retry after the credit-test failure stopped at the latency proxy: configured 300 ms RTT measured p50=348.30 ms, p99=406.03 ms. Host load average was 27.27/24.57/20.74. I will rerun the fast gate once after host load eases; thresholds remain unchanged.
The final gate retry passed its RTT self-test (p50 307.84 ms, p99 312.50 ms) and the renderer-adjacent VT credit test, but the server suite ended 99 passed / 1 failed / 9 ignored.
review3_pending_routes_and_idle_expiry_recoverypanicked atcrates/infraternal-server/src/auth/tests.rs:1711with “server closed websocket unexpectedly: None”; it ran over 60 seconds. The full suite took 262.27 seconds; completion load was 9.43/12.88/15.97. No auth files were changed. I am checking load before deciding whether a clean gate rerun is useful.Four-column committed-code benchmark completed: Chromium CDP throttle 4x, 14 samples per warm operation and 8 cold faces per scale,
infraternal-dev, CPUWeight=10000, TRACER_TEST_PORT=4497. Host loadavg 12.61/12.11/14.89 -> 15.92/14.52/15.19. Input-event latency p50/p95 (ms):All scales miss 16 ms p95. Frame-gap p95 ranges 111.2–566.8 ms; redraw completion timed out in 14/14 for warm font and resize at 4 and 8 terminals. Theme palette atlas had zero misses at all scales. Scale projection at 128 sessions: 1319.6/883.6/789.6 MiB at 1/4/8 visible terminals. These are loaded-host results; the previous 8-column 14-sample run started at 4.44/8.13/11.18 and reached 19.51 one-minute load, so cross-run deltas are not normalized. Full log:
$HOME/.cache/codex-scratch/renderer-cost/committed-4col-14.log.Exploratory 16-column background batching run (2 warm samples, 8 cold faces/scale), Chromium CDP 4x on infraternal-dev under CPUWeight=10000, port 4497. Loadavg rose 9.48/13.94/15.28 -> 19.99/16.42/15.93. Renderer-slice p95 at n=1/4/8 terminals for theme/cold/warm/resize (ms): 9.6/7.7/8.6/14.0; 21.0/13.9/21.2/15.0; 23.0/40.7/32.0/55.5. Input-event p95 at n=4 was 21.4/320.9/31.6/121.1 ms; frame-gap p95 reached 405.5 ms. The narrower n=1 and selected n=4 slices are promising, but the run is too small and load changed during sampling; no budget pass is claimed. Full log:
$HOME/.cache/codex-scratch/renderer-cost/background16-2.log.Exploratory run with 8-column background slices and a 4 ms page redraw budget (2 warm samples, 8 cold faces/scale), Chromium CDP 4x, port 4497. Loadavg 15.04/15.81/15.79 -> 9.79/12.66/14.51. Input-event p95 at n=1/4/8 terminals (theme/cold/warm/resize, ms): 9.5/35.0/24.3/17.4; 21.7/76.2/21.7/36.5; 28.9/43.4/45.6/82.8. Renderer-slice p95: 25.1/10.4/5.8/5.2; 8.4/24.0/5.4/8.4; 13.4/15.3/8.3/13.7. Frame-gap p95 stayed 77.5–309.9 ms, and redraw timed out in multiple samples. Several 8-terminal slices are now below 16 ms, but input and frame budgets still fail. Full log:
$HOME/.cache/codex-scratch/renderer-cost/background8-budget4-2.log.Exploratory two-column text/four-column background run with a 4 ms redraw budget (2 warm samples, 8 cold faces/scale), Chromium CDP 4x, CPUWeight=10000, port 4497. Loadavg 7.60/11.58/14.04 -> 18.79/13.92/14.30. Renderer-slice p95 at n=1/4/8 terminals for theme/cold/warm/resize (ms): 27.6/9.0/13.1/27.5; 15.8/9.3/12.4/4.8; 16.4/25.4/16.3/24.1. n=4 slices improved, but n=1/8 theme or resize and n=8 cold font still exceed 16 ms. Input-event p95 reached 326.1 ms and frame-gap p95 653.4 ms; redraw timeouts persisted. This does not support shrinking every batch to two columns. Full log:
$HOME/.cache/codex-scratch/renderer-cost/background4-text2-budget4-2.log.Final candidate benchmark completed: 4-column glyph ranges, 8-column background ranges, 4 ms page redraw budget. Chromium CDP 4x, 14 samples/warm operation and 8 cold faces/scale,
infraternal-dev, CPUWeight=10000, port 4497. Host loadavg 10.52/12.62/13.79 -> 5.90/9.82/12.51. Input-event p50/p95 in ms:All input-event p95 values miss 16 ms. Frame-gap p95 is 64.5–649.2 ms; redraw timed out in all 14 samples for warm font and resize at 4/8 terminals. Palette redraw atlas misses were zero. 128-session memory projection: 1319.6/1011.6/917.6 MiB at 1/4/8 visible terminals. The browser assertions remain enabled and the run failed them. Full log:
$HOME/.cache/codex-scratch/renderer-cost/final-bg8-budget4-14.log.Committed the renderer batching step as
09c7534d56f49ca02da73801c927edd73641ca08: four-column glyph ranges, eight-column background ranges, and a 4 ms page redraw budget. The 14-sample 4x run recorded input-event p95s of 116.4/316.2/35.9/161.3 ms at n=1; 33.1/53.2/39.5/29.5 ms at n=4; and 44.0/87.9/48.9/79.2 ms at n=8 (theme/cold/warm/resize). It does not meet the input budget. Runningscripts/verify faston this commit now.Fast gate on source commit
09c7534dfailed its Rust test phase:auth::tests::socket_tests::clean_control_close_is_not_an_internal_errorpanicked at crates/infraternal-server/src/auth/tests.rs:1711 withserver closed websocket unexpectedly: None(99 passed, 1 failed, 9 ignored; 194.00s). The RTT self-test passed: p50 301.03 ms, p99 319.31 ms. Gate summary:+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | FAIL (101) |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
Host load at follow-up: 18.42/11.99/12.06. The failure is outside the renderer changes; I am recording it without claiming the gate passed.
Report step complete at head
3e41d34d41.docs/perf/renderer-cost.mdnow records p50/p95 input latency by operation at 1/4/8 terminals, the final frame/slice p95 and timeout counts, memory projected to 128 sessions, and current transfer measurements. Current production build and D188 transfer check passed: critical JavaScript 285,586 B gzip / 237,068 B Brotli; deferred 47,937 B / 41,577 B. The 14/8-sample browser run still misses all input-event p95 and frame-gap budgets; details and screenshot path are in the report.Final
scripts/verify fastoutput:METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=322.47 p99_ms=351.69 result=PASS
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | FAIL (101) |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
Rust test result:
test result: FAILED. 97 passed; 3 failed; 9 ignored; 0 measured; 0 filtered out; finished in 361.68s. The three failures were websocket tests panicking atcrates/infraternal-server/src/auth/tests.rs:1711withserver closed websocket unexpectedly: None. Load at completion was 20.24/18.02/15.49; observed peak one-minute load was 30.35. No thresholds were changed. The owner's real-device frame-meter and screenshot review remain pending.Independent verification review starts on branch
review-renderer-cost, based ondevmerge basec0a0982a0eca991fadfcc7bf597f2db6b5d36ccd, reviewing target3e41d34d4154b9d91b1cf05722f4d656edf986a3. Read the issue history, job report, worktree contracts, and referenced decisions. No findings or edits yet.P1 finding RC-1, test committed as
9d5ae3ffa9b4aedb38d84e86db38b22b225eafd5. On one mock terminal starting on Ink, the test warms Geist Mono, dispatchestheme:paperthenfont:geist-monobefore the next frame, and waits for redraw completion. The screen ends on Paper/Geist Mono, but the renderer palette stays Ink: expected#f6f6f4, received#0d0e10. Repro:TRACER_TEST_PORT=4297 INFRATERAL_TEST_RTT=0 bun x playwright test test/renderer-appearance-order.spec.ts --workers=1.apps/tracer/src/core-screen.ts:327-341cancels the prior appearance frame when scheduling the second update without composing the two independent changes.P2 finding RC-2, test committed as
7e876acdcc11761c9885fe0ca9cc008e5b479c63. The renderer benchmark multiplies per-terminal memory by 128, whilemain:DECISIONS.mdD170 sets 200 concurrent terminal sessions per server and requires per-unit budgets to use that count. The new guard fails: expected 200, received 128. The report's 128-session projections are 725.6–1319.6 MiB; using the same per-terminal measurements at 200 sessions gives 1132.0–2061.3 MiB, charging the shared atlas once.Correction to the low end of RC-2's projected range: recalculating from the logged 8-terminal per-unit values gives 1133.2 MiB at 200 sessions (not 1132.0 MiB); the range is 1133.2–2061.3 MiB. The finding and local findings file now use the corrected value.
Independent renderer benchmark rerun completed on infraternal-dev with Chromium at 4x, 14 samples per operation and 8 cold fonts per scale, under
systemd-run --user --scope -p CPUWeight=10000. Load average changed from 17.91/27.91/29.65 to 39.58/36.17/32.25. The benchmark failed its budgets at 1/4/8 terminals: theme input p95 was 69.3/74.4/318.5 ms, and maximum frame-gap p95 across operations was 473.2/664.5/1490.1 ms. At 8 terminals, redraw timed out in 14/14 theme, 8/8 cold-font, 14/14 warm-font and 14/14 resize samples. The author report already records budget failures; this rerun reproduces them under elevated host load. Full output:$HOME/.cache/codex-scratch/renderer-cost-review/renderer-benchmark.log.Gate-load comparison for the auth socket timeout failures (target fast run started at load 21.88/26.87/29.22; detached
devbaseline459070fe3b75548382e8e19fba86af20439cf607started at 21.26/20.58/25.45):Target
3e41d34d:Detached
devbaseline, each exact test individually:The failures are not reproduced on
dev, which contains the later #118 gate-stability changes. The target diff does not touch auth socket code. Full logs are retained under$HOME/.cache/codex-scratch/renderer-cost-review/.The Rust failure short-circuited
scripts/verify fastbefore its TypeScript section, so I rants_verify_fastseparately on3e41d34d. The first run's differential stream test hit its 30 s timeout while the host was loaded; after the oracle was warm, the protocol suite passed 7/7 in 7.22 s and a full TypeScript-section rerun passed (exit 0): Ghostty checksums, TypeScript compiler, 34 tracer tests, production build/transfer budget, Rust oracle, and 7 protocol tests.Measured transfer: critical JavaScript identity 928,133 B, gzip 285,585/307,200 B, Brotli 237,164/256,000 B; deferred identity 136,533 B, gzip 47,939/51,200 B, Brotli 41,585/45,056 B. Font transfer budgets passed. Full log:
$HOME/.cache/codex-scratch/renderer-cost-review/job-head-ts-fast-retry.log.Independent verification complete. Verdict: merge after fixes.
Findings: P0 0, P1 1, P2 1, P3 0. Reviewer branch
review-renderer-costhead:7e876acdcc11761c9885fe0ca9cc008e5b479c63. Evidence tests are committed in9d5ae3ffa9b4aedb38d84e86db38b22b225eafd5(RC-1) and7e876acdcc11761c9885fe0ca9cc008e5b479c63(RC-2). The full scenarios and outputs are recorded above and infindings.md.scripts/verify fastran on job head3e41d34d4154b9d91b1cf05722f4d656edf986a3and exited 1. Relevant output, verbatim:All three socket tests passed individually on detached
dev(459070fe3b75548382e8e19fba86af20439cf607) in the same load window. The standalone TypeScript gate passed on retry: 34 tracer tests and 7 protocol tests passed; bundle transfer budgets passed. The renderer benchmark rerun and scale projections are recorded in prior comments. Owner screenshot review and the real-device frame-meter check remain pending per the job report. No issue was closed.Correction and final review record: RC-2's test-only evidence commit is
f553a61cc7bd6e05594ea58e138c3f6fefa01804; this is a formatted amendment of the same test change. Reviewer branchreview-renderer-costnow ends at that SHA, replacing the prior7e876ac...reference.Verdict: merge after fixes. Findings: P0 0, P1 1, P2 1, P3 0.
scripts/verify faston job head3e41d34d4154b9d91b1cf05722f4d656edf986a3returned 1. Output, verbatim:The three socket tests passed individually on detached
dev; the TypeScript gate passed on retry (34 tracer tests, 7 protocol tests, bundle and font transfer budgets). The prior comments contain the baseline outputs and benchmark measurements. Owner screenshot review and the real-device frame-meter check remain pending per the job report. No issue was closed.Run 2 starts on renderer-cost, base
3e41d34d41. Read #97 history, #121 requirements, repo contracts and prior review/next-run findings. Merging local dev7d6df447first; then cherry-pick RC-1/RC-2 failing tests, fix and measure 1/4/8 visible plus hidden renderer cost under local CPUWeight=10000. Browser plugin unavailable; production Playwright on unique port 4497. No push/deploy or engine change.After merging dev source, both reviewer probes still fail: RC-1 expected Paper background #f6f6f4, received Ink #0d0e10; RC-2 expected D170 scale 200, received 128. Production Chromium, port 4497, RTT=0, CPUWeight=10000. Log: $HOME/.cache/codex-scratch/renderer-cost/repro-review.log. Merge conflicts preserve dev attribute-scoped levels/mesh APIs and our multi-stream fixture; fast gate compiling. Single-terminal CPU attribution is next.
Merge integration checks: font picker/font switch 5/5 passed; shared confirmation initially failed (transparent/none versus rgba(28,28,30,0.7)/8px blur). Cause: dev material tokens now live on attribute-selected surfaces, while the detached confirmation copied tokens from the screen. Resolving the scoped theme/card attributes in packages/ui/src/tooltip.ts restores the shared material; production Chromium regression then passed 1/1 (15.3s), TypeScript check passed. Merge fast gate hit pinned Zig dependency fetch HttpConnectionClosing, not an auth error; fetched the same immutable zigimg/uucode revisions through codeload into this job cache and zig fetch returned the expected package hashes. Gate continuing with no source/toolchain/threshold change.
Single-terminal readable profile (4x, n=2 under high host load) attributes forced synchronous layout to createCapsuleTabs.place -> render -> select -> Settings paint -> tracer:appearance. Theme Paper profiles sampled 145.1/279.1ms in place alone; tint/drawImage/canvas clear and font setters are the other large explicit native calls. Profiles are attribution evidence, not latency comparison (profiler overhead); $HOME/.cache/codex-scratch/renderer-cost/profile-*.json. Owner logs in ~/.local/state/infraternal-preview/perf/47401.jsonl include iPhone 120Hz build
2585fc57(6 incidents, worst gap 169ms), plus older Mac builds; they predate this work and cannot validate it.Memory floor isolated on pinned browser engine (no canvas/atlas, empty 80x24, default 10000 scrollback, CPUWeight=10000, load 28.52/29.93/27.35): module 1,245,184 B; 1/4/8/200 terminals 6,946,816 / 22,675,456 / 43,646,976 / 1,052,508,160 B; fetching every viewport grows to 1,079,574,528 B; freeing all terminals does not shrink WebAssembly.Memory. Raw high-water memory is above the 2MiB hidden budget at actual D170 scale. Probe: $HOME/.cache/codex-scratch/renderer-cost/wasm-memory.mjs and .log. Source evidence: pinned ghostty src/terminal/PageList.zig preheats four page-aligned screen-page pool items. Measuring demand allocation within this SAME pinned engine/allocator next; no engine or foundational allocator choice.
The first before scale run failed before 8 terminals: locator.click retried 1399 times because the first split button moved outside the viewport under dev camera behavior (15m timeout). Test setup will dispatch that fixture split action directly; measured palette/resize input stays real browser input. Full failure: before-scale.log. Capsule regression also fails before its fix: unchanged selection performs one offsetLeft read (expected zero), capsule-red.log.
Corrected fixture reproduces 8-terminal redraw timeout in EVERY category: theme 2/2, cold font 8/8, warm font 2/2, resize 2/2. Before sweep: Chromium 4x, CPUWeight=10000, 2 warm samples/8 cold faces per scale; load 31.48/29.99/29.07 -> 33.70/32.36/30.24. Input latency p95 theme/cold/warm/resize ms: n=1 24.6/105.0/41.6/54.9; n=4 67.9/148.2/55.6/37.0; n=8 27.4/215.5/110.5/82.6. Renderer slice p95 ms: n=1 12.7/13.0/9.6/10.2; n=4 146.1/23.1/13.8/10.9; n=8 18.1/18.3/34.6/39.7. This is a diagnostic before run under heavy host load, not a normalized comparison or pass. Full metrics/screenshot: $HOME/.cache/codex-scratch/renderer-cost/before-scale-fixed-fixture.log and Playwright test-results. Production code is still the merged baseline; prepared fixes remain separate patches until the integration gate completes.
Additional real-engine/canvas regressions reproduced before fixes:
All evidence under /home/kayg/.cache/codex-scratch/renderer-cost/. Temporary diagnostic specs moved there so they cannot contaminate the merge compiler gate.
Merge prerequisite updated to dev
42e50d42: dev advanced during the run with #127 details/sharing deferral commits. The earlier target7d6df447plus the renderer lane exceeded deferred transfer by 735 B gzip / 256 B Brotli. Current merged build is 47,034/51,200 B gzip and 41,474/45,056 B Brotli deferred, with no budget change. TypeScript check passes; shared detached confirmation production browser test 1/1 passes. Baseline vendored JS/WASM/declarations reproduced exactly from the pinned upstream commits.Gate history: merge-clean had all six Rust rows PASS, then uncovered a remaining obsolete mesh block in conflict resolution; corrected against dev. One earlier expired_handshake_releases_user_permits failure was checked on detached dev: exact test PASS (0.81 s), and subsequent full workspace test PASS, so no load-only exception is claimed. Logs baseline-auth.log and gate-merge-clean.log.
Starting a full 14/8-sample before matrix on the updated merge. Subsequent fast checks use INFRATERNAL_TEST_RTT=0 (documented local debug mode); 300 ms RTT full Rust rows already passed. Scratch logs under /home/kayg/.cache/codex-scratch/renderer-cost/.
Completed merge
1cc4b4db(dev42e50d42) and imported reviewer regression commits separately:39d90526(RC-1) and9ca34400(RC-2). RC-1 reproduced after merge: expected #f6f6f4, got #0d0e10. RC-2 reproduced earlier: 200 expected, 128 got. The RC-1 test uses the existing full renderer metric type because dev’s test-double declaration is narrower than the returned object. No behavior changed in the imported tests.Full fast gate passed on the working tree containing the regression tests and pending independent fixes; RUST_TEST_THREADS=1, RTT=300 ms, CPUWeight=10000. All rows pass with no load exception. An earlier native restart oracle hit command-queue capacity, so it was rerun without an exemption; all 24 restart positions now pass. The first wrapper had been edited while it was running and returned 127 after a successful gate; wrapper fixed and this run exits 0. Evidence: gate-regressions-serial.log/.exit under /home/kayg/.cache/codex-scratch/renderer-cost/.
Gate summary, verbatim:
RC-1 fixed in
342ba632: each queued appearance slice reads both latest desired theme and font, preserving independent per-terminal font size. Browser regression passes both update orders with a real touch pinch (2 tests). Original red expected Paper #f6f6f4, received Ink #0d0e10.Benchmark finding: filtering the palette to a font applied its preview before timing; a later click could be a no-op and report a false redraw-generation timeout. New regression failed (expected Maple, got Geist); preparation now leaves the committed face unchanged. Combined fixture/order tests: 3 passed (appearance-fixture-green.log). Subsequent samples include actual cold-font load; older cold/warm numbers are not directly comparable.
Real-engine regressions confirmed: 200 empty 80x24 terminals retain 5,256,314.88 bytes each before pixels; free() leaves a borrowed viewport array with 1920 cell objects (expected 0). Evidence: memory-release-red.log under CPUWeight=10000. Same pinned allocator with WASM-only demand allocation reduces the 200-terminal empty-state total to 213,188,608 bytes; repeated large resize still retains 1,079,181,312 bytes, so this alone does not meet the hidden budget. No foundational engine choice or scrollback reduction. Logs under /home/kayg/.cache/codex-scratch/renderer-cost/.
1570d596: fix(tracer): project visible and hidden renderer memory at D170 scale. RC-2 red 128 versus 200; corrected fixture regression passed, and unique WASM identities plus one shared atlas determine the projections. Fast gate exit 0: /home/kayg/.cache/codex-scratch/renderer-cost/gate-modules-final.log (all Rust rows PASS, TS/bundle/protocol PASS; 7 pass, 0 fail, 34390 expect calls).594eba2f: fix(ui): avoid layout for unchanged capsule selections. Real browser offsetLeft reads: 1 before, 0 after. Fast gate exit 0: /home/kayg/.cache/codex-scratch/renderer-cost/gate-modules-final.log (all Rust rows PASS, TS/bundle/protocol PASS; 7 pass, 0 fail, 34390 expect calls).7b1bcd50: test(ui): guard capsule selection layout. Red: 1 geometry read, expected 0. Green: 0. Fast gate exit 0: /home/kayg/.cache/codex-scratch/renderer-cost/gate-modules-final.log (all Rust rows PASS, TS/bundle/protocol PASS; 7 pass, 0 fail, 34390 expect calls).9feb28a3: fix(ui): write the page appearance scope marker once. Real browser root attribute mutations: 1 before, 0 after. Fast gate exit 0: /home/kayg/.cache/codex-scratch/renderer-cost/gate-modules-final.log (all Rust rows PASS, TS/bundle/protocol PASS; 7 pass, 0 fail, 34390 expect calls).1b24d44a: test(ui): guard stable appearance scope ownership. Red root mutation count 1; green 0. Fast gate exit 0: /home/kayg/.cache/codex-scratch/renderer-cost/gate-modules-final.log (all Rust rows PASS, TS/bundle/protocol PASS; 7 pass, 0 fail, 34390 expect calls).f7d74b92: fix(tracer): release idle atlas stores and reuse tint capacity. Alternating warm runs: 12 backing-store writes before, 0 after. Last release: 1,056,864 bytes before, 0 after. Fast gate exit 0: /home/kayg/.cache/codex-scratch/renderer-cost/gate-modules-final.log (all Rust rows PASS, TS/bundle/protocol PASS; 7 pass, 0 fail, 34390 expect calls).8627ebe8: test(tracer): cover atlas capacity and last-surface release. Both red regressions pass: 0 warm reallocations and 0 bytes retained after last release. Fast gate exit 0: /home/kayg/.cache/codex-scratch/renderer-cost/gate-modules-final.log (all Rust rows PASS, TS/bundle/protocol PASS; 7 pass, 0 fail, 34390 expect calls).5990a5a7: pinned WASM-only demand allocation plus render-transfer parking. 200 empty terminals: 1,052,508,160 → 213,188,608 WASM bytes; exact viewport and joined graphemes survive parking; disposal clears borrowed cells. Fast gate all rows PASS (gate-modules-final.log, exit 0). Resize high-water remains over budget; no engine, allocator, geometry or scrollback choice changed.d2ccf08e: test(tracer): verify real-engine memory and parked state fidelity. Instantiate the pinned WASM at D170’s 200-session scale. Verify borrowed-cell disposal and exact truecolor/Unicode restoration after another session reuses transfers. Reject mocked memory or ANSI replay compaction. Red: 5,256,314.88 bytes per empty terminal and 1920 borrowed cells after free. Green: below 2 MiB at 200 sessions; parked contents and joined graphemes restored exactly. Fast gate exit 0; all Rust rows PASS, TS/bundle/protocol PASS, 7 pass / 0 fail / 34390 expectations. Evidence: gate-modules-final.log, focused-fixes-green.log in /home/kayg/.cache/codex-scratch/renderer-cost/.dd21856f: fix(tracer): fit observed boxes and preserve sliced redraw ownership. Use ResizeObserver content boxes instead of synchronous document measurements. Suppress full paints while fit or sliced redraw owns pixels, synchronize native invalidations before clearing dirty state, and resume dirty output after completion. Increase bounded ranges to reduce queue overhead, avoid repeated italic-face repaints, and park transfer cells and atlas. Reject engine replacement, disabling output or dropping dirty data. Preserve background-before-glyph ordering (D175, #121). Focused real browser/engine suite: 13 passed; TypeScript passed. Budget results are reported separately; no target success claimed. Fast gate exit 0; all Rust rows PASS, TS/bundle/protocol PASS, 7 pass / 0 fail / 34390 expectations. Evidence: gate-modules-final.log, focused-fixes-green.log in /home/kayg/.cache/codex-scratch/renderer-cost/.57b861f4: test(tracer): cover both appearance orders and pinched font sizes. Extend RC-1 to both theme/font orders with an actual touch pinch. Reject resetting terminal-local sizes or checking only DOM appearance markers. Both orders pass and retain the increased terminal font size. Fast gate exit 0; all Rust rows PASS, TS/bundle/protocol PASS, 7 pass / 0 fail / 34390 expectations. Evidence: gate-modules-final.log, focused-fixes-green.log in /home/kayg/.cache/codex-scratch/renderer-cost/.dfd5d70c: docs(tracer): document pinned browser memory patches and limits. Document reproducible patch order, WASM-only demand allocation and render-transfer lifetime at D170’s 200 sessions. Reject describing released stores as shrinking linear memory; history and resize high-water remain explicit limitations. Bun 1.4.2 / Zig 0.15.2 update and checked-in checksums pass. Fast gate exit 0; all Rust rows PASS, TS/bundle/protocol PASS, 7 pass / 0 fail / 34390 expectations. Evidence: gate-modules-final.log, focused-fixes-green.log in /home/kayg/.cache/codex-scratch/renderer-cost/.Corrected 14/8-sample baseline on merged
1cc4b4dbcompleted (infraternal-dev, Chromium 4×, CPUWeight=10000; load 6.18/9.19/8.55 → 15.00/16.36/12.01). Input p95 theme/cold/warm/resize: 1 terminal 12.8/125.7/15.2/44.7 ms; 4 terminals 21.4/372.6/75.5/152.8 ms; 8 terminals 79.6/448.9/163.0/27.1 ms. Eight terminals timed out in every sample/category (14/8/14/14). Screenshot: before-corrected-8.png; log: before-corrected-14.log in this job’s scratch directory.Single-terminal tracing after
dd21856f: theme style totals 104.9–196.5 ms, largest style pass 73.9–172.1 ms; 928 elements reported in the largest pass. Theme redraw completed in both measured samples (CPU p95 109.4 ms), but maximum slice 12.6 ms still misses #121. Load began 9.13/14.49/11.60.Tested removing the 91 inactive root material rules from active stylesheets. Material behavior passed, but the largest style pass still reported 928 elements. Host load rose to 45.44/25.61/16.21 and measured theme cost worsened; no causal improvement or memory justification. Rejected and restored the committed single-sheet implementation. Diagnostic candidate and profiles retained under scratch; no candidate change shipped. Current public root marker and scoped appearance contract preserved.
Additional verification found two regressions introduced by dd21856f/594eba2f: full-frame test hooks could be suppressed while a redraw owned the pixels (a measured redraw reported zero native font assignments), and keyboard End on the selected tab failed to stop an existing pointer glide. Red: cursor expected 144 accent pixels at DPR2, got 0; capsule expected transition none, got the 200 ms glide. Fixed probe geometry/ownership and awaited two stable frames plus styled faces before snapshot; all DPR1/2/3 cursor/glyph tests and both capsule tests pass (stable-paint-and-capsule-green.log: 5 passed).
Native font selection profile cost: 14–27 ms self time in theme recordings. The actual-renderer regression observed 33 redundant native setter calls per synchronous paint; caching within the synchronous callback reduces that to 0 while resetting on each new callback and checking native state after backing-store reset/save-restore. Real-renderer/font/Unicode/DPR fidelity suite: 45 passed (final-renderer-fidelity.log).
Also found an existing weight-hook bug: restoring its own native numeric descriptor (500 14px …) prepended a second weight, invalid CSS, leaving the canvas at 10px sans-serif after reset. Red in numeric-font-red.log. Preserve explicit numeric weights; do not alter engine or font registry choices. Final fidelity and timing verification in progress.
Completed logical step
8a7ced1f/2ebb0af8: Shared capsule same-tab Home/End stops an active pointer glide without measuring geometry. Red retained the 200 ms transition; both capsule cases pass.scripts/verify fast on the validated production source snapshot: exit 0; all six Rust rows PASS; TypeScript/build/transfer checks pass; protocol 7 pass, 0 fail, 34390 expect() calls (gate-font-final.log). Full cost acceptance remains pending/over budget; final 1/4/8 matrix follows serially.
Completed logical step
b240c764/85ec37ca: Explicit full-paint probes now own the pixels, flush already observed geometry, and await styled faces/two quiet frames. DPR1/2/3 cursor pixels are 36/144/324, avoiding the previous DPR2 zero-pixel snapshot.scripts/verify fast on the validated production source snapshot: exit 0; all six Rust rows PASS; TypeScript/build/transfer checks pass; protocol 7 pass, 0 fail, 34390 expect() calls (gate-font-final.log). Full cost acceptance remains pending/over budget; final 1/4/8 matrix follows serially.
Completed logical step
24407583: Numeric canvas font descriptors round-trip after reset. Red restored 500 14px to 10px sans-serif; actual-engine regression now passes.scripts/verify fast on the validated production source snapshot: exit 0; all six Rust rows PASS; TypeScript/build/transfer checks pass; protocol 7 pass, 0 fail, 34390 expect() calls (gate-font-final.log). Full cost acceptance remains pending/over budget; final 1/4/8 matrix follows serially.
Completed logical step
d027a00b/80e9ce14: Native font selections are reused only inside synchronous paint callbacks with native state readback. Duplicate native setter writes per full paint: 33 -> 0; backing-store reset remains correct. Final font/cursor/geometry/capsule suite: 39 passed (font-cache-final-fidelity.log).scripts/verify fast on the validated production source snapshot: exit 0; all six Rust rows PASS; TypeScript/build/transfer checks pass; protocol 7 pass, 0 fail, 34390 expect() calls (gate-font-final.log). Full cost acceptance remains pending/over budget; final 1/4/8 matrix follows serially.
Completed logical step
a8a47fc7: Theme pixel caller now awaits the stable snapshot promise. All 18 registry-weight cases passed at DPR1/2 in the current run; theme timing checks are still being measured. Previous theme test failed p99 18.5 ms versus <16.67 ms (async-theme-probe-red.log); not claimed as an async snapshot failure.scripts/verify fast on the validated production source snapshot: exit 0; all six Rust rows PASS; TypeScript/build/transfer checks pass; protocol 7 pass, 0 fail, 34390 expect() calls (gate-font-final.log). Full cost acceptance remains pending/over budget; final 1/4/8 matrix follows serially.
Additional existing theme gate after awaiting stable pixels: async-theme-and-weight.log reports 18 registry-weight tests passed (all nine fonts, DPR1/2); the theme/history test passes its recoloring checks and click p99 4.5 ms, but fails the unchanged zero-long-task assertion with 14 tasks >50 ms. Previous run p99 was 18.5 ms and 108 tasks >50 ms. Host load differs; these are not normalized speedup claims. Final 4x CPU 1/4/8 matrix is running on
a8a47fc7. scripts/verify fast passed in full (gate-font-final.log, exit 0).Final corrected matrix on
a8a47fc7: after-final-14.log; locally CPUWeight=10000, Chromium 4x, 14 warm/8 cold samples. Load 26.45/26.40/20.19 -> 20.57/20.94/19.68 (before1cc4b4dbload 6.18/9.19/8.55 -> 15.00/16.36/12.01; observational, not normalized speedups).Input p95 theme/cold/warm/resize, ms: 1 terminal 69.6/165.9/27.7/41.1; 4 terminals 40.0/381.8/142.2/133.8; 8 terminals 28.9/153.7/150.8/50.0. All exceed 16 ms. Range p95: 1 terminal 81.8/13.0/12.4/9.4; 4 terminals 21.8/19.5/34.8/37.7; 8 terminals 27.2/13.3/41.6/24.2; all exceed 8 ms. This range metric also does not certify aggregate frame work or 120 fps.
Redraw timeouts theme/cold/warm/resize: before 1=7/3/0/0, 4=14/8/14/14, 8=14/8/14/14; after 1=2/1/0/0, 4=4/6/13/14, 8=14/3/14/14. Review failure reproduced; 8-terminal completion remains unresolved. Test result: 1 budget failure, 3 supporting tests passed, 7.6m.
Per-terminal WASM+canvas visible / hidden WASM MiB: 1=10.239/9.063; 4=5.880/4.703; 8=5.153/3.977, excluding JS and shared atlas. At 200 sessions visible/hidden MiB: 1=2048.8/1812.5; 4=1177.0/940.6; 8=1031.6/795.3. Hidden canvas and atlas both 0 bytes. Memory acceptance remains incomplete.
Evidence is being committed to docs/perf/renderer-cost.md and docs/perf/renderer-cost-run2/. The final matrix screenshot was overwritten by the subsequent browser invocation before archival; recreating the production 8-terminal fixture/parking capture separately and labeling it accordingly.
Paired 200-state workload (three before/after pairs, same local CPUWeight=10000 scope, Bun native WASM; no browser throttle), load 6.52/12.12/16.41 -> 8.03/12.25/16.41: memory initial 1003.75 -> 203.31 MiB, after 128 history rows 1023.375 -> 222.938 MiB; repeated resize high-water 1029.625 -> 1029.188 MiB, unchanged after free.
Median ms create/history/resize: before 257.8/396.8/646.1; demand allocation 254.9/453.6/1174.1. Median complete workload 1250.7 -> 1946.8 ms (observed +56%; resize +82%). This is a material latency cost for ~800 MiB initial/history reservation saved at 200 states; not a latency win, and resize memory still fails the hidden budget. Evidence: paired-before-{1,2,3}.log / paired-after-{1,2,3}.log; committing docs/perf/renderer-cost-run2/engine-200.json.
Final single-terminal native diagnostic: cold Geist / Commit Mono first terminal measureText 1.2/0.4 ms; normal load 277.6 / 374.3–374.6 ms, italic load 122.8 / 108.9–111.0 ms (parallel faces overlap, not summed). Initial 4x atlas: one 512x512 page, native dimensions/context submission below timer resolution, 13 mask fillText calls totaling 2.3 ms; deferred paint/GPU work is separate. Phase counters and trace partitions retain unattributed/waiting time rather than inventing exact CPU totals.
Recreated production 8-terminal capture passed (final-capture.log: 1 passed, 11.3s) and is preserved for independent review. Closing fast gate is running; performance acceptance remains incomplete.
Renderer-cost run 2 ends at
6b75ae8c43, branch renderer-cost. No push/deploy; issue remains open.Completed documentation steps:
ea62d6b9clarifies that independent queue limits do not establish #121 aggregate frame time;e2348440commits full measurement/counter/gate evidence and production screenshots;6b75ae8creplaces the obsolete cost report. Report: docs/perf/renderer-cost.md; artifacts: docs/perf/renderer-cost-run2/.RC-1 and RC-2 are fixed and regression-tested, including both independent update orders and pinch sizing, with D170 200-session visible/hidden projections. Final font/cursor/geometry/capsule checks: 39 passed; registry weights: 18 passed at DPR1/2. Recreated production 8-terminal capture: 1 passed, supplied for independent visual review, not judged by this job. Author checklist is in the report.
Acceptance remains INCOMPLETE: final 4x matrix (14 warm/8 cold samples) failed all 12 input p95 and all 12 renderer-range p95 thresholds; aggregate 8 ms frame work/120 fps is not established. At 8 terminals redraw timeouts theme/cold/warm/resize are 14/3/14/14, versus baseline 14/8/14/14. Hidden WASM at 1/4/8 is 9.063/4.703/3.977 MiB, above 2 MiB; visible allocations also exclude native browser overhead. All loads, before/after values and 200 projections are committed in matrix-evidence.json.
Demand allocation saves ~800 MiB initial/history reservation at 200 engine states, but paired native workload median totals increased 1250.7 -> 1946.8 ms (+56%) and resize 646.1 -> 1174.1 ms (+82%); resize high-water remains ~1029 MiB. This is a material trade-off, not a latency win or memory acceptance. No foundational engine/allocator/renderer choice or page geometry changed. Native font cache removes 33 duplicate assignments per synchronous full paint while preserving numeric descriptor/context-reset correctness. Single-terminal style recalculation still touches 928 elements; exact timing, load/fetch, measurement, atlas and unattributed/waiting spans are retained.
Remaining work: reduce the full-document style/native-call cost and complete 8-terminal redraw within the collection window while establishing total frame work; reduce retained/resized engine memory without hiding the allocation latency cost. Owner real-device/frame-meter and independent visual review remain outstanding.
Closing scripts/verify fast: exit 0. Full output follows verbatim (also committed in docs/perf/renderer-cost-run2/verify-fast.md).
Independent verification run 2 starts on review-renderer-cost at target
6b75ae8c43; merge base with dev is42e50d42c5. Prior reviewer branch preserved locally as review-renderer-cost-run1 (f553a61c). RC-1/RC-2 history read; recheck fixes and test rendering, lifecycle, scale and remaining budget failures. Browser plugin unavailable; production Playwright uses unique port 4397. No implementation fixes, push, deployment or remote benchmarks.Independent step complete at
73f695a654. RC-1 (both appearance orders + touch pinch) and RC-2 pass; focused production Chromium suite 13/13 passed. RC-3 P2 records the acknowledged remaining hidden-memory gap as a new failing real-engine test: 200 states, 150x40→80x24→200x50→80x24, then render-buffer release, retain 1,131,282,432 WASM bytes = 5.394 MiB/session vs ≤2 MiB, before JS/native overhead. CPUWeight=10000, infraternal-dev load 28.58/22.90/18.63→29.92/23.87/19.12. Test: apps/tracer/test/renderer-retained-memory-review.spec.ts. Evidence: $HOME/.cache/codex-scratch/renderer-cost-review/run2/retained-memory.log. No implementation change; this is not claimed as a new regression versus dev.P1 RC-4 committed at
6278916232: appearance work suppresses output while paint callbacks advance. Production Chromium, 4x, CPUWeight=10000, RTT=0, port 4401; populated viewport → Paper selection → echoed home-position RGB background cell through normal mux Input/Output. outputSequence advances to 7771, but after two additional frames (115.6 ms) pixel remains old Ink [13,14,16,255], expected [18,52,86,255]; redrawPending=true. Empty-viewport control passes. Test: apps/tracer/test/renderer-output-paint-review.spec.ts. Cause: terminal.ts:1493 skips renderer.render during queued work, while terminal.ts:1212 still reports paint/advances sequence and prediction callbacks. This delays visible echo and makes paint latency evidence inaccurate during appearance work (D130). Log/screenshot: $HOME/.cache/codex-scratch/renderer-cost-review/run2/output-paint-echo.log and run2/output-artifacts/*/reported-output.png. No implementation fix.Independent full matrix finished on the reviewed implementation: Chromium 4x, 14 theme/warm/resize and 8 cold-face samples, default RTT=300 ms, CPUWeight=10000, port 4397, load 33.75/26.16/20.36→22.51/28.41/25.50. Result: 3 supporting tests passed; budget spec failed. Input p95 theme/cold/warm/resize ms: 1=87.9/240.6/139.3/100.5; 4=48.6/579.7/255.0/159.4; 8=93.6/178.0/95.9/128.3. All 12 input/range checks fail; at 8 terminals timeouts are 14/3/14/14. Source/runtime unchanged apart from About build metadata as evidence commits landed; concurrent host/build load means no normalized speedup claim. Log and production screenshot: $HOME/.cache/codex-scratch/renderer-cost-review/run2/matrix.log and matrix-artifacts/renderer-cost-renderer-the-26839--the-visible-terminal-scale/renderer-cost-product-canvas-8.png.
Three alternating-order native 200-state before/after pairs confirm initial 1003.75→203.3125 MiB and history 1023.375→222.9375 MiB; resize high-water ~1105 MiB in both. Median workload 7771.2→7858.7 ms and resize 5904.9→6151.1 ms under load 43.85–48.10 do not establish the author's precise +56% observation. Evidence: run2/engine-pairs.mjs and engine-pairs.jsonl. Fast and latency gates continue on exact
6b75ae8cin local review-renderer-cost-gate; evidence commits remain on review-renderer-cost.Independent review progress at job head
6b75ae8c: native latency retry runs after the fast gate staged the musl wrapper. Baseline echo p99=329.02 ms and separate-session flood echo p99=307.94 ms pass the 334 ms budget. Same-session flood echo p99=430.76 ms fails; flood growth=101.74 ms exceeds 16.67 ms. Rust crates and this native harness are unchanged against merge base; this is gate evidence, not a renderer regression finding. Evidence: run2/native-latency-retry.log.Browser oracle checks: merge-base wizard also fails expecting blur(16px) but receiving blur(8px). Merge-base canvas and two flow-card material tests pass; job head fails their root/body probes after theme scoping. The changed confirmation oracle scopes its probe correctly. Full suite and fast gate continue.
Review progress: fast gate on exact job head
6b75ae8cexits 0; all six Rust rows pass, seven protocol tests pass with 34,390 assertions. Static binaries 15,965,392 B x86_64 / 13,426,064 B aarch64. Review commits only add failing tests (no binary/dependency change). Full output preserved at run2/fast.log and will accompany the final verdict.The initial browser suite was interrupted because the concurrent fast bundle build overwrote its shared dist without the preview flag. Later cluster failures from that run are invalid evidence. Restarted all 358 browser tests in isolated detached
6b75ae8cscratch checkout, CPUWeight=10000, port 4405, RTT300. Native retry same-session flood metrics remain red; unchanged Rust/harness diff. RC-3 and RC-4 reproductions are separate completed runs and unaffected.Lower-load native repeat: three alternating before/after pairs, 200 retained states and the same history plus four-grid-change workload, CPUWeight=10000 on infraternal-dev. One-minute load 4.43–6.39. Median total 3240.63→3452.80 ms (+6.55%); resize 2531.09→2753.06 ms (+8.77%). Initial/history/resized committed memory remains identical to the earlier pair measurements. This corroborates a smaller cost for this workload, not the author’s precise +56% result. Evidence: run2/engine-pairs-lowload.jsonl. Isolated full browser suite continues.
Isolated browser suite is past the mesh reconnect/idempotency checks. Repeats: desktop split, toolbar drag, container shell, and all three font cell-metric DPR variants pass on reviewed implementation in standalone runs; camera flights fail at both head and merge base in current load window. Core-screen repeats fail on its obsolete documentElement material-token oracle after scoping. Ink level4/DPR3 and Paper level3+4/DPR3 ghosting fail at merge base too. No additional confirmed renderer defect from these gate failures. Logs: timing-repeat.log, core-repeat.log, shell-repeat.log, baseline-timing-repeat.log, baseline-ghost.log, baseline-paper-ghost.log. Full suite continues; RC-3 P2 / RC-4 P1 remain reproducible and committed.
RC-5 P2 — Mesh confirmation loses selected scoped material. Location packages/ui/src/tooltip.ts:250 mounts on document.body; packages/ui/src/themes.ts:160/166 now limits selected material to terminal-screen descendants. Clear/Ink production confirmation actual rgba(28,28,30,0.7), blur8; shared owning-screen material rgba(28,28,30,0.4), blur24. insideScreen=false. Existing Mesh material test passes at merge base, fails reviewed head. New focused normal test Mesh confirmation retains the selected screen material fails and is committed at
747bdfdb3b, apps/tracer/test/mesh.spec.ts. No implementation fix. Evidence run2/mesh-scoped-review.log and mesh-scoped-review-artifacts/*/mesh-confirmation.png; CPUWeight10000, unique4415, default300RTT. This is a real portal appearance gap, distinct from obsolete root-probe oracles. Current unresolved counts P0=0/P1=1/P2=2/P3=0.Independent verification verdict: merge after fixes.
Reviewed renderer-cost at
6b75ae8c43against merge base42e50d42c5. Evidence branch review-renderer-cost head747bdfdb3b. No implementation fixes, push, deployment or remote benchmark.Unresolved confirmed findings: P0=0, P1=1, P2=2, P3=0. Earlier RC-1/RC-2 are fixed and their production tests pass.
62789162): outputSequence and paint callbacks advance while appearance work suppresses normal rendering. Populated production canvas still shows old Ink [13,14,16,255] instead of echoed RGB [18,52,86,255] after two additional frames, with redrawPending=true. Reproduced at default 300 ms RTT. Test apps/tracer/test/renderer-output-paint-review.spec.ts.73f695a6): 200 retained, returned-to-80x24 VT states after ordinary grid changes and releaseRenderBuffers retain 1,131,282,432 WASM bytes (5.394 MiB/session), excluding JS/native memory, above the 2 MiB hidden budget. This records the known acceptance gap. Test apps/tracer/test/renderer-retained-memory-review.spec.ts.747bdfdb): Mesh grant confirmation mounted on document.body escapes the scoped appearance. Clear/Ink selected screen material is rgba(28,28,30,0.4), blur24; confirmation gets rgba(28,28,30,0.7), blur8. New focused test apps/tracer/test/mesh.spec.ts:614 fails; old Mesh material test passes at merge base and fails at reviewed head.Production screenshot evidence under $HOME/.cache/codex-scratch/renderer-cost-review/run2/: output-rtt-artifacts//reported-output.png; mesh-scoped-review-artifacts//mesh-confirmation.png; capture-clean-artifacts/*/settled-overview.png. Full suite artifacts preserved in full-browser-artifacts. Findings appended as they were confirmed to $HOME/.local/state/codex-jobs/infraternal/review-renderer-cost/findings.md.
Performance acceptance remains red. Default-300-RTT, 4x-CPU 14/8-sample real production matrix: all 12 input and range p95 limits fail; eight-terminal theme/warm-font/resize time out 14/14, cold-font 3/8. Actual 200-session projections at 1/4/8 visible: 2048.8/1577.0/1231.6 MiB. Native three-pair lower-load engine workload at 200 retained states confirms initial 1003.75→203.3125 MiB and after-history 1023.375→222.9375 MiB; after resize high-water ~1105 MiB both. Under one-minute load 4.43–6.39, median total 3240.63→3452.80 ms (+6.55%), resize 2531.09→2753.06 ms (+8.77%). This workload does not independently reproduce the author's exact +56% observation. Benchmarks ran locally on infraternal-dev under CPUWeight=10000; matrix loads 33.75/26.16/20.36→22.51/28.41/25.50. No load generators. Logs matrix.log, engine-pairs.jsonl, engine-pairs-lowload.jsonl.
Gates: scripts/verify fast on exact job head exits 0; complete output below verbatim. Fast gate also exits 0 on final review head with all three finding tests. Each architecture has the same binary size on job and review heads: x86_64 15,965,392 B / aarch64 13,426,064 B (review commit set delta 0 B; no new dependency or Rust implementation). All reviewer tests compile, and git diff --check passes.
Latency components are red. Initial native build attempted before compiler-wrapper staging; retried successfully after staging. Real infraternal agent PTY baseline p99 329.02 ms and other-session flood 307.94 ms pass 334 ms; same-session flood 430.76 ms and growth 101.74 ms fail. Rust/harness paths are unchanged in this diff. Auth-browser components passed. Full isolated production browser suite on exact
6b75ae8cfinishes 299 passed, 27 skipped, 32 failed (1.1h); no attempt to present this as a passing latency gate. The first browser run was interrupted because a concurrent fast build replaced its shared dist; later results from that interrupted run were discarded, and the entire browser suite reran in an isolated checkout, port 4405.Browser failure classification: obsolete root/body theme probes in flow cards, canvas, core-screen, contrast; wizard blur16 assertion fails at merge base too. Camera-flight ceiling, four DPR3 ghosting cases, motion audit, pending-glyph capture and four sign-in snapshot holds have baseline failures. Cell metrics, split focus, toolbar drag, container shell, predictive cursor gating/first-key cost, rename and empty/loading/error states pass in standalone reviewed-head repeats. First-run head fails returning-signin p99 5134.80 ms versus 5000; baseline run fails earlier at connection wait (different assertion). Setup-screen p99 2376.20 ms versus 1000; baseline also exceeds 1000 at 1819.70. Throughput head shows prediction penalty 5.26% versus 5% allowance; separate baseline shows+14.45%; not a controlled proof of a new regression. These failed gate rows stay recorded, not excused. Main failure log browser-isolated.log; baseline/repeat logs beside it. Shared-host load varied; no normalized browser speedup claim.
Reviewer checklist: contracts/wire/auth are unchanged; no new decoder requiring fuzz target, migration or foundational dependency. Verified real pinned WASM, production canvases, retained state, appearance ordering, native font setters, atlas lifetime, protocol differential tests and scale 200. Three logical test commits, module role comments, issue history and evidence retained. Actual iPhone/Safari/120 Hz owner validation remains outstanding.
scripts/verify fast — reviewed job head
6b75ae8c— exit 0, verbatim:Starting review-fix round on branch
renderer-cost, starting head6b75ae8c432004e77ee970ef674d1bbfe01192e5. I read all #97 comments, the related parent/target #121 comments, and the independent findings. I will mergedevate704e5b8first, then import the three review tests and fix each against real production output.Merge integration finding:
devate704e5b8conflicted inapps/tracer/src/canvas/mesh/index.tsandapps/tracer/src/canvas/sessions/live.ts; both were resolved to thedevimplementations, preserving D194 Mesh-only UI and the connection pool.The merge-result fast gate passed RTT self-test, fmt, VT native fmt, clippy, and cargo-deny. The full server test run had 138 pass / 1 fail / 12 ignored;
expired_handshake_releases_user_permitsmissed its expected HTTP 503 assertion. Focused runs passed on detacheddev(0.56 s) and the merged tree (0.67 s), so the full parallel-suite failure did not reproduce in isolation. Logs:/home/kayg/.cache/codex-scratch/renderer-cost-fix/fast-merge.log,baseline-auth-retry.log.The x86_64 static binary is 16,435,312 B against 16,404,816 B maximum (+30,496 B); the prior renderer head measured 15,965,392 B (+469,920 B across the merge). The merged Rust tree matches
dev, which brings the Mesh and host-facts plugin features. Per D205 I am retaining the requireddevbehavior and reporting the justified feature-size overage; this run stopped before the aarch64 build and TypeScript section.cargo tree -dshows transitive version splits (including base64 0.21/0.22 and getrandom 0.2/0.3/0.4); no dependency was added by this renderer-fix round.Merge step complete at
719475a9a4878ed7a48e3d8d87f939d4ab721bb3(deve704e5b8integrated; current D194 Mesh and pooled sessions retained). Merge fast gate evidence is in the prior comment: x86_64 size 16,435,312 B (+30,496 B over the configured maximum); the one full-suite auth assertion did not reproduce in focused runs on dev or this tree.RC-3 red reproduced after dev merge; test commit
aa687e272f90e1e182e9c64073dd5492ab6d31f8preserves the reviewer author. Pinned Ghostty WASM, 200 terminals, 80x24 → 150x40 → 80x24 → 200x50 → 80x24, thenreleaseRenderBuffers(): 1,131,282,432 retained WASM bytes, 5,656,412.16 B/session (5.394 MiB) against 2,097,152 B. No session was freed and no output history was discarded. Production Playwright port 4597,infraternal-dev(8 cores), load 5.04/9.68/13.99. Full red output:/home/kayg/.cache/codex-scratch/renderer-cost-fix/red-memory.log.RC-4 red reproduced after the dev merge; test commit
4efdf26672fd118280d59c8b6dfd3bfb743b42dcpreserves the reviewer author. During a Paper redraw, mux output sequence7771was reported painted; after two more frames the literal RGB cell still read Ink[13,14,16,255]instead of[18,52,86,255], withredrawPending=true(48.3 ms after acknowledgement). Production Chromium at 4x on infraternal-dev, port 4598, load 5.61/8.92/13.45. Output:/home/kayg/.cache/codex-scratch/renderer-cost-fix/red-paint.log.RC-5 red reproduced after dev merge; test commit
60da85f101e3aa421d1cf523f6401854c14c3598preserves the reviewer author. Clear/Ink screen material is rgba(28,28,30,0.4) with blur 24 px; the body-mounted Mesh confirmation is rgba(28,28,30,0.7) with blur 8 px (insideScreen=false). Production Chromium, port 4600, infraternal-dev (8 cores), load 7.28/9.06/13.31. Full output:/home/kayg/.cache/codex-scratch/renderer-cost-fix/red-mesh.log.P1 fix committed as
a06eb21e. The failing review spec now passes: during the 4x-throttled Paper redraw, literal RGB output is[18,52,86,255]whenoutputSequenceadvances; the post-render frame wait was 34.3 ms. Host load sampled immediately after the run: 17.57/15.91/14.51 (8 cores). Appearance callbacks retain queued bytes and credit until an unsuppressed render frame.Memory finding: the review spec's resize path grows WASM memory from 211,943,424 B after creating 200 80x24 terminals (1.06 MiB/session) to 1,050,869,760 B after resizing to 150x40 (5.25 MiB/session). Resizing smaller does not reduce the high-water. The pinned VT PageList uses per-screen page pools that retain resized pages; investigating compaction that copies live pages and releases spare pool pages while preserving scrollback.
P2 memory fix committed as
0c6cd426. The 200-terminal review spec passes with 239,468,544 B retained total = 1,197,342.72 B/session (1.142 MiB), below 2,097,152 B; the oldest scrollback line and row count survive compaction. Load sampled after the run: 6.95/6.32/8.95 (8 cores). Rebuilt pinned WASM: 431,002 B, +7,253 B vs 423,749 B.RC-5 fixed in
606f4598. Mesh’s three portal confirmation paths now pass their owning terminal screen into the shared confirmation material copier (D160). The review spec passes with ink/clear selected material blur 24px and actual blur 24px; no design tokens changed.Renderer harness integration finding: after merging dev,
TRACER_TEST_PORT=4610 RENDERER_COST_BENCH=1 ... bun x playwright test test/renderer-cost.spec.ts --grep 'renderer theme, font, and resize cost' --workers=1failed before sampling withTypeError: ke?.sessions.rendererMetrics is not a functionat generated main.js:2137, source apps/tracer/src/main.ts:410. The new pooled LiveSessions API omitted the preview metrics hook. I’m adding it as an aggregation over its live terminal bindings so the scale harness can measure the merged behavior.Post-fix renderer harness finding: at 8 live product terminals, after pagehide releases canvases and shared glyph atlases, WASM remains 5.477 MiB/terminal (budget 2 MiB); the 1/4/8 projections are 9.063/6.703/5.477 MiB. Evidence: renderer-cost-after.log, CPUWeight=10000 on infraternal-dev, 8 cores, 4x Chromium; load 10.27/7.50/8.76 -> 12.75/10.56/9.79. The dedicated 200-state compacted test is 1.142 MiB/session, so I’m checking the requested 54-session workload and the harness’s 40,000,000-row mock scrollback limit before deciding whether the compaction path needs more work.
54-session real-engine result: with the same 80x24 → 150x40 → 80x24 → 200x50 → 80x24 sweep, each terminal was compacted as it became hidden. At both 10,000-row and 40,000,000-row limits, 54 states retain 1.230 MiB/session after compaction (1.014 MiB/session at creation; 1.228 MiB/session resize high-water); oldest scrollback row and row count remain intact. CPUWeight=10000, infraternal-dev, load 21.59/15.81/11.94 throughout. A batch that resizes all 54 before hiding reports 5.554 MiB/session from the shared WASM linear-memory high-water; the product harness similarly reports 5.477 MiB at eight terminals. Those are conservative shared-memory high-water projections, not per-terminal live pages after each compaction.
Renderer harness hook fixed in
f446fd17: LiveSessions now reports metrics from every live binding, including pooled connections. The 14/8-sample 1/4/8 production matrix now completes and reports metrics for 1, 4 and 8 terminals; detailed p95, timeout and memory output is in the review follow-up below.Canvas suite finding:
apps/tracer/test/canvas.spec.ts:172compares a scoped popover (rgba(249,249,251,0.78),blur(8px) saturate(1.6)) with an unscopeddocument.bodyprobe (transparent, no filter). The screen carries the selected material; body has none. I updated the test probe to live inside.terminal-screen, preserving the selected material and design; I’ll rerun this assertion after the current suite finishes.Canvas retry finding resolved: the preview-only frame HUD's 44 px
.perf-hud-rowintercepted the touch resize grip (diagnostic elementFromPoint hit.perf-hud-rowat the grip center). Its observers also added work to the renderer benchmark. Canvas, Mesh, session-canvas and renderer-cost fixtures now usefps=0; the HUD has separate specs. The five previously failing canvas/Mesh cases now pass on port 4889. Resize-frame cost: p95 7.00 ms, max 10.70 ms. The scoped-material oracle also passes with its probe inside.terminal-screen.Clean renderer matrix completed after the review fixes on port 4903, production Chromium at 4x, 14/8 samples,
fps=0, CPUWeight=10000. Host load 4.99/11.21/14.76 -> 16.35/12.73/14.03 (8 CPUs). Compared with the6b75ae8no-HUD baseline (load 33.75/26.16/20.36 -> 22.51/28.41/25.50), input p95 / renderer range p95 / timeouts:1 terminal — theme 87.9/122.8/10 -> 26.2/31.4/0; cold font 240.6/23.0/2 -> 140.5/31.7/3; warm font 139.3/50.3/6 -> 19.6/11.7/0; resize 100.5/46.4/4 -> 28.2/5.1/0.
4 terminals — theme 48.6/83.9/13 -> 34.4/16.2/5; cold font 579.7/24.9/7 -> 125.2/8.7/2; warm font 255.0/183.0/14 -> 39.6/47.4/1; resize 159.4/94.9/14 -> 27.7/16.4/1.
8 terminals — theme 93.6/113.8/14 -> 33.9/36.7/14; cold font 178.0/9.6/3 -> 113.2/17.9/6; warm font 95.9/42.9/14 -> 72.4/42.3/14; resize 128.3/65.7/14 -> 43.1/34.5/14.
The strict renderer-cost test remains red: at 8 sessions theme, warm font, and resize still timed out 14/14; p95 budgets remain unmet. Hidden shared-WASM high-water MiB/session before -> after: 1 terminal 9.063 -> 9.063; 4 terminals 6.703 -> 6.703; 8 terminals 4.977 -> 5.477. This is allocator high-water divided by count, not live per-state pages. The direct pinned-engine test at 54 sessions is 1.230 MiB/session hidden after sequential compaction (1.228 MiB/session resize high-water); oldest scrollback row and row count are preserved at both scrollback caps. Full follow-up is in docs/perf/renderer-cost.md.
The complete canvas browser set passed after the HUD fixture adjustment:
canvas.spec.ts,sessions-canvas.spec.ts, andmesh.spec.ts, 90/90 passed in 15.9 minutes on unique port 4921 (production build, workers=1, CPUWeight=10000). The full run includes the touch resize case, screen-scoped material oracle, selected Mesh material assertion (actual and selected blur 24px), and all screenshot cases. The canvas resize frame sample was median 0.90 ms, p95 1.80 ms, max 2.30 ms. Current head before the final gate is72edf0a1.The three reviewer regressions pass together on production Playwright port 4933: 3/3 in 34.9 s. P1 output sequence 7771 reads
[18,52,86,255]withpending=falseafter a 50.5 ms frame wait. P2 retains 239,468,544 B / 200 = 1,197,342.72 B (1.142 MiB) per hidden state against 2 MiB. P3 selected and actual Mesh confirmation surfaces both compute to blur(24px) saturate(1.6). Head:5b2220ba.Finished at head
0ff7f80c(the gate ran at code head5b2220ba; subsequent commits only record measurements and verification in docs/perf/renderer-cost.md).[18,52,86,255]after 50.5 ms; 200 hidden VT states retained 1.142 MiB/session (≤2 MiB) with scrollback preserved; Mesh confirmation kept the selected 24 px blur.CPUWeight=10000, 14/8 samples; load 4.99/11.21/14.76 → 16.35/12.73/14.03. Before/after input p95 / renderer-range p95 / timeouts are recorded in docs/perf/renderer-cost.md. At eight sessions, theme/warm-font/resize still timed out 14/14 and strict renderer budgets remain unmet. The 54-session real pinned-engine sequential-hide workload retained 1.230 MiB/session after compaction, from 1.228 MiB/session resize high-water, preserving the oldest row and row count at both scrollback caps.scripts/verify fast: fmt, VT native fmt, clippy, Rust tests and cargo-deny passed; static builds failed only the D205 size ceiling. The merged x86_64 static binary is 16,435,312 B against 16,404,816 B (+30,496 B), attributable to the required dev Mesh and host-facts plugins (D198/D205). No limit or feature was changed. The wrapper stops before TypeScript after that failure;ts_verify_fastwas run separately and passed, including vendored checksums, production build/transfer check and 36 TypeScript protocol tests.scripts/verify fastoutput, verbatim:METRIC name=network_rtt_selftest configured_rtt_ms=300 jitter_ms=30 loss=unsupported transport=tcp-stream n=3 p50_ms=295.97 p99_ms=304.92 result=PASS
==> fmt
==> VT native fmt
==> clippy
Finished
devprofile [unoptimized + debuginfo] target(s) in 0.90s==> test
Compiling infraternal-plugin-mesh v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/renderer-cost/crates/plugins/mesh)
Compiling infraternal-agent v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/renderer-cost/crates/infraternal-agent)
Compiling infraternal-plugin-host-facts v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/renderer-cost/crates/plugins/host-facts)
Compiling infraternal-protocol v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/renderer-cost/crates/infraternal-protocol)
Compiling infraternal-mesh v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/renderer-cost/crates/infraternal-mesh)
Compiling infraternal-server v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/renderer-cost/crates/infraternal-server)
Compiling infraternal v0.1.0 (/home/kayg/Developer/infraternal/.worktrees/renderer-cost/crates/infraternal)
Finished
testprofile [unoptimized + debuginfo] target(s) in 46.93sRunning unittests src/main.rs (target/debug/deps/infraternal-e2d3b344194432e6)
running 2 tests
test install::tests::dry_run_prints_a_process_surviving_user_unit ... ok
test setup_token_tests::setup_token_command_reads_only_the_expected_socket_response ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 1 test
test real_binary_preserves_input_and_output_across_24_abrupt_stops ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 41.20s
running 1 test
test saturated_terminal_queues_preserve_every_byte_and_daemon_liveness ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 47.15s
running 6 tests
test stalled_terminal_never_delays_control_or_sibling_dispatch ... ok
test last_typist_selects_its_own_real_pty_dimensions ... ok
test initial_attach_requires_explicit_credit_before_replay ... ok
test retained_unwritten_input_survives_interleaved_ack_restart ... ok
test two_writers_keep_independent_ack_and_exact_input_after_restart ... ok
test repeated_tiny_credit_pauses_preserve_shell_progress ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 18.13s
running 1 test
test detached_shim_is_discovered_and_replays_from_the_last_observed_offset ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
running 1 test
test one_hertz_wakeup_is_detected_past_the_legacy_half_second_window ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s
running 7 tests
test double_fork_survives_parent_death ... ok
test disallowed_signal_only_disconnects_peer ... ok
test replacement_connection_and_malformed_limit ... ok
active
test user_scope_survives_parent_unit_stop ... ok
test real_shell_reconnect_resize_and_retained_exit ... ok
test attached_backpressure_and_detached_progress ... ok
test ring_wrap_snapshot_repaints_real_vim ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.23s
running 1 test
test unaffordable_repaints_park_until_sufficient_credit ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 19.84s
running 1 test
test snapshot_limits_never_close_live_reconnect ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 17.26s
running 16 tests
test relay::tests::output_payload_move_measurement ... ignored, release ownership versus payload-copy measurement
test relay::tests::attachment_has_no_implicit_output_or_snapshot_credit ... ok
test relay::tests::overflowing_ranges_never_mutate_cursors ... ok
test relay::tests::output_partial_credit_and_dedup ... ok
test relay::tests::expired_credit_resumes_retained_bytes_at_the_same_cursor ... ok
test relay::tests::input_overlap_gap_and_restart_from_confirmed_offset ... ok
test relay::tests::returned_credit_cancels_starvation_and_state_has_no_payload_buffer ... ok
test relay::tests::starvation_is_one_shot_and_snapshot_length_does_not_advance_sequence ... ok
test relay::tests::positive_insufficient_credit_arms_a_one_shot_deadline ... ok
test sessions::tests::reader_borrow_measurement ... ignored, release borrowed versus owned asynchronous receive measurement
test sessions::tests::symlink_state_cannot_redirect_private_runtime_storage ... ok
test sessions::tests::sequenced_attach_intersects_caps_and_legacy_attach_stays_zero ... ok
test sessions::tests::refused_socket_is_removed_but_insecure_directory_is_rejected ... ok
test sessions::tests::post_listen_chmod_wakes_a_connection_refused_at_bind ... ok
test sessions::tests::borrowed_reader_payload_uses_reusable_cancel_safe_storage ... ok
test sessions::tests::cancelled_fragmented_shim_read_retains_header_and_body_progress ... ok
test result: ok. 14 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.03s
running 2 tests
test oversized_header_and_truncated_frame_are_rejected ... ok
test fragmented_headers_coalesced_frames_and_reusable_transmit ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 1 test
test omitted_arrow_ports_default_to_all_services ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
running 14 tests
test overlaps_are_reported_without_silent_range_changes ... ok
test join_to_same_tag_grants_both_initiation_directions ... ok
test exhausted_versions_reject_mutations_without_changing_state ... ok
test directional_grants_union_and_minimal_updates ... ok
test names_versions_and_backend_status ... ok
test checkpoint_after_suffix_change_restores_without_reallocating_addresses ... ok
test rotation_waits_for_overlap_and_delivery_and_removal_drops_every_key ... ok
test private_material_never_enters_debug_or_coordination_serialization ... ok
test arrow_replacement_is_atomic_and_unrelated_nodes_keep_their_versions ... ok
test public_checkpoint_preserves_addresses_rules_versions_and_overlap ... ok
test server_rotation_has_continuous_keys_for_every_node_during_delivery ... ok
test protocol_port_unions_never_grant_an_unlisted_service ... ok
test addresses_are_unique_stable_and_not_recycled ... ok
test seeded_random_sequences_equal_full_compile_and_deny_without_grants ... ok
test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.00s
running 1 test
test unrepresentable_rotation_overlap_rejects_before_mutation ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
running 4 tests
test tests::registry_rejects_oversized_json_before_plugin_dispatch ... ok
test tests::registry_routes_only_declared_actions ... ok
test routing::tests::invalid_or_oversized_topics_are_refused ... ok
test routing::tests::topic_is_borrowed_and_other_filter_fields_are_left_to_the_plugin ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 2 tests
test review_topic_borrows_plain_and_owns_escaped ... ok
test review_topic_refuses_oversize_duplicate_and_deep_input ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 9 tests
test tests::macos_load_average_decodes_the_bounded_64_bit_sysctl_shape ... ok
test tests::linux_load_average_text_ignores_proc_metadata_and_rejects_invalid_values ... ok
test tests::descriptor_declares_default_settings_actions_and_no_hidden_role_dependency ... ok
test tests::os_release_uses_distribution_name_and_version_without_shell_evaluation ... ok
test tests::action_decoders_reject_unknown_and_oversized_fields ... ok
test tests::os_release_parser_rejects_unbounded_input_and_ignores_untrusted_lines ... ok
test tests::static_facts_are_cached_and_live_counters_are_collected_only_when_requested ... ok
test tests::runtime_disable_drops_cached_facts_and_reenable_collects_them_again ... ok
test tests::compatibility_fields_are_kept_in_the_rust_shape_and_architecture_on_wire ... ok
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 7 tests
test stream_tests::all_short_frame_splits_match_direct_decoding ... ok
test stream_tests::split_mux_header_preserves_trailing_close ... ok
test tests::oversized_encode_keeps_the_reusable_output_unchanged ... ok
test tests::mux_round_trip_and_incremental_decoders_preserve_frame_order ... ok
test tests::rejects_oversized_noncanonical_and_malformed_frames_before_buffering_body ... ok
test tests::golden_vectors_encode_and_decode_every_contract_frame ... ok
test stream_tests::maximum_sized_fragmented_frame_is_not_rejected ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
running 151 tests
test auth::tests::account_identity_migration_backfills_legacy_users ... ok
test auth::http::tests::admission_partitions_reset_without_trusting_forwarded_headers ... ok
test auth::tests::account_identity_schema_has_unique_usernames_and_display_names ... ok
test auth::tests::aaguid_migration_preserves_legacy_credentials_and_sessions ... ok
test auth::http::hostname_tests::authenticated_session_response_includes_system_hostname ... ok
test auth::tests::aaguid_projection_rejects_malformed_cbor_corpus ... ok
test auth::crypto::verifier_tests::browser_secret_hashing_is_canonical_and_bounded ... ok
test auth::crypto::verifier_tests::recovery_capacity_denial_is_not_a_legacy_credential_signal ... ok
test auth::tests::audit_ceremony_browser_binding ... ok
test auth::tests::audit_logout_survives_admission_exhaustion ... ok
test auth::tests::discoverable_latency_at_pending_capacity ... ignored, run --release --ignored --nocapture without concurrent builds
test auth::tests::audit_no_public_credential_listing ... ok
test auth::tests::audit_recovery_after_page_discard_can_resume_at_original_deadline ... ok
test auth::tests::audit_recovery_pending_is_visible_to_signed_in_device ... ok
test auth::tests::audit_recovery_session_expiring_during_verification_keeps_delay ... ok
test auth::tests::authenticated_prf_metadata_preserves_legacy_envelopes ... ok
test auth::tests::provider_labels_cover_the_cited_registry_without_guessing ... ok
test auth::tests::provider_session_latency_at_50_devices ... ignored, local auth session scale measurement; run without concurrent builds
test auth::tests::ceremony_prf_wraps_and_optional_second_passkey ... ok
test auth::tests::concurrent_owner_and_optional_passkey_enrollment_fail_closed ... ok
test auth::tests::discoverable_login_handle_credential_counter_and_replay ... ok
test auth::tests::enrollment_prf_input_matches_discoverable_login ... ok
test auth::tests::host_facts_review_tests::pending_host_facts_read_keeps_control_ping_responsive ... ok
test auth::tests::http_csrf_cookie_flags_body_limit_and_latency_evidence ... ok
test auth::tests::pending_unlock_expires_without_terminal_authority ... ok
test auth::tests::public_status_and_discoverable_http_login ... ok
test auth::tests::recovery_session_delay_latency_at_capacity ... ignored, release-only recovery measurement at 50 live sessions; run without concurrent compilation
test auth::tests::recovery_audit_commits_once_with_start_cancel_and_complete ... ok
test auth::tests::recovery_delay_cancel_and_replacement_revokes_every_capability ... ok
test auth::tests::recovery_verifier_latency_at_capacity ... ignored, release-only v2 diagnostic at 50 live session rows; record host load separately
test auth::tests::recovery_expiry_revocation_and_cross_user_isolation ... ok
test auth::tests::recovery_http_live_same_account_is_immediate ... ok
test auth::tests::recovery_http_other_expired_pending_and_missing_sessions_wait ... ok
test auth::tests::recovery_live_session_cannot_accelerate_an_active_delayed_request ... ok
test auth::tests::recovery_live_session_revoked_during_verification_cannot_waive_delay ... ok
test auth::tests::recovery_unknown_identity_pays_the_same_database_and_verifier_work ... ok
test auth::tests::recovery_username_identity_is_additive_and_ambiguous_forms_fail ... ok
test auth::tests::redacted_unknown_and_failed_registrations_do_not_claim_a_provider ... ok
test auth::tests::registration_aaguid_survives_none_attestation_and_binds_session_provider ... ok
test auth::tests::rejected_origin_uv_challenge_signature_prf_and_expired_ceremonies ... ok
test auth::tests::review3_tests::review3_backend_reply_has_a_deadline ... ok
test auth::tests::review3_tests::review3_busy_expiry ... ok
test auth::tests::review3_tests::review3_busy_logout ... ok
test auth::tests::review3_tests::review3_busy_recovery ... ok
test auth::tests::review3_tests::review3_completion_and_cleanup_are_transaction_bound ... ok
test auth::tests::review3_tests::review3_expired_handshake_must_not_welcome ... ok
test auth::tests::review3_tests::review4_slow_open_at_user_capacity ... ignored, release-only connect scale measurement; run without concurrent builds
test auth::tests::review3_tests::review3_identified_privacy_timing_and_binding_replays ... ok
test auth::tests::review3_tests::review3_pending_routes_and_idle_expiry_recovery ... ok
test auth::tests::review3_tests::review3_revoked_handshake_must_not_welcome ... ok
test auth::tests::review3_tests::review3_revoked_resume_must_not_welcome ... ok
test auth::tests::review3_tests::review3_unwrap_cannot_be_skipped ... ok
test auth::tests::review3_tests::review3_waiting_handshake_loses_authority ... ok
test auth::tests::review3_tests::review4_open_reply_and_revocation_preserve_authority ... ok
test auth::tests::review_invalid_device_polling_exhausts_browser_budget ... ok
test auth::tests::review_old_words_race_rotation ... ok
test auth::tests::reviewer_tests::reviewer_disk_cancel_complete_races ... ok
test auth::tests::reviewer_tests::reviewer_disk_restart_and_concurrent_resume ... ok
test auth::tests::reviewer_tests::reviewer_http_denials_and_recovery_admission ... ok
test auth::tests::reviewer_tests::reviewer_http_expired_capability_cannot_complete_after_writer_wait ... ok
test auth::tests::reviewer_tests::reviewer_http_expired_ceremony_cannot_complete_after_writer_wait ... ok
test auth::tests::reviewer_tests::reviewer_server_clock_rollback_retains_deadline_and_reports_more_than_day ... ok
test auth::tests::rotation_tests::recovery_phrase_routes_are_removed_and_words_fail_closed ... ok
test auth::tests::setup_check_is_non_consuming_and_closes_after_owner_creation ... ok
test auth::tests::setup_identity_validation_and_uniqueness ... ok
test auth::tests::rotation_tests::recovery_rotation_cannot_follow_a_cookie_account_switch ... ok
test auth::tests::setup_start_accepts_username_and_display_name ... ok
test auth::tests::rotation_tests::recovery_rotation_denies_pending_expired_and_stale_sessions ... ok
test auth::tests::rotation_tests::recovery_rotation_requires_session_and_replaces_legacy_envelope ... ok
test auth::tests::rotation_tests::reviewer_concurrent_signed_in_rotations_commit_once ... ok
test auth::tests::server_setup_terminal_echo_and_resume_preserve_offsets_once ... ok
test auth::tests::sessions_slide_but_fresh_tap_does_not_and_device_keys_are_scoped ... ok
test auth::tests::setup_restart_rotation_expiry_and_parallel_redemption ... ok
test auth::tests::socket_tests::authenticated_idle_socket_survives_the_former_read_timeout ... ok
test auth::tests::socket_tests::claude_review_visible_liveness::claude_review_watch_expires_host_made_visible_by_membership_edit ... ok
test auth::tests::socket_tests::mesh_latency::mesh_snapshot_keystroke_latency_at_10000_nodes ... ignored, weighted real-binary 300 ms Mesh/PTY measurement
test auth::tests::socket_tests::clean_control_close_is_not_an_internal_error ... ok
test auth::tests::socket_tests::expired_handshake_releases_user_permits ... ok
test auth::tests::socket_tests::fragmented_wire_frame_has_a_completion_deadline ... ok
test auth::tests::socket_tests::plugin_lifecycle::mesh_destructive_metadata_matches_frozen_confirmation_requirements ... ok
test auth::tests::socket_tests::fresh_delete::review_mesh_delete_requires_fresh_passkey_tap ... ok
test auth::tests::socket_tests::half_open_sockets_obey_user_limit ... ok
test auth::tests::socket_tests::incomplete_rfc_message_still_loses_authority_on_revocation ... ok
test auth::tests::socket_tests::mesh_calls_and_subscriptions_deliver_scoped_live_inventory ... ok
test auth::tests::socket_tests::non_owner_without_host_configure_permission_is_refused_before_leg_b ... ok
test auth::tests::socket_tests::plugin_lifecycle::disabling_mesh_joins_pending_writer_and_refuses_nonowner_switches ... ok
test auth::tests::socket_tests::plugin_lifecycle::mesh_coordinator_requires_an_existing_server_role ... ok
test auth::tests::socket_tests::plugin_lifecycle::mesh_lifecycle_withdrawals_survive_calls_but_never_end_a_replacement ... ok
test auth::tests::socket_tests::plugin_lifecycle::mesh_plugin_discovery_disable_and_restart_preserve_control_socket ... ok
test auth::tests::socket_tests::recovery_subscription_updates_every_signed_in_socket ... ok
test auth::tests::socket_tests::review_control::pending_mesh_writers_preserve_authority_pool_capacity ... ok
test auth::tests::socket_tests::review_control::review_pending_mesh_write_keeps_control_dispatch_available ... ok
test auth::tests::socket_tests::socket_authority_latency_at_user_capacity ... ignored, release-only measurement without concurrent compilation
test auth::tests::socket_tests::review_fresh_wait::review_mesh_delete_refused_when_freshness_expires_during_writer_wait ... ok
test embedded::regressions::credited_bulk_output_survives_forwarder_io_pause ... ok
test embedded::regressions::credited_output_queue_at_stream_capacity ... ignored, debug actor memory/scheduling measurement; run without concurrent builds
test embedded::regressions::full_output_queue_must_not_block_shared_actor ... ok
test embedded::regressions::healthy_receiver_survives_ready_native_output_burst ... ok
test embedded::regressions::healthy_streams_progress_at_user_attachment_capacity ... ok
test embedded::regressions::output_and_snapshot_spend_remaining_restart_credit ... ok
test embedded::regressions::real_agent_canonical_uuid_result_is_accepted ... ok
test embedded::regressions::real_agent_open_uses_uid_and_character_dimensions ... ok
test embedded::regressions::reattach_must_restore_output_credit ... ok
test embedded::regressions::recovery_event_then_snapshot_keeps_embedded_connection_live ... ok
test embedded::regressions::recovery_notices_preserve_order_credit_and_session_isolation ... ok
test embedded::regressions::stream_close_must_not_restart_all_sessions ... ok
test embedded::regressions::uncredited_output_or_repaint_is_rejected_before_queueing ... ok
test mesh_api_tests::claude_review::claude_review_late_committing_observation_does_not_rewind_last_seen ... ok
test mesh_api_tests::claude_review::claude_review_scoped_grant_cannot_target_node_in_unscoped_tag ... ok
test mesh_api_tests::concurrent_tag_edits_serialize_revisions_and_unique_names ... ok
test mesh_api_tests::identity::identity_migration_preserves_inventory_and_retired_audit_ids ... ok
test mesh_api_tests::identity::retired_identity_survives_database_reopen_and_exhaustion_is_atomic ... ok
test mesh_api_tests::identity::review_deleted_node_identity_is_not_reused ... ok
test mesh_api_tests::invalidation::filtered_view_invalidations_follow_every_affected_host_tag ... ok
test mesh_api_tests::invalidation::review_membership_change_notifies_other_visible_tag ... ok
test mesh_api_tests::inventory_lifecycle_preserves_policy_identity_and_audits_every_edit ... ok
test mesh_api_tests::membership::review_scoped_membership_cannot_claim_hidden_node ... ok
test mesh_api_tests::membership::scoped_membership_checks_pre_edit_host_scope ... ok
test mesh_api_tests::mesh_api_scale_benchmark ... ignored, scale measurement; run on infraternal-dev under the weighted user scope
test mesh_api_tests::pagination::an_unsendable_object_returns_a_sanitized_service_error ... ok
test mesh_api_tests::pagination::continuation_restarts_on_change_and_rechecks_permissions ... ok
test mesh_api_tests::parser_rejects_unknown_fields_user_endpoints_and_invalid_bounds ... ok
test mesh_api_tests::review_filtered::review_global_viewers_do_not_refresh_unrelated_filtered_inventory ... ok
test mesh_api_tests::review_frame_budget::review_mesh_design_point_frames_fit_shared_socket_budget ... ok
test mesh_api_tests::review_null_policy::review_null_port_policy_does_not_create_unrestricted_grant ... ok
test mesh_api_tests::review_null_scope::review_null_role_scopes_preserve_denied_inventory_access ... ok
test mesh_api_tests::scoped_grant_role_filters_inventory_and_cannot_cross_tags ... ok
test mesh_api_tests::shared_mesh_vectors_cover_each_production_action_and_wire_shape ... ok
test mesh_api_tests::watch_deadline::watch_deadline_matches_complete_filtered_snapshots ... ok
test mesh_api_tests::watch_deadline::watch_deadline_scale_benchmark ... ignored, weighted local scale measurement; run optimized without concurrent compilation
test runtime::reviewer_admission::reviewer_recovery_source_limit_covers_all_routes_without_forwarding_bypass ... ok
test runtime::tests::proxy_mode_requires_an_explicit_peer_allowlist ... ok
test runtime::tests::proxy_networks_match_only_their_address_family_and_prefix ... ok
test auth::tests::socket_tests::review_liveness::review_mesh_watch_reports_liveness_expiry_without_another_edit ... ok
test runtime::tests::router_migrates_private_storage_and_serves_health ... ok
test runtime::tests::setup_socket_cleanup_preserves_symlinks_and_regular_files ... ok
test runtime::tests::setup_token_socket_is_private_and_requires_explicit_request ... ok
test runtime::tests::startup_with_owner_unlinks_stale_setup_token_socket ... ok
test web_assets::tests::encodings_and_identity_have_correct_headers_and_sizes ... ok
test web_assets::tests::spa_and_mutable_assets_revalidate_and_missing_brotli_uses_gzip ... ok
test websocket::recovery_notification_bench::recovery_notification_state_at_socket_capacity ... ignored, notification state sizing diagnostic, not allocator-inclusive RSS certification
test websocket::writer_tests::second_device_does_not_inherit_first_device_input_ack ... ok
test websocket::writer_tests::writer_admission_at_user_capacity ... ignored, release-only scale measurement; run without concurrent builds
test websocket::writer_tests::writer_ownership_capacity_unsigned_offsets_and_identity_reuse ... ok
test runtime::tests::restart_serves_fresh_setup_token_and_completes_owner_enrollment ... ok
test auth::tests::socket_tests::review_subscription_refusal::oversized_refusal_cannot_reinstall_a_queued_mesh_subscription ... ok
test auth::tests::socket_tests::review_subscription_refusal::review_oversized_replacement_ends_the_previous_mesh_subscription ... ok
test auth::tests::socket_tests::review_subscription_refusal::saturated_refusal_cannot_reinstall_a_queued_mesh_subscription ... ok
test auth::tests::socket_tests::revoked_idle_socket_loses_all_authority ... ok
test auth::tests::socket_tests::scale::review_mesh_headroom_snapshot_does_not_close_shared_socket has been running for over 60 seconds
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering has been running for over 60 seconds
test auth::tests::socket_tests::scale::review_mesh_headroom_snapshot_does_not_close_shared_socket ... ok
test auth::tests::stale_counters_recovery_cancellation_and_wrap_tampering ... ok
test result: ok. 139 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 226.96s
running 2 tests
test review_grant_parser_rejects_unknown_nested_port_fields ... ok
test nested_endpoint_and_policy_fields_are_strict_without_rejecting_valid_ports ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 1 test
test review_mesh_dependency_is_removable_at_build_time ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
running 1 test
test review_null_port_policy_is_refused ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 2 tests
test role_scopes_require_an_array_when_provided ... ok
test review_explicit_null_role_scopes_do_not_become_global_authority ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
running 7 tests
test review_undeclared_topic_is_left_to_the_core ... ok
test review_core_topic_remains_core_owned_even_when_declared ... ok
test review_completed_call_survives_normal_worker_exit ... ok
test review_disable_withdraws_view_and_keeps_socket ... ok
test review_reenable_preserves_cancelled_calls_until_delivery ... ok
test review_exited_worker_ends_its_subscriptions ... ok
test review_disable_answers_inflight_call ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
running 3 tests
test plugin_settings_enforce_boolean_and_role_plugin_identity ... ok
test failed_plugin_save_restores_previous_state_without_workers ... ok
test plugin_switches_survive_database_reopen ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.56s
running 73 tests
test frame::checks::codec_reuse_measurement ... ignored, release codec and allocation-path measurement
test ring::checks::tests::wrap_and_exact_offsets ... ok
test frame::checks::golden::every_frozen_message ... ok
test frame::checks::golden::exact_maximum_and_coalesced_frames ... ok
test frame::checks::tests::invalid_lengths_types_and_utf8 ... ok
test session::measurements::budgets::input_to_pty_write ... ignored, real-PTY performance measurement; set ZDOTDIR to tests/profile
test session::measurements::poll_storage_measurement ... ignored, release poll-storage allocation measurement
test session::resize_checks::resize_refusal_session_probe ... ignored, isolated session probe invoked by its parent with a controlled shell profile
test session::sequenced_checks::coalesced_ack_never_overwrites_a_partial_output_and_cursors_survive_peer_loss ... ok
test session::inputs::tests::identity_cap_preserves_all_existing_cursors ... ok
test frame::checks::borrowed_and_owned_decoders_agree_at_every_fragment_boundary ... ok
test session::sequenced_checks::reusable_encoder_retains_capacity_and_refuses_growth_before_mutation ... ok
test session::sequenced_checks::new_frames_roundtrip_and_refuse_noncanonical_payloads ... ok
test session::sequenced_checks::trim_duplicates_gaps_overflow_and_capacity_are_transactional ... ok
test session::sequenced_checks::writer_selection_has_a_frozen_little_endian_layout ... ok
test frame::checks::approximate_snapshot_codec_is_bounded_and_canonical ... ok
test frame::checks::tests::golden_and_fragmented ... ok
test session::inputs::tests::partial_writes_credit_only_the_owner_and_replay_trims_per_writer ... ok
test terminal::checks::tests::implicit_hyperlinks_retain_groups_across_rows_and_continuation ... ok
test terminal::checks::tests::margins_tabs_charsets_and_modes_continue ... ok
test terminal::checks::tests::partial_csi_and_utf8_continue ... ok
test session::resize_checks::native_resize_refusal_preserves_peer_and_pty ... ok
test terminal::checks::tests::long_unfinished_hyperlink_and_control_strings_continue ... ok
test terminal::checks::tests::fixtures_and_continuations_repaint ... ok
test terminal::checks::tests::saved_origin_survives_changed_margins ... ok
test terminal::checks::tests::pending_wrap_and_saved_wrap_continue_with_wide_cells ... ok
test terminal::checks::tests::retained_alternate_saved_cursor_and_keyboard_stack_continue ... ok
test terminal::fidelity::fidelity_diagnostic_fixture ... ignored, diagnostic replay of an explicitly selected fixture file
test terminal::fidelity::fidelity_charset_mapped_wide_space_is_explicitly_rejected ... ok
test terminal::fidelity::fidelity_extended_nightly ... ignored, nightly expanded differential corpus: 20,000 deterministic cases
test terminal::checks::tests::alternate_variants_and_nested_switches_repaint ... ok
test terminal::checks::approximate_repaint_keeps_complete_pending_syntax_or_omits_it_whole ... ok
test terminal::fidelity::fidelity_fresh_c_redraw_default_is_explicitly_rejected ... ok
test terminal::fidelity::fidelity_cursor ... ok
test terminal::checks::tests::byte_budget_prunes_history_and_resize_remains_repaintable ... ok
test terminal::fidelity::fidelity_edge ... ok
test terminal::fidelity::fidelity_iso_protection_erase ... ok
test terminal::checks::tests::unfinished_sequence_over_frame_limit_fails_without_losing_runtime_state ... ok
test terminal::fidelity::fidelity_inherited_protection_off_mode_is_explicitly_rejected ... ok
test terminal::fidelity::fidelity_oracle_observes_archived_cells_with_equal_active_screens ... ok
test terminal::fidelity::fidelity_orphaned_spacer_head ... ok
test terminal::fidelity::fidelity_f1_rep ... ok
test terminal::fidelity::fidelity_iso_protection_does_not_keep_rep_scratch ... ok
test terminal::fidelity::fidelity_prompt_resize_requires_explicit_rejection ... ok
test terminal::fidelity::fidelity_oracle_detects_hidden_state ... ok
test terminal::checks::approximate_repaint_is_bounded_clips_at_complete_cells_and_preserves_source ... ok
test terminal::fidelity::fidelity_saved_modes_future_restore ... ok
test terminal::fidelity::fidelity_seeded_nightly ... ignored, nightly differential corpus: 20,000 deterministic cases
test terminal::fidelity::fidelity_rejects_unrepresentable_rep_without_mutating_source ... ok
test terminal::fidelity::fidelity_saved_cursor_over_changed_edge ... ok
test terminal::fidelity::fidelity_semantic_validation_matches_exported_history_extent ... ok
test terminal::fidelity::fidelity_single_shift_survives_rep_seed ... ok
test terminal::fidelity::fidelity_snapshot_resets_stale_viewer_color_overrides ... ok
test terminal::fidelity::fidelity_snapshot_history_tail_contains_no_padding_rows ... ok
test terminal::fidelity::fidelity_screen_entry_consumes_inherited_shift_before_saving ... ok
test terminal::fidelity::fidelity_spacer_head_attributes ... ok
test terminal::fidelity::fresh_captures::fidelity_fresh_real_program_captures ... ignored, manual fresh capture oracle; set VT_CAPTURE_DIR after real program capture
test terminal::measurements::budgets::snapshot_200x60 ... ignored, performance measurement; run release on the perf host
test terminal::measurements::memory::measured_terminal_rss ... ignored, RSS measurement; run this filter alone in a fresh release process
test terminal::measurements::throughput::measured_parser ... ignored, VT observer and history throughput measurement
test terminal::recovery_measurements::measured_full_ring_reconstruction ... ignored, release reconstruction measurement; old healthy handles permit repeated cleanup
test terminal::resize_recovery::absent_ring_keeps_last_good_size_and_later_output_usable ... ok
test terminal::fidelity::fidelity_variation_tail_attributes ... ok
test terminal::resize_recovery::earlier_geometry_changes_require_approximation_even_with_origin_coverage ... ok
test terminal::resize_recovery::ring_gap_requires_clean_approximate_recovery ... ok
test terminal_native::allocation::resize_allocation_refusal_retires_native_handle ... ok
test terminal::resize_recovery::complete_ring_restores_screens_mouse_and_unfinished_syntax ... ok
test terminal::fidelity::fidelity_variation_wrap_attributes ... ok
test terminal::fidelity::fidelity_recorded_corpus ... ok
test terminal::fidelity::fidelity_mouse_effective_fields_follow_order_independently_of_booleans ... ok
test terminal::fidelity::fidelity_handwritten ... ok
test terminal::fidelity::fidelity_extended_smoke ... ok
test terminal::fidelity::fidelity_seeded_smoke has been running for over 60 seconds
test terminal::fidelity::fidelity_seeded_smoke ... ok
test result: ok. 61 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 65.22s
running 1 test
test closed_standard_descriptors_become_dev_null ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.55s
running 1 test
test faithful_snapshot_preserves_public_mouse_encoder_reports ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.43s
Doc-tests infraternal_agent
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests infraternal_mesh
running 1 test
test crates/infraternal-mesh/src/model.rs - model::LocalPrivateKey (line 20) - compile fail ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
Doc-tests infraternal_plugin_api
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests infraternal_plugin_host_facts
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests infraternal_plugin_mesh
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests infraternal_plugin_ssh
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests infraternal_protocol
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests infraternal_server
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests infraternal_shim
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
==> cargo-deny
warning[duplicate]: found 2 duplicate entries for crate 'base64'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:24:1
│
24 │ ╭ base64 0.21.7 registry+https://github.com/rust-lang/crates.io-index
25 │ │ base64 0.22.1 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────────┘ lock entries
│
├ base64 v0.21.7
├── base64urlsafedata v0.5.5
│ ├── webauthn-attestation-ca v0.5.5
│ │ └── webauthn-rs-core v0.5.5
│ │ └── webauthn-rs v0.5.5
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── webauthn-rs v0.5.5 ()
│ ├── webauthn-rs-core v0.5.5 ()
│ └── webauthn-rs-proto v0.5.5
│ └── webauthn-rs-core v0.5.5 ()
├── webauthn-rs-core v0.5.5 ()
└── webauthn-rs-proto v0.5.5 ()
├ base64 v0.22.1
├── axum v0.8.9
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── infraternal-server v0.1.0 ()
└── sqlx-core v0.8.6
├── sqlx v0.8.6
│ ├── infraternal v0.1.0 ()
│ ├── infraternal-plugin-api v0.1.0
│ │ ├── infraternal-agent v0.1.0
│ │ │ └── infraternal v0.1.0 ()
│ │ ├── infraternal-fuzz v0.1.0
│ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ ├── infraternal-plugin-mesh v0.1.0 ()
│ └── infraternal-server v0.1.0 ()
├── sqlx-macros v0.8.6
│ └── sqlx v0.8.6 ()
├── sqlx-macros-core v0.8.6
│ └── sqlx-macros v0.8.6 ()
└── sqlx-sqlite v0.8.6
├── sqlx v0.8.6 ()
└── sqlx-macros-core v0.8.6 (*)
warning[duplicate]: found 3 duplicate entries for crate 'getrandom'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:90:1
│
90 │ ╭ getrandom 0.2.17 registry+https://github.com/rust-lang/crates.io-index
91 │ │ getrandom 0.3.4 registry+https://github.com/rust-lang/crates.io-index
92 │ │ getrandom 0.4.3 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
│
├ getrandom v0.2.17
└── rand_core v0.6.4
├── bip39 v2.2.2
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── crypto-common v0.1.7
│ ├── aead v0.5.2
│ │ └── aes-gcm v0.10.3
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── cipher v0.4.4
│ │ ├── aes v0.8.4
│ │ │ └── aes-gcm v0.10.3 ()
│ │ ├── aes-gcm v0.10.3 ()
│ │ └── ctr v0.9.2
│ │ └── aes-gcm v0.10.3 ()
│ ├── digest v0.10.7
│ │ ├── blake2 v0.10.6
│ │ │ └── argon2 v0.5.3
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── hmac v0.12.1
│ │ │ └── hkdf v0.12.4
│ │ │ └── (dev) infraternal-server v0.1.0 ()
│ │ ├── sha1 v0.10.7
│ │ │ ├── axum v0.8.9
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── tungstenite v0.29.0
│ │ │ └── tokio-tungstenite v0.29.0
│ │ │ ├── axum v0.8.9 ()
│ │ │ └── (dev) infraternal-server v0.1.0 ()
│ │ └── sha2 v0.10.9
│ │ ├── infraternal-server v0.1.0 ()
│ │ ├── sqlx-core v0.8.6
│ │ │ ├── sqlx v0.8.6
│ │ │ │ ├── infraternal v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-api v0.1.0
│ │ │ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ │ │ └── infraternal v0.1.0 ()
│ │ │ │ │ ├── infraternal-fuzz v0.1.0
│ │ │ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ └── sqlx v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ └── sqlx-macros v0.8.6 ()
│ │ │ └── sqlx-sqlite v0.8.6
│ │ │ ├── sqlx v0.8.6 ()
│ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ └── sqlx-macros-core v0.8.6 ()
│ └── universal-hash v0.5.1
│ └── polyval v0.6.2
│ └── ghash v0.5.1
│ └── aes-gcm v0.10.3 ()
├── password-hash v0.5.0
│ └── argon2 v0.5.3 ()
├── rand v0.8.8
│ └── bip39 v2.2.2 ()
└── rand_chacha v0.3.1
└── rand v0.8.8 ()
├ getrandom v0.3.4
└── rand_core v0.9.5
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 ()
└── rand_chacha v0.9.0
├── rand v0.9.5 ()
└── webauthn-rs-core v0.5.5 ()
├ getrandom v0.4.3
├── jobserver v0.1.35
│ └── cc v1.6.0
│ ├── (build) libfuzzer-sys v0.4.13
│ │ └── infraternal-fuzz v0.1.0
│ ├── (build) libsqlite3-sys v0.30.1
│ │ └── sqlx-sqlite v0.8.6
│ │ ├── sqlx v0.8.6
│ │ │ ├── infraternal v0.1.0
│ │ │ ├── infraternal-plugin-api v0.1.0
│ │ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ │ └── infraternal v0.1.0 ()
│ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ └── infraternal-server v0.1.0
│ │ │ │ │ └── infraternal v0.1.0 ()
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── openssl-src v300.6.1+3.6.3
│ │ └── (build) openssl-sys v0.9.117
│ │ ├── axum-server v0.8.0
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── openssl v0.10.81
│ │ │ ├── axum-server v0.8.0 ()
│ │ │ ├── infraternal-server v0.1.0 ()
│ │ │ ├── tokio-openssl v0.6.5
│ │ │ │ └── axum-server v0.8.0 ()
│ │ │ ├── webauthn-attestation-ca v0.5.5
│ │ │ │ └── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ ├── tokio-openssl v0.6.5 ()
│ │ ├── webauthn-attestation-ca v0.5.5 ()
│ │ └── webauthn-rs-core v0.5.5 ()
│ └── (build) openssl-sys v0.9.117 ()
└── uuid v1.27.0
├── infraternal-agent v0.1.0 ()
├── infraternal-server v0.1.0 ()
├── webauthn-attestation-ca v0.5.5 ()
├── webauthn-rs v0.5.5 ()
└── webauthn-rs-core v0.5.5 ()
warning[duplicate]: found 2 duplicate entries for crate 'hashbrown'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:96:1
│
96 │ ╭ hashbrown 0.15.5 registry+https://github.com/rust-lang/crates.io-index
97 │ │ hashbrown 0.17.1 registry+https://github.com/rust-lang/crates.io-index
│ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
│
├ hashbrown v0.15.5
├── hashlink v0.10.0
│ └── sqlx-core v0.8.6
│ ├── sqlx v0.8.6
│ │ ├── infraternal v0.1.0
│ │ ├── infraternal-plugin-api v0.1.0
│ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ └── infraternal v0.1.0 ()
│ │ │ ├── infraternal-fuzz v0.1.0
│ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ └── infraternal-server v0.1.0
│ │ │ │ └── infraternal v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ ├── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6 ()
│ └── sqlx-sqlite v0.8.6
│ ├── sqlx v0.8.6 ()
│ └── sqlx-macros-core v0.8.6 ()
└── sqlx-core v0.8.6 ()
├ hashbrown v0.17.1
└── indexmap v2.14.2
├── h2 v0.4.19
│ └── hyper v1.11.1
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── axum-server v0.8.0
│ │ └── infraternal-server v0.1.0 ()
│ └── hyper-util v0.1.21
│ ├── axum v0.8.9 ()
│ └── axum-server v0.8.0 ()
└── sqlx-core v0.8.6
├── sqlx v0.8.6
│ ├── infraternal v0.1.0 ()
│ ├── infraternal-plugin-api v0.1.0
│ │ ├── infraternal-agent v0.1.0
│ │ │ └── infraternal v0.1.0 ()
│ │ ├── infraternal-fuzz v0.1.0
│ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ ├── infraternal-plugin-mesh v0.1.0 ()
│ └── infraternal-server v0.1.0 ()
├── sqlx-macros v0.8.6
│ └── sqlx v0.8.6 ()
├── sqlx-macros-core v0.8.6
│ └── sqlx-macros v0.8.6 ()
└── sqlx-sqlite v0.8.6
├── sqlx v0.8.6 ()
└── sqlx-macros-core v0.8.6 (*)
warning[duplicate]: found 2 duplicate entries for crate 'r-efi'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:187:1
│
187 │ ╭ r-efi 5.3.0 registry+https://github.com/rust-lang/crates.io-index
188 │ │ r-efi 6.0.0 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────┘ lock entries
│
├ r-efi v5.3.0
└── getrandom v0.3.4
└── rand_core v0.9.5
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 ()
└── rand_chacha v0.9.0
├── rand v0.9.5 ()
└── webauthn-rs-core v0.5.5 ()
├ r-efi v6.0.0
└── getrandom v0.4.3
├── jobserver v0.1.35
│ └── cc v1.6.0
│ ├── (build) libfuzzer-sys v0.4.13
│ │ └── infraternal-fuzz v0.1.0
│ ├── (build) libsqlite3-sys v0.30.1
│ │ └── sqlx-sqlite v0.8.6
│ │ ├── sqlx v0.8.6
│ │ │ ├── infraternal v0.1.0
│ │ │ ├── infraternal-plugin-api v0.1.0
│ │ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ │ └── infraternal v0.1.0 ()
│ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ └── infraternal-server v0.1.0
│ │ │ │ │ └── infraternal v0.1.0 ()
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── openssl-src v300.6.1+3.6.3
│ │ └── (build) openssl-sys v0.9.117
│ │ ├── axum-server v0.8.0
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── openssl v0.10.81
│ │ │ ├── axum-server v0.8.0 ()
│ │ │ ├── infraternal-server v0.1.0 ()
│ │ │ ├── tokio-openssl v0.6.5
│ │ │ │ └── axum-server v0.8.0 ()
│ │ │ ├── webauthn-attestation-ca v0.5.5
│ │ │ │ └── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ ├── tokio-openssl v0.6.5 ()
│ │ ├── webauthn-attestation-ca v0.5.5 ()
│ │ └── webauthn-rs-core v0.5.5 ()
│ └── (build) openssl-sys v0.9.117 ()
└── uuid v1.27.0
├── infraternal-agent v0.1.0 ()
├── infraternal-server v0.1.0 ()
├── webauthn-attestation-ca v0.5.5 ()
├── webauthn-rs v0.5.5 ()
└── webauthn-rs-core v0.5.5 ()
warning[duplicate]: found 2 duplicate entries for crate 'rand'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:189:1
│
189 │ ╭ rand 0.8.8 registry+https://github.com/rust-lang/crates.io-index
190 │ │ rand 0.9.5 registry+https://github.com/rust-lang/crates.io-index
│ ╰────────────────────────────────────────────────────────────────┘ lock entries
│
├ rand v0.8.8
└── bip39 v2.2.2
└── infraternal-server v0.1.0
└── infraternal v0.1.0
├ rand v0.9.5
├── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── tungstenite v0.29.0
│ └── tokio-tungstenite v0.29.0
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0 ()
│ └── (dev) infraternal-server v0.1.0 ()
└── webauthn-rs-core v0.5.5
└── webauthn-rs v0.5.5
└── infraternal-server v0.1.0 (*)
warning[duplicate]: found 2 duplicate entries for crate 'rand_chacha'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:191:1
│
191 │ ╭ rand_chacha 0.3.1 registry+https://github.com/rust-lang/crates.io-index
192 │ │ rand_chacha 0.9.0 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────────────┘ lock entries
│
├ rand_chacha v0.3.1
└── rand v0.8.8
└── bip39 v2.2.2
└── infraternal-server v0.1.0
└── infraternal v0.1.0
├ rand_chacha v0.9.0
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 ()
└── webauthn-rs-core v0.5.5 ()
warning[duplicate]: found 2 duplicate entries for crate 'rand_core'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:193:1
│
193 │ ╭ rand_core 0.6.4 registry+https://github.com/rust-lang/crates.io-index
194 │ │ rand_core 0.9.5 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────────┘ lock entries
│
├ rand_core v0.6.4
├── bip39 v2.2.2
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0
├── crypto-common v0.1.7
│ ├── aead v0.5.2
│ │ └── aes-gcm v0.10.3
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── cipher v0.4.4
│ │ ├── aes v0.8.4
│ │ │ └── aes-gcm v0.10.3 ()
│ │ ├── aes-gcm v0.10.3 ()
│ │ └── ctr v0.9.2
│ │ └── aes-gcm v0.10.3 ()
│ ├── digest v0.10.7
│ │ ├── blake2 v0.10.6
│ │ │ └── argon2 v0.5.3
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── hmac v0.12.1
│ │ │ └── hkdf v0.12.4
│ │ │ └── (dev) infraternal-server v0.1.0 ()
│ │ ├── sha1 v0.10.7
│ │ │ ├── axum v0.8.9
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── tungstenite v0.29.0
│ │ │ └── tokio-tungstenite v0.29.0
│ │ │ ├── axum v0.8.9 ()
│ │ │ └── (dev) infraternal-server v0.1.0 ()
│ │ └── sha2 v0.10.9
│ │ ├── infraternal-server v0.1.0 ()
│ │ ├── sqlx-core v0.8.6
│ │ │ ├── sqlx v0.8.6
│ │ │ │ ├── infraternal v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-api v0.1.0
│ │ │ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ │ │ └── infraternal v0.1.0 ()
│ │ │ │ │ ├── infraternal-fuzz v0.1.0
│ │ │ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ └── sqlx v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ └── sqlx-macros v0.8.6 ()
│ │ │ └── sqlx-sqlite v0.8.6
│ │ │ ├── sqlx v0.8.6 ()
│ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ └── sqlx-macros-core v0.8.6 ()
│ └── universal-hash v0.5.1
│ └── polyval v0.6.2
│ └── ghash v0.5.1
│ └── aes-gcm v0.10.3 ()
├── password-hash v0.5.0
│ └── argon2 v0.5.3 ()
├── rand v0.8.8
│ └── bip39 v2.2.2 ()
└── rand_chacha v0.3.1
└── rand v0.8.8 ()
├ rand_core v0.9.5
├── rand v0.9.5
│ ├── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5
│ └── webauthn-rs v0.5.5
│ └── infraternal-server v0.1.0 ()
└── rand_chacha v0.9.0
├── rand v0.9.5 ()
└── webauthn-rs-core v0.5.5 (*)
warning[duplicate]: found 2 duplicate entries for crate 'syn'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:230:1
│
230 │ ╭ syn 2.0.119 registry+https://github.com/rust-lang/crates.io-index
231 │ │ syn 3.0.6 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────┘ lock entries
│
├ syn v2.0.119
├── asn1-rs-derive v0.5.1
│ └── asn1-rs v0.6.2
│ ├── der-parser v9.0.0
│ │ ├── webauthn-rs-core v0.5.5
│ │ │ └── webauthn-rs v0.5.5
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ └── x509-parser v0.16.0
│ │ └── webauthn-rs-core v0.5.5 ()
│ ├── oid-registry v0.7.1
│ │ └── x509-parser v0.16.0 ()
│ └── x509-parser v0.16.0 ()
├── asn1-rs-impl v0.2.0
│ └── asn1-rs v0.6.2 ()
├── enum-as-inner v0.6.1
│ └── sysctl v0.7.1
│ └── infraternal-plugin-host-facts v0.1.0
│ ├── infraternal-agent v0.1.0
│ │ └── infraternal v0.1.0 ()
│ └── infraternal-fuzz v0.1.0
├── openssl-macros v0.1.1
│ └── openssl v0.10.81
│ ├── axum-server v0.8.0
│ │ └── infraternal-server v0.1.0 ()
│ ├── infraternal-server v0.1.0 ()
│ ├── tokio-openssl v0.6.5
│ │ └── axum-server v0.8.0 ()
│ ├── webauthn-attestation-ca v0.5.5
│ │ └── webauthn-rs-core v0.5.5 ()
│ └── webauthn-rs-core v0.5.5 ()
├── sqlx-macros v0.8.6
│ └── sqlx v0.8.6
│ ├── infraternal v0.1.0 ()
│ ├── infraternal-plugin-api v0.1.0
│ │ ├── infraternal-agent v0.1.0 ()
│ │ ├── infraternal-fuzz v0.1.0 ()
│ │ ├── infraternal-plugin-host-facts v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ ├── infraternal-plugin-mesh v0.1.0 ()
│ └── infraternal-server v0.1.0 ()
├── sqlx-macros-core v0.8.6
│ └── sqlx-macros v0.8.6 ()
├── synstructure v0.13.2
│ └── asn1-rs-derive v0.5.1 ()
├── thiserror-impl v1.0.69
│ └── thiserror v1.0.69
│ ├── asn1-rs v0.6.2 ()
│ ├── webauthn-rs-core v0.5.5 ()
│ └── x509-parser v0.16.0 ()
├── tracing-attributes v0.1.31
│ └── tracing v0.1.44
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0 ()
│ ├── axum-core v0.5.6
│ │ └── axum v0.8.9 ()
│ ├── h2 v0.4.19
│ │ └── hyper v1.11.1
│ │ ├── axum v0.8.9 ()
│ │ ├── axum-server v0.8.0 ()
│ │ └── hyper-util v0.1.21
│ │ ├── axum v0.8.9 ()
│ │ └── axum-server v0.8.0 ()
│ ├── infraternal-server v0.1.0 ()
│ ├── sqlx-core v0.8.6
│ │ ├── sqlx v0.8.6 ()
│ │ ├── sqlx-macros v0.8.6 ()
│ │ ├── sqlx-macros-core v0.8.6 ()
│ │ └── sqlx-sqlite v0.8.6
│ │ ├── sqlx v0.8.6 ()
│ │ └── sqlx-macros-core v0.8.6 ()
│ ├── sqlx-sqlite v0.8.6 ()
│ ├── tower v0.5.3
│ │ ├── axum v0.8.9 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── tracing-subscriber v0.3.23
│ │ └── infraternal-server v0.1.0 ()
│ ├── webauthn-attestation-ca v0.5.5 ()
│ ├── webauthn-rs v0.5.5 ()
│ └── webauthn-rs-core v0.5.5 ()
└── zerocopy-derive v0.8.60
└── zerocopy v0.8.60
├── half v2.7.1
│ ├── ciborium-ll v0.2.2
│ │ └── ciborium v0.2.2
│ │ └── criterion v0.7.0
│ │ └── (dev) infraternal-protocol v0.1.0
│ │ ├── infraternal-agent v0.1.0 ()
│ │ ├── infraternal-fuzz v0.1.0 ()
│ │ ├── (dev) infraternal-plugin-host-facts v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ └── serde_cbor_2 v0.13.0
│ ├── infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5 ()
└── ppv-lite86 v0.2.21
├── rand_chacha v0.3.1
│ └── rand v0.8.8
│ └── bip39 v2.2.2
│ └── infraternal-server v0.1.0 ()
└── rand_chacha v0.9.0
├── rand v0.9.5
│ ├── infraternal-server v0.1.0 ()
│ ├── tungstenite v0.29.0
│ │ └── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── webauthn-rs-core v0.5.5 ()
└── webauthn-rs-core v0.5.5 ()
├ syn v3.0.6
├── clap_derive v4.6.7
│ └── clap v4.6.7
│ ├── criterion v0.7.0
│ │ └── (dev) infraternal-protocol v0.1.0
│ │ ├── infraternal-agent v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ ├── infraternal-fuzz v0.1.0
│ │ ├── (dev) infraternal-plugin-host-facts v0.1.0
│ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ └── infraternal v0.1.0 ()
├── displaydoc v0.2.7
│ ├── asn1-rs v0.6.2
│ │ ├── der-parser v9.0.0
│ │ │ ├── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ └── x509-parser v0.16.0
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ ├── oid-registry v0.7.1
│ │ │ └── x509-parser v0.16.0 ()
│ │ └── x509-parser v0.16.0 ()
│ ├── der-parser v9.0.0 ()
│ ├── icu_collections v2.3.0
│ │ ├── icu_normalizer v2.3.0
│ │ │ └── idna_adapter v1.2.2
│ │ │ └── idna v1.1.0
│ │ │ └── url v2.5.8
│ │ │ ├── infraternal-server v0.1.0 ()
│ │ │ ├── sqlx-core v0.8.6
│ │ │ │ ├── sqlx v0.8.6
│ │ │ │ │ ├── infraternal v0.1.0 ()
│ │ │ │ │ ├── infraternal-plugin-api v0.1.0
│ │ │ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ │ ├── infraternal-plugin-host-facts v0.1.0 ()
│ │ │ │ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ │ └── sqlx v0.8.6 ()
│ │ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ │ └── sqlx-macros v0.8.6 ()
│ │ │ │ └── sqlx-sqlite v0.8.6
│ │ │ │ ├── sqlx v0.8.6 ()
│ │ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6 ()
│ │ │ ├── sqlx-sqlite v0.8.6 ()
│ │ │ ├── webauthn-rs v0.5.5 ()
│ │ │ ├── webauthn-rs-core v0.5.5 ()
│ │ │ └── webauthn-rs-proto v0.5.5
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ └── icu_properties v2.3.0
│ │ └── idna_adapter v1.2.2 ()
│ ├── icu_locale_core v2.3.0
│ │ ├── icu_properties v2.3.0 ()
│ │ └── icu_provider v2.3.1
│ │ ├── icu_normalizer v2.3.0 ()
│ │ └── icu_properties v2.3.0 ()
│ ├── icu_properties v2.3.0 ()
│ ├── icu_provider v2.3.1 ()
│ ├── tinystr v0.8.4
│ │ └── icu_locale_core v2.3.0 ()
│ └── zerotrie v0.2.5
│ ├── icu_properties v2.3.0 ()
│ └── icu_provider v2.3.1 ()
├── futures-macro v0.3.34
│ └── futures-util v0.3.34
│ ├── axum v0.8.9
│ │ └── infraternal-server v0.1.0 ()
│ ├── futures-executor v0.3.34
│ │ └── sqlx-sqlite v0.8.6 ()
│ ├── infraternal-plugin-mesh v0.1.0 ()
│ ├── infraternal-server v0.1.0 ()
│ ├── js-sys v0.3.106
│ │ └── web-sys v0.3.106
│ │ └── plotters v0.3.7
│ │ └── criterion v0.7.0 ()
│ ├── sqlx-core v0.8.6 ()
│ ├── sqlx-sqlite v0.8.6 ()
│ ├── tokio-tungstenite v0.29.0
│ │ ├── axum v0.8.9 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ ├── tower v0.5.3
│ │ ├── axum v0.8.9 ()
│ │ └── (dev) infraternal-server v0.1.0 ()
│ └── tower-http v0.6.11
│ └── infraternal-server v0.1.0 ()
├── serde_derive v1.0.229
│ ├── serde v1.0.229
│ │ ├── base64urlsafedata v0.5.5
│ │ │ ├── webauthn-attestation-ca v0.5.5
│ │ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ │ ├── webauthn-rs v0.5.5 ()
│ │ │ ├── webauthn-rs-core v0.5.5 ()
│ │ │ └── webauthn-rs-proto v0.5.5 ()
│ │ ├── bip39 v2.2.2
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── ciborium v0.2.2
│ │ │ └── criterion v0.7.0 ()
│ │ ├── criterion v0.7.0 ()
│ │ ├── either v1.18.0
│ │ │ ├── axum-server v0.8.0
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ ├── itertools v0.13.0
│ │ │ │ ├── criterion v0.7.0 ()
│ │ │ │ └── criterion-plot v0.6.0
│ │ │ │ └── criterion v0.7.0 ()
│ │ │ ├── rayon v1.12.0
│ │ │ │ └── criterion v0.7.0 ()
│ │ │ ├── sqlx-core v0.8.6 ()
│ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ ├── infraternal-agent v0.1.0 ()
│ │ ├── infraternal-mesh v0.1.0
│ │ │ └── infraternal-plugin-mesh v0.1.0 ()
│ │ ├── infraternal-plugin-api v0.1.0 ()
│ │ ├── infraternal-plugin-host-facts v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ ├── infraternal-server v0.1.0 ()
│ │ ├── serde_cbor_2 v0.13.0
│ │ │ ├── infraternal-server v0.1.0 ()
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ ├── serde_urlencoded v0.7.1
│ │ │ ├── axum v0.8.9 ()
│ │ │ └── sqlx-sqlite v0.8.6 ()
│ │ ├── sqlx-core v0.8.6 ()
│ │ ├── sqlx-macros-core v0.8.6 ()
│ │ ├── sqlx-sqlite v0.8.6 ()
│ │ ├── tinytemplate v1.2.1
│ │ │ └── criterion v0.7.0 ()
│ │ ├── tracing-serde v0.2.0
│ │ │ └── tracing-subscriber v0.3.23
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── tracing-subscriber v0.3.23 ()
│ │ ├── url v2.5.8 ()
│ │ ├── webauthn-attestation-ca v0.5.5 ()
│ │ ├── webauthn-rs v0.5.5 ()
│ │ ├── webauthn-rs-core v0.5.5 ()
│ │ └── webauthn-rs-proto v0.5.5 ()
│ └── url v2.5.8 ()
├── synstructure v0.14.0
│ ├── yoke-derive v0.8.4
│ │ └── yoke v0.8.3
│ │ ├── icu_collections v2.3.0 ()
│ │ ├── icu_provider v2.3.1 ()
│ │ ├── zerotrie v0.2.5 ()
│ │ └── zerovec v0.11.8
│ │ ├── icu_collections v2.3.0 ()
│ │ ├── icu_locale_core v2.3.0 ()
│ │ ├── icu_normalizer v2.3.0 ()
│ │ ├── icu_properties v2.3.0 ()
│ │ ├── icu_provider v2.3.1 ()
│ │ ├── potential_utf v0.1.6
│ │ │ └── icu_collections v2.3.0 ()
│ │ └── tinystr v0.8.4 ()
│ └── zerofrom-derive v0.1.8
│ └── zerofrom v0.1.8
│ ├── icu_collections v2.3.0 ()
│ ├── icu_provider v2.3.1 ()
│ ├── yoke v0.8.3 ()
│ ├── zerotrie v0.2.5 ()
│ └── zerovec v0.11.8 ()
├── thiserror-impl v2.0.21
│ └── thiserror v2.0.21
│ ├── infraternal v0.1.0 ()
│ ├── infraternal-mesh v0.1.0 ()
│ ├── infraternal-server v0.1.0 ()
│ ├── sqlx-core v0.8.6 ()
│ ├── sqlx-sqlite v0.8.6 ()
│ ├── sysctl v0.7.1
│ │ └── infraternal-plugin-host-facts v0.1.0 ()
│ └── tungstenite v0.29.0
│ └── tokio-tungstenite v0.29.0 ()
├── tokio-macros v2.7.2
│ └── tokio v1.53.2
│ ├── axum v0.8.9 ()
│ ├── axum-server v0.8.0 ()
│ ├── fs-err v3.3.2
│ │ └── axum-server v0.8.0 ()
│ ├── h2 v0.4.19
│ │ └── hyper v1.11.1
│ │ ├── axum v0.8.9 ()
│ │ ├── axum-server v0.8.0 ()
│ │ └── hyper-util v0.1.21
│ │ ├── axum v0.8.9 ()
│ │ └── axum-server v0.8.0 ()
│ ├── hyper v1.11.1 ()
│ ├── hyper-util v0.1.21 ()
│ ├── infraternal v0.1.0 ()
│ ├── infraternal-agent v0.1.0 ()
│ ├── infraternal-plugin-api v0.1.0 ()
│ ├── infraternal-plugin-mesh v0.1.0 ()
│ ├── (dev) infraternal-server v0.1.0 ()
│ ├── sqlx-core v0.8.6 ()
│ ├── sqlx-macros-core v0.8.6 ()
│ ├── tokio-openssl v0.6.5
│ │ └── axum-server v0.8.0 ()
│ ├── tokio-stream v0.1.19
│ │ └── sqlx-core v0.8.6 ()
│ ├── tokio-tungstenite v0.29.0 ()
│ ├── tokio-util v0.7.19
│ │ ├── h2 v0.4.19 ()
│ │ └── tower-http v0.6.11 ()
│ ├── tower v0.5.3 ()
│ └── tower-http v0.6.11 ()
├── wasm-bindgen-macro-support v0.2.129
│ └── wasm-bindgen-macro v0.2.129
│ └── wasm-bindgen v0.2.129
│ ├── js-sys v0.3.106 ()
│ ├── plotters v0.3.7 ()
│ └── web-sys v0.3.106 ()
├── yoke-derive v0.8.4 ()
├── zerofrom-derive v0.1.8 ()
└── zerovec-derive v0.11.6
└── zerovec v0.11.8 ()
warning[duplicate]: found 2 duplicate entries for crate 'synstructure'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:233:1
│
233 │ ╭ synstructure 0.13.2 registry+https://github.com/rust-lang/crates.io-index
234 │ │ synstructure 0.14.0 registry+https://github.com/rust-lang/crates.io-index
│ ╰─────────────────────────────────────────────────────────────────────────┘ lock entries
│
├ synstructure v0.13.2
└── asn1-rs-derive v0.5.1
└── asn1-rs v0.6.2
├── der-parser v9.0.0
│ ├── webauthn-rs-core v0.5.5
│ │ └── webauthn-rs v0.5.5
│ │ └── infraternal-server v0.1.0
│ │ └── infraternal v0.1.0
│ └── x509-parser v0.16.0
│ └── webauthn-rs-core v0.5.5 ()
├── oid-registry v0.7.1
│ └── x509-parser v0.16.0 ()
└── x509-parser v0.16.0 ()
├ synstructure v0.14.0
├── yoke-derive v0.8.4
│ └── yoke v0.8.3
│ ├── icu_collections v2.3.0
│ │ ├── icu_normalizer v2.3.0
│ │ │ └── idna_adapter v1.2.2
│ │ │ └── idna v1.1.0
│ │ │ └── url v2.5.8
│ │ │ ├── infraternal-server v0.1.0
│ │ │ │ └── infraternal v0.1.0
│ │ │ ├── sqlx-core v0.8.6
│ │ │ │ ├── sqlx v0.8.6
│ │ │ │ │ ├── infraternal v0.1.0 ()
│ │ │ │ │ ├── infraternal-plugin-api v0.1.0
│ │ │ │ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ │ │ │ └── infraternal v0.1.0 ()
│ │ │ │ │ │ ├── infraternal-fuzz v0.1.0
│ │ │ │ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ │ ├── infraternal-plugin-mesh v0.1.0
│ │ │ │ │ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ │ ├── sqlx-macros v0.8.6
│ │ │ │ │ └── sqlx v0.8.6 ()
│ │ │ │ ├── sqlx-macros-core v0.8.6
│ │ │ │ │ └── sqlx-macros v0.8.6 ()
│ │ │ │ └── sqlx-sqlite v0.8.6
│ │ │ │ ├── sqlx v0.8.6 ()
│ │ │ │ └── sqlx-macros-core v0.8.6 ()
│ │ │ ├── sqlx-macros-core v0.8.6 ()
│ │ │ ├── sqlx-sqlite v0.8.6 ()
│ │ │ ├── webauthn-rs v0.5.5
│ │ │ │ └── infraternal-server v0.1.0 ()
│ │ │ ├── webauthn-rs-core v0.5.5
│ │ │ │ └── webauthn-rs v0.5.5 ()
│ │ │ └── webauthn-rs-proto v0.5.5
│ │ │ └── webauthn-rs-core v0.5.5 ()
│ │ └── icu_properties v2.3.0
│ │ └── idna_adapter v1.2.2 ()
│ ├── icu_provider v2.3.1
│ │ ├── icu_normalizer v2.3.0 ()
│ │ └── icu_properties v2.3.0 ()
│ ├── zerotrie v0.2.5
│ │ ├── icu_properties v2.3.0 ()
│ │ └── icu_provider v2.3.1 ()
│ └── zerovec v0.11.8
│ ├── icu_collections v2.3.0 ()
│ ├── icu_locale_core v2.3.0
│ │ ├── icu_properties v2.3.0 ()
│ │ └── icu_provider v2.3.1 ()
│ ├── icu_normalizer v2.3.0 ()
│ ├── icu_properties v2.3.0 ()
│ ├── icu_provider v2.3.1 ()
│ ├── potential_utf v0.1.6
│ │ └── icu_collections v2.3.0 ()
│ └── tinystr v0.8.4
│ └── icu_locale_core v2.3.0 ()
└── zerofrom-derive v0.1.8
└── zerofrom v0.1.8
├── icu_collections v2.3.0 ()
├── icu_provider v2.3.1 ()
├── yoke v0.8.3 ()
├── zerotrie v0.2.5 ()
└── zerovec v0.11.8 (*)
warning[duplicate]: found 2 duplicate entries for crate 'thiserror'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:236:1
│
236 │ ╭ thiserror 1.0.69 registry+https://github.com/rust-lang/crates.io-index
237 │ │ thiserror 2.0.21 registry+https://github.com/rust-lang/crates.io-index
│ ╰──────────────────────────────────────────────────────────────────────┘ lock entries
│
├ thiserror v1.0.69
├── asn1-rs v0.6.2
│ ├── der-parser v9.0.0
│ │ ├── webauthn-rs-core v0.5.5
│ │ │ └── webauthn-rs v0.5.5
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ └── x509-parser v0.16.0
│ │ └── webauthn-rs-core v0.5.5 ()
│ ├── oid-registry v0.7.1
│ │ └── x509-parser v0.16.0 ()
│ └── x509-parser v0.16.0 ()
├── webauthn-rs-core v0.5.5 ()
└── x509-parser v0.16.0 ()
├ thiserror v2.0.21
├── infraternal v0.1.0
├── infraternal-mesh v0.1.0
│ └── infraternal-plugin-mesh v0.1.0
│ ├── infraternal-fuzz v0.1.0
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0 ()
├── infraternal-server v0.1.0 ()
├── sqlx-core v0.8.6
│ ├── sqlx v0.8.6
│ │ ├── infraternal v0.1.0 ()
│ │ ├── infraternal-plugin-api v0.1.0
│ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ └── infraternal v0.1.0 ()
│ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ ├── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6 ()
│ └── sqlx-sqlite v0.8.6
│ ├── sqlx v0.8.6 ()
│ └── sqlx-macros-core v0.8.6 ()
├── sqlx-sqlite v0.8.6 ()
├── sysctl v0.7.1
│ └── infraternal-plugin-host-facts v0.1.0 ()
└── tungstenite v0.29.0
└── tokio-tungstenite v0.29.0
├── axum v0.8.9
│ └── infraternal-server v0.1.0 ()
└── (dev) infraternal-server v0.1.0 ()
warning[duplicate]: found 2 duplicate entries for crate 'thiserror-impl'
┌─ /home/kayg/Developer/infraternal/.worktrees/renderer-cost/Cargo.lock:238:1
│
238 │ ╭ thiserror-impl 1.0.69 registry+https://github.com/rust-lang/crates.io-index
239 │ │ thiserror-impl 2.0.21 registry+https://github.com/rust-lang/crates.io-index
│ ╰───────────────────────────────────────────────────────────────────────────┘ lock entries
│
├ thiserror-impl v1.0.69
└── thiserror v1.0.69
├── asn1-rs v0.6.2
│ ├── der-parser v9.0.0
│ │ ├── webauthn-rs-core v0.5.5
│ │ │ └── webauthn-rs v0.5.5
│ │ │ └── infraternal-server v0.1.0
│ │ │ └── infraternal v0.1.0
│ │ └── x509-parser v0.16.0
│ │ └── webauthn-rs-core v0.5.5 ()
│ ├── oid-registry v0.7.1
│ │ └── x509-parser v0.16.0 ()
│ └── x509-parser v0.16.0 ()
├── webauthn-rs-core v0.5.5 ()
└── x509-parser v0.16.0 ()
├ thiserror-impl v2.0.21
└── thiserror v2.0.21
├── infraternal v0.1.0
├── infraternal-mesh v0.1.0
│ └── infraternal-plugin-mesh v0.1.0
│ ├── infraternal-fuzz v0.1.0
│ └── infraternal-server v0.1.0
│ └── infraternal v0.1.0 ()
├── infraternal-server v0.1.0 ()
├── sqlx-core v0.8.6
│ ├── sqlx v0.8.6
│ │ ├── infraternal v0.1.0 ()
│ │ ├── infraternal-plugin-api v0.1.0
│ │ │ ├── infraternal-agent v0.1.0
│ │ │ │ └── infraternal v0.1.0 ()
│ │ │ ├── infraternal-fuzz v0.1.0 ()
│ │ │ ├── infraternal-plugin-host-facts v0.1.0
│ │ │ │ ├── infraternal-agent v0.1.0 ()
│ │ │ │ └── infraternal-fuzz v0.1.0 ()
│ │ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ │ └── infraternal-server v0.1.0 ()
│ │ ├── infraternal-plugin-mesh v0.1.0 ()
│ │ └── infraternal-server v0.1.0 ()
│ ├── sqlx-macros v0.8.6
│ │ └── sqlx v0.8.6 ()
│ ├── sqlx-macros-core v0.8.6
│ │ └── sqlx-macros v0.8.6 ()
│ └── sqlx-sqlite v0.8.6
│ ├── sqlx v0.8.6 ()
│ └── sqlx-macros-core v0.8.6 ()
├── sqlx-sqlite v0.8.6 ()
├── sysctl v0.7.1
│ └── infraternal-plugin-host-facts v0.1.0 ()
└── tungstenite v0.29.0
└── tokio-tungstenite v0.29.0
├── axum v0.8.9
│ └── infraternal-server v0.1.0 ()
└── (dev) infraternal-server v0.1.0 ()
advisories ok, bans ok, licenses ok, sources ok
==> static builds
Finished
releaseprofile [optimized] target(s) in 1.21starget/x86_64-unknown-linux-musl/release/infraternal: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, stripped
PT_INTERP: absent; size: 16435312 bytes (baseline 16142672 + allowance 262144 = max 16404816)
binary exceeds the 16404816-byte size budget: 16435312 bytes
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | FAIL (1) |
+---------------------------+--------------+
Author reviewer checklist complete at
0ff7f80c171b8c3e2c79097d1dfdda3f17235f15:apps/tracer/test-results/for independent review; this job did not judge them. Worktree is clean and temporary build/worktree targets are removed.Independent delta review starts on branch
review-renderer-cost, based at target0ff7f80c171b8c3e2c79097d1dfdda3f17235f15. The prior evidence branch is preserved asreview-renderer-cost-run2at747bdfdb. I am reviewing only renderer-cost commits after the6b75ae8creview, excluding the imported dev merge at719475a9. The earlier RC-3/RC-4/RC-5 regression tests are present in the target tree and will be rerun against this exact head.Exact-head regression replay complete at
0ff7f80c171b8c3e2c79097d1dfdda3f17235f15: production Playwright passed the prior RC-3/RC-4/RC-5 tests, 3/3 in 23.4 s, unique port 4317. RC-4 pixel[18,52,86,255], output sequence 7771, pending=false (28 ms after callback); RC-3 239,468,544 B / 200 = 1,197,342.72 B per session against 2 MiB, oldest scrollback preserved; RC-5 selected and actual portal material both rgba(28,28,30,0.4), blur 24 px. Full output is in the review scratch log.RC-6 P2 reproduced on exact head
0ff7f80c171b8c3e2c79097d1dfdda3f17235f15; failing test committed onreview-renderer-costas615293bdd04cb044e24de148bc3cf6245a1e6430. It resizes 8 live terminal states through 150x40 → 80x24 → 200x50 → 80x24, then parks the group. Production Playwright on port 4318 reports 53,477,376 B shared WASM growth, 6,684,672 B/session (6.375 MiB), over the 2 MiB hidden budget. The existing interleaved 200-state test passes because it compacts each state before resizing the next; this group-order case fails. Scoped repeat is pending.Replay step on exact job head
0ff7f80c: RC-2 passes. RC-1's theme-font case failed once at 300 ms RTT (expected terminal pixel #f6f6f4, received #0d0e10), then passed three repeated runs on the exact target. On the previously reviewed6b75ae8chead the same test passed twice and failed once with the same pixel mismatch; both appearance orders pass at RTT=0. This intermittent outcome is present on the prior head and is not attributed to the scoped delta. Current review evidence head:615293bdd0.RC-6 grouped-memory confirmation on review head
615293bdd0: production Playwright test on port 4327 at RTT=0, run undersystemd-run --user --scope -p CPUWeight=10000, fails with 53,477,376 B retained for eight parked terminals = 6,684,672 B (6.375 MiB) each versus 2,097,152 B. The 200-session linear projection is 1,275 MiB. Load average before/after: 6.35/10.54/13.69 → 7.66/10.69/13.71. Test is committed as615293bdd0.kayg referenced this issue2026-10-28 17:53:56 +00:00