super super/docs/reviews/D_1_3C_2C_1C_B5.md
Measured, not argued. tools/terminal-join-probe.mjs runs the whole product surface — the production chain to a confined Carrier, a real WebDriver click on Watch terminal, the te…

B5 · the joined terminal is open, and nothing in Super can put a byte on it

CLOSED by R0a on 2026-09-04. super-dogfood is now an installed payload that writes SUPER-DOGFOOD-R0-READY to its own terminal at startup, and tools/terminal-join-probe.mjs is green and mandatory. This document is kept as it was written, because the finding it records — that a healthy, beating, zero-byte presentation was the shape of a system that had finished the pipe and not built the thing that speaks into it — is the reason Lane B started when it did. See docs/reviews/R0A_I_SPEAK.md.

Measured, not argued. tools/terminal-join-probe.mjs runs the whole product surface — the production chain to a confined Carrier, a real WebDriver click on Watch terminal, the terminal webview Tauri creates for it, the Plane the runtime opens, and the xterm the person is looking at — and then waits.

held         the cockpit webview came up
held         a Worker reaches the page with terminal PRESENT
             worker wk_0004 · occupancy OCCUPIED · carrier RUNNING · terminal PRESENT
held         the *Watch terminal* action is offered on that Worker
held         the bind resolved, and not as a refusal        receipt outcome accepted
held         a real terminal webview exists after the click
held         the terminal page is live and has bound its sink

waiting 8000 ms for bytes on the joined path…

             plane frames 0 · bytes 0 · applied 0 · consumed 0 · acked 0 · beats 33 · gaps 0
             fault null · closed null · rendered characters 0

FAILED       MEASUREMENT — the marker SUPER-DOGFOOD-R0-READY reached xterm

Nothing is broken. fault null, closed null, gaps 0, the sink is bound, and the page sent 33 liveness beats in eight seconds — the credit machinery is running, the presentation is live, the plane is open. Zero bytes have crossed it because there is no product path that produces one.

Why, in six counts

Each is a grep, not a claim.

factcount
1serve_carrier's op vocabularydrain · start · stop · pty-attach · pty-detach · pty-resize — no op that makes a Carrier write
2super-carrier-fixture writes to fd 1in one arm: SAY, reached only from the control channel
3who may send SAYthe host, in verify only — the runtime holds no control channel by design
4terminal_input / terminal_resize in command_spec.ex0
5onData / onKey in cockpit/ui/terminal.js0 (the one grep hit is the header sentence saying so)
6production callers of Ampd.TerminalAttachment.write/20 in lib/, 5 in test/

Fact 6 is the one worth stopping on. The inbound leg is built and falsified and unreachable — write/2 exists, is phase-guarded, has five tests, and the host's pump on the far side writes those bytes to the master (host/src/attach.rs:549) and counts them (stats.to_master). It is the same shape as acquire_terminal one slice ago: a capability reachable only from a test is not a capability. The difference is that acquire_terminal was missing its caller, and this is missing a command and a page event — the Plane's wire has exactly three frame kinds (@out, @ack, @close) and none of them carries input.

And the outbound leg has no source: the payload is chosen by the host from what it has installed — correctly, D.1.2's rule, no field names an executable — and what it has installed is a fixture that says nothing unless the host tells it to.

So B5 is not blocked by a defect

the plane           built · falsified · OPEN · measured carrying 0 bytes
the outbound source absent — the only payload speaks only when the host asks
the inbound source  absent — no command carries a keystroke, no page produces one

SUPER-DOGFOOD-R0-READY cannot appear in xterm on this tree, in either direction, and no repair inside D.1.3c makes it appear. Two scope decisions would, and both belong to a reviewer rather than to this slice:

  1. A Carrier payload that says something. The Motor — Lane B, *Super

Self-Hosting R0 · Build Me*. This is the answer that makes the terminal worth watching, and it is the one the roadmap already points at.

  1. An input path. terminal_input as a command, a fourth frame kind on

the Plane's wire, onData in the page, and a decision about what OBSERVE becomes when a renderer can type. cockpit/ui/terminal.js states the current scope in its own header — "`terminal_input` and `terminal_resize` are not commands this process registers, so they are not refused here — they do not exist. That is what makes OBSERVE a scope rather than a stage." Changing that is a presentation-authority ruling, not a repair.

The probe is committed and it fails. It is not marked expected-to-fail and it is not deleted: a red line that names the gap is the honest form of this result, and it turns green the day either decision lands.

What this says about the round

B1 gave acquire_terminal a grammar. B3 proved it cost the ordered census nothing. D.1.3b·2f made a real host able to start a Carrier at all. B4 made a real Super hold its own Carrier's terminal for the first time. B5 opens that terminal on a person's screen and finds it empty — and the emptiness is not a bug in any of the four, it is the shape of a system that has finished building the pipe and has not yet built the thing that speaks into it.

That is the dogfooding argument, arrived at by running it rather than by predicting it.

Open in the interactive atlas