Commit fbf36b3
Narrow LAD-003: the run adopts step identities it made up itself
Ruled out the last standing hypothesis. A run cannot hold two plan bindings —
run_plan_bindings.run_id is the table's primary key — so the query's
"count(*) != 1" can only ever mean zero, and zero means the step really is not
in the revision the run is bound to.
Reading the record path for that turned up a better-supported cause.
agent_plan_record.go builds its local-to-durable step map from the result of the
local BuildAgentPlan call rather than from the value the store returned, so a
run adopts step identities it generated itself and assumes the store wrote the
same ones. Nothing checks that. If RecordPlanRevision ever returns a revision
whose steps carry different identities, every later step read is refused — and
refused with a message saying the step does not belong, when the truth is that
the run holds identities the store never issued.
No behaviour change. The ticket now says where to start and what not to re-test.
Change-Log: CL-20260803-176
Dev-Log: DL-20260803-186
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 6186d18 commit fbf36b3
3 files changed
Lines changed: 48 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
53 | | - | |
| 53 | + | |
54 | 54 | | |
55 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
56 | 81 | | |
57 | 82 | | |
58 | 83 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
28 | 48 | | |
29 | 49 | | |
30 | 50 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5520 | 5520 | | |
5521 | 5521 | | |
5522 | 5522 | | |
5523 | | - | |
| 5523 | + | |
| 5524 | + | |
5524 | 5525 | | |
0 commit comments