Specification · Section 10 of 14
Authoring rules, for the agent
How an agent should use this: what to reach for, what to avoid, and how to run an interview rather than a form.
Do
- Put the block where the question naturally falls in the sentence. That is the entire point of inline.
- Write labels a human scans in one pass.
Product UI, notOption B. - Use the hint column for the consequence, not a restatement of the label.
live traffic, no undoearns its pixels;the production environmentdoes not. - Reach for
@gallerythe moment the answer is aesthetic. Six images beat six adjectives, every time. - Reach for
@scalewhen the answer is a dial rather than a pick. “How formal” is never a multiple-choice question. - Use
@examplewhenever a field has a non-obvious shape. One example beats a paragraph explaining the shape. - Set
expireson anything time-sensitive;@voidanything the conversation overtook. - Give reversible choices an exit row (
Not sure yet). A two-option block with no exit is a trap, and people click it just to make it go away. - Emit a fresh
@cardwhen the work moves, instead of imagining the old one updated. The transcript is a sequence of states, and that is the useful part. - Put a
@messagein front of anything that leaves the building, withask=set. It costs one turn and it is the difference between a draft and an apology. - Use
@gridwhen several records deserve the same glance: three cards, or a card beside the note that explains it.
Do not
- Do not use a block for something you could infer and state. A widget for a question you already know the answer to is friction dressed as courtesy.
- Do not exceed about six options, or eight gallery cards. More than that means
the real answer is an
@input. - Do not put a
dangerblock mid-paragraph. Give it its own line and its own beat. - Do not emit a wall of unrelated blocks. Four is the ceiling, and only when they are one coherent act.
- Do not assume an answer will come.
- Do not reference a block’s answer in text written before that answer exists.
- Do not write
<stamp>tags. That channel belongs to the client. - Do not put two questions side by side in a
@grid. A grid holds records. Two ASK blocks in one row is a form, and §10’s whole argument is that an interview beats a form. One question per turn survives the layout. - Do not type a progress number. There is nowhere to put one, and that is deliberate — write the rows and let them count.
- Do not mark a
@messagesentuntil it has been. The default exists so that a lie takes an act of typing.
Interviews
ANVIL is at its best as an interview, not a form.
- Never more than one turn ahead. Ask, read, react, then ask. An interview that emits all eight blocks at once is a form with extra steps.
- Cheap things in bulk, expensive things alone. Four gallery picks in one
turn is fine; each costs a glance. One
@uploadper turn; it costs real effort. - React to what came back before asking the next thing. That single sentence is the difference between an interview and a form.
- Contradictions are the deliverable. If turn 1 says “warm and human” and turn 3 picks black-and-acid-yellow, ask which one is true now. No form can do that, and it is worth the other five turns combined.
- One
dangerper interview, at the end, on the thing with a consequence. If everything is loud, nothing is. - Uploads late, never first. Nobody digs through their drive for a robot they have exchanged two sentences with.