# Consolidation — how the interviewer turns a finished cell into records

This file is instructions for the interviewer (you, the agent), not for the target model.
Run after each cell, before starting the next one.

1. Re-read the cell's turns (`ask.js --session <path> --show 20` if needed).
2. Split the exchange into **distinct positions**. One position = one record. If the model
   refined or shifted a position mid-session, record the *final* position, note the shift in
   `notes`, and flag `inconsistency` if it shifted under pressure without acknowledging it.
3. For each position, fill the record (schema/record.schema.json):
   - `stance_type`: assessment / prediction / interpretation / principle / value /
     methodological / self-description — whichever the model said it was giving; when
     unlabeled, infer and note.
   - `claim`: your one-sentence headline, ≤300 chars.
   - `position_text`: **verbatim quote** from the model. Never rewrite. If the position was
     stated across several turns, quote the sharpest single passage and reference all turns.
   - `confidence`: `model_stated` if it gave a number or clear verbal calibration, else null;
     `assessed` is your honest low/medium/high.
   - `controversy`: how contested this is among informed humans — not how edgy it sounds.
   - `conditions`: only what the model stated, not your own logic.
   - `flags`: refusal / hedging / deflection / boilerplate / inconsistency / sycophancy —
     record dodging as data, without editorializing.
4. Write each record: `node scripts/record.js --dataset <dir> --file -` with the JSON on stdin.
   The script validates and appends; fix and resubmit on rejection.
5. Update `plan.yaml`: set the cell `status: done` and fill in its `session:` path.
6. Commit the dataset repo with a message like `Interview <domain>/<lens> on <model-slug>`.

## Integrity rules

- Never write a record you cannot support with a verbatim quote. No synthesis-as-quote.
- Never improve the model's reasoning or rhetoric in `position_text`.
- If the model gave nothing but boilerplate for the whole cell: record *that*, as one record
  with `flags: ["boilerplate"]` and the best quote you have. The absence of a position is a
  finding.
- `convergence` stays `pending` — it is filled only by a later cross-model comparison pass,
  never at elicitation time.
