e5f99437
docs: the wall's files, and the citations that name them
a73x 2026-08-28 21:01
Commit message
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); |