a73x

15754bfd

docs: the collapse traded a file's import ban for its module's grant

a73x   2026-08-30 14:11

Commit message
docs: the collapse traded a file's import ban for its module's grant

The 2026-08-30 entry told only the strengthening. Name the loss beside
it: quic_server and shellint proved their empty import lists through the
table, and as child files of `daemon` they now prove them through
review. And interact's header claimed `Transport` sits above it, which
the collapse falsified -- client is layer 1, wall is 2 -- so the
`anytype` is stated as the design choice it now is.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

docs/decisions.md
Old New
@@ -7603,6 +7603,11 @@ body-capable request that declared no length now closes its connection.
7603 - **`predict.zig` moved to `src/tui/`.** The overlay is the wall's, and out 7603 - **`predict.zig` moved to `src/tui/`.** The overlay is the wall's, and out
7604 of `src/engine/` the `term` component structurally cannot see it — before, 7604 of `src/engine/` the `term` component structurally cannot see it — before,
7605 "prediction never enters the replica" rested on prose and a table edge. 7605 "prediction never enters the replica" rested on prose and a table edge.
7606 - **What it cost: a per-file import BAN is now a per-component grant.**
7607 `quic_server.zig` carrying opaque bytes and `shellint.zig` knowing nothing
7608 of the protocol were each an empty import list the table enforced. Both are
7609 child files of `daemon` now and may spell whatever that row grants, so those
7610 two disciplines are prose a reviewer holds, not a refusal the build makes.
7606 - **`webhub` stayed a row.** A module's root directory is the dirname of its 7611 - **`webhub` stayed a row.** A module's root directory is the dirname of its
7607 root file, so `@import("../client/webhub.zig")` from `src/cli/` is "import 7612 root file, so `@import("../client/webhub.zig")` from `src/cli/` is "import
7608 of file outside module path": making the hub a child of the dispatcher 7613 of file outside module path": making the hub a child of the dispatcher
src/tui/interact.zig
Old New
@@ -12,9 +12,9 @@
12 //! One driver: a wall tile's pump (`wallview.pumpTile`); every tile holds 12 //! One driver: a wall tile's pump (`wallview.pumpTile`); every tile holds
13 //! its own transport and replica, and nothing here dials. 13 //! its own transport and replica, and nothing here dials.
14 //! 14 //!
15 //! The transport is `anytype` throughout because `Transport` sits ABOVE 15 //! The transport is `anytype` by choice, not by layering: naming only
16 //! this module: the only thing this module can say about it is the 16 //! `writeFrame(proto.MsgType, []const u8) !void` keeps this loop
17 //! surface it uses, `writeFrame(proto.MsgType, []const u8) !void`. 17 //! transport-blind and testable with no dial behind it.
18 //! 18 //!
19 //! Keeper of two CLAUDE.md invariants: prediction never enters the 19 //! Keeper of two CLAUDE.md invariants: prediction never enters the
20 //! replica, and `replica.zig` is the one applier. 20 //! replica, and `replica.zig` is the one applier.