DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path current-status/loomworks-completion-inventory-v0_1.md

Loomworks — Completion inventory — v0.1

Version. 0.1 Date. 2026-08-25 Author. Claude Code on DUNIN7-M4 (Wave 0 of the completion program). Operator: Marvin Percival. Status. Wave 0 deliverable. Read-only against every source; nothing built, nothing merged. Ranked by wave with dependencies named, per the program's §5. Program. loomworks-completion-program-v0_1 — read from Google Drive (Downloads/Claude, .md + .html, 2026-08-25). It is NOT filed in loomworks-record (§8 below). Sources. standing-notes/dunin7-build-list-v1_06 (2026-08-25, current); current-status/dunin7-status-brief-v0_45 (2026-08-09 — 16 days stale, see §0); CR-2026-098 v0.1–v0.3 + engine history; the Stele notes (stele/, queued-directions/loomworks-stele-licensing-open-items-work-item-v0_1); the FORAY position as carried in the build-list header (v1.03–v1.05 blocks); scoping-notes/loomworks-artifact-ingestion-description-and-tags-scoping-note-v0_3; standing-notes/loomworks-scoping-the-roster-exception-v0_2 (+ correction note) and its three converging notes; queued-directions/loomworks-create-stage-browser-acceptance-work-item-v0_1; live repo and process state measured today.


Plain-language summary

The program is executable as written, with corrections. Two of Wave 3's four named work items are already done — CR-2026-098's A3 halt was resolved and built weeks ago, and Stele contract CR-B merged in July — so Wave 3 shrinks to the two B-items plus whatever the roster-exception ruling unlocks. The finish-line thread (Wave 1) is intact: all eleven items are open exactly as the program describes. Ingestion (Wave 2) is fully scoped with ten decisions carrying recommendations. The serving engine is ten merged CRs behind main — the process predates semantic recall — so the first deploy the program names is already owed before Wave 1 begins.

Four additions land in this version: B-117 placed in Wave 4 with the internal-inconsistency argument recorded; the two acceptance walks carried as owed, Operator-owned, unblocked today; the roster-exception decision-sheet entry expanded so one ruling closes all three converging notes; and Enrollium named as the first-run-complete case with its material inventoried and the Wave 4 walk's needs stated.


0. Source-state corrections — what moved since the program was written

The program read against build list v0.95 and said every ranking was provisional until Wave 0 refreshed it. Refreshed:

  1. CR-2026-098 is CLOSED at engine HEAD, not halted. The program carries it as "A3 halts for you to pick a privilege model." In fact: v0.2 landed (2685103), v0.3's A3 partial resolution landed (e8706ee), and the deferred follow-up — the founder-authority gate on the consumer-bearing /admin/* routes — was built by CR-2026-101 step 3 (f3363e8): require_founder on all three routes. Nothing remains. Drop from Wave 3.
  2. Stele contract CR-B is CLOSED. Merged as CR-2026-113 at engine fe7c3f1 (manifest v0.78: FKs re-targeted, mirror retired, persons dropped). The program's Wave 3 entry is stale. What Stele actually still carries: the licensing/packaging work item (2 small items, queued, no urgency), the published-package pin (engine still consumes stele as an editable path dep), the session-issuer seam question, and the orientation-pack v0.3 refresh — none touches the six clauses; all stay outside the program.
  3. The status brief is 16 days stale (v0.45, 2026-08-09). Its §6 decision queue is partly superseded — B-69 has since been RULED (middle path, 2026-08-16) with its mechanism BUILT (CR-2026-221). The brief's append-per-session duty has not run since 2026-08-09; the sessions since have written the build list instead. The program's kickoff block assumes a current brief; the first program session should append one.
  4. The serving engine predates ten merged CRs. Process 96400 started 2026-08-16 14:33; main is 2f41aa7 (2026-08-24). Everything from CR-2026-225 (semantic recall, pgvector) through CR-2026-235 is merged but not served. The CR-225 completion note also left two deploy-time obligations owed: OPENAI_API_KEY in the engine .env + the embedding backfill script. The program's "one restart per wave" is already owed once before Wave 1 starts, and this restart carries the key + backfill obligation with it.
  5. The Operator Layer serving perimeter is current as of today: 39cee7f built and served (create-stage polish included). Its two acceptance walks are owed (§4).
  6. B-86 is likely fully closed — its routing half closed by CR-2026-203 and its persist half was CR-2026-205, which shipped 2026-08-12. The build list still shows the persist half as "awaiting execution approval." First program session verifies and closes the entry. B-87's code is done; its standing question (which reply branches get the microphone removed) is a decision-sheet line, not a build.

1. The membership rule, applied

Program §2: an item is in iff it touches one of the six finish-line clauses on the production perimeter, or blocks the Operator's ability to test them. The six clauses: (1) a firm's document becomes a working engagement; (2) information flows in; (3) the summary view appears; (4) a finished report comes out; (5) a truthful answer with sources shown; (6) an outsider contributes without seeing anything else.

2. The inventory, by wave

Wave 1 — the finish-line thread (unchanged from the program; all verified open at v1.06)

| Rank | Item | State | Clause | Depends on | |---|---|---|---|---| | 1 | B-79 — confirm enqueues zero renders in production; hook registered only by tests | NEEDS DECISION + small build | 4 | The B-79 ruling (sheet; default drafted) | | 2 | B-78 — Manifestation write through conversation | NEEDS CR | 3 | Nothing; consent shape settled (stated-facts) | | 3 | B-13 — ask your engagement | READY (verify-and-close) | 5 | Serving-engine restart (semantic recall, CR-225, is merged-unserved) | | 4 | B-52 — sources vanish on reload | READY | 5 | Nothing | | 5 | B-37 — failed production looks identical to running | READY | 4 | Nothing | | 6 | B-100 — findings answer box placement | OPEN | 1 | Nothing | | 7 | B-94 — commit sentence swallows the engagement name | OPEN | 1 | Nothing | | 8 | B-97 — quoting acks cut words mid-word | OPEN | 5 | Nothing | | 9 | B-108 — save-offer "yes" classifier-dependent | OPEN | 2 | Constraint recorded: don't break commit_assertion | | 10 | B-103 — identical duplicates accepted at capture | OPEN | 2 | Nothing | | — | Wave-1 deploy + walk | OWED (Operator) | all | Items above; §4 |

Conditional member, verify at Step 0: B-114 — domain-grammar shapes from agent executors can never pass completeness ({"text":...} vs top-level-key evaluation). If the Wave-1 walk's report path crosses a domain-grammar shape with an agent executor, this is a Wave 1 defect on clause 4; if not, it waits. The B-79 Step 0 read should answer which in the same pass, since both live in the shape-confirm → render chain.

Wave 2 — ingestion (per scoping note v0.3; D1–D10 on the sheet)

| Rank | Item | State | Depends on | |---|---|---|---| | 1 | B-74 — folder aggregation dropped (folder_manifest=None) | READY | Nothing; prerequisite of the pre-flight | | 2 | CR-A — description assertion + scale-guard retirement | Scoped (§5.1, §5.7) | D1, D2, D4 ruled or defaulted | | 3 | CR-B — tag repository | Scoped (§5.3) | D3, D7, D9; grant-boundary constraint (§8) | | 4 | CR-C — folder pre-flight | Scoped (§5.10) | B-74; D10(a–c) | | 5 | B-64 — accepted-types list generated from the detection registry | READY (rides along) | B-64 default on the sheet | | — | Wave-2 deploy + walk (folder through pre-flight; description corrected; buffer review) | OWED (Operator) | Items above |

Nine Step-0 items are already enumerated in the note's §9 — the wave's first session executes them before drafting.

Wave 3 — boundaries (shrunk by §0)

| Rank | Item | State | Depends on | |---|---|---|---| | — | ~~CR-2026-098~~ | CLOSED (§0.1) | — | | — | ~~Stele CR-B~~ | CLOSED (§0.2) | — | | 1 | B-88 — grant branches run extraction with no revoke check | OPEN | Nothing | | 2 | B-90 — null discriminator that lies | OPEN | Nothing | | 3 | Per-binding session minting + Decision 3 | Scoped (v0_2) | Roster-exception ruling (sheet, no default). The note's §1a split: the dispatch agent's half is NOT blocked and closable at seed-induction cost — question 6 of that note asks whether to take it separately; put that sub-question on the sheet | | 4 | FORAY D10–D14 | PENDING (v1.04 header) | Ruling; default = deferred past testing. Note: D11+D12 bind any emitter's honesty/failure behavior; nothing in Waves 1–4 emits, so deferral is safe. Stage 6 stays blocked on FORAY's escalated R2 regardless | | — | Wave-3 deploy | OWED (Operator) | Items above |

Wave 4 — testing readiness

| Rank | Item | State | Depends on | |---|---|---|---| | 1 | B-71 / B-72 / B-73 — uncollected test dir; collector says what it collected; misnamed production file | READY ×3 | Nothing; standing-memory notes carry the fix shapes | | 2 | B-89 — dashboard perf test re-reddens the gate at random | OPEN | Nothing | | 3 | B-91 / B-92 — message-order unapplied on mobile; composer jump | OPEN ×2 | Nothing | | 4 | B-56 — dev sign-in reachable on the live perimeter | READY | Nothing; do first in the wave — it is the same class as the 2026-07-19 incident | | 5 | B-117 — the vocabulary sweep (placed here; see below) | OPEN | Decision: single source vs second in-place sweep — sheet line | | 6 | Walk script loomworks-comprehensive-test-walk-v0_1 | To write | Waves 1–3 landed | | 7 | Fixtures: test account, engagement, contributor on the production perimeter | To create | Walk-audit pattern | | — | Wave-4 deploy | OWED (Operator) | Items above |

B-117 placement, argued. It fails strict membership — no clause breaks because a label says "project" — but the create-stage fix (merged today, 39cee7f) made the surface internally inconsistent: the first door now says "engagement" while the filters page, the workspace selector, the library, the voice hints and six strings.ts entries still say "project." An inconsistent surface during comprehensive testing converts every stale string into a spurious walk finding, so it belongs before testing begins — Wave 4, not someday. Sooner (riding Wave 1's surface batch) is defensible if the sheet rules the cheap path: B-117's entry carries the original author's boundary — no single source of surface vocabulary exists; building one has blast radius into library, chip and nav — so the sheet line is: swap in place a second time (cheap, third sweep someday) vs build the single source (right, larger). Default: swap in place for Wave 4; single source queued.

3. The decision sheet — additions and expansions beyond program §7

Confirmed still needed from program §7: P-1, P-2, P-3, B-79's meaning of confirm, B-64, D1–D10, FORAY D10–D14, Q-7. Dropped: CR-098 A3 (closed). Added:

| Ref | Decision | Recommended default | |---|---|---| | B-87q | Which reply branches lose the microphone (server-composed) beyond the denial | Ruled at leisure; no default forces it | | B-117q | Vocabulary: in-place sweep vs single source (§2 Wave 4) | In-place for Wave 4 | | RE-6 | Roster exception sub-question: split the unblocked dispatch-agent half out first? | Yes — closable at seed-induction cost, governs the dispatch act only, explicitly partial | | SB-1 | Status-brief currency: resume append-per-session from the first program session | Yes |

The roster exception, expanded so one ruling closes all three converging notes. The ruling is 5a (runtime creation) / 5b (either-registry resolution) / 5c (no exception, say so) per loomworks-scoping-the-roster-exception-v0_2. No default — the program and the note both reserve it. What each note needs the answer to contain:

Also riding the same sitting, cited by the roster-exception note itself: what freeze means under the chosen option (§6.1), the two-identities-on-one-act ambiguity on the shaping path (§6.2), and disposal of the rendering roster row's retirement comment if 5a later wires it (already handled by CR-2026-235's source-contract test — the comment deletes when a resolver appears).

4. Owed — Operator-held, not buildable

  1. The two acceptance walksqueued-directions/loomworks-create-stage-browser-acceptance-work-item-v0_1. Unblocked as of today (the OL serves 39cee7f). Walk 1: passkey commit through each create door (outstanding since 2026-07-22). Walk 2: the Foundation redirect, which begins where Walk 1 ends. One continuous ceremony; needs the Operator's authenticator; no headless session can ever do it. These are owed, not scheduled work — they appear in no wave's build list.
  2. The stale-engine restart (§0.4) — owed now, before Wave 1; carries the OPENAI_API_KEY + embedding-backfill obligation from CR-225.
  3. The decision-sheet sitting (Wave 0's second half — Claude.ai assembles the sheet from §3 + program §7).
  4. Per-wave deploys and the Wave 1/2 walks, per the program's §6 table.
  5. The B-65 content (four scaffolded sections) — held at the Operator's instruction; outside the program but listed because it is the one queue item only the Operator can write.

5. Membership-borderline — ruled by the sheet, not unilaterally

6. Open but outside the program (verified against v1.06; unchanged posture unless noted)

B-109 (passive-cheap fence), B-112 (seed_revised anchor gap — rides the next FORAY wave), B-115 (unmetered induction/agent-runner spend), B-116 (diagnosis, no build implied), B-17, B-18, B-19 (standing duty), B-31, B-39, B-43, B-45, B-46, B-62, B-63, B-65, B-68 remainder, B-76, B-77, B-20/Part-3 Operator track, Part 4, the Companion queue's items 5 and 6 (settings discoverability, conversation search — scoped, untouched since June, no clause contact), graph Stage 3 (investigation filed, held), the memory=recall reframe (gates graph Stage 4; seed-level, Operator's), and the Stele tail (§0.2). FORAY Stage 6 stays blocked on FORAY's escalated R2 ruling — external, not ours to unblock.

7. Enrollium — the first-run-complete case

Ruled by the Operator: Enrollium is the chosen first-run-complete engagement. Reported here as Wave 0 fact-finding — what exists and what a Wave 4 walk needs. Not scoped.

What exists.

What a Wave 4 walk against it would need (stated, not scoped):

  1. A seed derived from the material. Two live routes exist: the Phase 53 product route (shell engagement → markdown upload → /seed/extract → induction rounds → instantiate), hardened by CR-2026-223 and walked live in the CR-2026-222 Stage-1 walk; or the April-style one-off induction brief driving SeedInductionAgent directly (the PartsPilot precedent, candidate-seeds/induction/). The seed says the induction solution is separate and one-off; the Phase 53 route is now product — which route is itself a decision-sheet line for the sitting (the Phase 53 route exercises clause 1 of the finish line, which argues for it).
  2. A distillation choice. 258KB is ~129× the 2,000-char summarization threshold and /seed/extract's input contract was built for documents, not specifications-of-record; whether the walk feeds the full V61, the starter set's five files, or an Operator-chosen subset determines what the seed converges on. The ingestion upgrade (Wave 2's description assertions + folder pre-flight) is exactly the machinery a multi-file Enrollium corpus would exercise — Enrollium as the Wave-2 walk corpus is worth considering at the sitting.
  3. The finish-line clauses mapped to it: the V61 (or subset) becomes the engagement (1); the starter set flows in as Memory (2); a Manifestation derives (3); a declared render type produces a report — e.g., the reporting-framework amendment re-expressed under the engagement's seed (4); a question about the schema metamodel answered with sources (5); and an invited contributor sees Enrollium and nothing else (6).
  4. The walk needs the Operator's passkey for the engagement commit (always) and fixtures per Wave 4's list.

What it does not need: any code the program does not already build. No Enrollium-specific engine work is implied by anything in the material.

8. The program's filing gap

loomworks-completion-program-v0_1 exists only in Google Drive (Downloads/Claude, .md 1bYCBrI0… + .html 1P8wYqNk…). It is not in loomworks-record — no copy, no reference. Its own status line says it becomes the operative plan when the decision sheet is ruled; the ruling sitting is Wave 0's second half, i.e., imminent. The operative plan should not live outside the record. Recommend: file both formats to loomworks-record (natural home: strategies/ or current-status/) at or before the ruling sitting, so the record the kickoff block reads contains the program the block comes from. Not done here — Wave 0 is read-only against the record's plans and the filing is one git add at the sitting.


DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — Completion inventory — v0.1 — 2026-08-25