Goldie Blocks

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

NameWhy it keeps "interview"
InterviewStatus and the progress projectionPer-item progress of the pass itself (not_started → complete / skipped), now derived rather than stored — packages/domain/src/interview/.
/docs/workflows/interview-flowDocuments the pass end to end.
"structured interview", "interview pass" in proseThe 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.

CurrentTarget
"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.

On this page