Version. 0.1
Date. 2026-08-07
Author. Claude Code (execution session). Operator: Marvin Percival.
Charter. standing-notes/dunin7-standing-authorization-charter-v0_1.
Covers. change-requests/cr-2026-180-loomworks-b13-ask-your-engagement-v0_1, Step 1 (read-only).
Read against. Engine aefeda6 (post CR-2026-179), clean tree. Nothing was modified.
Outcome. CR-2026-180 halts and does not land. B-13 stays open.
B-13's machinery is almost entirely built. What blocks it is not the ask — it is one clause in B-13's own wording, "every source shown", which the Tier-2 standing-context block breaks.
A second gap exists (AI origin marking), but it is not B-13's: it entered through a drafting error in the CR itself, recorded at §5.
B-13, in full (build list v0.7, the last version carrying the description): "A partner asks a plain question and gets a truthful answer with every source shown. When this lands, our rule against demonstrating question-answering lifts."
| B-13 requires | State | Where |
|---|---|---|
| a plain question against an engagement's Memory | built | ask_about_past_input intent, router.py:1574 |
| a truthful answer | built | CR-2026-169 D-1: responder pins temperature=0 |
| the boundary stated, not inferred | built | prompt.py:502 appends "the N most recent of M notes on record — not a search of all of them", computed from total_count/retrieval_limit, not left to the model to admit |
| sources shown | built | AnswerSource list assembled from exactly the retrieved rows (converse.py:1226) |
| sources cannot be fabricated | built + tested | built from operation_data, never from the model's reply; test_sources_cannot_contain_an_identifier_not_retrieved |
| the window fits the engagement | built | CR-2026-179: largest in-scope engagement holds 13 committed against 50 |
The ask itself is not the gap. Had the CR been written against the code rather than against the item's age, B-13 would have read as near-satisfied — the same shape B-12 turned out to have.
AnswerSource's own docstring claims it covers "the same rows spliced into the system prompt as NOTES." That holds for the recall path's block (_format_past_input, prompt.py:480). It does not hold for Tier-2's block (_load_tier_2 → "RECENT NOTES (most recent first, up to 20)", prompt.py:332), which enters the system prompt on every turn and contributes nothing to sources.
So on a recall turn the model receives two note blocks and only one is cited.
This is the citability item already separated out at scoping-notes/loomworks-recall-window-tier-2-relationship-scoping-note-v0_2 §3. Three consequences:
In the code: absent. Searched both repos for ai_generated, ai_origin, authored_by, written_by, machine-generated, and prose variants. Nothing in the engine's schemas, nothing in the surface. ConverseResponse carries companion_message and sources; there is no origin field, and therefore nothing that could be "non-suppressible" — there is nothing to suppress.
In the seed: silent. Read candidate-seeds/loomworks/loomworks-candidate-seed-v0_14.md (highest version, confirmed by version-sort) and its amendment. The seed's AI-related commitments are adjacent but point elsewhere:
| Seed text | What it commits | |---|---| | "Built by AI under operator direction… production by AI. This is foundational and non-negotiable" (:203) | how Loomworks is built | | "The voice of the system is operator-first — everything technical is Claude Code's work, everything intentional is the operator's" (:185) | how Loomworks is built | | "the AI-as-faithful-clerk posture" (:167) | product framing, explicitly deferred — "the full articulation lives in the philosophy and architecture document" | | "Operator-authority over artifact state transitions… consonant with the AI-as-faithful-clerk posture" (:205) | who approves state transitions, not how answers are labelled |
None of these commits to marking a model-written answer as model-written. The seed is silent on it.
A near neighbour exists and is probably the source of the recollection. The engine carries a non-suppressible origin marking on conversational turns — input_mode: "text" | "voice" (orchestration/schemas.py:596, :1370), the voice-provenance CR's brass-mic marking. It marks whether the Operator spoke or typed: provenance of the human's input, the opposite direction from provenance of the model's output.
CR-2026-180 §2 lists non-suppressible AI origin marking as one of "two settled decisions that are not reopened here", and acceptance criterion 3 requires it.
It is not a settled decision. Operator correction, 2026-08-07: "that criterion was in CR-2026-180 because I put it there from recollection of a settled commitment, not from reading the seed. Do not treat the CR as evidence the seed commits to it."
Recorded because a CR asserting a commitment is exactly the sort of artifact a later session would cite as evidence the commitment exists. CR-2026-180 is not evidence for it. The seed is the authority, and the seed is silent.
Consequence. Marking model-written answers is a seed-level decision and a new item, not part of B-13. It is a new user-visible contract on every answer the system produces, and the CR's own halt condition covers it: "if Step 1 finds the gap needs… a seed-level addition, or anything the seed is silent on, halt and report. Seed-level decisions do not get made inside a CR."
Q-6's split (sources on model-written answers, not on system-assembled ones) is settled and is unaffected by this correction — it is a decision about sources, not about origin labelling.
DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — CR-2026-180 Step 1 findings — v0.1 — 2026-08-07