Version. 0.15
Date. 2026-08-03
Charter. standing-notes/dunin7-standing-authorization-charter-v0_1.
Author. Claude Code (execution session). Operator: Marvin Percival.
Supersedes. v0.14 at record 8a6eaf0. All earlier versions stand as siblings; v0.3 remains deliberately absent.
Changes from v0.14. B-6 is done. The four-room model is complete — every room now has a surface path, and the placeholder category is empty.
Operator Layer main f477c87, tag shaping-room-v0_1, push-verified. Previous main 50252e1. Engine ffc29af, untouched — no file outside the Operator Layer was edited.
Six commits: the determination, the adapter, the room, the strings, the tests, the notes. 652 passed / 0 failed / exit 1 on the twelve baseline rejections — the baseline set exactly, with thirteen added.
The surface can compute which output types a confirmation maps to, from two routes it already reaches — and the filter is the engine's own selector, read rather than re-implemented.
One limit decided the wording. The engine also skips a matching type when nothing is registered to produce it, and that registration is not exposed here. So the list is an upper bound, and the control names types and never a count: naming the types is supported by the data; promising how many outputs appear is not.
Confirming is not a local act. The engine fires a post-append hook that enqueues production for each matching declared output type — pressing a button here makes work appear in the Rendering room. The seed holds that the Operator approves, and approval requires knowing what is being approved, so the control names its consequence before it is pressed, listing the output types by name.
A Shape not produced yet says only that. The engine has no failure state for a Shape: a failed production leaves it exactly where a running one sits, and the job carrying the failure is unreachable from this surface. So the room says the one thing true of both — "Not produced yet." No spinner, no progress language. That would assert the job is alive, which the data cannot support — the render current-marker defect in a new place.
A test sweeps the whole card against eight progress words and asserts no progressbar, no <progress>, no animate-spin. It is the only thing standing between this room and that claim.
The wall caught a comment, again. specialist is walled, and explaining why the output list is an upper bound required naming it — in two files. This is the trap CR-2026-162's download adapter hit, hit the same way. A comment about forbidden vocabulary is still scanned as vocabulary. Reworded; the code never carried it.
The adapter's exemption was proven, not assumed — with the entry removed the wall fails on shaping and shape_event. CR-2026-162 established that an adapter needing no exemption should not get one; this is the converse, and the rule is the same: an exemption follows a need, in both directions.
A test whose premise disappeared was converted, not deleted. WorkspacePane's "a room with no surface path" assertion began aimed at Manifestation, moved to Shaping at CR-2026-160, and now has nowhere left to move. It asserts instead that no room renders the placeholder — the guarantee survives the premise.
Step 3 landed inside Step 2. The confirm control is rendered by the shape card and could not be committed apart from the room it lives in. Reported rather than split into a commit touching the same lines twice.
EmptyRoom is gone, having no caller left — the same residue class as renderSub at CR-2026-162.
All five states verified in a browser against a throwaway stack (spare ports 8096/3397, torn down, no database, playground_dev never connected to). The held card read exactly "Shape | #3 of its type | Draft brief | Not produced yet." — zero hits on nine progress words, no spinner, no confirm control. The consequence line named Care guide PDF, Care guide HTML and excluded the output type belonging to another shape-type, confirming the room uses the engine's mapping rather than a copy.
shaping_jobs already carries shape_event_object_id; only the route is missing.DiscoveryToSeedNotConfiguredError returns 500 where its siblings return 503.RenderingRoom onto ReadState — the last room deriving its own ladder.Q-1, Q-3, Q-10, Q-13 carry forward. Q-14 is answered and removed — the room says "not produced yet" and declines the distinction, per D-4.
F-1: six merges now await one restart — CR-2026-159, -160, -161, both halves of -162, and -163.
R-2 end-to-end, one repository. Branch checked before the first commit; C-1 observed — fetch and HEAD re-verified immediately before merging, clean index, --no-ff.
No engine change, as the CR required — ffc29af untouched throughout, and the acceptance gate's item 8 holds.
R-4 held — the live pass ran on spare ports against a throwaway stub; playground_dev was never connected to.
F-1 respected: merged is not deployed.
DUNIN7 — Done In Seven LLC — Miami, Florida DUNIN7 — status brief — v0.15 — 2026-08-03 Four rooms, four surface paths, and one that says only what it knows.