a73x

2aa60529

docs: the exe comment counts muxa as the row it is, and two whys move to the mux row

a73x   2026-08-30 12:43

Commit message
docs: the exe comment counts muxa as the row it is, and two whys move to the mux row

build.zig
Old New
@@ -238,13 +238,17 @@ const mod_table = [_]ModSpec{
238 // error. `agent` stays a row because muxa's suite must be able to fail on 238 // error. `agent` stays a row because muxa's suite must be able to fail on
239 // its own. The grants are the four mains' union: `webhub` for the hub 239 // its own. The grants are the four mains' union: `webhub` for the hub
240 // surface the entrypoint serves, `daemon` for the Server it constructs 240 // surface the entrypoint serves, `daemon` for the Server it constructs
241 // and the `quic_server`/`upgrade` seams it reaches through it, `quic` for the key 241 // and the `quic_server`/`upgrade` seams it reaches through it, `quic` for
242 // it loads before that listener exists, `client` for the announce 242 // the key it loads before that listener exists, `client` for the announce
243 // vocabulary the daemon writes and the client reads — one owner, or the 243 // vocabulary the daemon writes and the client reads — one owner, or the
244 // two spell it differently — plus the wall the no-arg client opens, 244 // two spell it differently — and for `client.hosts`, which owns the host
245 // `protocol` for validSessionName (a bad --session is a usage error at 245 // grammar and the state file, so `mux web`'s argv is parsed by the SAME
246 // parse, not bytes a daemon downstream must refuse) and `sockpath` for 246 // rules `mux hosts add` is: one grammar, not two. Then the wall the
247 // the sun_path bound every verb checks before acting on a path. 247 // no-arg client opens, `protocol` for validSessionName (a bad --session
248 // is a usage error at parse, not bytes a daemon downstream must refuse)
249 // and `sockpath` for the sun_path bound every verb checks before acting
250 // on a path. `testtmp` is the keygen round-trip's: it needs a directory
251 // to generate into, which the daemon itself never touches.
248 .{ .name = "mux", .path = "src/cli/mux.zig", .layer = 6, .link_libc = true, .imports = &.{ "daemon", "client", "wall", "agent", "webhub", "protocol", "proxy", "quic", "xdg", "spawn", "sockpath", "cliflags" }, .test_imports = &.{"testtmp"}, .quic_tests = true }, 252 .{ .name = "mux", .path = "src/cli/mux.zig", .layer = 6, .link_libc = true, .imports = &.{ "daemon", "client", "wall", "agent", "webhub", "protocol", "proxy", "quic", "xdg", "spawn", "sockpath", "cliflags" }, .test_imports = &.{"testtmp"}, .quic_tests = true },
249 }; 253 };
250 254
@@ -910,8 +914,9 @@ pub fn build(b: *std.Build) void {
910 // needs it by hand, or the argument parsers lose the version they print. 914 // needs it by hand, or the argument parsers lose the version they print.
911 test_mods[comptime idxOf("mux")].addImport("build_options", build_opts_mod); 915 test_mods[comptime idxOf("mux")].addImport("build_options", build_opts_mod);
912 916
913 // ONE product binary. The four mains are files under it, reached by 917 // ONE product binary. Three of the four mains are files under it and
914 // the mode word rather than by four names on PATH — which is also what 918 // muxa is the `agent` row it imports; all four are reached by the mode
919 // word rather than by four names on PATH — which is also what
915 // lets the client's auto-start exec this same image with argv 920 // lets the client's auto-start exec this same image with argv
916 // `mux d run …` (spawn.zig) instead of hunting PATH for a sibling. The 921 // `mux d run …` (spawn.zig) instead of hunting PATH for a sibling. The
917 // fixtures below stay separate: they stand in for users, not for the 922 // fixtures below stay separate: they stand in for users, not for the