DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path standing-notes/loomworks-standing-note-h0-tightening-guarantee-and-its-scope-v0_1.md

Loomworks Standing Note — H0's Tightening Guarantee, and Its Actual Scope — v0_1

Version. 0.1 Date. 2026-08-20 Status. Standing note. Read alongside any statement of what H0 guarantees. Filed at the close of W4 per Operator direction, so that a reader of H0's guarantees meets the scope attached to them rather than finding it inside a scoping item. Origin. Operator ruling, 2026-08-20. The fact was surfaced building W1/W2 and recorded in loomworks-scoping-per-binding-session-minting-v0_1; this note states it where the guarantee is read.


1. The guarantee, with its scope attached

H0's tightening guarantee: freezing an agent identity refuses its next session request and ends its live sessions, effective at the gate within a second, on the shaping path.

The scope clause is not a caveat. It is part of the sentence. Stated without it, the guarantee is false.

2. What is actually true, mechanism first

The tightening lane reaches exactly as far as the identity model does.

freeze_agent_identity (CR-2026-229) sets status='frozen', ends every live session of that identity, and reloads the roster so the next check_grantability refuses. Every part of that works. It reaches an agent if and only if that agent mints sessions against the identity being frozen.

Shaping does. produce_shape mints under the shaping role at the front of the work, so freezing the shaping identity refuses the next job and kills the running one.

Rendering does not. Render specialists act under per-binding identities from render_specialist_binding (migration 0045), not under the seeded rendering role. No render specialist consults the rendering identity at any point. It mints no session, asks no grantability question, and carries no session id.

Therefore: freezing the rendering identity stops nothing. It sets a column. A render specialist mid-flight continues; the next one starts normally.

3. Why this is worse than an ungoverned path, and must be said

An ungoverned path is a visible absence. Nobody freezes what has no switch.

A rendering identity that can be frozen while nothing downstream asks is a switch that reads as governed and is not. The row exists. It has a status. freeze_agent_identity accepts its id and returns successfully. Every surface of the mechanism behaves exactly as it does for shaping, and the effect is nil.

The failure mode is an operator who believes they have stopped something. That is the specific harm: not that rendering is unprotected, but that the record and the interface both indicate protection that does not exist. In an audit system, a control that reports success without acting is a worse defect than no control, because it is the one nobody checks twice.

4. What the record must not say

Say instead: H0's tightening guarantee holds on the shaping path. The render path mints no sessions and consults no agent identity, so freezing the rendering identity has no effect on it. Both halves, every time.

5. What closes it, and what does not

Closed by: per-binding session minting (loomworks-scoping-per-binding-session-minting-v0_1) — named design work with a real blocker, not a patch. Until it lands the scope clause stands.

Not closed by: removing the rendering row. It is correctly seeded; the roster is not wrong. The mismatch is between two identity grains, and deleting one side of a mismatch is not reconciling it.

Not closed by making render specialists mint under the rendering role. That writes a false statement into the record — the session naming one actor while the events name another — and is refused for that reason, not for cost.

6. The general form, for whatever comes after H0

A control's guarantee is bounded by the paths that consult it, not by the paths it can be invoked against. freeze_agent_identity can be invoked against every identity in the roster. It governs only the agents that ask.

So the test for any new control is not "does it work" but "who asks it, and who does not?" The second half is the one that goes unwritten, and it is the half that turns a guarantee into a scope clause.