Skip to content

Commit dcbfdcd

Browse files
docs(vrs): amend 0007 — it credited the wrong mechanism
The previous commit message claimed this amendment existed. It did not. Writing it now rather than leaving the claim standing. Two of 0007's stated reasons were wrong, and implementing it proved so: a retry re-reads the catalog, sees head has moved, and therefore names a different predecessor — so its bytes differ regardless of `at`, and there is no hash collapse. Removing `at` alone would have fixed nothing. What closes the retry is the refusal of a revision that changes nothing. Removing `at` still earns its place, for a property the decision did not claim: two machines with different local history making the same revision now converge instead of diverging over a counter neither of them meant. Also records that a correct retry now exits non-zero, and that a retried revision which ADDS a step still duplicates the work — this decision's own failure mode surviving in the one shape its reasoning did not reach. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzRc44KbA3wfYYKFF9UDMa agent-session-id: cdf2c185-eeb3-4a4d-8ce0-52885f145cac agent-tool: Claude Code agent-tool-version: 2.1.215 agent-model: claude-opus-4-8 agent-runtime-profile: /nix/store/acr8a3l2v366jgmwiq8xdrhgz1py0db5-coding-agent-runtime-profile/share/coding-agents/profile.json agent-skills-manifest: /nix/store/sj1v5j91h8v8d1w9lca4040302lwrd6v-agent-skills-corpus/share/agent-skills/manifest.json tooling-profile: dotfiles@unknown-dirty
1 parent 84a665a commit dcbfdcd

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

context/.decisions/0007-identity-is-derived-never-asserted.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,42 @@ Compass carries no caller-supplied idempotency key.
9292
- Applies beyond identity: prefer a derived value to an asserted one wherever
9393
both would work, and treat every field a caller sets as something that will
9494
eventually be set wrongly.
95+
96+
## Amendment 1 — the retry is closed by the empty-revision rule, not by removing `at`
97+
98+
The first consequence above claimed a repeated mutation "produces a
99+
byte-identical body, therefore the same name, therefore no second version."
100+
That is false, and implementing this decision proved it.
101+
102+
A retry re-reads the catalog and observes its own landed write, so head has
103+
moved. The candidate version therefore names a *different predecessor* and sits
104+
at a different depth. Its bytes differ regardless of what `at` does — there is
105+
no hash collapse, and removing `at` alone would have fixed nothing. The Context
106+
section's framing of `at` as the cause of the duplicate is likewise wrong: it
107+
was one of three fields that shift.
108+
109+
What closes the retry is the refusal of a revision that changes nothing.
110+
Re-applying the same edits to a version that already carries them alters no Step
111+
and no goal, so it is refused.
112+
113+
Removing `at` earns its place for a different property: two machines with
114+
different local history that make the same revision from the same parent now
115+
produce identical bytes and converge to one version, instead of diverging over a
116+
counter neither of them meant. That is worth having, and it is not what the
117+
Context claimed.
118+
119+
The decision stands; two of its stated reasons did not.
120+
121+
## Amendment 2 — a correct retry now fails, and this is visible to the caller
122+
123+
An agent that crashed mid-write and correctly retries receives an error and a
124+
non-zero exit, not a success. The record is right — one version, one rationale —
125+
but the caller is told it failed for behaving correctly. The message says the
126+
earlier attempt landed and points at head, which is the most that can be done
127+
without a verb this decision does not authorize.
128+
129+
Related and unclosed: a retried revision that *adds a Step* is not caught. The
130+
new Step's reference is minted fresh on each attempt, so the Step sets genuinely
131+
differ, the empty-revision rule does not fire, and the same work is recorded
132+
twice under two references. That is this decision's own failure mode surviving in
133+
the one shape its reasoning did not reach, and it remains open.

0 commit comments

Comments
 (0)