Mockup: add-host flow (round 1) #82
Open
opened 2026-10-07 13:49:02 +00:00 by kayg
·
34 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#82
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?
Add-host flow mockup, round 1 (D132, D138-D141, D144, D156, D162). In-product prototype on branch proto-addhost, preview at http://10.69.69.125:47371/?mock=1&proto=addhost. Orchestrator reviews before the owner sees it.
Starting the add-host flow mockup on branch proto-addhost from base
2786430c9b. Issue #82 and parent #58 both have no comments; worktree was clean.Finding: #82 and add-host parent #58 have no prior comments. packages/ui/src has shared overlay, pill, tick, tooltip and spring primitives but no toast or switch primitive; I will add the missing reusable pieces in packages/ui before using them in the mock flow.
Resuming the add-host mockup on proto-addhost at base
2786430c9b. #82 has two prior comments and parent #58 has none. The shared switch and toast modules from the prior step are present as unstaged changes; I’m reviewing and carrying them forward.RED: the new production-build browser check fails as expected before implementation: is absent on (test/add-host-prototype.spec.ts:10, 18; Error: Playwright Test did not expect test() to be called here.
Most common reasons include:
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/add-host-prototype.spec.ts:18
16 | }
17 |
You are calling test.beforeAll() in a configuration file.
You are calling test.beforeAll() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test.beforeAll() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/auth-binary.spec.ts:5
3 | import { execFileSync } from "node:child_process";
4 | let source: string;
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/core-screen.spec.ts:64
62 | }
63 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/detached-output.spec.ts:4
2 | import { expect, test } from "playwright/test";
3 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/motion-audit.spec.ts:39
37 | }
38 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/onboarding.spec.ts:9
7 | ] as const;
8 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/renderer-regression.spec.ts:17
15 |
16 | for (const fixture of terminalFixtures) {
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/setup-layout.spec.ts:9
7 | ] as const;
8 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/snapshot-resume.spec.ts:8
6 | const SNAPSHOT_MARKER = "TRACER_SNAPSHOT_READY";
7 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/terminal.spec.ts:5
3 | import { expect, test } from "playwright/test";
4 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/unicode-fidelity.spec.ts:7
5 | const MODES = ["single", "utf8-split", "grapheme-split", "snapshot"] as const;
6 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/windows-gestures.spec.ts:63
61 | }
62 |
You are calling test() in a configuration file.
You are calling test() in a file that is imported by the configuration file.
You have two different versions of @playwright/test. This usually happens
when one of the dependencies in your package.json depends on @playwright/test.
You are calling test() from an async test.describe() block. Only sync ones are supported.
at apps/tracer/test/windows-prototype.spec.ts:74
72 | }
73 |
RED: the production-build browser check fails as expected before implementation: the add-host window is absent on the addhost route (test/add-host-prototype.spec.ts:10, 18; TRACER_TEST_PORT=4782 bun x playwright test test/add-host-prototype.spec.ts --grep quiet, 1 failed).
Finding: the first prototype browser pass showed that the source disclosure exposed no button role and test labels were ambiguous with the close control; manual and entry actions then timed out on those selectors. The run recorded 1 pass, 4 failures, 1 interrupted and 2 not run (apps/tracer/test-results/add-host-prototype-*/error-context.md). I am making the disclosure explicit and tightening selectors before rerunning.
Finding: launching Add hosts from the sidebar left the sidebar over the canvas window. Browser evidence: Playwright retried the close-button click 52 times; .sidebar-head intercepted pointer events. Fixing launch to dismiss the sidebar.
Step: shared source icons, switches, and toasts are in
84466a2. bun run check passed; 9 add-host browser assertions pass on the full working tree.Step: shared root-confirmation tip and mono-sized tooltip labels are in
49180a2. The focused Root available browser path passes; Escape, outside-click, focus restore, and reduced motion use one shared component.Step: mock discovery contract and six fixtures are in
364cc83. The inventory includes one already-added host, three SSH-ready hosts, and separate unreachable, authentication, and mesh-policy outcomes.Step: /__mock/proto/addhost inventory and preview auth are in
11bab70. The new route is mock-only; no production API was added.Step: the in-product canvas flow is in
5dc678f. Browser evidence fixed three interaction defects: sidebar overlay interception, source-switch remount, and terminal output blocking Root available; mixed failures now remain visible. Full focused spec: 9/9 passed.Step: browser assertions are in
2024863. The focused Playwright spec passed 9/9 on TRACER_TEST_PORT=4782; source discovery and mixed install behavior are covered.Step: the repeatable capture harness is in
80a4c9d. It generated the 68 screenshots with one capture row per file; screenshot dimensions were verified at 393×852 and 1440×900.Step: the 68 PNGs and manifest are committed in
797678c. Captures are under apps/tracer/captures/proto-addhost/; manifest.txt maps each file to 17 states, two themes, and two viewports (3.3 MiB total).Gate finding: TRACER_TEST_PORT=4782 scripts/verify fast failed only Rust test review3_backend_reply_has_a_deadline (auth/review3_tests.rs:619; 70 passed, 1 failed, 6 ignored). fmt, VT fmt, clippy, cargo-deny, and both static builds passed. Rerunning the exact test in isolation.
Finished at HEAD
797678c982; worktree clean. Preview unit is active at http://10.69.69.125:47371/?mock=1&proto=addhost; preview and inventory return HTTP 200. Focused Playwright spec: 9/9 passed. Captures: 68 PNGs, 17 states across ink/paper and 393×852/1440×900, mapped in apps/tracer/captures/proto-addhost/manifest.txt (3.3 MiB).Gate diagnostic: isolated review3_backend_reply_has_a_deadline reproduces an unrelated auth failure: it receives Close code 1011, reason connection ended, at 33.01s; the assertion at crates/infraternal-server/src/auth/review3_tests.rs:619 expects a failed Result. No auth files were changed.
TRACER_TEST_PORT=4782 scripts/verify fast summary (verbatim):
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | FAIL (101) |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
test result: ok. 70 passed; 1 failed; 6 ignored; finished in 126.65s
Orchestrator visual review of round 1 (
797678c): rejected, not shown to the owner. Broken discovered-host rows (70 px host column, words broken, empty middle), a success window clipped at the viewport edge with the toast over a button, progress steps drawn as unchecked checkboxes, an invisible consent checkbox in paper, a mesh-policy failure that repeats itself three times, an "Add hosts" pill repeating the heading, the TEST DOUBLE badge over the top bar. Flow, states and most copy are right. Round 2 launched with an exact spec (grid row anatomy, shared step glyphs, one what-happened/what-to-do/retry pattern for failures, shared platform type tokens).Start: branch proto-addhost, base SHA
cecc7ecd7b. Reading prior comments failed: Forgejo comments endpoint returned InvalidContentType.Finding: focused production browser checks reproduce the reviewed layout defects before implementation. TRACER_TEST_PORT=4782 bun x playwright test test/add-host-prototype.spec.ts: 6 passed, 6 failed. Evidence: row grid has 2 columns (expected 3); badge remains top-right; consent tick has no visible-border token; failure screen lacks the requested two-sentence copy; bootstrap has no shared spinner; success add-host window starts at x=-172.5 px on 393 px viewport (test-results/add-host-prototype-*/error-context.md).
Finding: second production browser run passed 8/12. Remaining layout evidence: discovery guidance wrapped to 2 lines at a 640 px content width; 44 px controls measured 43.9895 px during the window spring. I’m tightening desktop letter spacing and adding 1 px target allowance. The badge test measured the correct bottom-left position (12 px); getComputedStyle resolved right:auto to a pixel value, so the assertion now checks the rendered rectangle. The checkbox token resolved to the theme color as expected, so that assertion now compares against --fg-2.
Finding: the success geometry probe showed the edge-arm terminal window intersecting the viewport without fitting inside it while the add-host window remained visible. Evidence: the focused root-install test failed with clipped surface Canvas window for edge-arm. I will keep the terminal fully outside the initial success view and make Go to window pan it fully into view.
Finding: docs/design/toast.md is absent in this checkout. Reused the shared mountToast primitive and its standard position in packages/ui/styles.css:129-162; success geometry asserts it overlaps no controls.
Step complete: added shared spinner and four-state status primitives plus theme-aware tick borders. Commit
14363ee. Tracer TypeScript check passed; focused production-browser spec passed 13/13; desktop and phone success bounds passed.Step complete: rebuilt discovery rows, failure copy/retry, progress, consent, badge, platform type tokens, and success routing. Commit
1afbc92. The focused spec asserts 54 px desktop rows, 640 px discovery copy, 44+ px phone targets, zero clipped windows in both success viewports, and zero toast/control overlap.Step complete: committed the focused production-browser assertions in
3f78f57. TRACER_TEST_PORT=4782 bun x playwright test test/add-host-prototype.spec.ts passed 13/13; bun run check passed.Step complete: committed refreshed captures and manifest in
3e0b01e. Evidence: 68 state PNGs + 2 row crops; manifest has 71 lines. Phone crop is 678x192 px; desktop crop is 1280x110 px.Finding: scripts/verify fast currently reports auth::tests::review3_tests::review3_backend_reply_has_a_deadline as failed during the Rust workspace tests. The gate is still running; I will confirm the complete Rust summary before following the brief's dev-merge condition.
Update: the Rust server suite reported 3 failures: review3_backend_reply_has_a_deadline (review3_tests.rs:619), review3_pending_routes_and_idle_expiry_recovery (tests.rs:1505, unexpected WebSocket close), and review4_ten_second_open_preserves_authority (tests.rs:1497, ResetWithoutClosingHandshake). The brief's single-failure merge condition is not met; cargo-deny/static-build checks are still running.
Isolation reruns passed: review3_pending_routes_and_idle_expiry_recovery passed with a 2003 ms idle-close observation; review4_ten_second_open_preserves_authority passed (10,040 ms open, 3,414 us revoke-close). I will rerun scripts/verify fast with Rust test threads serialized; the only stable failure so far is still under review.
Update: serialized scripts/verify fast still had 3 server test failures (backend_reply, busy_logout, ten_second_open); the two extra WebSocket tests passed individually. Host load was 13.08/14.58/15.21 on 8 cores. I will rerun in the user CPU-weighted scope; the brief's one-failure merge condition is not met yet.
Finished at HEAD
3e0b01e95c. Four logical commits. Focused production-browser spec: 13 passed. Capture inventory: 68 states + 2 crops; manifest 71 lines. Preview unit active; port 47371 returned HTTP 200.Final scripts/verify fast output excerpt, verbatim:
+---------------------------+--------------+
| Rust gate | Result |
+---------------------------+--------------+
| fmt | PASS |
| VT native fmt | PASS |
| clippy | PASS |
| test | PASS |
| cargo-deny | PASS |
| static builds | PASS |
+---------------------------+--------------+
7 pass
0 fail
34390 expect() calls
Ran 7 tests across 2 files. [2.26s]
Starting phone fixes on branch proto-addhost. Worktree HEAD:
3e0b01e95c; dev merge target:e3e00eaea6. Prior issue and parent comments reviewed; worktree clean.Finding before implementation: merging dev produced content conflicts in apps/tracer/src/core-screen.ts, apps/tracer/src/main.ts, apps/tracer/style.css, and apps/tracer/test/mock-server.ts. The worktree merge diff also imports dev's recovery and terminal accessibility changes; resolving both sides before the phone fixes.
kayg referenced this issue2026-10-28 17:53:56 +00:00