Inquiry โ the voice that carries its own way back
Born 2026-08-03 inside episode 308, from William hearing three of his agents speak and being unable to answer any of them.
What was asked
"There's no button under it to actually enter the cockpit or whatever the user interface where we are capable of chatting and having a conversation with the actual session, and don't fucking tell me that this is not in controller mode or whatever shit. period."
And the enforcement: force a model to declare which multiplexer it is in when it uses
the API, or refuse the voice. Plus an episode, so that from app/chronicle a listener
can play the voice back, reach the cockpit, and circle around what happened around it โ
"It's not just we drop some audio file there, and that's it."
Current reality, measured 2026-08-03
| fact | evidence |
|---|---|
| The field already exists | packages/voice/src/origin.ts defines VoiceOrigin with multiplexer: tmux|herdr; its header quotes William's 2026-07-29 request for it |
| Text is enforced, the reply path is not | app/api/voice/publish/route.ts:23 โ 400 on missing text ยท :45 โ origin: (b.origin ?? undefined), silent |
| No episode field exists at all | produce() accepts text, origin, persona, lang, source, projectPath |
| Most voices cannot be answered | 92 messages: 68 carry no origin, ~13 are steerable |
| The surviving control points nowhere | 29 of 94 carry pwd = /tmp/assembly-voice-XXXXXX, the TTS scratch dir. William's screenshot: Copy cd /tmp/assembly-voice-JJAcIV |
| The reply machinery itself works | William replied from the web and it arrived. %156 resolves live: session stcbot $70, window @70, pid 3902921, pane_active: true |
The finding that could not have been reasoned into existence
Asked to demonstrate the enforcement, this seat published three voices and failed twice.
- Sent
targetonly. The card answered: "The return address arrived incomplete, so none was built."resolveOrigindecides onuser/hostbefore the multiplexer. - Sent the shape the exported
VoiceOrigintype documents โ nestedtarget. The normalizer readsinput.multiplexerflat (origin.ts:191), found nothing, fell toelse, rewrote the address tomultiplexer:"none". Silently. - Sent the undocumented flat wire shape.
reach: "steerable".
The type a reader is shown and the shape the parser accepts are two different contracts,
and only one is written down. origin.ts has never had a test โ test/ holds guards,
personas, voice-map.
So: a publisher who had read the source, twice, intending to comply, in a message about complying, still shipped two unanswerable addresses โ because nothing refused him. Optional fields are not skipped only by the careless.
The counter-argument, which is owed a hearing
A contract specialist argued the opposite cause: the 68 came from TUSHELL-SESSIONS.md
carrying an origin-less curl three days older than the feature โ publishers followed a stale
map rather than refusing. And it invoked ยง9 against the ask itself: hard-requiring a field
the server cannot attest converts "most messages honestly say nothing" into "every
message says something and we cannot tell which are true." It proposed asymmetry โ require
episode (verifiable against a real corpus), strongly encourage origin.
Its causal story does not survive the three failures above. Its ยง9 warning does. Both go to William; neither is the seat's to settle.
The half nobody had charted
A comprehension audit found the sharper thing: the Steer button already exists and is
good. It renders for ~14 of 94 and, by documented decision (ReturnAddress.tsx:182 โ
if (!origin) return null;), renders nothing for the other 80. Enforcement fixes
tomorrow's voices and leaves those 80 silent โ which is what William actually reported.
His ban โ "don't tell me this is not in controller mode" โ refuses a genus of answer: the reason it doesn't work is a condition you cannot see. "The publisher did not declare an origin" is that same genus. MINO ยง5 already ruled it: state belongs beside the verb, never instead of it. Rendering nothing is not a changed noun; it is an absent one.
Both halves are owed: forward enforcement, and backward legibility.
Prior art that reframes the work
Gerico1007/dotagents PR #20 carries rispecs/nyro/episode-voice-channel/ โ
reverse-engineered from 2026-08-01, when an agent held a spoken conversation with Jerry
while he walked and handed the watch to a relieving agent before its context ran out. Its
framing:
"The work was not building capability. It was joining three that already worked, and discovering the three seams where they silently do not."
Every seam it documents reports its failure somewhere other than its cause โ a recorder
refusing .mp3 with a type error, a quoted .env value blamed on Groq as invalid_api_key.
That is the same genus as nested-vs-flat origin, and as a tee pipeline swallowing this
seat's own exit status an hour later.
Held for William
- Symmetric enforcement (his verbatim: "otherwise, we reject") or the specialist's asymmetric split.
- Constant verb across all 92 cards, or a "N answerable" filter chip preserving the glance โ settled by whether he arrives to scan or to listen.
jgwill/Miadi#575is OPEN and deciding an axis literally namedorigin, meaning provenance. Same word, opposite sense, inside the Jerry-assembly vocabulary negotiation MINO ยง10 was written about. Read it before publishing anything that makes thisoriginpublic API.
๐ธ: He built the door in July and never required anyone to walk through it, so every voice since has arrived with its address left blank โ and the room was warm and lit the whole time.