Version. 0.1 · Date. 2026-08-07 · Author. Claude.ai (drafting) / Marvin Percival (approving).
Target. /Users/dunin7/loomworks-engine and /Users/dunin7/loomworks.
Baseline. Post CR-2026-185. CC confirms both repos at Step 0.
Companion to. inspection-briefs/loomworks-small-work-sweep-step-0-findings-v0_1.md §6.
Charter. Autonomous regime. Status. Ready for CC execution. Independent of 183/184/185 — may run in parallel.
Where the surface says "of its type," it names no type. The wire carries a type id, never a name, on both renders and shapes — so the phrase renders incomplete or blank wherever it appears.
Design decision, settled in advance: resolve the type name server-side, batch-joined, in the same request. The engine already holds the type table; this is a join, not new data. A client-side lookup would be N+1 for a display string.
Engine.
Surface.
A type id that resolves to nothing — deleted type, unknown id, null column — must not render as an empty phrase. "of its type" followed by nothing is the current defect; "of its " followed by nothing is the same defect with extra steps.
CC decides what unresolvable renders as and reports it. Only-show-what-is-available applies: if the type cannot be named, the phrase should not appear at all rather than appearing incomplete.
Any change to what types exist, how they are declared, or the declared shape-types and render-types themselves — those are seed-level. This CR displays what is already there.
| Step | What | Mode |
|---|---|---|
| 0 | Pre-flight, both repos. | Auto |
| 1 | Read: enumerate every surface occurrence of the phrase and every response that would need to carry a name. Report before building. | Auto |
| 2 | Engine batch-join on render + shape, single-read and list paths + tests. | Auto |
| 3 | Surface consumption at every occurrence found + tests. | Auto |
| 4 | Unresolvable-type case per §3 + test. | Auto |
| 5 | Both suites; ruff 0; mypy at/below baseline. | Auto |
| A | Checkpoint. | Checkpoint |
| 6 | Tag cr-2026-186-b55-type-names. Push. | Auto |
Execute CR-2026-186 v0.1 at ~/Downloads/cr-2026-186-loomworks-b55-
type-names-v0_1.md. Confirm the CR number first.
B-55: the wire carries a type id, never a name, so "of its type" names
nothing. Remedy is pre-decided — resolve server-side, batch-joined, same
request. Don't reopen it.
Step 1 is a read: enumerate EVERY occurrence of the phrase on the
surface and every response that needs to carry a name. The sweep found
this on both renders and shapes, so one fix site is unlikely to be
complete.
Check the single-read and list paths separately rather than assuming
they share a builder — CR-2026-171's B-44 was exactly that shape.
§3 matters: an unresolvable type must not render as an empty phrase.
Only-show-what-is-available — if it can't be named, the phrase doesn't
appear. Report what you chose.
Independent of CRs 183-185; can run in parallel if you have capacity.
DUNIN7 — Done In Seven LLC — Miami, Florida CR-2026-186 — B-55 type names — v0.1 — 2026-08-07