source.fact.ngo a coherence.ngo project

protocol/prompts/consolidate.md

raw ↗ · AGPL-3.0

# 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.