Development record
Framing traces never enter the record, and automated reviewers never read them
Context
The brief-creation interview (itd-142) elicits more than it commits: at a conjectural question it widens the space to several candidate construals, and the human declines most of them; along the way the exchange accumulates framing traces — the phrasings tried, the construals rejected, the paths not taken. Where that residue lands is a trust question, not a storage question. If declined alternatives enter the committed record, every future reader — human or automated — re-litigates them; if automated reviewers can read the traces, review pressure reaches back into the elicitation and shapes what a human is willing to consider out loud. The interview's design settled this as the two-output rule; the rule outlives the interview surface, so it is recorded as its own decision.
Decision
Elicitation has exactly two outputs, and only one enters the record.
- The brief and the ledger receive committed products only — content the human confirmed, with its provenance. Nothing tentative, nothing declined.
- Declined alternatives and framing traces go to a local ledger side —
the
.abcd/.work.local/tier, per-worktree and never committed. The exact store shape is the itd-142 spec's to fix; the tier is not. - Automated reviewers never read the local ledger side. No review agent, validator, or lint consumes framing traces — not as context, not as evidence, not as calibration data. A human may read their own traces; machinery may not.
- The transcript is discarded once the committed products and the local ledger side are written. There is no third output.
Alternatives Considered
- Commit the traces as evidence (a what-was-declined record beside the brief). Rejected: it converts every declined construal into a standing invitation to re-litigate, and it makes the elicitation performative — a human who knows every rejected phrasing is committed reviews their words instead of thinking.
- Let reviewers read traces under a flag (opt-in review context). Rejected: the value of the rule is its unconditionality; a flag makes trace-visibility a negotiation, and the chilling effect returns the moment the flag exists.
- Discard everything uncommitted (no local side at all). Rejected: the human's own traces have recall value to the human — the local tier preserves that without publishing anything.
Consequences
- The brief stays a record of decisions, not deliberations — consistent with the brief's truth rule (everything in it is decided) and adr-5.
- Brief invariant 14 states the rule where invariants live; itd-142 consumes it, and its acceptance criteria assert the boundary behaviourally.
- The local ledger side joins the
.abcd/.work.local/tier's existing contract: per-worktree, gitignored, merge-conflict-free. - Any future reviewer or validator that wants elicitation context must be told no by design — a check that would benefit from reading traces is a check that must be redesigned to run on committed products.
Frontmatter
| id | adr-50 |
|---|---|
| type | adr |
| status | accepted |
| date | 2026-08-22 |
.abcd/development/decisions/adrs/0050-framing-traces-never-enter-the-record.md
open on GitHub ↗ · commit history ↗
References5
- adr-36Coverage blanks are a fillable lifecycle — authored is not extracted, and the interview is its own steprelated
- adr-41Documents and ledgers never leave the user tier; a public citation requires both gatesrelated
- adr-55The construal stands in the record; its history does notrelated
- itd-142The brief-creation interview: abcd elicits a repository's brief in a staged conversation — narrative first, then frontier rounds that ask only what the record cannot yet settle, options at conjectural questions (at most three candidate construals, a ceiling not a target, with a null answer always available), and a per-item confirmation — distilling committed products into the brief and a ledger while the transcript is discarded. Entry is one door for both modes: a brownfield repository arrives pre-populated from embark probe coverage, provenance-stamped and still requiring confirmation; a greenfield repository is the same interview run from the all-blank coverage state. Command-shaped, because it mutates state — abcd ships zero skillsrelated
- itd-143The brief gains a framing chapter under 01-product/ — the macro-why home: one section holds the project's framing, the why behind the why, and receives the brief-creation interview's committed framing products; the brief-lifeboat mapping gains the matching row so a lifeboat carries framing like any other sectionrelated
Referenced by1
- adr-2609021016288378A reframe occasioned by a reading is a committed pointer to an event whose content stays local, and the frame it fingerprints is the framing as it presently stands, which adr-55 enumerates as three committed surfacesrelated
mentions5
- adr-5Brief is the current state; no version label, no archive directory
- dcn-26082200000000072026-08-22 — Interview-workstream records filed (the 2026-08-22 handover's
- dcn-26082800000000042026-08-28 — Cold-reading workstream rulings adopted (facilitator; committed in design discussion, disclosed as a pre-tooling lapse): (1) the construal-admissibility extension of adr-50 files first — the construal as it presently stands is committed record and readable by automated readers, its revision history is not (adr-55 carries the full rules); the construal is sited as a brief section under 01-product/. (2) The reading record (type name ruled at (17)) is a distinct record type in the issue tier with a separate disposition record and its own disposition vocabulary — the five-state slate with availability by position, per (19); the existing issue states are not reused for it; status is the presence of the keyed disposition, never folder membership. (3) One closing reading run is scheduled over the same object set after dispositions, with interpretations fixed in advance: silence is weak evidence of settlement; an accepted-and-acted detection returning is a finding; a rejected-with-purpose detection returning bears on whether the purpose resolved the tension. Amnesia is proven by a repository eval, never by a case run. A clean opening run is recorded as a run with an empty item set; the cycle proceeds and no further reading is commissioned. (4) The supply-regime check is built now: a regime field on the output contract, validated at ingest; enforcement is the default, and degradation to record-and-flag happens only on observed noise, recorded. (5) Reading invocation carries no free text: position and target state only. (6) The lapse log is a value in capture's validated category list, not the source enum. (7) Elicitation: the articulation round produces one intent, the exit noting candidates; the escalation rule is adopted (a defaults question that turns out conjectural escalates to the options regime); a held working principle permits articulation to proceed with the mechanism recorded as an explicit nullity, flagged in the readiness summary. (8) From the readings design, agreed as proposed: the reading record carries a position-typed item body (one record type, four bodies — registrative, generative, explicative, evaluative); the selection criteria are a recorded discipline with the committed six-criterion slate, never supplied at invocation; the comparative reading's candidate set is the widening reading's pre-admission output, with admission following the comparative characterisation; the no-input-is-authoritative condition enters the blindness core (no document passed to a reading is the fixed side of any comparison), and the widening/entailment asymmetry over draft and planned intents is stated explicitly in the assembler's include list — both confirmed at the facilitator's review, 2026-08-28; the disposition-side recurs citation is adopted as the recorded form of warm recurrence recognition. (9) Ruled 2026-08-28 (revised the same day): the manifest is committed to the durable tier at `.abcd/development/readings/<run-id>/`, alongside the run record — a new record family; lifecycle selects the tier, and commit reference plus per-item hashes make the assembly re-runnable and diffable. (10) Adopted 2026-08-28: brief invariant 15 — reading contexts and the ledger never meet, the scribe is not a transcript consumer, and the session-transcript store is reached through one door by an enumerated allow list (custodian writes and reads; lifeboat session-hunting consult-only; session-separation metadata; opt-in memory curation); a new consumer is an invariant change, never merely a code path, and only the history core package touches the store's path, held by a boundary test. (11) Adopted 2026-08-28: the escalation-logging addition — every escalation in the elicitation interview is logged as data, which question and on what grounds. (12) Ruled 2026-08-28: run metadata's instrument identity comprises the model identity, the definition's content hash, and the assembler version. (13) Ruled 2026-08-28: kinds bind as stamped — the instrument trio as one bundle with a shared spec, the rest standalone, the two disciplines as disciplines. (14) Ratified 2026-08-28: the 2026-08-27 grill-pass resolutions, as implemented in the drafts. (15) Ruled 2026-08-28: warm transcript consultation proceeds with the redaction residue disclosed; transcript content is not quoted into committed records until the secret-scan work closes the residue. (16) Ruled 2026-08-28: the construal extension refines adr-50 — adr-50 stays accepted, the extension states the refinement, and adr-50's related_adrs gains the minted id at filing (adr-55). (17) Ruled 2026-08-28: the record type is the reading record (folder `issues/readings/<run-id>/`); "detection" stays the name of the Step-6 instrument and its registrative body. (18) Ruled 2026-08-28: pattern-named is an envelope field; the two assembler rules (no include names a directory containing a record family; a reading's object excludes what it exists to change) are adopted; the read-block eval also asserts the instrument's own prior outputs never reach a reading; where the widening reading returns fewer than two configurations, the comparative reading is not exercised and the outcome is recorded as such. (19) Ruled 2026-08-28 (R7): five disposition states with availability by position — admission is `accepted` (position lives on the envelope); declining a widening proposal is `declined`, never `rejected`; the grounds field is `disposition_grounds`, required on every state except `held`; the disposition record validates its state against the envelope's position. (20) Authorised 2026-08-28 (facilitator): the build session runs the intent → spec → ship ceremony autonomously for this workstream's filings — adoption, spec creation and approval, readiness, kind binding, shipped moves, and audit ingest — with every act logged; PR merges, reversal flags, new dependencies, and records outside the workstream remain human-gated. The autonomy is deliberate and is itself part of what the cycle observes; ownership of every act rests with the committing identity, per the provenance rules.
- iss-2608221457127152brief 02-constraints/03-invariants.md carries a PLACEHOLDER/navigational-pointer banner over fourteen fully-stated invariants, two landed this week, and adr-50 names the file as where invariants live; the may-consolidate clause is the aspirational-maybe the same-day truth rule forbids.
- iss-2610150749052356The generated ADR and drafts indexes dropped hand-written relationship notes the old rows carried ('refines adr-50' on adr-55, 'amends adr-19' and 'extends adr-19, adr-20' on adr-31, adr-39/adr-23 links on itd-22, a reframe note on itd-16), because a row is derived from the record's H1 and status only.