From 01701fd372f4e73aa1275f93a809f48fb529df94 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 11 Aug 2026 13:51:13 +0200 Subject: [PATCH] docs(agent): clarify register references vs immutable snapshots --- packages/agent/docs/harness-v3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/agent/docs/harness-v3.md b/packages/agent/docs/harness-v3.md index 4812f7451..1716b5473 100644 --- a/packages/agent/docs/harness-v3.md +++ b/packages/agent/docs/harness-v3.md @@ -217,7 +217,7 @@ interface UsageRow { } ``` -**Registers hold values, not pointers.** A register's value is the current typed state itself, never an id pointing at an immutable state value. Overwriting a register discards the previous value; nothing accumulates and there is no history to fold (§1.8). Deleting a register removes the key entirely and is a first-class write, distinct from storing JSON `null`, which remains a legal value where a namespace's type permits it (`lane.leaf` at the root, `fact.custom`). +**Registers hold values, not snapshots.** A register's value is the current typed state itself — never an id pointing at an immutable state row, the superseded pattern that left a garbage value behind every update. Overwriting a register discards the previous value; nothing accumulates and there is no history to fold (§1.8). Registers may reference *other registers* by deterministic namespace/key — `op.state` names its `op.tool_args`/`op.preparation` keys, queue lists hold the ids that key `pending.entry` registers — and every such reference couples two pieces of current state whose lifecycles the same transactions manage together. Deleting a register removes the key entirely and is a first-class write, distinct from storing JSON `null`, which remains a legal value where a namespace's type permits it (`lane.leaf` at the root, `fact.custom`). ## 1.2 Identity