DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path scoping-notes/loomworks-recall-window-tier-2-relationship-scoping-note-v0_1.md

Loomworks — scoping note: what relationship should the recall window and Tier-2 context have? — v0.1

Version. 0.1 Date. 2026-08-07 Author. Claude Code (CR-2026-179 execution session). Operator: Marvin Percival. Charter. standing-notes/dunin7-standing-authorization-charter-v0_1. Status. Drafted, deliberately not settled. Operator direction, 2026-08-07: "It's real, but it's a design question about two different mechanisms, and it isn't B-12. New build-list item with its own scoping note — draft the note, don't settle it." Origin. Found during CR-2026-179's measurement, which left this CR rather than growing it. Reads with. completion-records/loomworks-cr-2026-179-b12-completion-note-v0_1. Recommend filing as. Two distinct build-list items — the sizing question this note scopes (§5), and the citability finding at §3, which must not be folded into it.


1. The finding

Two constants bound how many committed assertions a model sees. They differ, and until CR-2026-179 the code asserted they matched.

| | _PAST_INPUT_LIMIT | MAX_ASSERTIONS_IN_CONTEXT | |---|---|---| | Value | 50 | 20 | | Location | orchestration/router.py:120 | orchestration/prompt.py:55 | | Governs | one intent's answer — ask_about_past_input | standing context spliced into the system prompt on every turn | | Fires when | the Operator asks about past notes | always, whatever intent is classified | | Feeds sources | yes | no | | Overflow visible | yes — total_count + retrieval_limit | the block is labelled "up to 20" |

The stale claim, now corrected. _PAST_INPUT_LIMIT carried the comment "Aligned with the prompt assembler's Tier-2 limit so the responder sees a comparable view." It was false — 50 against 20. CR-2026-179 corrected the comment. It did not decide what the numbers should be, because that is this note's question.

2. Why this is a real question and not a tidy-up

The model can see two different views of the same engagement in one turn. On a turn classified as ask_about_past_input, the system prompt carries the 20 most recent committed assertions as standing context, and the intent handler separately supplies up to 50. The model receives both. They overlap and they disagree in extent.

The prior comment shows the trap is live: someone already believed these were aligned. Whatever is decided should be recorded where the next reader will look.

This note's question is sizing only. A second and more serious finding surfaced alongside it. It is separated into §3 deliberately, because it must not be settled as a side effect of choosing a number.


3. A SEPARATE CANDIDATE ITEM — Tier-2 material cannot be cited

Recommend filing as its own build-list item, distinct from this note's sizing question. Operator direction, 2026-08-07: "That's not a sizing question — it sits against B-11's guarantee and the seed's checkable-claims posture. Flag it as its own candidate build-list item … so it doesn't get settled as a side effect of sizing."

The finding. Tier-2's standing-context block is spliced into the system prompt on every conversational turn, whatever intent is classified, and it never populates sources. Only _route_ask_about_past_input's operation_data["assertions"] does.

Therefore an answer can be shaped by material the answer cannot cite. Not through a defect in the recall path — through the standing context arriving beside it, uncitable by construction.

Why it is not a sizing question. Every option in §5 leaves it intact:

Sizing changes how much uncitable material reaches the model. It cannot change that it is uncitable. Choosing a number would look like resolution and would resolve nothing — which is exactly why it is filed apart.

What it sits against. B-11 ("make answers truthful") is DONE, and Q-6 settled that every answer a model writes shows the notes it was given, while answers the system assembles show their own material. Tier-2 is a third case that neither branch names: material a model was given, on every turn, that is not shown. Against the seed's checkable-claims posture, that is the part worth a decision.

Scope of the claim, stated honestly. This is read from the source — prompt.py assembles the block, router.py assembles sources, and nothing connects them. It has not been demonstrated that any real answer has in fact leaned on uncited Tier-2 material. Establishing that needs a live read, not a source read, and it is the first thing that item should do: it decides whether this is a live defect or a latent one, and that changes its priority substantially.

Deliberately not scoped further here. Remedies range from making Tier-2 contribute to sources, to labelling the block so the model is instructed not to answer from it uncited, to removing Tier-2 on turns where an explicit recall path already supplies material. Each is a different bet about what the guarantee means. Not this note's call.

4. What is measured, and what is not

Measured (CR-2026-179, playground_dev, 2026-08-07):

Not measured, and each bears on the answer:

5. Options for the sizing question, stated without a recommendation

A — Leave them independent, document why. They serve different purposes; make the divergence deliberate and explain it in both places. Cheapest.

B — Align downward (window → 20). One view, one number. Costs nothing in context budget. Reduces what an explicit recall question can reach, on engagements where the window has never bound anything anyway (13 committed at the largest).

C — Align upward (Tier-2 → 50). One view, richer standing context. Blows the 2,000-token budget roughly threefold on current means, and the truncation widths were tuned for 20. Needs the measurement in §4 before it can be argued.

No option here addresses §3. That is the point of separating it: all three leave Tier-2 material equally uncitable. A note that listed "make Tier-2 contribute to sources" as a fourth sizing option would invite settling the citability question by picking a number, which would not settle it at all.

No lean is offered. The deciding fact — what a 50-assertion Tier-2 context costs against a budget built for 20 — has not been measured, and a lean stated without it would be the same kind of unmeasured confidence that produced the comment this note corrects.

6. Suggested first step, for the sizing question

Measure option C's cost before anything else. Assemble a Tier-2 context at 20 and at 50 against the commons (39 committed, the only engagement with enough material) and report both against the 2,000-token budget, plus whether the seed survives truncation at the larger count. That one measurement eliminates or promotes C, and makes the choice between A and B a judgment about citability rather than about cost.


DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — recall window / Tier-2 relationship scoping note — v0.1 — 2026-08-07