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.
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.
The program read against build list v0.95 and said every ranking was provisional until Wave 0 refreshed it. Refreshed:
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.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.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.39cee7f built and served (create-stage polish included). Its two acceptance walks are owed (§4).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.
| 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.
| 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.
| 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 |
| 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.
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:
loomworks-scoping-per-binding-session-minting-v0_2 needs to know what a render specialist mints a session against. Under 5a its binding row gains an agent_identities row; under 5b the session table's FK must loosen or dual-home so a binding-register identity can carry a session; under 5c specialists never mint and the production act stays unsessioned by design. The ruling must also say whether the answer generalizes to shaping specialists (that note's question 5) or is rendering-only.loomworks-scoping-finding-freeze-alert-v0_1 needs a freezable per-configuration identity to exist. Finding→freeze→alert means "freeze one and alert the class" — per-identity granularity, which 5a and 5b provide and 5c forecloses. Under 5c that note's mechanism cannot be built and should be closed as refused, not left queued.boundaries-record/decisions/boundaries-seed-ratification-list-v0_1) asks whether a per-(identity, engagement) suspension exists distinct from platform-wide freeze. 5a/5b make per-configuration freeze the natural narrower instrument (a per-binding identity IS per-engagement, so freezing it answers SR-1's granularity question by construction); 5c keeps freeze per-role and platform-wide, and SR-1 then needs its own separate instrument or an explicit no. The ruling should say which.
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).
queued-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.OPENAI_API_KEY + embedding-backfill obligation from CR-225.
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.
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.
/Users/dunin7/dunin7-forge/Enrollium_Complete_V61.md — 258KB (257,878 bytes), 61 versions of history behind it, 34 top-level sections: business context, user roles, scope, exclusions, terminology, assumptions, constraints, NFRs, tech stack, and (per its own header) 121.7 build-days of Forge-shaped specification. It is a Forge engagement specification — written for DUNIN7 Forge/Workforce delivery, not for Loomworks induction.Downloads/Claude/Enrollium Project Starter set, folder 1GlTbG111…, 5 files): the schema metamodel (32KB), EHR integration architecture (28KB), reporting amendment (61KB), reporting framework amendment (28KB), and a forge-spec-SKILL.md. Plus .docx variants of the metamodel, dictionary-ingestion, and EHR docs elsewhere in Drive, and enrollium-brand.html.~/enrollium/ repo exists and contains zero Loomworks references (verified in the state-of-build v0.2 sweep). No Loomworks seed, candidate seed, or induction artifact exists for Enrollium anywhere — it was explicitly parked in the 2026-04-24 scope narrowing ("Enrollium and ExpenseDesk wait").What a Wave 4 walk against it would need (stated, not scoped):
/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)./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.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.
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