DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path current-status/dunin7-status-brief-v0_14.md

DUNIN7 — status brief — v0.14

Version. 0.14 Date. 2026-08-03 Charter. standing-notes/dunin7-standing-authorization-charter-v0_1. Author. Claude Code (inspection session). Operator: Marvin Percival. Supersedes. v0.13 at record bd75637. All earlier versions stand as siblings; v0.3 remains deliberately absent. Changes from v0.13. B-6's Step 0 is done — read-only, no code. Shaping differs from the built rooms in authority, not size, and the async gap is not the one the brief expected.


1. What landed

No code, either repository. Record only: 87fdad6 (the brief), 10841b6 (the findings), and this filing. OL 50252e1 and engine ffc29af, both clean.


2. The finding that changes the room's shape

Confirming a Shape automatically enqueues renders. engagement/shape_confirmed_dispatch.py is a post-append hook on shape_confirmed that walks the engagement's declared render-types and enqueues one render job per match. An act in the Shaping room produces artifacts in the Rendering room, without a second decision.

This is not a defect and the change request should not treat it as one. The render side's state transitions remain operator-driven, as CR-2026-162 established. What fires here is production, against a render-type the Operator previously declared — the declaration is the authority.

But the room must say so. A confirm control that reads as a local act, when it may enqueue several renders, understates what the Operator is about to do. No built room has that shape, and this was not in the sizing that split B-6 out.

A second automatic transition: held → pending_confirmation is written by the agent, not the Operator.


3. The async gap is real, and it is not where it was expected

ReadState needs no sixth state. The brief anticipated that a running job fits none of the five values. It does not need to: **the running condition is a property of the item, not of the read. ShapeEventResponse carries state, so a completed read returns real items one of which is held. populated is honest.** The contract answers did the read land; the item answers is the work done. Conflating them is what would have required a new state.

The real gap: a failed production is indistinguishable from a running one.

So a room listing shape-events sees held and, under the governing rule, may say only "not produced yet" — true of both a running production and one that failed hours ago. Stated as a gap; not designed across.


4. Smaller findings

The shape-type → render-type mapping is written down version-pinned on DeclaredRenderType.source_shape_type_ref, used as a selector at three sites, and enforced as a constraint nowhere. The surface should not re-implement itGET /renders/candidates already answers it, and a second copy is the divergence to avoid. (This closes the second of change request C's two unread items.)

The wall's collision set for Shaping is exactly twoshaping in room-labels.ts and shapingRunning in activity.ts. reshaping has no current instance in src/: the rule is right, the instance is imagined. A Shaping adapter will need a boundary exemption — unlike CR-2026-162's, because ShapeEventResponse carries shaping_agent_* fields. It must be lib/api/shape.ts, and does not yet exist.

Two of three rooms are on the contract, not three of three. RenderingRoom still derives its own ladder; CR-2026-162 touched it twice without migrating it. The majority pattern is real but the count is two-to-one.


5. Queued

  1. B-6's change request, drafted against these findings — with §2's authority question and §3's gap as explicit decisions, not inherited assumptions.
  2. B-35DiscoveryToSeedNotConfiguredError returns 500 where its siblings return 503.
  3. B-9 — the provenance walk, unblocked.
  4. Q-13 — whether renders need a current-marker.
  5. B-33 / B-34 — neither suite reports a clean run.

6. Decision queue — one new

| # | Question | Default | Blocks | Proceeds regardless | |---|---|---|---|---| | Q-14 | What should the Shaping room say a held Shape is? A failed production and a running one are indistinguishable from anything the room can read. Options: expose a job lookup by shape-event id; add a failure state to ShapeEvent; or have the surface say only "not produced yet" and decline the distinction. | Say only what is known — "not produced yet" — and open the engine question separately. It is the honest reading and needs no engine change. | B-6's room design only. | Everything. |

Q-1, Q-3, Q-10 and Q-13 carry forward unchanged. F-1: five merges await one restart.


7. Charter compliance

R-5 throughout — read-only across two repositories, wrote nothing, authenticated nothing, connected to no database.

Nothing inherited. Both grounding documents predate the last two merges; every carried claim is marked re-verified or unverified, and two were corrected — the async gap's location, and reshaping having no instance.

One unread named rather than closed with a plausible reading.


DUNIN7 — Done In Seven LLC — Miami, Florida DUNIN7 — status brief — v0.14 — 2026-08-03 Confirming one thing produces another; "not finished" and "failed" look the same.