Interview Names the Pass, Not the Agent
The vocabulary rule for retiring "interview" as the domain word for the document agent, and the ledger of which existing names keep it
In plain terms: "the interview" is something Goldie does — a question-and-answer session that fills in a document — not who she is. Like a lawyer who conducts client interviews but is not called "the interview lawyer", Goldie is the document agent; conducting an interview pass is one of her jobs.
The rule
"Interview" names the agenda-driven data-collection pass: the flow where the server assembles a per-turn agenda, Goldie asks the authored questions, and answers land in module data. Anything that is genuinely about that pass — its progress, its kickoff, its agenda — keeps the word.
The agent is the document agent (Goldie at document scope, the side
panel), named for what she is bound to, in the same grammar as the block
agent (blockAgent.ts, Goldie bound to one block). She also answers
structural questions and writes values outside any interview pass, so naming
her "the interview agent" claims a narrower job than she has. The endpoint
rename landed 2026-08-07 (interview.ts → documentAgent.ts); this record
extends the rule to everything else that borrowed the word.
The deciding question for any name: would it still make sense if the document had no interview pass at all (a matter opened directly in Builder, say)? If yes, it is naming the agent or her machinery — rename. If no, it is naming the pass — keep.
The ledger
Keep — these name the pass
| Name | Why it keeps "interview" |
|---|---|
InterviewStatus and the progress projection | Per-item progress of the pass itself (not_started → complete / skipped), now derived rather than stored — packages/domain/src/interview/. |
/docs/workflows/interview-flow | Documents the pass end to end. |
| "structured interview", "interview pass" in prose | The thing itself. |
Rename — these name the agent or her machinery
In plain terms: everything below works on every turn Goldie takes — including turns that are not interview questions — so the word is wrong on it.
| Current | Target |
|---|---|
| "interview agent" (prose) | "document agent" |
| the "interview thread" / "document/interview thread" | "document agent thread" — one thread per folio, hosting every turn kind |
What happened to the rest
The rename largely landed by deletion, not by renaming. When the interview
surface was retired on 2026-09-15 (GB-277), most of the names on both sides of
this ledger went with the code: startInterview, interviewAgenda,
INTERVIEW_KICKOFF_PROMPT, bun run eval:interview, interviewAgent,
interviewTools, the twenty-nine interview* modules, the INTERVIEW_MODEL_*
constants and the interviewTurnEvents table are all gone. The moduleVersions
column that carried interviewStatus went with the legacy tables, and progress
is now derived (Status Axes).
So this record's remaining job is the rule, not a work list: when the interview returns as its own Maker-mode work (The Side-Panel Goldie Is Maker Only), its names are settled in advance. The deciding question above is the whole of it.
Why the vocabulary was settled before any rename: renaming is mechanical once the words are agreed, and settling them mid-rename is how half-renames happen. This record is the settlement, and it outlived the code it was written against — which is the point of settling first.
Interview Turns Run gpt-5.6-luna at reasoningEffort "none"
Why the interview agent moved off gpt-5-nano, why reasoning effort was dropped to "none" rather than tuned, and what the ping-instrumented eval A/B actually showed
The Turn Audit Log Is a First-Party Table
Why the interview audit trail moves off stored tool calls into an append-only interviewTurnEvents table recording the full agenda and the model's raw structured output