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#212
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?
Owner request: "actively look out for ux gaps like these" (typing lag in one window while another floods: the UI looks fine, it feels broken). This is the ranked result of walking the real flows by hand. No product code was changed.
How it was measured
origin/devatb182529f. Web bundle built from that commit, server binary built from the same commit (cargo build --release, musl), real PTYs throughapps/tracer/real/server.ts(no test double) for everything marked "real". The mock test double (?mock=1&proto=clusters,proto=product, plus a 150 ms RTT proxy) was used for sign-in timings, the offline-host case and the concept views.Ranked gaps
Severity: S1 = the person loses work, time or trust; S2 = feels broken or confusing; S3 = polish. "UI" = apps/tracer or packages/ui; "backend" = server/agent.
1. Typing and canvas gestures lag while another window prints a lot (S1, UI mainly; server part shipped under D268)
Steps: sign in, open two windows, run
yesin window 1, click window 2, type. Or pan/switch views/split while it runs.Experience: characters land late and in clumps; panning the canvas stutters. Nothing on screen says anything is wrong.
Evidence (real server, back-to-back, 0 ms RTT; 5 typed lines each):
Proposed fix (UI): feed unfocused windows' output through a separate worker lane and draw them at a capped rate (at most the focused window's cadence, or every 4th frame when not focused); keep the focused window's keystroke to paint path first (D268 Q19 browser part). Measure with the existing clusters-bench specs plus this idle/flood pair.
2. After the network comes back, or the phone is unlocked, the app waits out a backoff and says nothing (S1, UI)
Steps: go offline for 6 s and back (or lock/unlock a phone for 20 s).
Experience: the window sits in "connecting" for seconds after the network is already back, with no hint when it will retry.
Evidence:
connection.tshas noonline,visibilitychangeorpageshowlistener (grep: none).reconnectDelayis 50 ms doubling to a 5 s ceiling plus up to 50 percent jitter, so up to 7.5 s.Proposed fix (UI): on
online,pageshowand visible, reset the attempt counter and retry at once (first try within one frame); show a visible "Reconnecting" state (see 3).3. Offline looks almost the same as online (S1, UI)
Steps: go offline in a window while typing.
(5 s after the network returned the window was still "connecting"; keys typed offline were delivered only after the next reconnect).
Experience: the top pill dot stays green, the window gets a 6 px grey static dot, typed text does not appear at all (no local echo, no "held" marker), and the pill count says "0 sessions" after coming back (it was 1). TASTE: "Status is an icon with motion... plus a warm tooltip".
Evidence:
Proposed fix (UI): one animated connection icon per window (connected, reconnecting, offline) with the shared tooltip; the top pill dot follows the worst state; show held keys (dim echo) and a "Reconnecting, keys are kept" line; recompute the session count after resume.
4. Mesh view on a phone: the empty state is cut off (S1 on phones, UI)
Steps: phone, palette, "Go to Mesh" on an install with no mesh hosts.
. Compare the Console empty state, which is centred correctly: 
Experience: only "yet" and "are added." are visible; the Add host button is off screen. The title spans x -159 to 29 on a 375 px screen (-141 to 47 on 393).
Evidence:
Proposed fix (UI): the camera centres on the view region, not its content origin; add a Playwright check that every view's empty state is inside the viewport at 375 and 393.
5. Opening a shell on an offline host leaves a dead window that looks alive (S1, UI; backend returns the right error)
Steps (test double with a forced

unavailablereply): palette, "Open shell on ".Experience: a window opens at once with a blinking cursor, then an error toast appears for about 5 s and goes. The window stays empty with a grey dot, no message and no Retry. The palette row does not say "offline" (the hint column is cut: "terminal . ssh . conso..."). One click produced 4 open attempts.
Evidence:
Proposed fix (UI): show the failure inside the window ("build-server-01 is offline. Retry"), no cursor until attached; offer Retry and Close; put "offline" at the start of the row hint; stop the automatic retries or show them.
6. After closing the last window the view says "No hosts yet" (S2, UI)
Steps: close the only window.
Experience: "No hosts yet. Add a host and its shell opens here." appears while the pill says "Console 1" and the server host exists. The one button adds a host instead of opening a shell on the existing host.
Evidence:
Proposed fix (UI): when hosts exist, say "No windows open" with "New shell on " as the main action; keep "Add host" secondary.
7. Sign-in step 4 on phones: the main button is below the fold (S2, UI)
Steps: first enrolment at 393x852 or 375x667, "Save your recovery key".

Experience: on 393x852 the "Open infraternal" button shows as a 10 px sliver; on 375x667 the checkbox (y 823) and button (y 893) are 160 to 230 px below the fold. The card scrolls (
.auth-screenoverflow auto) but nothing says so, and scrolled to the end the button touches the screen bottom with no safe-area gap.Evidence:
Proposed fix (UI): pin the actions row to the bottom (words list scrolls) with the safe-area inset, as TASTE already requires for flows.
8. A healthy connection is declared dead after last RTT + 50 ms (S2 risk, UI plus backend)
Evidence:
checkLivenessretires the socket when no pong has arrived withinlivenessRtt + 50ms (2000 ms before the first sample). Under the host load here (60+) the browser opened 3 to 5 new sockets in 30 s while idle (1, 2 and 4 windows; close code 4000 "connection unresponsive" on several). A phone on a jittery cellular link or a busy main thread (finding 1) can trip the same rule, and every false trip costs 4 round trips (D267) plus a stale-looking window.Needs: re-measure on the perf VM and on a throttled CPU before deciding. Proposed fix: require two missed probes, and never retire while the main thread had a long task in that window.
9. Cold load on a slow link shows a blank screen (S2, UI)
Steps: returning visit with the 150 ms RTT proxy.

Experience: flat background for about 1.5 s (first contentful paint 1452 ms), the canvas at about 2.6 s. At that moment the window pill is already drawn with a grey dot and a blinking cursor while it is not connected (TASTE: a blinking cursor means you can type).
Evidence:
Proposed fix (UI): paint the sign-in wordmark/skeleton from the HTML shell before JS arrives; hide the cursor until the stream is attached.
10. Hostnames are cut in window pills although there is room (S2, UI)
.ui-window-pill { max-width: calc(50% - 26px) }cuts "infraternal-dev" to "infraternal-d..." at the default one-third width on 1440 px, and "build-server-01.prod.example" to "build-server-01...", with 150 px free before the actions pill. TASTE: "the hostname is never cut off while the pill has room".Evidence:
11. "Host connections are locked" toast: covers the terminal, duplicates the wizard, polling (S2, UI plus backend)
Steps: fresh server with the remote server enabled, Add hosts, Continue.
and the mockup with 
Experience: a persistent toast sits over the bottom lines of the windows (where the prompt is) while the wizard card in the middle already asks for the same passkey. Meanwhile
POST /remote/ca/statusis called every 0.5 to 1 s (10 calls in the 6 s after Continue).Evidence:
ca=locked:Proposed fix: UI: put the unlock in the Inbox/sidebar after the first sign-in (TASTE "pending actions come to the person") and hide the toast while the wizard shows it. Backend: push the CA state over the existing event subscription instead of polling.
12. Identical "shell" rows everywhere (S2, known: #178)
Sidebar shows three "shell" rows, the palette 21 identical "shell . infraternal-dev . detached" rows after a few reloads (test double). TASTE: "Session rows say what is in them".
(phone palette: the search placeholder is also cut mid-sentence, "Go to a host, a session or an").
Evidence:
13. Neighbouring views bleed into the current view (S3, UI)
In Mesh (desktop) the Console window's frame with its action pills hangs at the left edge, a dashed empty "Hosts" frame sits at the top right of Console, Settings windows peek at the bottom. Reads as a rendering leak. Evidence:
14. Smaller items (S3)
yesheld 46 and 68 percent of a core until killed.Not covered or not reproducible here
real/server.tsneedsremoteListento exercise the host wizard; without it/remote/ca/statusreturns 405 and the wizard shows "Host connections could not be unlocked", which is a fixture artefact, not a product bug.Suggested order
1, 2+3 (one connection-state job), 4, 5, 6, 7, 10, 9, 11, 8 (after a perf-VM run), then 12 to 14.
Start client-resilience at
49e809d910(dev-merge-199 cut-over candidate). Read #212 body and all comments (0); no parent referenced. Scope: event-driven resume, healthy-link/128-session idle proof on locked perf VM, pushed CA state, one open attempt per click. Push only client-resilience; no deploy. D81/D188/D265/D267 unchanged. Evidence outside checkout; failing regressions precede each fix.Step 1 pushed
5ddf4be6: online/pageshow/visible bypass pending backoff synchronously, retained routes rechecked, repeated events share handshake, listeners removed on disposal. Red: 3 event cases failed (10 sockets instead of 11); green: 9 connection cases / 43 assertions, 0 failures. Strict TS passes. Production D188 Brotli: critical 246209/256000B, deferred 42468/45056B, largest on-demand 14182/18432B. VM measurements pending; no build-host timing claim. Finding gap5: a definitive offline refusal was retried on welcome; failing unit observed 3 calls for one intent. Candidate refusal latch passes (1 call), not committed yet. Finding CA: no fixed status poll timer; product.ts refreshes on each reconnect, authority control also refreshes on palette/visibility/Settings. CA MemoryCaSource already publishes lock changes but no browser topic adapter exists in this base.Perf-VM baseline finding: production browser + real TLS + real PTY at unchanged server artifact infraternal-transport-x86 produced 9 additional routes in 30 seconds idle (2 -> 11). VM load before 1.26/0.68/0.41, after 1.21/0.78/0.46; no stress generator. The 128-session setup then refused session open at 9/28 in its first auxiliary socket (unavailable); no CPU-at-scale claim from this failed setup. Exact-head local baseline build is continuing. Raw receipt perf-baseline.log outside checkout. Code: browser liveness expires since last answer before accepting queued correlated replies; native Liveness uses RTT+25ms (50ms minimum), and browser proof/reply calls perform authority SQL at probe frequency. Will reproduce these invariants with paused-clock tests and preserve revoked/dead/stale-reply negative controls. D81 zero periodic idle work conflicts with D265 continuously probing idle attached routes; removing avoidable authority SQL is possible without changing probe cadence or dead-link budgets.
Additive CA delivery contract for #212: declare remote.ca.status read action and remote.ca.status topic in a build-removable remote crate plugin. Input remains exactly {}; output/event carries only initialized and locked booleans. Source uses existing MemoryCaSource subscribe_locked; subscribe before reading initial snapshot. Recheck existing CA administrator membership/session generation before every snapshot, and retain plugin host authorization through outbound backpressure. Runtime disable cancels worker/subscriptions. Product discovers availability by the status action, then uses subscription snapshots and reconnect resubscription instead of HTTP status refreshes from palette/Settings/visibility/welcome. Ceremony endpoints and trust/secret handling remain unchanged. No new frame tag or foundational dependency.
Step 2 pushed
cc53d710: definitive open refusal survives reconnect, explicit new-shell resets it; transport failure remains retryable. Red 3 calls -> green 1; 8 terminal cases pass. CA functional red on real TLS/PTY fixture: 5 HTTP /remote/ca/status reads across lifecycle reconnects where at most 1 is allowed; ca-http-red.log. Push unit red kept unlocked after locked event; green updates shared control with no extra read, and adapter controls cover unavailable capability, resubscription and pending-reader disposal (5 cases /18 assertions).Baseline and failing receipts:
perf-baseline.log
resume-events-red.log
open-red.log
browser-deadline-red.log
UI gap fixes, branch
ui-gap-fixes(head38e008ef, base origin/dev-merge-199) and mockup branchmockup-connection-state(head6a08c77c, owner approval needed). Not merged.Screenshots are from a production build against the test double (not a real server), 375x667, 393x852 and 1440x900, ink and paper. Before / after:
?mock=1&proto=clusters&scene=3&conn=1, palette "Mockup: connection - ..."): offline with keys keptD188 budgets (gzip, before -> after): critical 295,949 -> 296,353 of 307,200; deferred 47,861 -> 48,462 of 51,200; largest on-demand chunk 15,950 -> 15,947 of 20,480.
Not done: gap 11's wizard-duplicate hiding and CA-state push (backend), gap 5's palette "offline" hint and repeated open attempts (not reproduced), gap 8, 12 to 14. Pre-existing failures on the base build (same on origin/dev-merge-199): onboarding.spec (isConnected after sign-in), clusters-grid camera/phone-split, clusters toolbar x3 + motion rule, cursor-blink first test, two predictive specs.
UI gap fixes, branch
ui-gap-fixes(head38e008ef, base origin/dev-merge-199) and mockup branchmockup-connection-state(head6a08c77c, owner approval needed). Not merged.Screenshots are from a production build against the test double (not a real server), 375x667, 393x852 and 1440x900, ink and paper. Before / after:
?mock=1&proto=clusters&scene=3&conn=1, palette "Mockup: connection - ..."): offline with keys keptD188 budgets (gzip, before -> after): critical 295,949 -> 296,353 of 307,200; deferred 47,861 -> 48,462 of 51,200; largest on-demand chunk 15,950 -> 15,947 of 20,480.
Not done: gap 11's wizard-duplicate hiding and CA-state push (backend), gap 5's palette "offline" hint and repeated open attempts (not reproduced), gap 8, 12 to 14. Pre-existing failures on the base build (same on origin/dev-merge-199): onboarding.spec (isConnected after sign-in), clusters-grid camera/phone-split, clusters toolbar x3 + motion rule, cursor-blink first test, two predictive specs.
Steps pushed:
6356b449remote CA status plugin (4 new lifecycle cases plus 4 related controls green, remote clippy/fmt);a2637795server watch adapter (real membership/session removal control green, server clippy/fmt). Browser adapter commit follows. Native idle proof regression red: 16 pool acquisitions for 16 fixed Ping/Pong round trips; candidate green: 0 repeated acquisitions. Native deadline red compiled exact liveness.rs with cached pinned Tokio: timely queued proof failed, dead-route control passed; candidate both pass, including full server module run. Strict TS: 18 cases /68 assertions green. Revocation, runtime disable/re-enable, held-open creation, 16-device recovery and watched expiry pass isolated. Combined socket run stalled at shared test lock; serial direct run initially omitted CARGO_TARGET_DIR and disk fixtures failed (corrected, no waiver). Remaining failures are being investigated. Host disk fell to ~3GB free; removed only this job's 3.3GB debug incremental cache. Static x86 build continuing, no perf candidate claims yet.Pushed through
a7c71cfa:16dcec48browser CA snapshot cache;e27c6857native RTT variation/timely proof handling;0130d927browser deadline/stalled-handshake fixes;a7c71cfafixed-proof authority cache. New native regression: 16 repeated SQLite acquisitions before -> 0 after; terminal/action authorization unchanged. Eleven transport cases, five CA cases and two open-intent cases pass; strict TS passes. Production D188 Brotli: critical246584/256000B, deferred42748/45056B, largest on-demand14185/18432B. Shipping x86 musl candidate built and copied to /root/infraternal-bench/client-resilience/infraternal-candidate; VM run queued under flock -w3600, own scope and private network/PID namespace. No new candidate performance claim yet. Local iterate first stopped at loaded-host latency proxy timing; restarted functional iterate with documented INFRATERNAL_TEST_RTT=0. Detached origin/dev baseline97366a3b is compiling to compare auth socket failures in the same load window. Static-size caps and D265/D267 budgets unchanged. Harness/docs still uncommitted; final full fast, VM receipts and screenshots remain before finish. No deploy or issue closure.Pushed contract documentation
2f5ef7ba. Current strict TS and 12 selected transport/CA/open-intent cases (48 assertions) pass; raw client-final.log. VM measurements remain queued behind shared lock. Verification correction: detached dev and candidate builds shared a Cargo target; the dev test executable was reused after the candidate no-run command. Later direct controls using that path are baseline results, not candidate evidence. Preserved baseline executable separately and forced current source recompilation; verifying presence of new idle_proofs/liveness tests before running it. Baseline full socket receipt: 32 passed, 2 failed, 2 ignored (fresh_delete and browser_input_overload unexpected socket closes); no candidate waiver claimed. Final gate remains pending.Functional receipts (no build-host performance claim): fixed proof SQL acquisitions 16 -> 0; native deadline positive/negative controls pass; CA plugin 4 new + 4 related controls pass; real membership/session-removal source control passes; latest selected browser units 12 pass /48 assertions. D188 critical/deferred/largest-on-demand Brotli 246584/42748/14185 bytes remain below 256000/45056/18432.
idle-proofs-read-red.log
idle-proofs-green.log
liveness-full-green.log
ca-plugin-tests.log
ca-source-tests.log
client-final.log
transfer-final.log
Measurement queue: perf VM lock is held by flock PID597982 (elapsed1333s at last check); candidate0ms,150ms and capped-server-stress runs are waiting with flock -w3600. VM load then0.13/1.47/2.83; no candidate measurement running and no lock bypass or other-job process intervention. Completion needs the current lock owner to release it; local candidate recompilation/functional gates continue.
Step pushed50869c18: keep definitive open refusal delivery after route close so the window can offer explicit retry. New unit red:0 notifications instead of1; green:3 open-intent cases /4 assertions, strict TS pass. Transport failures remain retryable. The added production-browser reconnect-count case exposed a missing refusal surface; rerunning it after the delivery guard change, without yet attributing that browser failure to this unit race.
open-disconnected-red.log
open-disconnected-green.log
Pushedd0c918fe: built-browser test-double regression passes:1 refused click,3 forced welcomes,1 open call; explicit retry yields exactly2 total calls and a live window. Fresh production profile (preview off) D188 Brotli critical246505/256000B, deferred42785/45056B, largest on-demand14194/18432B. Iterate fmt/nativefmt/compile-out/clippy/deny pass; workspace test stopped in two infraternal-agent timing tests (healthy_mesh_probes_do_not_inherit_the_previous_paths_rtt, tcp_proxy_preserves_spacing_between_packets_already_in_flight). Serial retry stopped earlier at loaded-host proxy self-test; no waiver claimed. Weighted serial iterate now running; actual new server binary contains idle_proofs and timely_queued regressions and its socket suite is running.
Perf dependency for orchestrator: lock holder PID597982 has held the perf lock3196s (~53min), VM load0.12/0.28/0.82 at last check. Current production0/150ms, capped-server-stress and offline-open-count runs await flock -w3600. Completion needs that owner to release the shared lock. No other-job processes touched or lock bypass. Old queued runs were cancelled by their own validated flock PIDs while replacing the preview test bundle with production; no candidate numbers are claimed from them.
Finding before follow-up: MuxConnection only opens/retries/wakes for terminal streams. A CA watcher registered before the first terminal waits forever; after the last terminal closes its topic can lose reconnects. New unit coverage across online/pageshow/visible for subscription and welcome-listener ownership is red:6 failed (0 sockets instead of1),4 existing terminal/stalled-handshake cases pass. Will let retained control interests own the same primary route, preserve immediate wake, and guard connect against duplicate in-flight sockets. No new socket per feature, frame tag, dependency or decision change.
ad1036e4is pushed (d9d3f6e0attachment counter,f0a400dcreal-browser/CA test,ad1036e4isolated VM runner); default real TLS/PTY test passes with one attached-load smoke, cross-tab unlock delivered,0 HTTP status reads. Current native full fast continues; remaining browser follow-up needs head verification.Resuming client-resilience at
b4e96e98ea; original base49e809d910. Read issue body and all 15 comments; no parent referenced. Preserve two uncommitted control-ownership files (six failing cases already recorded). Previous fast stopped on disk-full static link; 156GB free now. Rebuild missing outputs, validate/commit control ownership, run locked perf-VM receipts and iterate/full fast. Push only client-resilience; no deploy.Step pushed
0befdb24: retained subscriptions/welcome listeners start, retry and wake the existing mux route without terminal streams; stale reconnect callbacks cannot duplicate a new socket. Previous six red controls now green; selected wake/deadline/CA/refusal units: 18 passed, 165 assertions; strict TS passes. Native iterate rebuilding deleted debug outputs. Locked VM receipts will queue behind the existing soak owner (PID597982, elapsed101min at access check); no lock bypass or other-job intervention. Final full fast and measurements still pending.Head
0befdb24functional checks: 25 browser units /186 assertions passed; production real TLS/browser/PTY lifecycle test passed, second tab received CA unlock,0 HTTP CA-status reads. No build-host timing claim. D188 Brotli critical246540/256000B,deferred42754/45056B,largest on-demand14182/18432B. Author review: shared route/components reused, no new engine/dependency/frame; CA snapshots retain live membership and bounded authorized replies; proof-only cache preserves revocation/expiry and leaves action/input authority intact; refusal latch resets only on explicit new-shell. Locked VM0/150ms/server-stress runs queued. Native deleted debug outputs rebuilding; final fast pending.resume-client-all.log
resume-real-functional.log
resume-transfer.log
Head0befdb24 iterate: fmt,VTfmt,compile-out,clippy,cargo-deny pass; native tests failed component_down_proves_tcp_fallback_when_enrolled_udp_is_unavailable (Disconnected vs Fallback,96 passed/1 failed/14 ignored). Isolated serial rerun compiling; no waiver. Browser refusal regression preserved1 call across3 forced reconnects, but explicit Try again produced3 total calls instead of2. Reproducing with call diagnostics before changing code. Full fast started with serial native tests; not yet a pass. Perf lock owner597982 elapsed109min; VM load0.00/0.12/0.60; all own runs still queued under flock-w3600.
Verification correction: first mock runs set TRACER_DIST but mock-server.ts serves fixed apps/tracer/dist, so those runs used the previous bundle (real/server.ts does honor TRACER_DIST). Fresh-head runs now rebuild default dist. At0ms the retry stayed connecting (not an observed3-call assertion); at150ms welcomes reached12 then failed to advance after a forced drop. Test double still has the old last-RTT+50ms liveness model; will use the locked-VM refusal run before attributing this to product idempotency. Saved-layout fixture race is independently reproduced (null canvas document), pending atomic test fix. Rebuilt native candidate matches VM artifact SHA256 ddff15d9ac005d4c3792ca9c633b849ba287431831307da435396f0f53fc64e7. Direct exact native fallback control passed1 test; initial cargo filter without remote feature ran0 and is not evidence. Fast failed vt_credit; separate detached dev97366a3b baseline is rebuilding for required comparison. Static candidate22347536B vs unchanged22204304B ceiling; VM baseline artifact22318448B (prior-build provenance, not yet a waiver). No ceilings changed.
Orchestrator, 14:23 IST — new gap from the owner (screenshot): the sign-in screen says "Could not reach the server / The request could not be completed" when the server DID answer, with HTTP 404 (
/remote/hosts/actions,/remote/ca/status, seen on the preview without?mock=1). The message must follow what happened: unreachable (network error, timeout) vs the server answered with an error (status code: "The server answered but could not do this (404)") vs a version mismatch (old server, new web app). Severity P2; UI + client error mapping.Locked perf-VM candidate ddff15d9 real TLS/PTY failed gap8:0ms median PingRTT1.572ms,p957.428ms;5 extra routes/30s (2->7),load9.10/3.48/2.06 before and6.70/3.56/2.15 after.128-session setup closed1005 at2/28.150ms median152.072ms,p95160.593ms;2 extra routes/30s (1->3),load6.70/3.56/2.15 before; scale open refused unavailable. No128-sessionCPU/stress/resume claims from these failed setups. Candidate and detached dev97366a3b vt_credit now both pass isolated (1 actual test each); initial fast timeout has no matching-baseline waiver. Investigating estimator memory: mean1/8 and deviation1/4 applied every25ms forget observed jitter within hundreds of milliseconds. Will retain recent measured RTT variation, keep+50ms scheduling and stale/missing proof fences, add a failing regression before change. Native sizes remainover unchanged ceilings; full gatefailed,not done.resume-perf-zero.log
resume-perf-150.log
resume-fast.log
Steps pushed419c4358 browser and2b35d230 native: preserve recent measured RTT envelope by elapsed-time decay over2s, alongside smoothing, rather than discarding jitter per25ms reply. No new deadline floor or missed-probe grace;50ms allowance and missing/stale/future-proof guards unchanged. Browser red then green25selected cases/187assertions,strictTS. Native stronger30-reply regression red(2pass/1fail),green3cases with actual pinnedTokio;fmt and server all-target clippy remote/mesh/ssh pass. Initial native20-reply variant passed and is not red evidence. Serialiterate completed PASS;fullfast still needs new head. Prior socket controls35pass/2ignored. VMscale failures prevented stressCPU and wake receipts; adding wake-only diagnostic to keep event/CA budgets independently measurable without claiming128sessions. Rebuilt candidate is linking; all VM runsfinished,lock released. D243 caps untouched.
Updated native/browser envelope VM artifact d813bbc5:0ms idle0 extra routes/30s (1->1),RTTmedian0.965ms,p953.826ms,scale open refused unavailable at18/28.150ms idle1 extra route/30s,RTTmedian151.912ms,p95158.642ms,scale closed1005 before first open. Stress profile never reached stress:2 idle extras,scale unavailable15/28. No128-sessionCPU claim. Browser-envelope/old-native wake diagnostic:reusable events0.8/8.0/7.1ms at150msRTT (budget200); network-change online5391.4ms, frozen20s pageshow4015.7ms, visible1053.4ms (budget650),all fail. CA peer unlock delivered,0 HTTPstatusreads; screenshots saved for attachment. New-native wake queued.
Step pushedbc2ec76a: a delayed older Pong wrongly retired an unexpired route. Red older-proof regression then green26clientcases/189assertions,strictTS. Ignore old response while the last accepted lease remains valid; do not renew it or extend deadlines. New bundle being shipped.477c4bb4 fixture save prerequisite also pushed (restored-window test/TS pass).
Latest fast: native daemon oracle stalled on replay; isolated exact test then passed all24 restart positions. No unsupported waiver. Static ceilings stillfail22348304B(+144000)x86 and19775704B(+136960)ARM. Final head fast remains required; notdone.
Finding: embedded.rs run_actor uses unbiased select between ticks.tick (expiry before read) and read_incoming. liveness.rs timely-queued proof fix only helps if Pong wins that selection. This can discard an already-ready current proof under executor load. Candidate approach: combine read/tick readiness, poll already-queued frames before an expired tick, cap that check at32 frames so ordinary data cannot indefinitely suppress dead detection. No network wait, extra missed-probe grace, new engine/library/wire tag, or budget change. Add real Unix/wire ordering and missing-proof controls before implementation. Current new-native wake stillfails:online4201.4ms,frozenpageshow5036.3ms,visible3632.1ms at150msRTT; CA push/zeroHTTP reads pass. This is not completion.
Pushed8ab3dbc1: embedded actor now checks already-ready native input before expired ticks, bounded32frames,no network wait/deadlineextension. Old selection regressed both controls; new2pass plus49embeddedcontrols/3ignored pass,fmt/clippy. Native shipping build linking.
Pushed3a5f6f0a: explicit offline navigator state prevents handshake/retry storms while retaining stream/subscription/welcome owners; lifecycle wake creates shared route once reachable. Red3owner cases (1socket vs0); green29clientcases/207assertions,strictTS. VMframe trace had ~4s before next server Hello, then prompt Hello/Resume/Attach and Welcome. Browser engine throttles repeated failures before handshakes: https://chromium.googlesource.com/chromium/src/+/b0627068678d2062ecf4948e391e3901d0cd3db8/services/network/websocket_throttler.cc . Fast recovery used5–10ms attempts for5s, making that throttle consistent with the observed delay; remeasureguard on VM rather than claiming unit socket count proves D267. New bundle ready.
Uncommitted harness diagnostics (wake-only mode, safe HTTP status refusal) remain under validation; no reporteddone/deploy/cap changes.
Latest d583f519 native/3a5f6f0a browser150ms run reached128attached sessions,0 browser false reconnects/30s,observedRTTmedian152.380ms/p95187.931ms. Idle server253ticks/10.035s at100Hz=25.211%core; serverRSS19017728B(1session)->23117824B(128),32284.2B/additional,projected200sessions25442288B. This fails D81; no near-zero claim. Per-session websocket.rs tick expiry competes with queued TerminalOutput::Pong just as embedded actor did. Counting stream reattachments to determine whether false rebinds drive the CPU cost; reuse bounded ready-input selection there, preserving all authority/data handling. Reusable events0.9/0.3/3.2ms,network-online942.9ms>650budget.0ms run2extra browser routes andscale unavailable25/28; noCPUclaimfrom that run. Adding navigator-state/public event-kind diagnostics (no bodies) to distinguish native browser delay from reattach round trips. IteratePASS at3a5f6f0a; finalfastpendingnewhead; D243capsunchanged.
Head
b4d50e155dpushed, no deploy. NOT DONE / not a green-budget handoff. Atomic resume commits retain control-route owners, preserve measured jitter by elapsed time, ignore delayed replies while current proof remains valid, inspect queued native proofs before expired ticks, and avoid explicit-offline handshake storms; shared helper/fixture diagnostics are committed.29selectedclientcontrols/207assertions,49embeddedcontrols/3ignored,3leasecontrols,2orderingcontrols,strictTS/clippy/fmt pass. Iterate passed at3a5f6f0a; headfastretry running.Perf-VM d583f519 shipping artifact /
3a5f6f0abrowser:150ms idle0 false browser routes/30s;128survivingattachments,0streamreattachments during10.002s sample,112CPUticks/100Hz=11.198%core (D81 FAIL),serverRSS18931712->23072768B,32606.7B/additional,projected200=25420453B. Prior cold sample25.211%core; not discarded.0ms run2extra routes/30s andfailedscale25/28. Stressflagrunhad0browserreconnects butscale failed3/28 before stress; no valid stressed128sessionnumber.Wake-only realTLS150ms:reusable0.9/1.8/4.1ms within200budget; explicitnavigatoroffline=true; freshonline1357.6ms,pageshowafter20sfreeze1748.4ms,visible2573.2ms allover650budget. TLS1.3/TCP_NODELAY fixture doesnotfix that. CA peer unlock delivered2tabs,0HTTPstatusreads. Gap5 refusal latch unit/earlier built-browser1intent3welcomes1call controls pass, but latest VMmockrefusal test failed before refusal surface: no final perfVM gap5 pass claim.
D188Brotli critical246766/256000B,deferred42726/45056B,largestondemand14187/18432B PASS. Author review retained parser/secret boundaries,liveCA membership/revocation/expiry,data/actionauthority,andboundedproofchecks; noengine/library/tag/decisionchanges. Raw receipts and production-build screenshots below; emulated viewports,notphysicaliOS/visualsignoff. Remaining work: fresh-link650ms,0msfalseclosures,near-zero128idleCPU,validstressedscaleandfinalbrowserrefusalproof. No budgetloosening or issueclosure.
idle-cost-diagnostic.log



tls-fixed-wake-perf.log
explicit-offline-red.log
explicit-offline-green.log
embedded-proof-red.log
embedded-all-green.log
final-transfer.log
Stopping for review at
b4d50e155d; remote client-resilience matches, checkout clean, no deploy, issue stays open. TASK INCOMPLETE: fresh-link D267,0msfalseclosure,D81 idleCPU,validstress128sessionandfinalVMrefusalproof remain.Head scripts/verify fast (INFRATERNAL_TEST_RTT=0,RUST_TEST_THREADS=1,own weighted scope) output, verbatim:
Static output, verbatim:
No cap changed or unsupported waiver. Earlier head attempt stopped at loaded-host latency proxy; final retry passed all non-size Rust rows. Strict TypeScript passes. Separate full TS gate:194pass/1timingfail (1000node layout,290ms buildhost); locked VM same layout suite8pass/9444assertions,8.70ms layout,load0.53/0.48/0.87. Host failure retained,no waiver/fullTSgreen claim.29selectedclient/207assertions,49embedded/3ignored,3lease,2ordering controls pass. Iterate passed before final diagnostic-only commits.
Final performance status (validVMreceipts alreadyattached):150ms idle0browserextras/30s,128survivingattachments,0streamreattachments,11.198%core over10.002s;RSS18931712->23072768B,32606.7B/additional,projected200=25420453B. D81 FAIL; periodic per-session proof traffic remains,not hidden as a reconnect cost.0msstill2extra browser routes andscale failure25/28. Stress setupfailed3/28 beforestress:no valid stressedscale number. FreshTLS150ms wake1357.6/1748.4/2573.2ms foronline/frozenpageshow/visible vs650budget:FAIL; reusable0.9/1.8/4.1ms vs200:PASS. CApush2tabs/zeroHTTPstatusreads:PASS. Refusal latchunit/earlierbuilt-browser1intent/3welcomes/1call pass; finalVMrefusal surface case notgreen. D188Brotli246766/42726/14187B critical/deferred/largestondemand allwithin256000/45056/18432.
Author checklist: bounded queues/proof scans,missing/stale/future proof controls,liveCA membership/revocation/expiry,data/actionauthority,secret/parser boundaries and runtime feature cancellation retained; no new engine/library/tag or decision change. Screenshots are real production-bundle emulated viewports,notphysicaliOSorindependentvisualsignoff.
Resume priorities: profile/coalesce periodic per-session proof work without dropping liveness; explain six-RTT/fresh replaydelay and occasional terminal.reconnecting event; remeasure0/150/stressed128 andrefusal; satisfy D243 through owner/integration,sizecapsunchanged. Final source-equivalent shipping artifact kept at /root/infraternal-bench/client-resilience/infraternal-head SHA2568a61d471c25f4f5c9ad1e63e1fc2269cbe1c31c81b575a119bba65d4b727016a; it is not a new performance pass. Native measured d583f519artifact remains separately. Job baseline checkout and Cargo targets removed; receipts retained outside checkout. No processes from the measurement runs remain running; other jobs untouched.
head-fast-retry.log
head-fast.log
head-ts-full.log
head-layout-perf.log
head-final-check.log
head-layout-perf.log
head-ts-full.log
Continuation r2 starts on client-resilience at
b4d50e155d; original base49e809d910(dev-merge-199). Clean checkout; read #212 body/all 29 comments, no parent referenced. Scope: stage fresh TLS recovery at 150ms on locked perf VM, remove non-RTT waits, compare static size to original base with <=16KB delta. Idle CPU delegated by owner to idle-cpu-199; merge its ready fix and remeasure, no independent idle-CPU changes. Push only client-resilience, no deploy.Pushed
e3c72d2e: delayed local browser probe scheduling no longer closes a fully answered route; unanswered probes still expire at the existing deadline. Independent #199 regression reproduced here: 0 pass/2 fail before; wake/deadline/scheduling suite 17 pass/171 assertions afterwards. Strict TypeScript passes. D265/D267, no deadline widening.Measurement correction: r2-stages/r2-stages-new/r2-stages-tls used the retained production-current bundle, which lacks the already-committed navigator.onLine offline guard (only production-offline carries it). Their socket-open delays are diagnostic older-bundle numbers, not current branch measurements. Fresh
e3c72d2ebundle rebuilt/copied as r2-production; locked real TLS 150ms rerun queued. Head native rebuild/iterate in progress. #199 idle branch latest comment says implementation validation still pending; not merged yet.Fresh
e3c72d2ebrowser bundle + retainedb4d50e15native artifact, locked perf VM 4vCPU, 150ms RTT, load 0.98/1.29/1.34: lifecycle callback creates the socket within 0.2ms (capture listener runs just after mux listener); no backoff remains, no token fetch. Initial socket opens 765-777ms; Hello+Resume+Attach travel immediately and Welcome costs one RTT. Packet-header-only receipt shows two TLS attempts: first closes with a 30-byte encrypted alert after the fixture self-signed certificate, then retries. Context ignoreHTTPSErrors was not sufficient to avoid the extra fixture-only handshake. Explicit browser acceptance before TLS removes it.Corrected fixture (same product code/native artifact), VM load 0.85/1.04/1.16: socket-open 453.7/451.7/451.6ms for online/frozen pageshow/visible; first resume message is within 0.2ms of open, server Welcome about 150ms later. Painted readiness 1030.5/1433.4/626.3ms vs650 budget: 1/3 passes. Residual delay includes terminal.reconnecting; integrate already-published
d64e12c8native scheduling repair while retaining #212 RTT-variation/queued-reply controls (functional old-source regression red, merged four controls green). Idle CPU refactor remains owned by idle-cpu-199 and is not claimed here. Native release/iterate rebuilding. TLS-stage fixture callbacks occur at TLS completion in this runtime; kernel TCP timestamps come from packet headers, not that callback.r2-browser-scheduling-red.log
r2-browser-scheduling-green.log
r2-current.log
r2-tcp-fixed.log
r2-tcp-headers.log
r2-cert.log
Pushed
3459d93e: merge publishedd64e12c8native scheduling repair, retaining #212 RTT-variation/queued-proof controls. Exact old-source scheduling regression fails; merged pinned-Tokio module four controls pass, touched-server all-target clippy/fmt pass. Full cargo liveness filter is also rebuilding separately.idle-cpu-199 published
90e17439(batch shim proofs in existing host actor, no browser payload notifications). Integrating it now as requested. One conflict in embedded.rs: keep #212 bounded ready-input-before-expiry selection and perform the new route-proof batch in that existing Tick arm, rather than adding a second timer selection. No independent idle optimization; remeasurement must use the merged shipping artifact. Native full gate/source rebuild and 128-session quiet/stress receipts still pending. A build-host browser attempt failed at initial live readiness before disruption under shared load; retained as failed functional setup, not a timing or pass claim.Artifacts and evidence remain outside checkout. No deploy; issue stays open.
Size follow-up: merged x86 shipping image is 22355504B (before-idle image22354384B; idle integration+1120B in this recipe), SHA2565e578433c3957b3301bf490206ed30015dd1ce74ecf6319ad872edfe02164edb. Fresh original-base49e809d same-target build is running. To meet the requested <=16KB delta, replace the new CA watch internal Value result with a two-boolean snapshot and fixed wire encodings for the four permitted states, retaining identical JSON fields/error text and live membership/outbound authority gates. This changes only the newly-added internal source trait, not the wire/action contract or frozen frames. No new serializer/dependency/engine. Also measure a bounded integer decay for the native two-second RTT variation envelope instead of floating-point Duration multiplication; liveness semantics and 50ms allowance remain unchanged. Each optimization will be gated/committed separately and measured against the same base. No ceiling change or performance claim yet.
Merged shipping artifact5e578433c3957b3301bf490206ed30015dd1ce74ecf6319ad872edfe02164edb (native source after413db545), fresh
e3c72d2eequivalent browser logic, locked perf VM4vCPU,150msnetem,load1.05/0.81/0.90 before and1.75/0.96/0.96 after: real TLS/PTY128 test PASSES. Observed Ping median151.610ms/p95162.545ms; 0 extra browser routes/30s,128 retained attachments,0 session reconnections. Fresh event-to-painted typable online621.5/frozen-pageshow626.3/visible613.0ms vs650ms; socket-open458.2/455.2/456.0ms, first Resume follows within0.4ms, Welcome about1RTT later. Reusable0.8/0.3/0.8ms vs200. CA push reaches2tabs;0HTTPstatusreads,5subscriptions.Idle remains FAIL:D81:86serverCPUticks/10.005s/100Hz=8.596%onecore, down from preceding11.198% but not near-zero. RSS1session19038208B,128sessions26845184B;61472.3B/additional,projected20031271186B. This is the requested remeasurement of idle-cpu-19990e17439 integrated here; remaining idle optimization stays with that job, not this lane. Stress/zero/final-source measurements pending.
Merged iterate: fmt/VTfmt/compile-out/clippy/denyPASS; testFAIL initial_attach_requires_explicit_credit_before_replay (agent_review, scriptline29) because an unsolicited control census Event0x33 arrived during its no-credit window. Direct repeatpasses, but no load-waiver claimed: wire contract permits census control frames without terminal credit, and the fixture already provides read_without_inventory/ping helpers. Repair that probe to admit only validated control censuses and Ack, still reject terminal data/fences and preserve exact1-byte credit. Recorded failing full-gate transcript is the red regression. Final fast will rerun all rows. No product-agent change.
Size status: original-base49e809d same-recipe x86 image is 22,319,760 B (SHA25622e5a4c6a0087269d16446d21cd9b0993bf6f76a6f2957bec1184239aa40e95c). Fixed boolean CA snapshots plus integer native RTT decay reduce the pre-lease image to22,348,848 B, delta+29,088 B: still above16KB. Integrating039a5502 replaces the overlapping #212 proof cache rather than retaining two caches; its 10 idle/auth/route controls and workspace clippy pass. A first intermediate build used a shadowed cache and emitted unused-code warnings; superseded, not a candidate.
Next size experiment: share the new proof-authority state machine behind the existing boxed Operation boundary, and encode CA replies before entering their channel-send future. This avoids repeated generic/select/encoder state without changing authority, cadence, wire schema or deadlines. A small allocation on content-free probes is the trade-off; retain only with same-recipe size and locked-VM idle/stress/recovery numbers. No new library or profile/ceiling change.
Corrections: r2-merged-150 load BEFORE was0.74/0.61/0.86, not the earlier comment transcription; AFTER1.75/0.96/0.96 unchanged. Stress at128 kept attachments but1 extra browser route/30s, so healthy-link stress remains FAIL; wake633.0/609.0/631.8ms stillwithin650. Short10s CPU samples do not isolate setup work; a dedicated60s settle/60s sample will provide the steady receipt. Attach-credit probe also needed to admit a validated empty replay_complete marker, not only censuses;
d42611c7corrects the first attempted fix, with strict no-data/one-byte assertions retained. First failing correction receipt preserved.r2-merged-150.log
r2-merged-stress.log
r2-iterate-merged.log
r2-variation-clock-red.log
r2-variation-clock-green.log
r2-browser-variation-clock-red.log
r2-browser-variation-clock-green.log
New gate finding during continuation: cargo-deny now reports RUSTSEC-2026-0346/0347/0348/0349 on the existing rustls0.23.45. The earlier iterate advisory row passed; the database changed during this run. cargo-deny identifies0.23.46 as the patched release for all four. Update this existing TLS dependency to that patch release, preserving provider/features and all engine choices; no advisory suppression. Dependency update is a separate atomic change, with full native/QUIC/auth tests and new final-size/VM receipts required. The exact original-base size remains recorded separately so this security delta is visible.
Other iterate failure is real_binary_preserves_input_and_output_across_24_abrupt_stops: first restart oracle timed out before forwarding, observed0/received406014; not one of the #118 waiver rows. Direct weighted repeat is running with unchanged assertions. No baseline waiver or pass claim. Latest steady128 receipt:60s settle +60.002s sample,209ticks at100Hz=3.483%onecore,0reconnects and final executed-marker proof passes; RSS19,005,440->24,616,960B (44,185.2B/additional;200projection27,798,294B). VM load1.11/1.74/1.55 before and0.71/1.24/1.38 after. Raw links:
r2-steady-before-box.log
r2-lease-merge-idle-tests.log
r2-ca-typed-tests-final.log
r2-ca-source-typed-tests.log
Size isolation experiment under D198: the CA push worker is currently compiled inside the remote transport crate at opt-level3; server orchestration already uses opt-level s, while transport/crypto remain speed-optimized. Move the new public-status plugin into its own build-removable crate (AGPL, same plugin API/actions/topic/settings/role dependencies), retain the remote::authority re-export for internal compatibility, and apply the existing orchestration-size recipe only to that crate. No transport/crypto profile, engine, wire/action contract, authority check, runtime switch or cadence changes. This targets the remaining >16KB delta without slowing remote transport. Compare same-recipe static sizes and repeat real TLS/PTY/CA/idle/stress gates on the VM; discard cold-hint experiment that was stopped before a result.
Disk filled again; stopped only own pending cold/base-ARM scopes and removed only own completed GNU debug outputs. Space has recovered (67GB currently); continue native rebuild and final gates. The patched lockfile rustls0.23.46 makes cargo-deny pass; direct daemon-oracle repeat passes unchanged. All unfinished steps and failures remain recorded; no final fast/pass or completion claim yet.
kayg referenced this issue2026-10-28 17:53:56 +00:00
Rebuilt on current dev for the owner's review. Branch
mockups-2026-10-31, head586cd2b13(base dev42ab33035, 2026-10-31). Test double only; nothing is real or saved. Not merged, not deployed. Old previews are gone; this replaces them.Preview (NetBird, bound to infraternal-dev-02-std; index of every mockup: http://10.69.69.117:47650/mockups.html):
How: One indicator per window in the machine pill's place. Palette: "Mockup: connection" rows set each state; "play every state" cycles them. The captures show the window pills' icon per state.
Note: Rebased only (the mockup of #212 gap 3).
Captures are Chromium on the production build of the mockup, taken by
apps/tracer/test/capture-mockups.ts; I have read them for wrong states, not judged them as final.Desktop 1440×900 @2x, ink
Desktop 1440×900 @2x, paper
Phone 393×852 @3x, ink
Phone 393×852 @3x, paper (first state only)
Update to the comment above: the branch head is now
57871651f(the preview at http://10.69.69.117:47650/mockups.html runs it). The captures above were taken one build earlier; the only difference is that the window terminals there hide their cursor until attached, a production change that was since removed from the branch. Gate output, what is left out, and the budget finding: #272.J56 started (Claude Sonnet 5.5). Branch
ui-approved-189-212-216, base origin/devf4b61cd6c. Building the owner-approved mockups (mockups-2026-10-31) into the product. Owner 2026-11-01: "add-host pill is approved. connection states is approved. version pill is mostly approved." plus the value-tap changes (in-place clipboard + Copied, contextual default action, one Updates key).Progress (J56). Branch
ui-approved-189-212-216pushed (head: copy/press commit). Done: shared sidebar card shell (Inbox rebuilt on it); in-place "clipboard + Copied" confirmation and the contextualpressaction in the shared key/value list (no tooltip, reduced-motion safe). Next: version pill + panel with the one merged Updates row, then the connection indicator in the window pill. Finding: no update-check or licence backend exists on dev (#211 is backend-only and unmerged), so the panel will be wired to an update source with the action stubbed behind a TODO linked to #211.Progress (J56), WIP pushed to
ui-approved-189-212-216. Written: version pill + panel (canvas/version/*,packages/ui/src/version-pill.on-demand.ts), the merged Updates row and its update controller with unit tests (24 pass on compute01), the window-pill connection indicator wired to the real binding (windows/link.ts, kept-keys count, resumed/approximate moments) and the TASTE rows (separate docs commit).tscclean. Waiting for a build slot on compute01 (queue ~11) for the first browser batch; log~/j56-logs/b1.logthere. Not built yet: nothing blocking. Decisions I made that need a look: (1) the kept-keys dim text line of the mockup is NOT shipped (a secret typed into a hidden prompt would appear on screen); only the count and the amber key are; (2) no licence-key entry and no release notes row in the product until there is a backend for them.Progress (J56). History is now atomic and pushed (
ui-approved-189-212-216head0176caf22): sidebar-card refactor, in-place copy + contextual press, About list on demand (keeps the critical transfer budget green: critical gzip 305441/307200, brotli 254299/256000), connection icon in the window pill (#212), version pill + panel (#216), TASTE rows. Browser specs on dev-02 (arm64): connection-pill 12/12, version-pill 13/13 after fixes, add-host pill specs 4/4 + stream 9/9 (the unmodified-dev baseline has 4 failures in canvas.spec/sessions-canvas on this VM that I reproduced there: touch grip 43.99px, footer Settings, Linux key glyphs, session badge). Final batch + captures running;scripts/verify fastis queued on compute01.J56: connection states, built into the product (branch
ui-approved-189-212-216, headbd2671f8a; commit1e9369200). One icon per window in the machine pill's place, warm tooltip with the sentence, no text box. Chromium on the production build, 1440×900 @2x and 393×852 @3x, ink (paper for three). The test double's palette rows "Mockup: connection – …" put the icon in each state; in the product the states come from the window's binding (windows/link.ts): connecting, reconnecting (+ amber key and count while keys are kept), resumed (a tick for 1.8 s), approximate (screen rebuilt, 3.2 s), offline (session ended / host refused, each in words), slow (page round trip). Specs also drive the product canvas against the mock server: a dropped socket turns the icon to reconnecting and back.Deviation from the mockup, deliberate: the dim line that showed the typed text at the cursor is not built (a password typed into a hidden prompt would appear on screen). Only the count and the amber key show. Needs your word if you want the text.
J56 finished. Branch
ui-approved-189-212-216, headbd2671f8abb5fa32ae5279e440cb309d8214bc96, base origin/devf4b61cd6c. Pushed, not merged.Commits:
9845b0ec7sidebar-card refactor ·9652ae0cein-place copy + contextualpress·5c15bd0c0About list on demand (D188 budget) ·1e9369200connection icon in the window pill (#212) ·22032d9baversion pill and panel (#216) ·bd2671f8aTASTE rows.Gate.
scripts/verify faston compute01 (x86), copy of this head: Rust half failed for lack of disk, not for code:No space left on device (os error 28)attarget/debug/deps(the VM was 100% full, 2.5 GB free, from other jobs; my target was 8.6 GB, now deleted). Table, verbatim:No Rust file changed in this branch. A re-run needs ≥25 GB free there (build-slot waits for it). The TypeScript half of
verify fast(its exact commands fromscripts/verify.d/ts.sh) was run on dev-02 instead:bun run checkclean; unit tests 394 + 105 + 17 pass, 0 fail; protocol tsc clean; transfer budgetcritical gzip 305448/307200 brotli 254318/256000, deferred 58585/61440, onDemand not limited (largest chunk 15456/20480); logTS_GATE_OK.Browser specs (dev-02, arm64, production build). Final batch: 107 passed, 5 failed: 4 fail identically on unmodified
f4b61cd6con the same VM (canvas.spec touch grip 43.99999 px < 44; canvas.spec sidebar footer Settings; canvas.spec Linux key glyphs; sessions-canvas badge); 1 version-pill timing flake (6/6 on repeat, assertion timeout raised). Add-host pill specs 4/4 alone (a run next to other heavy jobs hit 2 s long tasks; same spec passes on dev when alone).Not built / for kayg: (1) typed-text echo under a lost link (secret risk); (2) licence-key entry and release notes (no backend); (3) the product's update check is stubbed behind
TODO(#211)inapps/tracer/src/canvas/version/source.ts, so the row ends in "Couldn't check — try again" until #211 exists; (4) the pill number is the build's short commit id (the web app has no version number).