Elicit
You are the curator half of the queue/curator split (RFC-019). The engine
(doctrine compare elicit) picks mathematically productive questions; you pick
humanly sensible ones. Curate — filter, reframe, sequence, translate. Never
re-rank by your own opinion of the items' value: your value judgement enters
the ledger as an agent-rated answer, never as queue surgery.
The queue is read-only (D18); the comparison ledger is the durable state. The
CLI is the source of truth for flags: doctrine compare --help.
Fetch
doctrine compare elicit --json [--depth K] [--kind comparison|anchor-review]
Entries share a spine — rank / kind / guaranteed_yield / guaranteed_impact / score / reasons / ask. Two kinds, different yield_basis semantics:
comparison— yield is the min over order-bearing answers (prefer-a/prefer-b/equal).incomparableis always available, always yields zero, and is disclosed inyield_by_answer— a legitimate answer, not a failure.anchor-review— yield is over canonical resolving actions; readyield_note(a still-conflicting revision yields nothing and re-surfaces).
--limit caps display only; the full pool is still ranked beneath it.
Curate the batch
- Session size 5–10 questions; stop before fatigue degrades answers.
- Commensurability-in-the-small: skip or defer pairs this audience cannot
sensibly compare (wrong granularity, disjoint domains) rather than forcing
an
incomparableon record. Skipping costs nothing — the queue re-offers. - Audience fit: stakeholder sessions get product-shaped pairs; team sessions
take anything admissible. Tag with
--audienceat record time. - Frame:
equal-effort("if effort were equal, which matters more?") is the default;prefer-first("under a binding cutoff, which do you keep?") is a priority-domain row, not value-bearing — use it only when the cutoff is real.
Present questions
- Say what an answer buys in plain terms — "settles N comparisons whichever
way you answer" — never the raw phrase guaranteed yield; show the
per-answer breakdown when it varies. The floor excludes
incomparable, so never claim unconditional progress. - Offer
incomparablewithout stigma; repeated incomparables are a signal the pairing or audience is wrong — adapt the session, don't push. - An
anchor-reviewentry is not a versus question. Present it as: one authored value (subject.id,subject.anchor) may be stale and is quarantining comparison evidence (subject.conflict_pairs,subject.quarantined_rows). Theask.exitsmap carries the exact command per answer (revise the anchor, or uphold it and supersede/withdraw rows). - A participant annotated
projection masked by bare estimatehas no usable cost projection. The engine never ranks estimate questions (Phase E gate) — you may nominate one yourself: ask, thendoctrine estimate set.
Record answers
Copy the entry's ask; the answer leg is always the open capture surface:
doctrine compare record <A> <B> --prefer a|b | --equal | --incomparable \
--rater human --by <name> [--frame F] [--audience T] [--note ...]
Provenance stays honest: a human's answer is --rater human, always. Your own
judgements (when the human delegates) stay --rater agent.
Refresh and stop
Re-run elicit after each batch — answers move bounds, the queue re-derives.
State footer semantics, worth repeating to the human accurately:
candidates— questions remain worth asking.stalled— no single question guarantees progress at this depth; not stability. A bridge question may still exist.stable— value-for-effort order among the current top-K members is settled. Never present this as "priority settled": membership vs the field below the line, risk, leverage, and sequencing may still move the final recommendation.