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

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

Version. 0.2 Date. 2026-08-07 Supersedes. v0.1 at record 8fb8a36, which stands as a sibling. Changes from v0.1. §3's citability item is no longer latent and is no longer low-priority. CR-2026-180's Step 1 established that it blocks B-13, a main-line build item, and that B-13's own existence supplies the live demonstration v0.1 said was missing. §3 is rewritten accordingly; everything else stands as drafted. 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.

Priority (raised in v0.2). This blocks a main-line build item.

CR-2026-180's Step 1 established that B-13 cannot close while this is open. B-13's own wording is "a partner asks a plain question and gets a truthful answer with every source shown" — and Tier-2 breaks exactly that clause. Every other part of B-13 is already built (see inspection-briefs/loomworks-cr-2026-180-b13-step-1-findings-v0_1); this is the gap that keeps it open.

So this is no longer a tidy-up sitting beside a sizing question. It is on the main line.

The live-vs-latent gap is closed — by B-13's own existence. v0.1 recorded that the finding was read from source and that no real answer had been shown to lean on uncited Tier-2 material, and named establishing that as the item's first step.

That step is no longer needed. A recall turn is the case. On a turn classified as ask_about_past_input, the model receives Tier-2's "RECENT NOTES (up to 20)" block (prompt.py:332) and the recall path's own numbered block (prompt.py:480), and sources is built solely from the second (converse.py:1226). The uncited material is not hypothetical and does not require a live read to find: it is in every recall turn by construction, which is the one turn where the product promises every source is shown.

What remains genuinely unmeasured is narrower and no longer gating: how often the two blocks' contents diverge in practice (they overlap, since both draw recent committed assertions, but at different depths — 20 against up to 50), and therefore how much material is uncited on a typical turn rather than in principle.

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