Binary size: dev grew +2.25 MB over production; cut and ratchet the gate (D243) #198
Closed
opened 2026-10-13 04:24:08 +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#198
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?
D243 says the static binary goes down, not up, and the gate ratchets to each new measured size. Today the gate is useless: its caps (x86_64 16,404,816 B, aarch64 13,817,816 B) are below every build, so
static buildsfails on every branch and nobody sees growth.Measured 2026-10-13:
release-prod-live9ab4329c: x86_64 20,333,104 B (stripped static)85368c7f(after #194 merge): x86_64 22,580,816 B, aarch64 19,986,840 B → about +2.25 MB over production.Work:
9ab4329cand85368c7fper crate/feature (cargo-bloat or equivalent on the release recipe) and per merge.Started size-ratchet on branch size-ratchet at base
85368c7fdd(origin/dev). The worktree is clean. Read #198 (no existing comments) and the preceding #194 record; #198 names no parent issue. Next: reproduce exact static sizes at9ab4329cand this base, attribute changes by merge and crate, then cut only behavior-preserving bytes.Finding: exact production revision
9ab4329creproduces the recorded x86_64 static size: 20,333,104 bytes (stripped;scripts/auth-toolchainpluscargo build --locked --release --package infraternal --target x86_64-unknown-linux-musl). The aarch64 build is still running; no source changes yet.Finding: both exact production baselines reproduce under the release recipe: x86_64 20,333,104 B; aarch64 18,112,240 B (
9ab4329c, stripped static). Against the supplied dev sizes (22,580,816 B / 19,986,840 B), the total growth is +2,247,712 B x86_64 and +1,874,600 B aarch64. The dev and merge-point builds are next.Finding: exact dev base
85368c7freproduces x86_64 at 22,580,816 B, +2,247,712 B over9ab4329c.cargo bloat --release --crateson the release target attributes the largest Rust-side gains to infraternal-server (~+0.4 MiB), plugin-mesh (+311 KiB), infraternal-agent (+142 KiB), CLI infraternal (+93 KiB), infraternal-mesh (+106 KiB), remote (+41 KiB), and release plugin (+47 KiB), with additional standard-library/future glue. OpenSSL/ring and mesh/server roles are required features; no feature is removed. I’m measuring merge checkpoints and testing size-focused compilation of agent code for an intact-feature cut.Finding: the first locked perf-VM attach attempt produced no timing sample: the fixture state-root variable was misspelled, so the harness used its fallback and timed out before PTY readiness. The run is discarded. The exact baseline binary had no lingering process; the fallback fixture path is already absent. I corrected the variable to
INFRATERNAL_TEST_STATE_ROOTand will rerun under the same lock.Finding: the merge-point sweep stopped before its first size measurement at
47f2b31bbecause the direct build invocation omittedscripts/verify's PATH export for the Zig staged byscripts/auth-toolchain. No size row was emitted. I’m fixing the invocation to prepend$CARGO_TARGET_DIR/auth-tools/zigand restarting from47f2b31b.Resuming size-ratchet on branch size-ratchet, base/head
85368c7fdd. Read all six #198 comments; no parent is named. Worktree is clean. Continuing the retained production/dev artifacts and unfinished merge sweep; no feature removal or foundational dependency changes.Finding: exact Cargo.lock diff 9ab4329c..85368c7f adds only first-party plugin packages/edges (45 lines); third-party versions are unchanged. Retained cargo-bloat diagnostics show mesh/server/CLI expansion, with OpenSSL/ring effectively unchanged. First merge checkpoints: 47f2b31b=16,698,208 B; UI-platform 0510bd85=16,698,208 B (x86_64, exact stripped static recipe). These are older first-parent dev checkpoints, not a linear production-to-head sequence. Testing shared action-schema construction instead of changing release optimization settings or disabling shipped features.
Finding: the pinned libghostty-vt static archive has a monolithic .text section (~0xed8fa bytes in the release object) retaining unused C formatter, render-state, selection and input-encoding APIs in the final binary; infraternal-shim/src/terminal_native.rs calls only terminal new/free/write/resize/get plus our snapshot adapter. Pinned Zig std/Build/Step/Compile.zig explicitly supports link_function_sections and link_data_sections for safe linker garbage collection. Measuring that build-only cut next: same pinned engine, CPU baseline, ReleaseFast/ReleaseSafe settings and public archive APIs; no terminal feature is disabled.
Gate reproduction before repair: the exact
85368c7fx86_64 artifact is statically linked, stripped and passes production-trust inspection, but fails at 22,580,816 B against the obsolete 16,404,816 B ceiling (retained regression probe). Work item 3 requires resetting those stale ceilings to the new measured head. I interpret “do not raise any cap” as no allowance or growth above the supplied current dev measurements (22,580,816 / 19,986,840): both replacement ceilings will equal the cut artifacts exactly, with zero slack. Keeping the obsolete ceilings would preserve the permanently failing gate described in this issue.Finding: the first new perf baseline run timed out waiting for the fixture prompt; the transfer omitted crates/infraternal/tests/profile/.zshrc, which agent_fixture.py points ZDOTDIR at. That run is discarded as harness setup failure. The corrected pack now includes the isolated shell profile; rerunning baseline and candidate under separate short shared-lock runs. No runtime comparison is claimed from the failed attempt.
Correction to the perf harness finding: after transferring the isolated profile, the baseline still waits for the zsh-specific shim-test prompt. The perf VM root account uses /bin/bash (verified via pwd.getpwuid(0).pw_shell), so ZDOTDIR cannot set that prompt. Switching to an explicit printf readiness marker using the existing Binary fixture; no account shell or host profile is changed. Both unsuccessful probes are discarded. Host functional terminal tests already pass (79 unit, 5 integration).
Completed cut 1:
722af2a323pushed to size-ratchet. scripts/build-vt emits native function/data sections; 182 public archive exports remain on both arches. x86_64 stripped static: 22,580,816 -> 22,263,504 B, saved 317,312 B. All 54 public CLI skills/help outputs are byte-identical. fmt, shim clippy, 79 unit + 5 integration tests pass; production trust and static key memory checks pass. Locked perf VM (4 cores, CPUWeight=10000, load 0.36–0.99): real PTY echo p99 0.620 -> 0.471 ms (N=1,000), credited 50 MiB output median 16.45 -> 17.68 MiB/s (N=3). Single-session comparison only. aarch64 release link is running; final artifacts, raw perf logs and merge table will be retained under docs/verification/size-ratchet.Completed measurement harness step:
865cb0cfd4pushed. Added a portable real-PTY probe (explicit readiness, exact y\n output counts, no host profile changes), restricted to the perf VM. Python syntax and workspace fmt pass; both baseline and candidate execute the 1,000-echo/3×50-MiB workloads correctly. Repeated pair: echo p99 0.466/0.506 ms, throughput median 17.18/17.64 MiB/s, load 0.00–0.86; latency noise runs both directions across the two pairs, throughput is higher in both. No enterprise-scale performance claim. The aarch64 cut-1 link has completed; sizes are being recorded before the metadata cut.Finding: the older
0510bd85->bf28c10acheckpoint delta (+4,617,200 B) is not a mesh-only cost. Its crates/infraternal/Cargo.toml diff also restores remote and ssh to default features, enables node mesh wiring, and Cargo.toml adds quinn/rustls/tokio-openssl to that older dev line. Those transports already exist in production9ab4329c. The final attribution table will distinguish this historical integration interval from the direct production-to-head growth (+2,247,712 B x86_64 / +1,874,600 B ARM). Cut 1 aarch64 result is now confirmed: 19,986,840 -> 19,681,112 B, saving 305,728 B.Completed CLI measurement step:
89a6910751pushed; interleaved VM-only probe verifies 110 outputs for 54 actions. Completed cut 2:5ae7cbf296pushed; shared concrete action/schema constructors preserve fields/order/defaults and public interfaces. x86_64: 22,263,504 -> 22,204,304 B, saved 59,200 B (376,512 B total). 22 API tests, 76 CLI tests (one existing ignored diagnostic), fmt and API clippy pass. Locked perf VM N=301, load 0.11–0.59: startup p50 help 2.339/2.390 ms, index 2.779/2.803 ms, mesh skill 2.676/2.724 ms; all p95 values improve. Retaining the measured 24–51 us cold-start cost for 59.2 MB less replicated storage at 1,000 nodes; no terminal IO construction changes. ARM link running.Completed ratchet steps, all pushed:
418288c6sets exact ceilings 22,204,304 B x86_64 / 19,638,744 B aarch64 (total cuts 376,512 / 348,096 B);d626135dadds real-artifact boundary checks to static builds;e273fd30updates PROCESS §7. Exact caps pass, +1 byte fails for each arch, smaller reported size requires lowering the ceiling, unknown targets fail. Bash syntax, fmt and boundary checks pass. Metadata ARM cut: 19,681,112 -> 19,638,744 B, saved 42,368 B. Remaining: finish merge attribution and original dev ARM reproduction, then retain evidence and run full fast on the branch head. No feature/provider removal.Finding: the shared Cargo target reused the cut native archive in the baseline sweep. Exact original
85368c7funexpectedly measured 22,263,504 B (the cut-1 size) instead of 22,580,816 B; infraternal-shim-3b145c0f319a2347/out/native now points at sectioned native-8913dc56..., despite the detached worktree retaining original scripts/build-vt. Relative rerun-if-changed timestamps across worktrees allow native output reuse. Discarding affected sweep rows; replaying with explicit touch of the unchanged native build script/recipe at every checkpoint. Original retained production/dev binaries remain intact; final head will also be rebuilt after baseline replay before its gate.Finding confirmed: forcing the unchanged native recipe/build-script watch at original
85368c7frestores exact dev sizes: x86_64 22,580,816 B; ARM 19,986,840 B. The baseline native symlinks now point to the unsectioned cache entries (x86 native-04a42f..., ARM native-3cfe44...). This validates the retained cut baselines. Clean checkpoint replay follows; contaminated sweep rows will not be reported as attribution. Head will be invalidated/rebuilt after replay and must still match the new exact caps.Evidence step committed and pushed:
88e8a0da. Clean replay now reproduces dev85368c7fat 22,580,816 B x86_64 / 19,986,840 B aarch64. The native cache contamination described earlier is excluded from the evidence.Direct production ancestry, x86_64 stripped:
9ab4329cbdf68a6c52f644775e383c3d85368c7fHistorical merge checkpoint builds, crate/feature attribution, ELF section accounting, both-arch artifact hashes and raw perf-machine logs are committed under docs/verification/size-ratchet/. README distinguishes historical checkpoint intervals from the direct production ancestry and rounded text costs from removable file savings.
722af2a3native sections5ae7cbf2shared metadata constructionExact caps: 22,204,304 / 19,638,744 B, zero allowance. Both +1-byte growth and unratcheted shrink fail. Features/providers are retained. Owner feature-loss candidates and nonadditive byte estimates are listed in README: mesh/plugin ~417 KiB plus server glue, host-daemon path/control ~141.8 KiB, remote integration ~40.9 KiB, server growth ~0.4 MiB, CLI ~92.5 KiB and signed update actions ~47.3 KiB. Ring stays (D257).
Final scripts/verify fast is running on pushed head
88e8a0da, with fresh native watches after historical replay, CARGO_TARGET_DIR in job scratch, RUST_TEST_THREADS=2 and unique TRACER_TEST_PORT=4298. Runtime evidence is exclusively the locked perf VM; functional gate diagnostics on this build host are not performance evidence.Full gate first attempt found a transient socket-allocation collision in the unchanged path-capability test: crates/infraternal-agent/src/remote_client_tests.rs:603 binds TCP to an independently allocated UDP port and got OS error 98 (AddrInUse). This file is identical to
85368c7f; no terminal/parser/auth assertion failed. vt_credit passed. The same compiled real-engine test immediately passes alone, with both native and fallback paths. Retry output:The first gate continues through static builds for artifact evidence. I will rerun the complete gate with one test thread; this collision is not being waived. A final green head gate is still required.
First full-gate static link failed because the shared Cargo target retained CLI build-script output pointing at the removed historical checkout:
I removed that checkout too early. Native watches alone do not invalidate the CLI absolute linker-script path emitted by crates/infraternal/build.rs. All repository build.rs files and scripts/build-vt have now been touched without content changes, forcing build-script output to come from the branch worktree. No source fix or gate waiver is introduced.
Full scripts/verify fast restarted at unchanged pushed head
88e8a0dawith RUST_TEST_THREADS=1, PYTHONDONTWRITEBYTECODE=1 and TRACER_TEST_PORT=4298. First-run rows: fmt PASS; VT native fmt PASS; CLI plugin compile-out PASS; clippy PASS; cargo-deny PASS; test FAIL (the previously recorded transient port collision); static builds FAIL (stale linker-script path above). Final green gate is still required.Finished #198 at pushed size-ratchet head
88e8a0dad8. No deploy; no feature or crypto-provider removal. All final head gate rows pass. The initial transient port collision and stale historical linker-script path are resolved by the recorded isolated retry / full single-thread gate and fresh build-script watches, without source changes.Cuts:
722af2a3native sections save 317,312 / 305,728 B;5ae7cbf2concrete metadata helpers save 59,200 / 42,368 B. Archive exports (182), all 54 public skill/help pairs plus index/root help (110 outputs), and features are preserved. Gate allowance is zero; +1 B fails and shrink requires a downward ratchet. At 1,000 nodes total executable storage savings are 376,512,000 / 348,096,000 B, not an RSS or compressed-transfer claim.Growth by crate/feature (cargo-bloat diagnostic .text estimates; rounded, generic attribution overlaps; not additive feature-off file savings):
Clean historical development checkpoints (shipping x86_64 recipe; these are checkpoint intervals, not a linear sequence from production):
47f2b31b0510bd85bf28c10a7db21709dedcc2a3f2a4b36d73ce87a7bdf68a6c52f644775e383c3d85368c7fDirect production ancestry:
9ab4329c20,333,104 B →bdf68a6c22,469,168 B (+2,136,064 retained development features) → SSH repair +4,096 → mesh access +61,056 → inventory +46,496 = 22,580,816 B. Total production-to-dev growth: 2,247,712 B x86_64 / 1,874,600 B aarch64. Both production and original dev endpoint sizes are reproduced. The contaminated native-cache sweep is discarded.Retained costs requiring owner feature-loss decisions: mesh plugin/engine ~417 KiB text plus server/task glue; infraternal agent control/path growth 141.8 KiB; remote integration 40.9 KiB; server growth ~0.4 MiB; CLI adaptation 92.5 KiB; signed-update actions 47.3 KiB. Ring remains (D257). Disabling two AVX-512 AES-GCM functions (675,280 symbol bytes) would require D257's separate hardware-specific evidence; they remain. These are diagnostic text costs, not promised independent savings.
Evidence: docs/verification/size-ratchet/README.md, clean merge-sizes.tsv, both-arch artifact manifest, symbol/ELF accounting and raw locked perf-VM logs. Perf probes cover one real PTY and interleaved cold CLI starts; no fleet-scale latency claim. Metadata's 24–51 µs median startup cost is recorded against its 59,200 B x86_64 saving. Temporary historical checkout and perf VM job files are removed; build scratch is removed after this transcript is recorded.
Fresh final artifact identities (the retained artifact manifest identifies the earlier measured cut candidates, rather than claiming bit-for-bit rebuild reproducibility):
Fresh head vs metadata benchmark candidate public-output equivalence:
Fresh x86_64 and the metadata candidate have identical ELF section sizes/offsets, with 48,492 different bytes (42,566 rodata; 3,696 text; 2,132 data.rel.ro; 98 data). Source code is unchanged since the metadata cut; the final artifact is functionally verified separately. No bit-for-bit binary reproducibility or exact-hash runtime benchmark claim is made.
Final scripts/verify fast exit 0 on the head above. Environment: job CARGO_TARGET_DIR, unique TRACER_TEST_PORT=4298, RUST_TEST_THREADS=1, PYTHONDONTWRITEBYTECODE=1. Build-host test durations are functional diagnostics, not performance evidence. Complete stdout/stderr follows verbatim in ordered comments, SHA-256 268cbb89f7c201f2103c84f8ce49d0c45db4cfebeae646584ae967f51c95c65a (311539 bytes).
Final scripts/verify fast transcript 1/8; head
88e8a0dad8.Final scripts/verify fast transcript 2/8; head
88e8a0dad8.Final scripts/verify fast transcript 3/8; head
88e8a0dad8.Final scripts/verify fast transcript 4/8; head
88e8a0dad8.Final scripts/verify fast transcript 5/8; head
88e8a0dad8.Final scripts/verify fast transcript 6/8; head
88e8a0dad8.Final scripts/verify fast transcript 7/8; head
88e8a0dad8.Final scripts/verify fast transcript 8/8; head
88e8a0dad8.Independent review started on review-size-ratchet at target
88e8a0dad8. Requested local dev merge base:8e7467c07c; recorded implementation base:85368c7fdd. Read all 31 #198 comments and report; no parent issue is named. Reviewing the full requested range with #198 changes isolated. Fresh private build target; no push/deploy/perf VM use. Timing claims can only be assessed from retained evidence under this review brief.Independent verification step: origin/dev is
dcf9dbb9and its merge base with88e8a0dais85368c7f(the local dev branch is stale). Review isolates 24 changed paths / eight #198 commits. An isolated Rust harness compares base and target public metadata over 1,025 cases: empty/large/lazy iterators, duplicate properties, required order, Unicode/control descriptions, nested arrays and action defaults. All serialized bytes agree. No dependency/feature/contract changes in this range. Raw retained CLI p50/p95 and credited-flood arithmetic agree with the report; runtime probes are single-session, not scale acceptance. Fresh scripts/verify fast is still building; no confirmed finding.Independent evidence step committed locally:
c2e729b017on review-size-ratchet. Added docs/verification/size-ratchet-review/verify-metadata.py and metadata-differential.rs; 1,025 direct-Git base/target serialized-action comparisons pass, including constructor edge cases. Rust formatting, Python syntax and diff checks pass. No implementation changed and no push. Original-source scripts/verify fast has passed fmt, native fmt, compile-out, clippy, all 1,020 Rust tests and cargo-deny; both static builds remain in progress. No confirmed findings.Independent x86_64 shipping verification at review
c2e729b0/ implementation88e8a0da: fresh stripped static image is exactly 22,204,304 B; trust/linkage and locked key heap pass. Fresh native archive retains the same 182 public symbols. Public skill index has 54 actions and SHA-256 b8566728561e06f412ba4a2b4aced345b5f2239e0a688284c7e98e7b36cb009e, matching retained evidence. Functional tests on this shipping artifact pass: 24 abrupt-stop/restart cases, 4,710,396 payload bytes replayed exactly; four 12-MiB snapshot-credit floods with three 1-byte-credit pauses/funded snapshots and ring-wrap recovery. No runtime timing measurement. aarch64 and full gate still running; no confirmed findings.Independent original-source scripts/verify fast finished with exit 0. Implementation
88e8a0da; reviewc2e729b0adds only the proof harness. Both fresh exact caps reproduced: x86_64 22,204,304 B / aarch64 19,638,744 B. Both native archives retain 182 public symbols. All 1,020 Rust tests and all final TypeScript checks pass; no baseline retry or waiver. ARM key-memory runtime is correctly marked untested on this x86 host. Full stdout/stderr will be retained verbatim with the final review report; SHA-256 ca6727ff60d0f9e9b9b930e55aba2764b71a293ada1f2464522352c1e1d8aa99, 338416 bytes. Private original-base/first-cut replay is now running to independently verify per-cut savings. No confirmed findings.Independent review scripts/verify fast transcript 1/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 2/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 3/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 4/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 5/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 6/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 7/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 8/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 9/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent review scripts/verify fast transcript 10/10; implementation
88e8a0dad8, reviewc2e729b0(proof-only changes), exit 0. Build-host durations are functional diagnostics, not performance evidence.Independent replay observation (not yet a confirmed finding), review
c2e729b0:85368c7fin a private exported source root builds x86_64 at 22,580,880 B, 64 B above the recorded 22,580,816 B. ELF accounting differs only in .text (+64 B) and non-file .relro_padding (-64 B); all 110 public outputs match the fresh head. ARM base reproduces exactly at 19,986,840 B. Trust/static/strip checks pass. Evidence: review scratch rebuilt-cuts.json and baseline-section-difference.json. First-cut replay continues; a same-directory head control will determine whether the size gate is affected. No implementation change or severity assigned.Verdict: merge. MERGE (no P0/P1). Confirmed findings: P0=0, P1=0, P2=0, P3=0.
Reviewed implementation
88e8a0dad8against origin/dev merge base85368c7fdd. Local evidence branch review-size-ratchet head:ed36e82942. Atomic evidence steps:c2e729b0metadata proof,00d73d24checkpoint/control proof,42b465c4report/results, and this head's verbatim transcripts. No implementation fix, push, deploy or issue closure.Fresh head sizes: x86_64 22,204,304 B; aarch64 19,638,744 B, exact caps. Both archives retain 182 public API symbols. 1,025 metadata cases and all 110 public outputs match. Shipping x86_64 restart/credit/snapshot functional tests pass. ARM pre-cut and both first-cut measurements reproduce; exported pre-cut x86 varies +64 text bytes, but the same-directory head control still matches 22,204,304 B and passes the real checker. No current defect was confirmed.
Original-source scripts/verify fast exit 0, no retries or gate waivers. Result summaries total 1,022 passed / 0 failed / 135 existing ignored Rust cases; final protocol suite 37 pass / 0 fail / 34,463 assertions. Runtime timings were not independently remeasured because this brief prohibits the perf VM; retained summary arithmetic is verified. ARM key-memory runtime is explicitly untested on this x86 host.
Verbatim Rust gate output:
The complete 338,416-byte stdout/stderr is verbatim in docs/verification/size-ratchet-review/verify-fast.log and ten preceding ordered transcript comments; SHA-256 ca6727ff60d0f9e9b9b930e55aba2764b71a293ada1f2464522352c1e1d8aa99. Tool-output trailing whitespace is preserved exactly. Evidence and reviewer checklist: docs/verification/size-ratchet-review/README.md. Private review build targets, exported sources and measured binaries are removed after this record; committed evidence is retained.
Review cleanup complete at local review-size-ratchet head
ed36e82942. Private size-ratchet-review build targets, exported checkpoint sources and measured binaries removed. Committed evidence and the original-source fast transcript remain in docs/verification/size-ratchet-review/. Worktree clean; no implementation fix, push, deploy or perf VM use. Verdict remains MERGE (no P0/P1), zero confirmed findings.Started size-ratchet-r2 on branch size-ratchet-r2 at base
57b0c3ddca(origin/dev); worktree clean. Read all 49 #198 comments and the related #194 record; neither issue names a parent. First step: reproduce the +31,968 B x86_64 / +27,808 B aarch64 mesh-cutoff attribution against9894aff6with cargo-bloat and exact static artifacts, then cut under the existing D243 caps before continuing toward production size. No push or deploy until the branch changes are measured and gated.Finding: a fresh stripped static x86_64 build of branch head
57b0c3ddmeasures 22,275,888 B, +71,584 B above the exact 22,204,304 B cap. This is 39,616 B above the supplied 22,236,272 B dev measurement (+31,968 B); the current head includes later merges after9894aff6, so the extra delta is being isolated before attributing it. Build used the locked release recipe on infraternal-dev (12 CPUs; load 16.63/11.38/9.22 at start); artifact SHA-256 ffc23151af99d75160042402f1e0876ea13012afc1e71e49a26a0e0534ea6726. Raw build receipt: head-x86-build.log. ARM and crate attribution are pending.Finding: the locked release dependency graph does not expose a separable unused OpenSSL feature to drop.
openssl-sysis reached through server TLS (axum-server), vendoredopenssl, remote/agent transport and WebAuthn CA dependencies; removing the provider path would remove shipped server/auth behavior. No provider or feature change is made. Rawcargo tree --edges features --invert openssl-sysoutput: openssl-feature-graph.txt.Finding: the supplied +32 KB dev overrun comes from mesh-cutoff-fast (#173). I ran the same locked x86_64 release cargo-bloat profile against
8fcf34db(c75 first parent) andc75c362b.infraternal_plugin_meshgrew from 545.1 KiB to 568.8 KiB of.text(~23.7 KiB); the full.textis 16.6 MiB on both rounded tables. The measured stripped artifacts are 22,204,304 B → 22,236,272 B (+31,968 B) x86_64 and 19,638,744 B → 19,666,552 B (+27,808 B) aarch64. This confirms the merge as the cap overrun source; no source changes have been made yet.Receipts: parent cargo-bloat, merge cargo-bloat, unrounded merge JSON.
Finding: the unmodified
57b0c3ddx86_64 release artifact (SHA-256 ffc23151af99d75160042402f1e0876ea13012afc1e71e49a26a0e0534ea6726) fails the perf-VM same-session flood budget before any size change. On infraternal-perf-test (4 cores, start load 0.06/0.03/0.19), 100-sample same-session Ack/PTY echo p99 was 597.14/619.26 ms versus baseline PTY echo p99 325.17 ms, growth +294.09 ms against 16.67 ms. Baseline and separate-session flood p99s passed (325.02/325.17 ms and growth −10.60 ms). I’ll retain these as the pre-change comparison and still collect terminal.open.Receipt: perf-before.log.
Candidate profile iteration finding:
scripts/verify iteratepassed fmt, VT native fmt, CLI plugin compile-out, clippy, and cargo-deny. The workspace test row failed: 95 passed, 2 failed, 14 ignored.remote_client::server_path::tests::component_down_proves_tcp_fallback_when_enrolled_udp_is_unavailablegotDisconnectedinstead ofFallbackatcrates/infraternal-agent/src/remote_server_path_tests.rs:657;parked_fallback_recovers_mesh_and_keeps_control_actions_usabletimed out at line 813. The change only touches release profile settings. Sequential rechecks are running with the existing scratch target.Receipt: iterate-cold-profile.log.
Recheck:
CARGO_TARGET_DIR=.../target-iterate cargo test --locked --workspace remote_client::server_path::tests:: -- --nocapture --test-threads=1executed the full-workspace variants of the two fallback tests that failed in the first iterate run. Result: 10 passed, 0 failed, 1 ignored, 100 filtered out, finished in 3.27 s. The first gate failure was transient; fullscripts/verify iterateis being rerun with the warmed target.Receipt: iterate-fallback-workspace-recheck.log.
Candidate-profile iterate rerun passed on
57b0c3ddca. Full workspace checks completed; TypeScript reported 37 pass, 0 fail, 34,463 expect() calls. The earlier two fallback timeouts did not recur. Raw gate log: iterate-cold-profile-rerun.log.Profile candidate performance A/B on the locked 4-vCPU perf VM (CPUWeight=10000). At RTT=0, terminal.open n=300 per run: median p50 was 13,413 µs before and 13,499 µs after; median p95 was 22,175 µs before and 19,063 µs after. p99 varied by run (37,210 µs before; 52,659 µs after) while load rose during one after run, so the tail is inconclusive. At RTT=300 ms, paired n=100 baseline echo p99 was 323.49 ms before and 327.07 ms after (334 ms budget); other-session flood p99 was 297.80/323.70 ms and passed both; same-session flood p99 was 570.84/533.48 ms and failed both. Repeated samples showed high same-session variation, with no consistent regression from the cold plugin profile change. Receipts: before latency, candidate latency, paired terminal.open.
First size cut measured on static stripped release artifacts. x86_64: 22,275,888 B base → 22,111,120 B candidate (−164,768 B), now 93,184 B under the existing 22,204,304 B cap. aarch64: 19,704,712 B base → 19,581,800 B candidate (−122,912 B), now 56,944 B under the existing 19,638,744 B cap. The caps are ratcheted to the exact candidate sizes. This keeps all features; only the release and host-facts plugin crates use opt-level s while terminal and mesh data paths retain speed optimization. The x86_64 artifact still needs 1,778,016 B of cuts to reach the 20,333,104 B production target. Receipts: x86 base, x86 candidate, aarch64 base, aarch64 candidate.
Finalized-diff
scripts/verify iteratefailed ininfraternal-servertests: 417 passed, 6 failed, 46 ignored; test runtime 496.82 s. Failures: mesh lifecycleElapsed(()); pending mesh writers (control_ms=402, pong false); full input writer closed websocket; saturated native control queue completed early; remote renewal publication TLS write failure; renewal identity missing. The build host load reached 18.31 / 22.20 / 21.55 on 12 CPUs during this run. These failures are timing/concurrency sensitive, but I have not attributed them to host load yet. Raw log: iterate-finalized-diff.log. I will rerun the failed rows when load recedes; eligible auth socket timeout failures will also be checked against the detachedorigin/devbaseline per the gate rule.Isolated reruns on the candidate branch used one test thread under host load ~21.8–22.8. Five of six previously failed rows passed individually, including the mesh lifecycle timeout, authority-pool assertion, control-queue assertion, and both renewal tests.
review_full_input_writer_preserves_browser_control_progressstill failed atreview_input_credit.rs:392with an absent websocket message; this is the auth socket timeout case eligible for the detachedorigin/devcomparison. Receipt: isolated reruns.The auth socket timeout did not reproduce consistently. The isolated candidate rerun passed (1/1, 0.96 s); the detached
origin/devbaseline also passed (1/1, 1.04 s) under load 14.94 / 20.03 / 21.34. All six initially failed rows passed at least one isolated rerun; the first parallel-run failures are not reproducible in the single-row reruns. Receipts: candidate retry, dev baseline. I’ll rerun the full iterate suite with serial test threads to avoid cross-test contention on the shared build host.The finalized candidate diff passed
scripts/verify iteratewithRUST_TEST_THREADS=1to avoid unrelated test contention on the shared host. All Rust test rows passed; TypeScript protocol tests reported 191 pass / 0 fail / 11,387 expectations, and tracer tests reported 37 pass / 0 fail / 34,463 expectations. Gate output:ITERATE gate passed. This is not the final gate: run scripts/verify fast before reporting done.Raw log: iterate-serial-retry.log.Committed and pushed
c7c52694tosize-ratchet-r2. The commit sets the measured x86_64/aarch64 caps to 22,111,120 B / 19,581,800 B and adds the two cold plugin profile overrides; savings are 164,768 B / 122,912 B.scripts/verify iteratepassed with serial test threads. Output:ITERATE gate passed. This is not the final gate: run scripts/verify fast before reporting done.Receipt: iterate-serial-retry.log.Next size cut starts at commit
c7c52694(x86_64 22,111,120 B; 1,778,016 B remains to the production target). I’m implementing D264’s targeted removal of OpenSSL AVX-512 AES-GCM code in the static x86_64 build while retaining AES-NI/AVX2 and the AES-GCM functionality; the build-time patch and exact savings will be measured before ratcheting the cap.D264 x86_64 static candidate measured at 21,407,568 B, down 703,552 B from the 22,111,120 B pre-cut artifact. All features remain; the provider dispatch falls back to AES-NI/generic AES-GCM. The patched static libcrypto passed an AES-128-GCM known-vector encrypt/decrypt check. 1,074,464 B remains to the 20,333,104 B production target. Receipts: D264 x86 build, AES-GCM test.
D264 perf comparison completed on the 4-vCPU perf VM (Intel i9-9900K; AES-NI/AVX2 present, AVX-512 absent). All runs used
systemd-run --user --scope -p CPUWeight=10000.terminal.open, n=300: before 22,111,120 B, p50/p95/p99 23,773.3/63,163.1/131,590.3 us; after 21,407,568 B, 16,433.6/48,326.9/69,562.7 us.Receipts: terminal open before, terminal open after, echo baseline, echo candidate, perf VM CPU features.
The first serial iterate reached the Rust test row, but four mesh
node_statetests failed when their helper tried to create a directory below the package-roottarget/path (node_state.rs:165,ENOENT). The gate invocation had noCARGO_TARGET_DIRin its environment. Running the same four tests withCARGO_TARGET_DIRset to the absolute worktree target passed 4/4. I’m rerunning the complete iterate gate with that environment; no product test code changed.Receipts: failed iterate log, node state rerun.
The full iterate retry with absolute
CARGO_TARGET_DIRstopped at the 3-sample latency-proxy self-check before Rust gates: p50 328.14 ms / p99 377.37 ms. The host load was 23.45 / 20.52 / 21.26 shortly afterward. An isolated retry passed at p50 312.75 ms / p99 322.56 ms. I’ll rerun the full gate after shared host load eases.Receipts: full iterate attempt, isolated self-check retry.
The full iterate run with absolute
CARGO_TARGET_DIRcompleted the workspace tests with 421 passed, 2 failed, 46 ignored. The failures weresaturated_native_control_queue_does_not_hide_primary_terminal_outputandfailed_publication_retains_original_admission_without_interrupting_terminal. The control-queue test passed when rerun alone from the exact workspace test binary (1/1). The renewal-ack test failed alone while the host load was 54.47 / 44.26 / 31.12; its peer reader closed before the expected application frame. The same test had a TLS write error in the full run. I’m rerunning the renewal-ack test after host load eases, then I’ll rerun the full gate; neither failure is being waived as a baseline exception.Receipts: full iterate run, control-queue rerun, renewal-ack rerun.
The host remains under heavy concurrent load; the latest load averages are 76.32 / 65.95 / 46.91. The exact renewal-ack test and full iterate gate remain pending a reliable rerun. No owner input is needed; I’ll retry when host load eases.
Receipt: host load.
The shared host has not eased; current averages are 86.54 / 80.73 / 60.97. I have not repeated the timing-sensitive renewal-ack test under this load. The next actions remain the isolated renewal rerun and full iterate gate when scheduling is reliable.
Receipt: current host load.
The isolated
failed_publication_retains_original_admission_without_interrupting_terminalrerun still failed: the peer reader closed before the expected frame (remote_renewal_ack_tests.rs:36) after 5.62 s. Host load at completion was 64.02 / 76.91 / 64.74. This remains a gate failure, not a baseline waiver. I’ll retry once host load falls further, then rerun the full iterate gate.Receipt: renewal-ack retry.
The latest full iterate attempt again stopped at the initial 3-sample latency-proxy check after release tests: p50 341.77 ms / p99 405.24 ms. An isolated self-test passed shortly before it at 305.61 / 341.87 ms. This remains a failed gate; I’ll retry when the host is more stable.
Receipts: full iterate attempt, isolated proxy check.
D264 gate step complete at candidate worktree head
c7c52694(D264 changes uncommitted). The CPU-weightedscripts/verify iteraterun completed successfully. The x86_64 candidate is 21,407,568 B, 703,552 B below the prior 22,111,120 B cap; remaining gap to production is 1,074,464 B. Full raw log: d264-iterate-weighted.log. Gate output, verbatim:D264 committed and pushed to
size-ratchet-r2:357f321f(Cut unused AVX-512 AES-GCM from x86 release). The x86_64 exact cap is 21,407,568 B; cut from the preceding 22,111,120 B candidate: 703,552 B. The weighted iterate gate passed (full log attached in the prior comment). A separate commit-hook proxy self-test reported p50 499.39 ms / p99 784.35 ms under shared load; an isolated CPU-weighted rerun passed at p50 305.08 ms / p99 328.15 ms, n=31: raw output. Exact rerun output:D264 size-attribution finding at commit
357f321f:cargo-bloaton the x86_64 release reports 15.6 MiB.text, including 2.5 MiBinfraternal_server, 557.7 KiBinfraternal_plugin_mesh, 457.2 KiBinfraternal_agent, and 363.6 KiB rootinfraternal; 3.3 MiB maps to native/unattributed symbols. The function report identifies a 71.6 KiB mesh execute closure, 33.5 KiB agent channel closure, and 37.6 KiB root invocation function. These are approximate LTO symbol attributions. Logs: crate table, largest functions. The diagnostic rebuilt an unstripped binary (56.7 MiB); the shipping stripped artifact remains governed by the exact gate measurement of 21,407,568 B.Size experiment at
357f321f: LLD--icf=safeproduced a 21,402,896 B x86_64 static binary, saving 4,672 B (0.02%) from the 21,407,568 B baseline. The linker conservatively skipped native archive objects whose ADDRSIG sections lack a valid link. This does not materially advance the 1,074,464 B production gap, so no linker setting will be retained. Build log: candidate output.D265 finding: the clean x86_64 CLI opt-level candidate (24,467,728 B, SHA-256
4ef9deca1045952424ea059a30b505738c73db25fc3325ea715ae614fe9ddd84) fails the realterminal.openprotocol fixture on its first request withterminal unavailable / invalid. The D264 binary completed n=300 opens (p50 57,354.8 us; p99 98,600.7 us) in the same perf VM window. No candidate timing was produced because the protocol request failed. Raw receipts: baseline, candidate failure, clean build. The package opt-level change is not shippable as-is.D265 isolated
clap_builderopt-levelsfinding: x86_64 size fell from 21,407,568 B to 21,329,360 B (−78,208 B), but the realterminal.openfixture failed on the first request withterminal unavailable / invalid. The D264 baseline passed n=300 (p50 52,377.9 us; p99 93,637.9 us). Candidate--helpandskill status --jsonsmoke commands passed, but the protocol regression makes this profile change unusable. Receipts: build, help, skill status, baseline protocol run, candidate failure. No cap change is proposed for this candidate.scripts/verify iteratestopped before the Rust gates at the configured latency-proxy self-test: 300 ms RTT expected, p50 323.17 ms and p99 507.13 ms, build-host load 44.50 / 45.97 / 48.05. The repository artifact gate, release functional checks (15 Python tests and 3 TypeScript tests), and the proxy self-test's 3 Bun tests passed first. This is not one of the documented #118 host-load exception rows; rerunning the iterate gate when host load is lower. Raw log: iterate attempt.Axum feature-prune candidate saves 9,984 B (21,397,584 B), but
terminal.openfailed withterminal unavailable / invalidat perf-VM load 3.96/3.67/5.99. D264 passed the same n=300 real-protocol probe at load 12.14/5.01/5.21 (p50 53,267.1 us, p95 79,474.6 us, p99 90,805.5 us); it also passed at load 19.46/16.63/10.74. Receipts: candidate, D264 high-load control, D264 lower-load control. I’m rebuilding the feature-prune candidate from a clean target before deciding whether to discard it.Correction: the attachment links in my previous comment had two transcription errors. Correct links: candidate, D264 high-load control, D264 lower-load control.
Clean-target Axum-prune build passed: 21,397,584 B (9,984 B below D264), SHA-256
9b829137b8585d2aec5346076ccb4b6500562f6ad9f046b7020c57e3ecf5ccb2; static PIE, stripped, no PT_INTERP;--helpandskill status --jsonsmoke passed. Receipts: build, artifact and smoke. The n=300 terminal-open perf-VM run is queued behind the shared measurement lock; no cap change yet.Feature-graph receipt attached: the candidate retains Axum HTTP/1, JSON, Tokio, tower-log, tracing, and WebSocket features. The only removed Axum defaults are form, query, matched-path, and original-URI extractors; source search found no uses of those extractors.
feature graph
Resuming #198 on branch size-ratchet-r2, head
357f321fdc, based on dev57b0c3ddca(the recorded branch base; origin/dev has since advanced). Issue history records no parent issue. The worktree contains the pending Axum feature-prune candidate in Cargo.toml and Cargo.lock. I’m completing its perf-VM protocol comparison before deciding whether it can be committed.Finding: a fresh CARGO_TARGET_DIR release build of the pending Axum feature-prune candidate measures 21,397,584 B x86_64, saving 9,984 B from D264’s 21,407,568 B. The artifact is stripped static PIE with no PT_INTERP; production-trust and the 8 MiB key-memory check pass. SHA-256: 9ee937825a355ed5ba78b88a8e26d587dca55586c8e5cfa101c2639fbe5bd74e.
cargo tree --locked -e featuresconfirms Axum retains http1/json/tokio/tower-log/tracing/ws; repository search finds no use of the removed Form, Query, MatchedPath or OriginalUri extractors. Build log: axum-clean-build.log. Perf-VM real-protocol comparison is still queued; no cap change or commit yet.Finding: the freshly rebuilt clean candidate (SHA-256 9ee937825a355ed5ba78b88a8e26d587dca55586c8e5cfa101c2639fbe5bd74e) passes the build-host functional real-agent fixture: terminal.open/type/output/exit passes, and all 24 abrupt-stop/replay cases pass over 4,710,396 payload bytes. This functional mode emits no timing metrics. The prior perf-VM refusal was from the earlier candidate artifact; the new artifact’s perf-VM comparison remains queued. Receipt: agent-functional.log.
D265 control measurement on
infraternal-perf-test, 4 vCPU, under the weighted scope: terminal open over 100 real-agent protocol samples measured p50 20.675 ms, p95 47.255 ms, p99 59.119 ms; load average was 3.30 at start and 3.20 at end. Control log: open-d264-control.log. Candidate measurement is queued on the same lock.The Axum candidate iterate run passed fmt, CLI plugin compile-out, clippy, and all Rust tests (server: 423 passed; shim: 80 passed).
cargo denyreports four advisories for rustls 0.23.45 (RUSTSEC-2026-0346 through -0349); this lane base predates the patch already present onorigin/dev(0.23.46). I will update that lock entry in a separate security commit. Full transcript: iterate-axum-candidate.log.The lockfile now selects rustls 0.23.46, matching current
dev;cargo deny checkpasses (advisories ok, bans ok, licenses ok, sources ok). This is a patch update of the existing transport stack (D176), separate from the Axum feature removal. cargo-deny-rustls046.logCommitted the separate security patch as
097128c4(rustls 0.23.45 → 0.23.46).cargo deny checkpasses: advisories, bans, licenses and sources all ok. Transcript: cargo-deny-rustls046.log.Release
cargo bloat --crateson the Axum candidate reports.text15.6 MiB; attribution: server 2.5 MiB, OpenSSL C 1.2 MiB, plugin-mesh 557.7 KiB, agent 457.2 KiB,infraternal363.6 KiB, Rustls 354.0 KiB, and 3.3 MiB unknown/native. The bloat artifact retains symbols (56.7 MiB file) and is attribution only, not the shipping size. Transcript: bloat-axum-x86-crates.log.The first perf VM run for
axum-clean-rebuiltfailed before timing: the real agent protocol returnedterminal unavailable, reasoninvalid(load 0.44 at start). The same x86 artifact passed the local functional agent fixture. I’m inspecting the perf harness state/request and will not treat this as a pass. open-axum-clean-rebuilt-failure.logResolved the failed VM attempt: the fixture appends
/sessions/<32 hex>.sockand.upstreamto each state path, both of which must be under the 108-byte AF_UNIX limit (harness/scripts/agent_fixture.py:41-55). The long label produced 112/116 bytes; short labelqproduces 95/99 bytes. The candidate rerun usesq; no binary source changed for this correction. open-state-path-lengths.txtClean x86_64 release candidate (Rustls 0.23.46 plus Axum extractor feature prune): 21,403,120 B, 4,448 B under the existing 21,407,568 B cap; remaining gap to production’s 20,333,104 B is 1,070,016 B. Production-trust and 8 MiB key-memory checks pass. AArch64 size is building. Receipts: size and trust checks, build log.
Function-level
.textattribution shows the largest actionable bodies:auth::http::execute88.5 KiB,runtime::build_router_core81.4 KiB,MeshService::execute71.6 KiB,runtime::remote_router57.0 KiB,embedded::run_actor48.9 KiB andbootstrap_api::run41.7 KiB. These server and mesh paths need measured design changes to retain behavior; no generic-dispatch rewrite is included in this slice. bloat-axum-x86-functions.logClean AArch64 release candidate is 19,576,520 B, 5,280 B below the existing 19,581,800 B cap; static linkage and production-trust checks pass. Its protected-key runtime check remains for the native AArch64 gate. x86 remains 21,403,120 B (4,448 B below cap, 1,070,016 B above production target). Receipts: AArch64 size/trust, build log. The short-path real-protocol perf run is still queued.
Finding: the corrected short-label Axum candidate (
q, Rustls 0.23.45; 21,397,584 B) passed realterminal.openn=100, but measured p50 44,551.7 µs / p95 60,295.8 µs / p99 68,027.5 µs (load average 3.39→3.36). D264 control measured p50 20,675.0 µs / p95 47,254.5 µs / p99 59,119.2 µs (load 3.30→3.20). The runs are in different lock windows, so the slower candidate result is not attributed to the feature cut yet; no size cap or commit change is accepted pending a paired comparison. Candidate receipt: open-axum-clean-short.log; control: open-d264-control.log.Finding:
h2remains reachable in the shipping dependency graph throughaxum-server'sserver-autofeature, which enableshyper-util/http2andhyper/http2; pruning it would remove an active server protocol.cargo bloat --cratesattributes about 248.5 KiB of.texttoh2(approximate with LTO). Feature path receipt: h2-feature-path.txt; size attribution: bloat-axum-x86-crates.log.Axum feature-prune candidate iterate gate passed: fmt, VT native fmt, CLI plugin compile-out, all-target Clippy, Rust workspace tests, cargo-deny, tracer TypeScript tests, TypeScript protocol tests (37 passed, 0 failed). The exact Rustls 0.23.46 static candidate measures x86_64 21,403,120 B and AArch64 19,576,520 B; both match the proposed exact caps and pass production trust checks. x86_64 protected-key runtime check passed; AArch64 runtime check requires native execution. Full iterate transcript: iterate-axum-rustls046.log. Paired perf comparison is pending before commit/cap ratchet.
Paired D264/current-candidate performance comparison remains queued on the shared perf-VM lock and has not started. The exact .46 candidate (21,403,120 B) and D264 baseline (21,407,568 B) are staged and SHA-verified. One lock window will run 300 terminal opens and 100 RTT-300 ms keystroke/echo samples per binary. The Axum size ratchet remains pending that result.
Finding: the first paired
flock -w 3600request exited 1 after about an hour with an empty output log; no benchmark entered its measurement scope and no timing was produced. I am requeuing the same D264/candidate comparison under the shared lock as instructed.Axum feature-prune candidate paired against D264 on the perf VM, one locked window, 4 cores, CPUWeight=10000; load average 2.56 1.79 1.30 at start and 0.29 0.77 0.98 at end. Real-protocol terminal open n=300: D264 p50/p95/p99 346.373/378.342/414.816 ms; Rustls .46 + Axum-pruned candidate 350.993/378.268/388.873 ms (+4.620 ms p50, unchanged p95, −25.943 ms p99). RTT300 echo/PTY n=100 passed the 334 ms p99 budget for both binaries, and flood isolation passed the 16.67 ms growth budget. Candidate baseline echo/PTY p99 324.71/324.73 ms; under other-session flood 299.73/299.80 ms. Repeating terminal-open in reverse order to resolve the small p50 difference before accepting the size cut. Receipt: perf-paired-rustls046.log.
Self-review finding:
docs/PROCESS.mdreferenceddocs/verification/size-ratchet/README.md, but that path is absent from this branch (rg --files docs | rg size-ratchetreturned no match). Updated the size section to point attribution, retained feature costs and runtime tradeoffs to #198, where the receipts and findings are recorded.Reverse-order terminal-open pair finished on the perf VM under one lock, 4 cores, CPUWeight=10000; load average 1.31 1.73 2.24 at start and 0.30 0.98 1.82 at end. Candidate first, n=300: p50/p95/p99 348.769/372.860/417.925 ms. D264 second, n=300: 346.953/370.570/385.001 ms. Candidate deltas were +1.816 ms (+0.52%) p50, +2.291 ms (+0.62%) p95 and +32.924 ms (+8.55%) p99. Together with the prior D264-first pair (+4.620 ms p50, −0.074 ms p95, −25.943 ms p99), p50 is consistently slightly higher while tail results vary. The prior paired echo run passed the 334 ms p99 and 16.67 ms flood-growth budgets. Receipt: perf-open-reverse-rustls046.log.
Size control resolved the Axum cut decision. With the Rustls 0.23.46 advisory update and committed Axum defaults, shipping static sizes are x86_64 21,409,072 B (+1,504 over the unchanged 21,407,568 B cap) and AArch64 19,582,344 B (+544 over 19,581,800 B). Disabling only the unused form/query/matched-path/original-URI extractor features yields the already measured candidate 21,403,120 B and 19,576,520 B, saving 5,952 B and 5,824 B from the .46 defaults and staying below both old caps. The feature-tree and Rust source review found no uses of the removed extractors; iterate passed. This makes the prune necessary to carry the advisory update without raising the caps. Terminal-open pair measurements show +1.816 to +4.620 ms p50, p95 within −0.074 to +2.291 ms, and variable p99; RTT300 echo and flood checks passed. New exact caps are ratcheted to candidate size. The production x86 target remains 1,070,016 B lower. Control receipt: unpruned-rustls046-static-size.log.
Committed and pushed
a2feac5bfetosize-ratchet-r2. Axum now omits unused form/query/matched-path/original-URI extractor features; exact caps are 21,403,120 B x86_64 and 19,576,520 B AArch64. The .46 default-feature control measured 21,409,072 B (+1,504 over prior cap) and 19,582,344 B (+544); the cut saves 5,952 B / 5,824 B.scripts/verify iteratepassed: server 423 passed, 46 ignored, 0 failed; TypeScript protocol 37 passed, 0 failed. Paired terminal-open and echo measurements plus static control receipts are attached in the preceding comments. Fullscripts/verify fastremains for branch head.Final
scripts/verify fastpassed all rows through cargo-deny. The static x86_64 and AArch64 artifacts both passed trust, static linkage, key-memory where native, and exact-size checks (21,403,120 B and 19,576,520 B), but the static-size boundary fixture failed withTypeError: 'NoneType' object is not subscriptableatscripts/test-static-size.py:32. The gate printscap: <bytes> bytes; the fixture parser still searches formax <bytes>. Full failed transcript: fast-final.log. I’m reproducing the focused failure before fixing the parser.Committed and pushed
3f9efe8323. The focused static-size boundary test now passes exact cap, cap+1 rejection, downward ratchet, and unsupported target for both architectures. Before/after receipts: static-size-parser-before.log, static-size-parser-after.log. The prior fast run failed only at this parser; rerunningscripts/verify faston the new head now.Finished on pushed head
3f9efe8323a0eba3a5029702d9332f5f8225a139(size-ratchet-r2); worktree clean. No deployment.The Axum extractor prune removes no in-use server or fuzz extractor path. Against Rustls .46 with Axum defaults, static size was 21,409,072 B x86_64 (+1,504 over the existing cap) and 19,582,344 B AArch64 (+544). The prune saves 5,952 B and 5,824 B, preserving the unchanged caps; both new caps are ratcheted to exact shipping size. Paired real-protocol terminal-open n=300 measurements: D264-first candidate p50/p95/p99 350.993/378.268/388.873 ms vs 346.373/378.342/414.816 ms; reverse-order candidate 348.769/372.860/417.925 ms vs D264 346.953/370.570/385.001 ms. RTT300 echo and flood checks passed their 334 ms p99 and 16.67 ms growth limits. Full feature and latency receipts are attached above.
Remaining measured
.textattribution (cargo-bloat, approximate; these are retained feature costs, not directly recoverable savings): server 2.5 MiB; OpenSSL C 1.2 MiB; plugin-mesh 557.7 KiB; agent 457.2 KiB; quinn-proto 432.7 KiB; CLI crate 363.6 KiB; Rustls 354 KiB; infraternal-mesh 106 KiB; h2 248.5 KiB; unattributed/native 3.3 MiB. The server, agent, mesh, remote QUIC/TLS and HTTP/2 paths are active features. Replacing the crypto path previously saved 394,528 B but raised connection CPU 95% and regressed handshake latency; reducing the CLI profile saved 78,208 B but failed the realterminal.openprotocol test. Further removal of these paths loses features or needs an owner-level engine decision. No safe feature-preserving cut identified in this lane reaches the remaining 1,070,016 B.Final
scripts/verify fasttranscript: fast-final-3f9efe83.log (303,932 bytes). Gate summary, verbatim:Server suite:
test result: ok. 423 passed; 0 failed; 46 ignored; 0 measured; 0 filtered out; finished in 333.47sTypeScript protocol suite, verbatim:
Started independent review on branch
review-size-ratchet-r2, head3f9efe8323a0eba3a5029702d9332f5f8225a139, diff base withorigin/dev57b0c3ddca8e190f674071e39dcc0aed1ca76cf6.Review step complete at implementation head
3f9efe8323: read the project rules, #198 history, the related #194 record, the job report, and the diff from base57b0c3ddca. The diff changes 11 paths and no contracts; no functional finding is confirmed yet. Proceeding to independent gates.Review validation limit: the brief requests at least 10 interleaved terminal-open pairs on the perf VM, then explicitly says never to use the perf VM. I will honor the prohibition. Existing #198 evidence has two n=300 pairs with p50 deltas +4.620 ms and +1.816 ms, but does not supply the requested 10-pair confidence interval. I cannot confirm or exclude a reliable latency regression here; this remains unassessed and is not a confirmed P1 finding.
Independent gate step complete on implementation head
3f9efe8323. Static results: x86_64 21,403,120 B and AArch64 19,576,520 B, both exact caps; the OpenSSL AES-128-GCM vector and both architecture boundary fixtures pass. The first full fast gate hasclippyandtestFAIL (101) from missing OpenSSL build-source and Cargo fingerprint paths (ENOENT); fmt, VT fmt, CLI compile-out, cargo-deny and static builds pass. Full transcript:$HOME/.cache/codex-scratch/size-ratchet-r2-review/fast.log. I’m rerunning the affected rows with the warmed target to determine whether the path loss reproduces.Second independent fast-gate run on
3f9efe8323:clippynow PASS (757s), cargo-deny PASS, and static builds PASS at exact caps 21,403,120 B x86_64 / 19,576,520 B AArch64. The OpenSSL patch test and AES-GCM vector pass. The workspace test row still fails (101), this time because rust-lld cannot open manytarget/debug/deps/*.rlibpaths during theinfraternal-serverenrollment-test link; no assertion failure is reported. I’m retrying the workspace test with serialized Cargo builds to determine whether this is target artifact loss under parallel compilation.Transcript:
$HOME/.cache/codex-scratch/size-ratchet-r2-review/fast-retry.log.The serial workspace-test retry is queued on the required host build-slot wrapper and has not acquired a slot; its log is empty. No source change is needed. I’m waiting for slot availability before the final retry.
Update: the serialized workspace-test retry remains queued at 11:48 local time; the log is still empty. Build-slot availability is the only outstanding operational dependency before I can complete the test retry and final gate.
Update at 12:08 local time: the serial workspace-test command remains queued behind the required build-slot wrapper and its log is still empty. The review cannot establish the test row result until a slot becomes available.
Serialized workspace-test retry completed with exit 101, but again failed before assertions: rustc could not write
target/debug/deps/libinfraternal_mesh-….rmetabecause the parent path no longer existed. The wholetarget/debugdirectory is absent after the command;dfshowed 69 GB free, and repository script search found no target/debug cleanup. The first run lost OpenSSL source paths; the second lost debug rlibs. I’m retrying under a differently named scratch CARGO_TARGET_DIR to avoid the disappearingtarget/debugpath.Transcript:
$HOME/.cache/codex-scratch/size-ratchet-r2-review/workspace-test-serial.log.Update at 12:48 local time: the alternate
build-cachetarget-root workspace-test retry is still queued on the host build-slot wrapper; its log remains empty. Static builds passed in both complete fast-gate attempts. I cannot resolve the workspace test until a build slot is released.Review complete at head
3f9efe8323(branch review-size-ratchet-r2; base57b0c3ddca).Verdict: MERGE (no confirmed P0/P1). Findings: P0=0, P1=0, P2=0, P3=0. No test commits were made because no code failure was confirmed.
git diff --checkpassed.scripts/verify faston the reviewed head exited 1; the gate summary was:+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| CLI plugin compile-out | PASS |
| clippy | PASS |
| test | FAIL (101) |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
The test failure was rustc unable to write into a missing
target/debug/depsdirectory before assertions ran. Static builds measured 21,403,120 B (x86_64) and 19,576,520 B (AArch64); AES-GCM vector and both size-boundary fixtures passed. An isolated workspace run passed 91 test groups before the shim mouse helper stopped becausezigwas absent from PATH; rerunning that test with the cached Zig 0.15.2 passed 1/1. The full corrected workspace rerun did not complete.The requested perf-VM A/B was not run because this brief also explicitly prohibits perf-VM access. The two existing pairs remain insufficient to determine whether the reported latency delta is reliable; no P1 latency finding is confirmed.
Started the size-ratchet-r2 paired A/B on branch
ab-checks, based atorigin/dev65d6421492. The worktree is clean. Next I’ll build both revisions with matching settings, then run at least 10 interleaved terminal-open pairs on the locked perf VM and report percentile deltas with bootstrap 95% CIs.Built the terminal-open comparison artifacts on the build host at unchanged worktree HEAD
65d6421492. Both were built with Rust 1.99.0, Zig 0.15.2,--release --locked, targetx86_64-unknown-linux-musl, and the same cargo target directory.65d64214926e4b799e53a0b442bf97a4756d8c7b27bd848e85eb552b7c7915b157472a2be4278e6beda3017619785fcee75567453f9efe8323a0eba3a5029702d9332f5f8225a139eba4983d4aa74ee7fe8d1bc1fc03e8ca1b75c2c4cd89fe101339430af18e5926Artifacts are staged under
/root/infraternal-bench/ab-checks/on the perf VM. No timing data collected yet.Terminal-open A/B complete: dev vs
origin/size-ratchet-r2(3f9efe83), 10 interleaved pairs, 300 opens per trial, same x86_64-musl release build settings, existing harness at configured RTT 300 ms, on the 4-vCPU perf VM. Baseline/candidate columns are medians across pairs; delta is the median paired candidate-minus-dev difference. CIs are paired bootstrap percentile 95% intervals (50,000 resamples).All three CIs include zero. One isolated r2 pair had p99 558.969 ms vs 400.317 ms for dev; it is retained in the raw samples and the paired summary. Per-pair 1/5/15-minute load averages are recorded at pair start/end in ab-results.json; all 300 samples per trial are in open-phase.log.
HEAD:
65d64214926e4b799e53a0b442bf97a4756d8c7b; no repository files changed.Full
scripts/verify faston unchanged HEAD65d64214926e4b799e53a0b442bf97a4756d8c7bexited 1 after 3,323 seconds. Transcript: verify-fast.logGate summary (verbatim):
Workspace tests: 420 passed, 3 failed, 46 ignored. Failures were
browser_input_overload_retires_only_the_terminal_stream,review_mesh_watch_reports_liveness_expiry_without_another_edit, andsaturated_native_control_queue_does_not_hide_primary_terminal_output. The first two are auth socket timing tests; the third is remote control queue delivery.Static binary caps: x86_64 was 22,277,392 bytes against 22,204,304 (+73,088); aarch64 was 19,705,112 bytes against 19,638,744 (+66,368). The isolated test rerun is in progress and will be added as a follow-up.
Finished the #198 A/B measurement. No source changes or commits; HEAD
65d64214926e4b799e53a0b442bf97a4756d8c7bequals the merge base withorigin/dev.The requested terminal-open A/B verdict is no measurable regression. The three workspace test failures each passed when rerun individually (1 passed, 0 failed); logs: credit test, liveness test, remote control queue test. The #198 result table and per-pair load averages are in the earlier measurement comment and attached raw results.
The full gate still exits 1 because of those three workspace failures and both static-size caps. Isolated reruns passing does not change the full-gate result. x86_64 stripped static size is 22,277,392 bytes on HEAD and merge base (delta 0 bytes); it exceeds the 22,204,304-byte cap by 73,088 bytes. aarch64 is 19,705,112 bytes, 66,368 above its 19,638,744-byte cap.
Final
scripts/verify fastsummary (verbatim):Transcript: verify-fast.log
Started merge-ready rebase for size-ratchet-r2 on branch
size-ratchet-r2, current head3f9efe8323a0eba3a5029702d9332f5f8225a139, clean worktree; refreshedorigin/devis40cc9c5be9b863ab23a92dfeca9e46cc726737aa. Read #198 history; it names no parent issue. The recorded review verdict is MERGE and the 10-pair perf-VM A/B found no measurable terminal-open regression. Next: rebase onto dev, measure exact release sizes for dev and branch, preserve or lower the exact caps, runscripts/verify fastthrough build-slot, then force-with-lease push this branch.Rebased
size-ratchet-r2ontoorigin/dev40cc9c5be9b863ab23a92dfeca9e46cc726737aawithout conflicts. Four commits replayed; the Rustls advisory commit was skipped because its patch is already represented on dev. Rebased head:36013759f. The branch delta is 11 paths (267 insertions, 14 deletions). Next I’m measuring the exact x86_64 and AArch64 static release artifacts for this dev base and the rebased branch before touching the caps.Measurement status: the dev baseline build is queued through the required
build-slot; a nonblocking slot probe found all four build slots busy. No build started and no size result is claimed. The isolated dev source is40cc9c5be9b863ab23a92dfeca9e46cc726737aaunder job scratch; the queued command will report both architecture artifacts once admitted.Finding: exact x86_64-musl release build of
origin/dev40cc9c5be9b863ab23a92dfeca9e46cc726737aais 22,329,104 bytes (stripped static PIE; SHA-256cd923d0a4776c3dabedf7893eff1ccd89f3261d06de9006d6830e7e3e60c9825). The dev gate’s existing cap is 22,204,304 bytes, so this baseline is 124,800 bytes above it. The matching AArch64 build and both rebased branch builds are still in progress; no cap change is made before comparing both architectures.Completed exact release-size build for
origin/dev40cc9c5be9b863ab23a92dfeca9e46cc726737aa(locked release recipe; separate target root). Stripped static sizes: x86_64 22,329,104 B, AArch64 19,752,920 B. Both exceed dev’s recorded caps by 124,800 B and 114,176 B respectively. SHA-256 and ELF details: dev-release-sizes.txt. The branch build remains queued; caps remain unchanged pending comparison.Finding: exact x86_64-musl release build of rebased
size-ratchet-r236013759f5f9153cebc20d07c90ee2f8c30d96b4is 21,455,472 B (stripped static PIE; SHA-256cd84fe824e4b527ad74193e01bb0ca0465ccf5920ddf2a09877404890f0d8f47). It is 52,352 B above the previous branch cap and 873,632 B below the measuredorigin/devartifact (22,329,104 B). Receipt: branch-x86-release-size.txt. The AArch64 branch build is still running; the cap edit waits for that comparison.Correction: the prior x86 measurement comment had a mistyped full branch SHA. The correct SHA is
36013759faf7aa85f8c0f6acebbb9b2683759097; the artifact size and checksum are unchanged. Corrected receipt: branch-x86-release-size-corrected.txt.Completed exact locked release builds for both architectures using isolated Cargo targets.
origin/dev40cc9c5bThe branch artifacts are below both measured dev artifacts and the current dev caps. Exact caps therefore ratchet down from dev by 748,832 B x86_64 and 14,032 B AArch64. The existing pre-rebase branch caps were 21,403,120 / 19,576,520 B; those are stale for the rebased sources. Artifact hashes and recipe: rebased-release-size-comparison.txt. I’m updating both gate constants and the matching process table to the measured branch sizes before the final gate.
Cap-ratchet step staged on
size-ratchet-r2at pre-commit head36013759faf7aa85f8c0f6acebbb9b2683759097:scripts/verify.d/rust.shanddocs/PROCESS.mdnow match exact rebased artifact sizes (21,455,472 B x86_64 / 19,624,712 B AArch64). The proposed caps are below measuredorigin/devbinaries and its existing caps.scripts/verify iteratepassed: 997 workspace tests passed, 0 failed, 135 ignored; TypeScript protocol 37 passed, 0 failed. Transcript: verify-iterate.log. Committing this atomic two-file ratchet step next.Final gate status at
6fd3dbcd70f29d1099d169a536d5e26da1f07bd5:scripts/verify fastis queued through the required build-slot wrapper. All four host build slots are occupied and the gate transcript has not been created; no final gate result is claimed. The command remains queued. No other dependency or source work is outstanding.Correction: the prior final-gate queue comment mistyped the full commit SHA. The correct
size-ratchet-r2head is6fd3dbcd7bfcf2a05faf6a63d116c8f2c627f635; queue status is unchanged.Fast gate finding:
infraternal_server::auth::tests::socket_tests::review_liveness::review_mesh_watch_reports_liveness_expiry_without_another_editreportedFAILEDduring the full workspace suite at line 1267 of/home/kayg/.cache/codex-scratch/size-ratchet-r2/evidence/verify-fast-final.log. The gate is still running. After it finishes, I will run this host-load-sensitive auth socket case on the detachedorigin/devbaseline in the same build-slot/load window and record both outputs.Full fast gate transcript: verify-fast-final.log. Rust gate summary: fmt PASS; VT native fmt PASS; CLI plugin compile-out PASS; clippy PASS; test FAIL (101); cargo-deny PASS; static builds PASS. The only failing test is
auth::tests::socket_tests::review_liveness::review_mesh_watch_reports_liveness_expiry_without_another_edit; its assertion receivederrorinstead ofresync. Baseline comparison remains queued on build-slot.The allowed auth socket test did not reproduce in either isolated comparison.
origin/devpassed 1/1 (10.76 s): dev-review-liveness.log. The branch passed 1/1 (11.35 s): branch-review-liveness-rerun.log. Since the full suite alone producederrorinstead ofresync, I am rerunning the full fast gate on the branch head to verify the final result.The second full fast gate passed on
6fd3dbcd7bfcf2a05faf6a63d116c8f2c627f635: Rust gate fmt, VT fmt, CLI compile-out, clippy, tests, cargo-deny and static builds all PASS; server tests were 449 passed / 0 failed / 47 ignored. Before push,origin/devadvanced from40cc9c5be9b863ab23a92dfeca9e46cc726737aato6eaa5c413a98c1bfecd982b17cdbb1e77c86f169, leaving this branch 5 ahead / 1 behind. I am rebasing onto currentorigin/dev; release sizes and fast gate will be rerun on the final head.Rebased
size-ratchet-r2onto currentorigin/dev6eaa5c413a98c1bfecd982b17cdbb1e77c86f169with no conflicts. New pre-measurement head:c1ffbe8132f154cb8284c5e24ef66083932cf531. The branch remains 5 commits ahead, with the same 11 changed paths;git diff --checkpasses. Rebuilding both exact release targets for dev and branch before updating caps or rerunning the final gate.Exact release artifacts rebuilt after rebase onto
origin/dev6eaa5c413a98c1bfecd982b17cdbb1e77c86f169:c1ffbe8132f154cb8284c5e24ef66083932cf531The branch remains below dev’s existing caps and retains exact caps at its measured sizes (21,455,472 / 19,624,712 B). Per-target logs and comparison receipt: dev x86, dev ARM, branch x86, branch ARM, comparison.
Full
scripts/verify fastpassed onc1ffbe8132f154cb8284c5e24ef66083932cf531; transcript attached: verify-fast-rebased-final.log. Before push, a remote check founddevadvanced to492e1505ab6822078268344382f4d246d2c3d65e; the branch is now 27 commits behind. Rebasing and rerunning the size comparison and fast gate on the current dev tip before pushing.Rebased again onto current
origin/dev492e1505ab6822078268344382f4d246d2c3d65e(agent reconnect merge) with no conflicts. New branch head:aeab42a947d2a62027fc7caf2e855df4d7d0cecd; branch is 5 commits ahead andgit diff --checkpasses. Current dev caps remain x86_64 22,204,304 B / AArch64 19,638,744 B. Rebuilding both exact release artifacts for dev and branch because the upstream merge includes runtime code changes.Current
origin/devx86_64 exact release artifact measures 22,299,504 B (SHA-2569b009a5c2bc6f4711995a052fa3b513846d95694a863727d3f2dfaed7e8bc710), 95,200 B above its existing 22,204,304 B cap. Receipt: dev-final-x86.txt. I’m measuring current dev AArch64 and the rebased branch before setting any branch cap; caps will not exceed dev’s measured artifacts.Current
origin/devAArch64 exact release artifact measures 19,726,904 B (SHA-256aa715a4108b205ec35ef4fb667c1efd088b6a4baca5ffd2366a5a70d5c64e254), 88,160 B above its existing 19,638,744 B cap. Receipt: dev-final-arm.txt. Current dev measures 22,299,504 B x86_64 and 19,726,904 B AArch64; both are below its preceding exact release build. Branch comparison is underway.Rebased branch
aeab42a947d2a62027fc7caf2e855df4d7d0cecdx86_64 exact release artifact measures 21,422,096 B (SHA-25619429e3f801d46d62c9921bff6736cef1dfeded35fb6583ee1730a418f7bc66b), 877,408 B below current dev and 33,376 B below its previous 21,455,472 B cap. Receipt: branch-final-x86.txt. I will ratchet the cap to the measured size after the AArch64 comparison.Exact release measurements after rebasing onto
origin/dev492e1505ab6822078268344382f4d246d2c3d65e:aeab42a947d2a62027fc7caf2e855df4d7d0cecdBoth branch artifacts are below current dev and the old branch caps, so I’m lowering caps to the exact branch sizes. Receipts: dev x86, dev ARM, branch x86, branch ARM, comparison.
Committed exact cap ratchet as
51fb6f939(current head after rebasing on492e1505ab6822078268344382f4d246d2c3d65e). Caps and PROCESS table are now x86_64 21,422,096 B / AArch64 19,594,856 B.bash -nandgit diff --checkpassed; exact-size fixture and final fast gate are running/queued.Rebased onto origin/dev at
492e1505aband pushed size-ratchet-r2 with --force-with-lease. Head:51fb6f939d.Exact locked release artifacts:
The gate caps and PROCESS size table are set to the measured branch sizes. The caps remain below origin/dev's existing caps by 782,208 B and 43,888 B respectively.
Final scripts/verify fast output (full transcript attached):
(static builds: 3s)
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| CLI plugin compile-out | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
x86_64-unknown-linux-musl: exact 21422096-byte cap PASS; 21422097 bytes rejected PASS; smaller artifact requires ratchet PASS
aarch64-unknown-linux-musl: exact 19594856-byte cap PASS; 19594857 bytes rejected PASS; smaller artifact requires ratchet PASS
37 pass
0 fail
34463 expect() calls
Ran 37 tests across 10 files. [1.86s]
Full gate log: https://git.kayg.org/attachments/9bf2d095-8467-4e85-b92f-a7f3c96fe967
Orchestrator: diff read (D264 owner-approved AES-GCM cut, Axum feature prune, cold plugin size, exact caps). Merged to dev as
9e84426c4. dev's static caps are green again: x86 21,422,096 B / ARM 19,594,856 B.Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Merged to dev as
9e84426c4(in dev and prod); the size caps are green again. Reopen if anything is still missing.kayg referenced this issue2026-10-28 17:53:55 +00:00