Version. 0.1
Date. 2026-08-24
Filed beside. standing-notes/loomworks-scoping-finding-freeze-alert-v0_1.md. That note is not edited — this sits next to it, per the never-overwrite discipline.
Occasion. standing-notes/loomworks-scoping-an-actor-that-resolves-to-no-one-v0_1.md §2b, filed 2026-08-23, from a live rendering freeze found in the dev database.
loomworks-scoping-finding-freeze-alert-v0_1 §1 says:
> "the reason — passed as an argument, stored on the identity row, and overwritten or lost when the identity is unfrozen"
That is wrong. freeze_agent_identity(*, agent_identity_id, actor, db, now) takes no reason parameter, at any version, at engine 143fd6b. There is no argument to pass, nowhere on the identity row to store it, and therefore nothing for unfreezing to overwrite or lose. A freeze has never been able to record why it happened — not fragile, absent.
The note's argument was: unfreeze erases the evidence, so evidence must be separated from state. That argument survives intact under the correction — it just no longer needs the erasure mechanism to make its case.
The corrected fact is the stronger premise. A reason that exists and can be lost is a fragility. A reason that was never structurally possible to record is a gap the moment the freeze happens, before any unfreeze is in the picture. The finding/freeze/alert shape — a finding that exists independently, cited rather than contained — closes both the weaker claim and the stronger one, so nothing about the proposal changes. What changes is that the case for it no longer depends on a step (unfreeze) that may never occur; the gap is present at freeze time itself.
loomworks-scoping-an-actor-that-resolves-to-no-one-v0_1.md §2b, §5 — a real identity_frozen row in the dev database, reason column NULL, with no unfreeze having occurred. The rendering freeze is the first real-world instance of the gap this correction describes, found by looking at one row rather than by building.