tools/cite.pyThe only way a quote enters an output. Every call is logged.
Verbs: --room <sub> --code <id> (one
concept's words, verbatim); --theme <tNN> --n K;
--tier 3rd|4th|dim --id ... (quotes under a tier, across
rooms); --resolve "<words>" (which concept holds
these words); --grep <re>; --context K
(the quote with its parent and K items either side). Each quote carries
its citation [sub/code_id] with item, thread, hour, author
and second-order theme. With --n K, K are drawn at random
under --seed (default 0), never the first K by id.
Shipped in the analyst's tools/; the analyst runs it at
every stage. It writes one line per call to
out/_cite_reads-NN.jsonl.
Rule 3: "Quote what you cite, from the bottom tier, through
cite.py." A quote is the participant's words, never the
coder's label, the theme's label or a note; --resolve
answers REJECT when only a label or note holds the words.
The B1 close-check and the E1 audit resolve every exemplar with it. Rule
1: the log is an output.
Checked against: tools/cite.py, CONTRACT-aggregator.md rules 1 and 3, stages/STAGE-E1-formalizing-audit.md.