DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path standing-notes/loomworks-development-schedule-v0_1.md

Loomworks — development schedule: complete all known items (v0.1)

Version. 0.1 Date. 2026-08-06 Author. Claude.ai. Operator: Marvin Percival. Source. loomworks-known-missing-functionality-v0_1; standing-notes/dunin7-build-list-v0_29. Purpose. Sequence every open item into CRs CC can execute with minimal Operator involvement. Every design/product decision that can be made in advance is made in this document — CC should not need to stop and ask.

What "minimal Operator intervention" means here, precisely. Every decision that can be resolved without live product judgment is resolved below. What does not go away: the tag/push checkpoint on every CR. That's not overhead to remove — it's the seed's own architectural principle (the system surfaces and signals, the Operator approves state transitions). Minimal intervention means zero mid-flight scoping questions, not zero approvals.


How this is organized

Six waves, in order. Each wave's items have no unresolved decisions blocking them by the time the wave starts. Waves 0 and 3 are linked — Wave 0 is read-only investigation that removes the last unknowns before Wave 3's CRs can be drafted without guessing.

CR numbers are best-guess placeholders, starting one past CR-2026-174 (the highest confirmed). CC confirms the actual ledger before filing each one and renumbers the whole remaining sequence together if there's a collision, so the ordering stays intact even if the numbers shift.

Excluded from this schedule, on purpose:


Decisions made in advance (so Wave 2 and Wave 3 don't stall)

| Item | Decision | Reasoning | |---|---|---| | B-37 — failed Shape production invisible | New field on the existing response, not a new route. | Smaller surface, consistent with how status is already read elsewhere; a new route would need its own auth/caching story for no real benefit. | | B-56 — dev sign-in reachable in production | Retarget all 8+ hardcoded references to the real sign-in path; no partial fix. | The only alternative (env-guard the route itself) still leaves a reachable path with a misleading label — the actual defect is the hardcoding, not the route's existence. | | B-47 — credential issuance screen | Standard one-time-reveal modal (shown once, copy-to-clipboard, cannot be reopened) + a revoke button on the existing credentials list. | Matches how bearer-style secrets are conventionally handled; no reason to invent a new pattern for a one-screen feature. | | B-46 — where implementation notes should live | New implementation-notes/ directory in loomworks-record, mirrored from the code repos same as everything else. | Matches the existing investigations/ / standing-notes/ / scoping-notes/ convention; a record-only session can already find everything else this way. | | B-52 — sources vanish on reload | New structured_data variant on the conversation-history write, engine-side; surface reads it instead of dropping it. | This is the only technically sound fix — sources were never persisted, so there's nothing to "restore," only somewhere new to store them going forward. | | B-55 — "of its type" names no type | Resolve type name server-side, batch-joined, same request. | Avoids an N+1 client-side lookup; the engine already has the type table, this is a join, not new data. |

One item not decided here, flagged instead of guessed. B-39 (ephemeral agent identities) touches the identity/authorization model directly — it sits next to GRANTHA, the settled authorization seat. This is the one place a wrong guess is expensive to unwind. Wave 0 produces a scoping note with options and a lean; Wave 3's CR waits for one Operator word on that specific note, not on anything else in this schedule.


Wave 0 — Investigation (read-only, runs first, no build work)

Five short, parallel, read-only passes. Each produces a findings or scoping document; none touches code.

| # | Item | What it answers | |---|---|---| | 0.1 | B-51 (four components rebuild on every change) | Does anyone lose anything real — scroll position, selection, cursor — or is this cosmetic-only? | | 0.2 | B-32 (re-derive a stale Manifestation) | Does a spend-consent surface pattern already exist anywhere in the surface for a metered action? Reuse it, or note that none exists. | | 0.3 | B-39 (ephemeral agent identities) | Scoping note with 2-3 concrete model options and a lean — the one item this schedule doesn't pre-decide. | | 0.4 | B-40 (contributed Markdown routing) | Scoping note — where does contributed Markdown belong, given the existing upload-pathway conventions. | | 0.5 | B-54 residue (fixture backfill) | Why are ~230 fixtures missing display_number — deliberately incomplete fixtures, or a real gap in the assign_* helper's call sites? Determines whether Wave 3's fix is a fixture edit or a code fix. |

Also in Wave 0, not an investigation — three direct filings, no CR needed (no code, no CI relevance):


Wave 1 — Ready now, zero open decisions

| CR (placeholder) | Item | Repo | Notes | |---|---|---|---| | CR-2026-175 | B-59 (Shape-list missing display_number) | Engine | Identical fix to B-53, different file (shape_events_view_query.py). | | CR-2026-176 | B-30 (the trap that caused B-27) | Engine | Never repaired, only the broken door removed; suite can't see it — this CR adds the regression test that would have caught it. | | CR-2026-177 | B-14 (read spreadsheets and slide decks) | Engine | Independent of everything else; largest item in this wave. | | CR-2026-178 | B-12 (measure + raise the recall-window constant) | Engine | Measure what the model's prompt actually holds against the 58-note engagement, then raise the constant to that measured figure — not a round number. | | CR-2026-179 | B-13 (ask your engagement) | Engine | Blocked on CR-2026-178 landing first. | | CR-2026-180 | B-17 (portfolio filter) | Surface (assume — CC confirms) | Spec beyond the one-line build-list description isn't in hand; CC reads the linked scoping context before drafting. | | CR-2026-181 | B-43 (walk the other way) | Engine (assume — CC confirms) | Build list marks this "costed" — a cost estimate exists somewhere; CC locates it before drafting rather than re-deriving. |

Each of these can be drafted as a full CR immediately — say the word and I'll draft CR-2026-175 through 181 in sequence.


Wave 2 — Decided, ready once Wave 1's engine CRs are clear of it

| CR (placeholder) | Item | Repo | |---|---|---| | CR-2026-182 | B-37 (failed Shape production invisible) | Engine + Surface | | CR-2026-183 | B-52 (sources vanish on reload) | Engine + Surface | | CR-2026-184 | B-55 ("of its type" names no type) | Engine + Surface | | CR-2026-185 | B-56 (dev sign-in reachable in production) | Surface | | CR-2026-186 | B-47 (credential issuance screen) | Surface (+ minor engine touch if needed) |

No dependency on Wave 1 completing — these can run in parallel with Wave 1 if CC has capacity, they're grouped after it here only because Wave 1 is smaller and clears first in a single-threaded session.


Wave 3 — Gated on Wave 0's findings

| CR (placeholder) | Item | Waits on | |---|---|---| | CR-2026-187 | B-32 build (re-derive control, spend-consent surface) | 0.2 | | CR-2026-188 | B-51 fix — only drafted if 0.1 finds something real is lost | 0.1 | | CR-2026-189 | B-39 build (agent identities) | 0.3 and one Operator word on the scoping note's recommendation | | CR-2026-190 | B-40 build (Markdown routing) | 0.4 | | CR-2026-191 | B-54 fixture backfill + reinstate NOT NULL | 0.5 |


Wave 4 — reserved

No items currently. Placeholder in case Wave 0 surfaces something that needs its own CR beyond what's listed (e.g., if B-51 turns out to need a bigger rework than a fix).


Wave 5 — B-8 slice two (Companion writes)

| CR (placeholder) | Item | Waits on | |---|---|---| | CR-2026-192 | B-8 slice two — teach the Companion to act, not just describe | CR-2026-182 (B-37) at minimum |

Why last, not first, despite being "the largest thing available." The Companion's writes will exercise Shaping and Rendering directly — if it triggers a Shape production, B-37's invisible-failure defect means neither the user nor the Companion can tell if that write actually worked. Landing Wave 2 first means the Companion is acting on rooms that already report their own state honestly. Everything else in Waves 1–4 is independent of B-8 and doesn't need to block it, but B-37 specifically does.

A scoping note for slice two already exists (scoping-notes/loomworks-b8-slice-two-scoping-note-v0_1) — CR-2026-192 drafts directly from it, no new scoping needed. Given its size, CC may find it splits naturally into sub-CRs by room (Manifestation-writes, Shaping-writes, Rendering-writes) once drafting starts — that's an implementation-time call, not a reason to hold here.


Summary — what's genuinely still open for the Operator

One thing. B-39's model choice, after Wave 0.3 returns a scoping note with a lean. Everything else in this schedule — all thirteen CRs' worth of decisions — is resolved above.

What stays as-is, unchanged by this schedule. Every CR still halts at its tag/push checkpoint. That's the standing discipline, not something "minimal intervention" should remove.


Suggested next step

Draft Wave 0's five investigation prompts and three direct filings now, since nothing blocks them and they unblock Wave 3. In parallel, draft Wave 1's seven CRs, since nothing blocks those either. Say which to start with, or "both" — Wave 0 is read-only and fast; Wave 1's CRs are independent of each other and can be hand-carried to CC in any order.


DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — development schedule: complete all known items — v0.1 — 2026-08-06