a73x

dc1f19a2

fix: D1 review — the comments the fold made false, and two dead imports

a73x   2026-08-29 10:01

Commit message
fix: D1 review — the comments the fold made false, and two dead imports

The fold left prose describing what it deleted. Every fix here is a
claim the code now contradicts, plus the two imports the move exposed.

- mux_main's entry dial no longer claims the product's ONE `asked =
  true`: wall_picker.pickBirth sets the other, on the picker-Enter copy.
- `Target.fromSpec`'s doc named the CLI as a caller (it goes
  recipeFor + fromRecipe) and promised one refusal word for a keyless
  `quic://` — the wall, the hub and the CLI each word `SpecError` their
  own way.
- build.zig: the webhub row's `sockpath` sentence describes an import
  this fold removed; the wallview row's "each carries its own
  spelling→Target resolution" is the rationale it deleted.
- `fromRecipe`'s doc and the openHandoff test dropped their field and
  dial-path counts for the rule those counts were standing in for.
- wall_host's ResolveError hand-spelled what webhub aliases:
  `hosts.ParseError || client.SpecError`, one owner of the set.
- wallview imported `xdg` and `sockpath`; no file under src/tui names
  either (verified by grep at HEAD). Both consts and both names in the
  mod_table row are gone — `zig build` proves it.

make check rc 0.

build.zig
Old New
@@ -280,19 +280,17 @@ const mod_table = [_]ModSpec{
280 // The muxweb hub's HTTP/WebSocket decisions: Origin gate, route 280 // The muxweb hub's HTTP/WebSocket decisions: Origin gate, route
281 // table, WS endpoint naming. Assets are injected (the exe root 281 // table, WS endpoint naming. Assets are injected (the exe root
282 // @embedFiles them), so its tests build no artifacts. 282 // @embedFiles them), so its tests build no artifacts.
283 // sockpath is the sun_path bound a `--sock` tile is refused against —
284 // the check argv used to make before the Hub owned resolution.
285 .{ .name = "webhub", .path = "src/client/webhub.zig", .layer = 4, .imports = &.{ "protocol", "client", "wall", "handoff" }, .quic_tests = true }, 283 .{ .name = "webhub", .path = "src/client/webhub.zig", .layer = 4, .imports = &.{ "protocol", "client", "wall", "handoff" }, .quic_tests = true },
286 // The CLI wall (`mux wall`): multiattach stripes in one terminal, one of 284 // The CLI wall (`mux wall`): multiattach stripes in one terminal, one of
287 // which can be ZOOMED — promoted to the terminal's size and typed 285 // which can be ZOOMED — promoted to the terminal's size and typed
288 // through. Same layer as webhub for the same reason — both sit on 286 // through. Same layer as webhub for the same reason — both sit on
289 // client's Transport and wall's grammar; neither may import the other, 287 // client's Transport and wall's grammar; neither may import the other;
290 // which is why each carries its own spelling→Target resolution. 288 // both resolve a spelling through `client.Target.fromSpec`.
291 // `predict` is here because a zoomed tile speculates like any other 289 // `predict` is here because a zoomed tile speculates like any other
292 // typed-at session; the overlay machinery itself is interact's, shared — 290 // typed-at session; the overlay machinery itself is interact's, shared —
293 // and phase 3 promotes the tile into that core rather than growing a 291 // and phase 3 promotes the tile into that core rather than growing a
294 // second copy of it. 292 // second copy of it.
295 .{ .name = "wallview", .path = "src/tui/wallview.zig", .layer = 4, .link_libc = true, .imports = &.{ "protocol", "client", "interact", "wall", "hosts", "handoff", "xdg", "sockpath", "proxy", "engine", "paint", "select", "layout" }, .test_imports = &.{"testtmp"}, .quic_tests = true }, 293 .{ .name = "wallview", .path = "src/tui/wallview.zig", .layer = 4, .link_libc = true, .imports = &.{ "protocol", "client", "interact", "wall", "hosts", "handoff", "proxy", "engine", "paint", "select", "layout" }, .test_imports = &.{"testtmp"}, .quic_tests = true },
296 // ---- layer 5 ---- 294 // ---- layer 5 ----
297 // wall owns the spelling grammar and the state file, so argv is parsed 295 // wall owns the spelling grammar and the state file, so argv is parsed
298 // by the SAME rules the page's POST /tiles and the restored file are — 296 // by the SAME rules the page's POST /tiles and the restored file are —