Version: v0.1
Date: 2026-08-24
Status: Finding. Records a second instance. Rules nothing, fixes nothing. No lifecycle write was added to unfreeze.
Sits beside: loomworks-finding-the-widening-leaves-no-record-v0_1, which is not amended.
Occasion: Test 8 of the operator test set, run live 2026-08-24.
Test 8 required a real freeze and a real unfreeze, both committed. It produced a second instance of the defect the note beside this one describes — created hours after that note was filed, by running a test, without touching any code.
agent_lifecycle_events now holds two rows, both identity_frozen:
| Actor | Kind | When |
|---|---|---|
| 29c62e33-855c-4acb-98c5-2eb075dab9f8 | person | 2026-08-23 20:56:26 UTC |
| b1df6f2e-3dcf-49d5-be76-9831765def3a (Marvin) | person | 2026-08-24 17:33:42 UTC |
The ledger now says Marvin froze rendering on 2026-08-24 and never released it.
That is false. The unfreeze ran, was committed, carried the rationale "Test 8 complete; restoring active state", and agent_identities.status reads active. The lifecycle count went 2 → 2 across it.
The record cannot say otherwise. There is no row to add and no field to correct; unfreeze_agent_identity writes nothing. The falsehood is not an error in the data — the data is exactly what the code produces. It is the shape of the record.
The first instance named nobody: 29c62e33-… resolves to no principal and no contributor, so a reader meets an obviously broken attribution and knows to distrust it. An unresolvable actor is at least legible as a problem.
This one names a real person. b1df6f2e-… is a principal row. The attribution is well-formed, the actor resolved, the gate passed, and every field is populated. A reader has no signal at all that anything is missing — the row looks complete because it is complete. It is simply the first half of a story whose second half cannot be written.
So: the first instance is visibly wrong; the second is invisibly wrong. The improvement in actor resolution shipped in CR-2026-234 made the record more trustworthy-looking without making it more complete, and a half-record that looks whole is worse to read than one that announces its own damage.
Neither was synthetic and neither was rolled back. The freeze was committed deliberately because Test 8 is about a real freeze; the unfreeze was committed deliberately to restore state. The records are the point — which is why the absence of one of them is the finding rather than an inconvenience.
The mechanism is exactly as recorded in the note beside this one, verified there both by reading record_lifecycle_event's unconditional call in freeze_agent_identity and by running both cascade cases in rolled-back transactions. Nothing here revises it. This note only records that the defect has now produced a second, live, more deceptive instance, and that it did so within hours of being described.
Rules nothing. Fixes nothing. No lifecycle write was added to unfreeze_agent_identity.
See also loomworks-finding-resolution-is-not-authorization-v0_1 on the two principals named Marvin, one of which was used here.
DUNIN7 — Done In Seven LLC — Miami, Florida Finding — the widening leaves no record, second instance — v0.1 — 2026-08-24