DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path inspection-briefs/loomworks-b6-step-0-inspection-brief-v0_1.md

Loomworks — B-6 Step 0 inspection brief — v0.1

Version. 0.1 Date. 2026-08-01 Author. Claude.ai (drafting session). Operator: Marvin Percival. Executed by. Claude Code on DUNIN7-M4, one session. Target. /Users/dunin7/loomworks at main 50252e1, tag render-flow-v0_1; /Users/dunin7/loomworks-engine at main ffc29af, tag discovery-source-mode-v0_1. Both read-only. Charter. standing-notes/dunin7-standing-authorization-charter-v0_1. R-5 inspection run. Build-list item. B-6, the Shaping room. Status. Read-only. Establishes ground for the Shaping change request. Produces no code change and no change request.

Why this is its own brief. Change request C was scoped as B-6, B-7 and B-28 together. B-6 was split out because the Step 0 read established that its engine surface is not what Manifestation's was: a confirm/retire lifecycle, executors, and asynchronous jobs. B-5 needed no engine work, and inheriting that as though the rooms were the same size is the error this split exists to avoid.

Grounding. inspection-briefs/loomworks-cr-c-step-0-findings-v0_1 (the wall, the shared layer, the Shaping sizing — read at 7e81e30, before two merges, so verify rather than inherit); inspection-briefs/loomworks-operator-layer-cr-a-step-0-findings-v0_1 (the room shapes, older still); candidate-seeds/loomworks/loomworks-candidate-seed-v0_12 (Shaping, the declared shape-types, the shape-type-to-render-type mapping).


1. The fences

Read-only in both repositories. No fixes, no branches, no commits, no npm install.

No dev server, no build, no test run, no database, no perimeter call. playground_dev is the live production database.

Both repositories are free — CR-2026-162 is merged and closed — but this session does not build.


2. The discipline clause

State only what you have read back, plus the disciplines at standing-notes/loomworks-standing-note-executable-document-versions-v0_4:

  1. Name the file and line for every claim.
  2. Report unread rather than closing a gap with a plausible reading.
  3. Do not inherit. Both grounding documents predate the last two merges. Every carried claim is re-verified at the current SHAs or reported as unverified.
  4. A sweep pattern must not encode an assumption about its target.
  5. Confirm a target exists before treating its silence as a pass.
  6. State no count the finding does not need — and where a count is the finding, sweep for it rather than reading a sample. (Two undercounts have crossed from findings documents into change requests: a line-distance, and "two literals" that were four.)

3. Question one — the engine's shape surface

Read the engine's shape-related routes and modules at ffc29af. Establish, with anchors:

3.1 The routes. Listing shapes for an engagement; retrieving one; retrieving one at a version; creating one; and anything else. For each: path, method, parameters, response schema.

3.2 The lifecycle. The findings name a confirm/retire lifecycle. What are the states, what transitions between them, and what triggers each transition?

The question that decides the room's shape: is any transition automatic, or is every one operator-driven? The render side turned out to be entirely operator-driven, and that was the seed implemented correctly — automatic state transitions on artifacts the Operator has authority over are a category error. Establish whether Shaping is the same, or whether something transitions on its own.

3.3 The executors. What they are, what invokes them, and whether the surface ever addresses one directly.

3.4 What is asynchronous. Which operations return before their work is done, what the caller receives in the meantime, and how a caller learns the work has finished — polling, an event, a status field, or nothing.


4. Question two — the async dimension, which no prior room has

This is the part B-5 and B-7 give no precedent for.

ReadState models five states: unloaded, loading, failed, empty, populated. All five describe a read. An asynchronous job that is running is not any of them — the read succeeded, and what it returned is work in progress.

Establish what the engine actually exposes for a running job: a status field on the resource, a separate status route, a job identifier, an estimated duration, nothing. And whether a failed job is distinguishable from a failed read.

Then establish what the contract can carry today. Read hooks/usePagedList.ts at 50252e1 and report ReadState's exact current shape — it was authored at CR-2026-160 and may have been touched since. Can a populated value represent a shape that exists and is still being built, or does the room need a state the contract does not have?

Do not design the answer. Report what the engine exposes and what the contract can express. The gap between them is the finding, and the change request decides what to do about it.


5. Question three — the shape-type to render-type mapping

The second of the change request C findings' two unread items, and it decides where the mapping lives.

The seed declares shape-types, declares render-types, and declares a mapping between them. Establish whether the engine enforces that mapping, merely exposes it, or neither.

Report which, with anchors, and report where the mapping is written down in the engine if it is written down at all.


6. Question four — the wall's collision surface for Shaping

Established at change request C's Step 0 and to be re-confirmed at 50252e1: the vocabulary wall is a case-sensitive substring scan over src/, run as a Vitest test. rendering is not walled; shaping is.

6.1 The exact walled tokens for this room, and the discriminator the dispatcher uses. (The findings record the discriminator as shape.)

6.2 Every substring collision a Shaping component would plausibly hit. reshaping contains shaping. Report the full set — this is the difference between a clean build and one needing a per-file exemption.

6.3 The adapter path. The findings pre-answer this: lib/api/shape.ts, never shaping.ts, because the wall reads import specifiers and a room-named adapter trips every consumer. Confirm the rule still holds and report whether the file already exists.

6.4 WIRE_BOUNDARY_FILES. Report the current list and which entries genuinely need their exemption. CR-2026-162 established that an adapter needing no exemption should not get one — an unnecessary entry weakens the wall for no gain. Establish whether a Shaping adapter would need one.


7. Question five — the room as it stands

7.1 The placeholder. How RoomView.tsx dispatches the shape discriminator at 50252e1, and what it renders.

7.2 The two strings. CR-2026-160 corrected them to assert the surface rather than the record. Report both verbatim, so their replacement when the room is built is a deliberate act rather than an overwrite.

7.3 Which rooms are on the contract. CR-2026-160 adopted ReadState where it already touched things and CR-2026-162 touched Rendering again. Report which rooms use it and which still derive their own states — the Shaping room should join the majority pattern, and that requires knowing what the majority is.


8. What this brief does not do


9. Reporting

One findings document, Markdown primary.

Path. inspection-briefs/loomworks-b6-step-0-findings-v0_1.md. Copy to ~/Downloads.

Structure: environment (both SHAs, both tree states, and an explicit statement that no server, build, test, database or perimeter call was made) · questions one to five in order, each claim anchored, each carried claim marked re-verified or unverified · the async gap stated as a gap, not as a proposal · corrections preserved · unread.

Filing. Charter R-1: commit and push on clean pre-flight. Append the outcome to current-status/dunin7-status-brief.


10. Claude Code kickoff


B-6 Step 0 inspection. Read-only.

Brief: loomworks-record/inspection-briefs/loomworks-b6-step-0-inspection-brief-v0_1.md
Confirm it exists, and that it is the highest version present — numeric sort.

Read the brief in full. Charter dunin7-standing-authorization-charter-v0_1 governs.

Two repositories, both READ-ONLY, both at main:
  /Users/dunin7/loomworks at 50252e1
  /Users/dunin7/loomworks-engine at ffc29af

Both grounding documents predate the last two merges. Re-verify carried claims
or report them unverified.

No fixes, no branches, no commits, no npm install, no dev server, no build, no
test run, no database, no perimeter call. playground_dev is the live production
database.

Five questions in the brief's order. Question two has no precedent in this
codebase — no prior room has had an asynchronous dimension. Report what the
engine exposes and what the state contract can express, and state the gap as a
gap. Do not design across it.

File findings per section 9. Append the outcome to the status brief.

DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — B-6 Step 0 inspection brief — v0.1 — 2026-08-01 The first room with work that finishes after the read does.