a73x

e5f99437

docs: the wall's files, and the citations that name them

a73x   2026-08-28 21:01

Commit message
docs: the wall's files, and the citations that name them

CLAUDE.md's reading budget and folder table say what the wall is now;
three comments elsewhere cited symbols that moved, and cite the file
they moved to.

CLAUDE.md
Old New
@@ -26,11 +26,16 @@ costs ~800k tokens; every token stays in context and is re-billed each turn.
26 - **Never `cat` these:** `src/server/server.zig` (3.6k lines, ~35k tok; its tests are 26 - **Never `cat` these:** `src/server/server.zig` (3.6k lines, ~35k tok; its tests are
27 siblings in `src/server/`, none over 1.9k; the agent relay and the 27 siblings in `src/server/`, none over 1.9k; the agent relay and the
28 session table are `src/server/server_agent.zig` and `src/server/server_sessions.zig`), 28 session table are `src/server/server_agent.zig` and `src/server/server_sessions.zig`),
29 `src/tui/wallview.zig` (8.6k), `src/tui/interact.zig` (4.8k), 29 `src/tui/interact.zig` (4.8k),
30 `docs/decisions.md` (7.4k). `test/e2e.sh` is a 189-line runner now; the 30 `docs/decisions.md` (7.4k). `test/e2e.sh` is a 189-line runner now; the
31 bodies are `test/e2e_NN_*.sh` (`E2E_ONLY=<group>` runs one). 31 bodies are `test/e2e_NN_*.sh` (`E2E_ONLY=<group>` runs one).
32 Use `grep -n` for the symbol, then `sed -n 'A,Bp'` for a window. 32 Use `grep -n` for the symbol, then `sed -n 'A,Bp'` for a window.
33 `src/client/client.zig` is 2.4k now — cheap enough to read. 33 `src/client/client.zig` is 2.4k now — cheap enough to read, and so is
34 every piece of the wall: `wallview.zig` is 2.2k (tiles, focus, births,
35 endings, the keyboard loop) with `wall_pump.zig` (1.1k, one tile's
36 thread), `wall_host.zig` (0.6k), `wall_picker.zig` (0.5k),
37 `wall_layout.zig` (0.4k) and its tests in `src/tui/wall_test_*.zig`
38 (none over 1.2k).
34 Every figure here is `wc -l` on 2026-08-28; re-measure before trusting one. 39 Every figure here is `wc -l` on 2026-08-28; re-measure before trusting one.
35 - Every module has a `//!` header stating its contract. `head -12` on it 40 - Every module has a `//!` header stating its contract. `head -12` on it
36 answers most "what is this" questions for ~200 tokens. 41 answers most "what is this" questions for ~200 tokens.
@@ -47,7 +52,7 @@ engine and a client can link those folders and paint its own way:
47 | `src/engine/` | `protocol` `engine` `delta` `replica` `predict` | 52 | `src/engine/` | `protocol` `engine` `delta` `replica` `predict` |
48 | `src/server/` | `server`(+`_agent` `_sessions` `_test_*`) `pty` `quic_server` `cmd` `shellint` `upgrade` | 53 | `src/server/` | `server`(+`_agent` `_sessions` `_test_*`) `pty` `quic_server` `cmd` `shellint` `upgrade` |
49 | `src/client/` | `client` `client_core` `hosts` `handoff` `spawn` `quic_client` `layout` `wall` `webhub` `keymap` `wasm_core` | 54 | `src/client/` | `client` `client_core` `hosts` `handoff` `spawn` `quic_client` `layout` `wall` `webhub` `keymap` `wasm_core` |
50 | `src/tui/` | `wallview` `interact` `paint` `select` | 55 | `src/tui/` | `wallview`(+`wall_host` `wall_picker` `wall_pump` `wall_layout` `wall_test_*`) `interact` `paint` `select` |
51 | `src/cli/` | `main`(muxd) `mux_main` `muxa` `webhub_main` `flags` | 56 | `src/cli/` | `main`(muxd) `mux_main` `muxa` `webhub_main` `flags` |
52 | `src/` | `xdg` `sockpath` `proxy` `quic` `testtmp` — what both sides link | 57 | `src/` | `xdg` `sockpath` `proxy` `quic` `testtmp` — what both sides link |
53 58
@@ -93,7 +98,7 @@ real pty), `wsclient` (browser stand-in), `rawmode`, `delaypipe`, `render`.
93 is the whole terminal only when there is no terminal at all. A chord-born 98 is the whole terminal only when there is no terminal at all. A chord-born
94 tile inherits the focused tile's target and its `-A`. 99 tile inherits the focused tile's target and its `-A`.
95 - **Resize is gain-only.** `layout.Tree.resize` never shrinks a pane; the 100 - **Resize is gain-only.** `layout.Tree.resize` never shrinks a pane; the
96 shrink keys grow a neighbor at the focus's expense in `wallview.doResize`. 101 shrink keys grow a neighbor at the focus's expense in `wall_layout.doResize`.
97 - **Rails are painted from `relayout` and tiles cannot reach them.** Every 102 - **Rails are painted from `relayout` and tiles cannot reach them.** Every
98 tile clear is span-bounded ECH, never line-wide, so a tile cannot erase 103 tile clear is span-bounded ECH, never line-wide, so a tile cannot erase
99 a neighbor's cells or a rail. 104 a neighbor's cells or a rail.
src/client/client.zig
Old New
@@ -1752,7 +1752,7 @@ test "openHandoff: a start that does not help is tried once — a second announc
1752 try std.testing.expectEqual(@as(u64, 2), try shimRuns(tmp.path(), "runs")); 1752 try std.testing.expectEqual(@as(u64, 2), try shimRuns(tmp.path(), "runs"));
1753 1753
1754 // The SECOND dial, with the value a pump holds once it has spent the 1754 // The SECOND dial, with the value a pump holds once it has spent the
1755 // ask — `wallview.pumpTile` clears this bit after the dial that got the 1755 // ask — `wall_pump.pumpTile` clears this bit after the dial that got the
1756 // link, and hands the cleared copy to every `redial`. Without that, a 1756 // link, and hands the cleared copy to every `redial`. Without that, a
1757 // tile whose box was stopped would restart the daemon on every backoff 1757 // tile whose box was stopped would restart the daemon on every backoff
1758 // for as long as it lived: the poll's bug, moved onto a tile. 1758 // for as long as it lived: the poll's bug, moved onto a tile.
@@ -2386,7 +2386,7 @@ test "listSessions: a poll that failed still reports the login it paid for" {
2386 // An ssh that dies without an announce: the login is spent, the poll has 2386 // An ssh that dies without an announce: the login is spent, the poll has
2387 // nothing. Left at `.fd` the wall would ask again in a second, forever — 2387 // nothing. Left at `.fd` the wall would ask again in a second, forever —
2388 // one sshd auth line per second per dead host, which is the whole reason 2388 // one sshd auth line per second per dead host, which is the whole reason
2389 // `wallview.pollDelayMs` stretches a `.pipe` answer tenfold. 2389 // `wall_host.pollDelayMs` stretches a `.pipe` answer tenfold.
2390 var link: std.meta.Tag(Link) = .quic; 2390 var link: std.meta.Tag(Link) = .quic;
2391 try std.testing.expectError(error.Transport, listSessions(alloc, .{ .hand = .{ 2391 try std.testing.expectError(error.Transport, listSessions(alloc, .{ .hand = .{
2392 .host = "nowhere", 2392 .host = "nowhere",
src/engine/delta.zig
Old New
@@ -308,7 +308,7 @@ test "DeltaTracker: blind output is answerable on reattach without rendering a r
308 // noteBlind left the entire unit suite green until this assertion 308 // noteBlind left the entire unit suite green until this assertion
309 // existed, and any reattach quoting a held seq wears it — a browser 309 // existed, and any reattach quoting a held seq wears it — a browser
310 // reconnect, or the CLI's redial after transport death 310 // reconnect, or the CLI's redial after transport death
311 // (wallview.sendAttach); only a fresh attach takes the snapshot arm. 311 // (wall_pump.sendAttach); only a fresh attach takes the snapshot arm.
312 const hdr = try proto.readDeltaHeader(payload); 312 const hdr = try proto.readDeltaHeader(payload);
313 const cur = eng.cursorPos(); 313 const cur = eng.cursorPos();
314 try std.testing.expectEqual(cur.x, hdr.cursor_x); 314 try std.testing.expectEqual(cur.x, hdr.cursor_x);