create-agent-rig 0.6.2 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +180 -0
  2. package/package.json +1 -1
  3. package/templates/agent-os/stack/node-ts/.claude/rules/node-ts.md +2 -3
  4. package/templates/agent-os/universal/.agents/skills/loop/SKILL.md +117 -80
  5. package/templates/agent-os/universal/.agents/skills/pr-ship/SKILL.md +84 -16
  6. package/templates/agent-os/universal/.claude/hooks/block-no-verify.mjs +23 -3
  7. package/templates/agent-os/universal/.claude/hooks/guard-bash.mjs +65 -7
  8. package/templates/agent-os/universal/.claude/hooks/guard-core-purity.mjs +2 -2
  9. package/templates/agent-os/universal/.claude/hooks/guard-web-boundary.mjs +2 -2
  10. package/templates/agent-os/universal/.claude/hooks/lib/hook-input.mjs +109 -0
  11. package/templates/agent-os/universal/.claude/rules/invariants.md +19 -0
  12. package/templates/agent-os/universal/.claude/scripts/lib/claim-records.mjs +800 -0
  13. package/templates/agent-os/universal/.claude/scripts/lib/revalidation-evidence.mjs +56 -0
  14. package/templates/agent-os/universal/.claude/scripts/lib/shell-tools.mjs +81 -0
  15. package/templates/agent-os/universal/.claude/scripts/preflight.mjs +19 -1
  16. package/templates/agent-os/universal/.claude/scripts/queue/core.mjs +17 -66
  17. package/templates/agent-os/universal/.claude/scripts/queue/github-issues.mjs +29 -7
  18. package/templates/agent-os/universal/.claude/scripts/queue/index.mjs +159 -23
  19. package/templates/agent-os/universal/.claude/scripts/queue/jira.mjs +41 -19
  20. package/templates/agent-os/universal/.claude/scripts/queue/plan-md.mjs +4 -2
  21. package/templates/agent-os/universal/.claude/scripts/revalidate.mjs +640 -59
  22. package/templates/agent-os/universal/.claude/scripts/revalidation-report.mjs +32 -15
  23. package/templates/agent-os/universal/.claude/scripts/run-state.mjs +180 -37
  24. package/templates/agent-os/universal/.claude/settings.json +1 -1
  25. package/templates/agent-os/universal/.claude/skills/loop/SKILL.md +117 -80
  26. package/templates/agent-os/universal/.claude/skills/pr-ship/SKILL.md +84 -16
  27. package/templates/agent-os/universal/.codex/hooks.json +1 -1
  28. package/templates/agent-os/universal/.rig/revalidation.json +10 -0
  29. package/templates/agent-os/universal/docs/decisions/codex-adapter.md +3 -2
  30. package/templates/agent-os/universal/docs/decisions/content-blind-revalidation.md +144 -0
  31. package/templates/agent-os/universal/layers.json +5 -0
  32. package/templates/hash-history.json +104 -29
  33. package/templates/release-ledger.json +3 -1
@@ -0,0 +1,144 @@
1
+ # Content-blind revalidation claims
2
+
3
+ Status: accepted
4
+
5
+ ## Decision
6
+
7
+ SELECT, BEFORE_PR and BEFORE_CLOSE remain the only revalidation checkpoints.
8
+ They share one implementation and one durable baseline: a versioned JSON record
9
+ at `.rig/claims/<ticket>.json`.
10
+
11
+ The first successful SELECT creates the record and reports
12
+ `BASELINE_CREATED`. The task branch must add it to Git. An existing but
13
+ untracked record, or an absent tracked record, is `UNVERIFIABLE`; so is an
14
+ absent record on a resumed SELECT, BEFORE_PR or BEFORE_CLOSE. Each case stops
15
+ automatic progress. Pinned in the generator's
16
+ `test/template/content-blind-revalidation.test.ts` (absent in a generated rig)
17
+ › "creates a versioned content-blind claim and returns BASELINE_CREATED" and ›
18
+ "refuses to resume from an existing claim until Git tracks it", › "refuses a
19
+ deleted tracked claim in a fresh run without take-up markers", and › "refuses
20
+ to recreate a deleted untracked baseline with a %s" (parameterized over a
21
+ readable and a corrupt prior journal), plus
22
+ `test/template/queue-revalidation.test.ts` (absent in a generated rig) ›
23
+ "without a run directory it creates the durable baseline but no run evidence".
24
+
25
+ The record contains SHA-256 fingerprint sets, not source content:
26
+
27
+ - `scope` covers stable ticket scope, workflow state, dependency links and
28
+ configured paired repository facts. Workflow state is fingerprinted against
29
+ the state expected at each checkpoint. The first SELECT expects `open`.
30
+ A successful Jira or GitHub adapter `claim` then writes its observable state
31
+ (`in-progress`) into the same durable claim record as `workflowClaim`; only
32
+ that acknowledgement authorises the state at a resumed SELECT, BEFORE_PR or
33
+ BEFORE_CLOSE. The same state reached without the acknowledgement is external
34
+ drift and moves `scope`. PLAN.md remains `open` because its claim has no
35
+ observable workflow transition. A rollback or any other state also moves it.
36
+ - `commentary` covers comment identifiers and count. It is observed at SELECT
37
+ and BEFORE_PR and becomes hold-authoritative only at BEFORE_CLOSE.
38
+
39
+ Pinned in the generator suite (absent in a generated rig),
40
+ `test/template/content-blind-revalidation.test.ts` › "stays CURRENT
41
+ for marker-only movement and holds on changed scope", › "holds when the target
42
+ branch SHA moves without a tracker edit", › "adapters declare their observable
43
+ claimed workflow state", › "keeps a resumed SELECT current after the Jira
44
+ adapter records its own claim transition", › "GitHub claim records the durable
45
+ transition that makes in-progress CURRENT", › "holds claim:scope at resumed
46
+ SELECT for the same transition made outside the adapter", › "accepts an
47
+ in-progress transition performed by the Jira adapter claim operation", ›
48
+ "holds claim:scope when an external actor moves the item to the expected
49
+ claimed state", › "holds claim:scope when workflow state returns to open after
50
+ the Rig claim transition", and › "defers an added comment through SELECT and
51
+ BEFORE_PR, then holds at BEFORE_CLOSE".
52
+
53
+ `.rig/revalidation.json` is the versioned detection contract. Version 1 is a
54
+ pull model over run-state and journal evidence, with 24-hour accepted latency,
55
+ no push channel, and an explicit list of paired facts. Preflight stops when the
56
+ contract is absent or unsupported. Pinned in the generator suite (absent in a
57
+ generated rig),
58
+ `test/template/content-blind-revalidation.test.ts` › "preflight hard-refuses a
59
+ %s contract as no-detection-contract" and › "accepts the default
60
+ pull/run-state+journal/24h/no-push contract".
61
+
62
+ `updatedAt` take-up markers remain in run state and revalidation events for
63
+ compatibility and attribution. They do not decide drift, baseline creation or
64
+ checkpoint action. `.claude/runs/<run-id>/decisions.jsonl` and `events.jsonl`
65
+ remain append-only evidence for a particular run; the sibling `state.json` is a
66
+ mutable stop-state cache, and none of them is the cross-harness claim store.
67
+ Pinned in the generator suite (absent in a generated rig),
68
+ `test/template/queue-revalidation.test.ts` › "a moved marker stays
69
+ evidence-only while the tracked claim remains CURRENT". First sight versus
70
+ resume is reconstructed from SELECT events in the current and bounded sibling
71
+ run journals. An unreadable bounded journal cannot prove first sight and
72
+ therefore cannot authorise recreation of a missing claim. Neither can a scan
73
+ truncated by its entry or candidate cap: incompleteness is explicit and fails
74
+ closed rather than turning subset absence into first sight.
75
+
76
+ Every blocking detection has a stable content-blind id. A typed outcome names
77
+ that id, records whether action was required and clears only its matching
78
+ run-level hold. An outcome without a boolean `actionRequired` or legacy
79
+ `actionChanged` verdict is malformed and resolves nothing. Filesystem failures
80
+ are reduced to stable logical evidence before they enter a detection id, so
81
+ identical failures have identical ids across harness
82
+ checkouts. The report joins by detection id across runs and retains the
83
+ legacy same-run sequence join for older evidence. Pinned in the generator suite
84
+ (absent in a generated rig),
85
+ `test/template/content-blind-revalidation.test.ts` › "reuses a stable detection
86
+ id for the same drift at the same checkpoint", › "journals a typed resolution
87
+ through the existing outcome command", › "derives false-HOLD from result !=
88
+ CURRENT and actionRequired false, only after resolution", and › "joins a typed
89
+ resolution to its detection across run directories".
90
+
91
+ The run-state hold is a cache of that append-only evidence, not a deletion
92
+ escape hatch. Before selection, the same temporal resolver used by the report
93
+ reconstructs the newest unresolved blocking detection from the current run
94
+ journal when `state.json` has no hold. Revalidation-hold writers use the same
95
+ fail-closed state reader as selection, so a corrupt, symlinked or oversized
96
+ state file cannot be replaced while it may conceal another stop input. Contract
97
+ and paired-fact reads classify a pathname before opening it, stay anchored to
98
+ the opened file descriptor, and reject identity changes during validation.
99
+ Existing claim bytes are read through a bounded no-follow
100
+ descriptor and compared with the tracked Git object; first-baseline creation is
101
+ anchored to the validated claim-directory working directory so a pathname swap
102
+ cannot redirect the write outside the repository.
103
+ The directory's real path and filesystem identity are carried into the writer
104
+ and checked again with the persisted bytes before SELECT reports
105
+ `BASELINE_CREATED`; redirecting it elsewhere inside the repository is refused
106
+ too. Jira commentary declares whether its returned IDs cover `comment.total`;
107
+ an incomplete set is `UNVERIFIABLE`, never a hash of unseen IDs. GitHub CLI's
108
+ unpaginated `comments(first: 100)` window has no total beside it, so exactly 100
109
+ returned comments is also `UNVERIFIABLE`; fewer than the cap proves completion.
110
+ Pinned in the generator's
111
+ `test/template/content-blind-revalidation.test.ts` (absent in a generated rig)
112
+ › "stops with %s when the unresolved journal result is %s", › "%s refuses a
113
+ present %s state instead of replacing unknown stop inputs", › "does not accept
114
+ an external contract swapped in after containment validation", › "classifies a
115
+ contract symlink before attempting to open it", › "rejects a tracked claim %s
116
+ only in the worktree", and › "does not write a baseline outside
117
+ after the claim directory passes containment", plus › "keeps a detection
118
+ unresolved with %s state when its typed outcome has no boolean verdict", › "uses
119
+ the same id for the same missing-contract condition in two absolute roots", ›
120
+ "returns UNVERIFIABLE when the %s truncates prior SELECT evidence", › "refuses
121
+ SELECT when comment.total exceeds the returned comment ids", › "refuses SELECT
122
+ when the transport returns exactly its 100-comment window without a total", and
123
+ › "does not write through an in-repository claim-directory symlink swapped after
124
+ validation".
125
+
126
+ BEFORE_CLOSE proves the tracker state it observed; the later tracker transition
127
+ is a separate API operation. Without a tracker-supplied conditional transition
128
+ or transaction token, this mechanism cannot make those two remote operations
129
+ atomic. A future adapter may consume such a native primitive, but this decision
130
+ does not invent one or treat `updatedAt` as a substitute authority.
131
+
132
+ ## Why
133
+
134
+ Tracker timestamps conflate scope edits, comments and workflow transitions.
135
+ They caused false holds on the rig's own writes and cannot survive a harness or
136
+ run boundary as a durable semantic claim. Content-blind sets preserve privacy,
137
+ make each kind of drift explicit and keep the existing checkpoint chain as the
138
+ single authority.
139
+
140
+ ## Rollback
141
+
142
+ Revert the mechanism, contract and claim records together. Do not restore
143
+ `updatedAt` as a second authority beside claims: two engines can disagree at a
144
+ checkpoint, which makes neither result safe to automate.
@@ -47,9 +47,12 @@
47
47
  ".claude/scripts/revalidate.mjs",
48
48
  ".claude/scripts/revalidation-report.mjs",
49
49
  ".claude/scripts/lib/gate-coverage.mjs",
50
+ ".claude/scripts/lib/claim-records.mjs",
51
+ ".claude/scripts/lib/revalidation-evidence.mjs",
50
52
  ".claude/scripts/lib/revalidation-points.mjs",
51
53
  ".claude/scripts/lib/verdict.mjs",
52
54
  ".claude/scripts/lib/secrets.mjs",
55
+ ".claude/scripts/lib/shell-tools.mjs",
53
56
  ".claude/scripts/queue/core.mjs",
54
57
  ".claude/scripts/queue/plan-md.mjs",
55
58
  ".claude/scripts/queue/github-issues.mjs",
@@ -60,12 +63,14 @@
60
63
  ".claude/scripts/queue/state.mjs",
61
64
  ".claude/scripts/queue/gate-rounds.mjs",
62
65
  ".claude/queue.json",
66
+ ".rig/revalidation.json",
63
67
  "PLAN.md",
64
68
  "journal/README.md",
65
69
  "docs/decisions/gate-coverage.md",
66
70
  "docs/decisions/fail-open-guards.md",
67
71
  "docs/decisions/codex-adapter.md",
68
72
  "docs/decisions/closing-a-task.md",
73
+ "docs/decisions/content-blind-revalidation.md",
69
74
  "docs/decisions/review-lanes.md",
70
75
  "docs/decisions/run-directory.md",
71
76
  "docs/decisions/spacing-rations-mechanisms.md",
@@ -7,7 +7,9 @@
7
7
  "0.4.0",
8
8
  "0.5.0",
9
9
  "0.6.0",
10
- "0.6.1"
10
+ "0.6.1",
11
+ "0.6.2",
12
+ "0.7.0"
11
13
  ],
12
14
  "files": {
13
15
  ".agents/skills/check-premises/SKILL.md": {
@@ -22,7 +24,9 @@
22
24
  "hashes": [
23
25
  "eb52ef41269018107534d8dc2f552c57698e1677a1e76b5e666b5d09c007cac0",
24
26
  "47922b182915cb92696f851174f2e88c4ae8c67dc119ef39a3a597ef1300fab5",
25
- "57f6add0504db45e7577474f97705fe474310e4cd3310cdb348a2c64eabe88cd"
27
+ "57f6add0504db45e7577474f97705fe474310e4cd3310cdb348a2c64eabe88cd",
28
+ "18f4300de4c4c7ea380d726fb109fa224da950ef0a4cea5015ab1d408b823be5",
29
+ "0a1b6575f6df8139766c8e71ba7320e14d2a5a5ed8ab26b6b43f7a006153d37d"
26
30
  ]
27
31
  },
28
32
  ".agents/skills/new-invariant/SKILL.md": {
@@ -54,7 +58,8 @@
54
58
  "since": "0.5.0",
55
59
  "hashes": [
56
60
  "a2fb0d03c65701af9d2d69cbcb2582ae573f097b1e1071eb2916e5e4f7832b37",
57
- "9616e4767942b2021e34ab7bb76eec9a5c280cc608a0756abb02743741d5fc8a"
61
+ "9616e4767942b2021e34ab7bb76eec9a5c280cc608a0756abb02743741d5fc8a",
62
+ "a6340b95a03000b89fb27f5357cdd9c7ec12b714054b5334b61a30da600405e8"
58
63
  ]
59
64
  },
60
65
  ".agents/skills/ro-debug/SKILL.md": {
@@ -114,7 +119,9 @@
114
119
  "since": "0.2.0",
115
120
  "hashes": [
116
121
  "c7c86de47b601dcb594ba8d8e23b5624ef8d47dafeddbc1aadd351c72e051d83",
117
- "ece5a81db41bd48695a1a009239837b682d247baf6d19214eaa859a7519ab246"
122
+ "ece5a81db41bd48695a1a009239837b682d247baf6d19214eaa859a7519ab246",
123
+ "1646ed80de5268a886a2e861124cb3b871fa46df1857991a645667601f52253b",
124
+ "3d7bcbccd9a163f076bd1d8cc63021b7c8605d1cb1df24a3536db3e57c1d7630"
118
125
  ]
119
126
  },
120
127
  ".claude/hooks/dod-checks.json": {
@@ -130,7 +137,8 @@
130
137
  "9fb8fad4d95756fb2424a97550aa85dfab0ca8dbcf91e6d0385263ba3b929135",
131
138
  "7852205961cb1647b49de5f7e79820c1735b4be897adcf8f5bc3eeb49318ff78",
132
139
  "33edb11904e5c4f88626b41c7e649b85d20957a11ff7e1062538917647c3e7f0",
133
- "19202a28355dac1d7a95d29411668cf970006b3044d89a772768ce21793931aa"
140
+ "19202a28355dac1d7a95d29411668cf970006b3044d89a772768ce21793931aa",
141
+ "d2af03ed141fadd0b1e69b230b9277e8f03169757a8e2a679767653ab7828d9a"
134
142
  ]
135
143
  },
136
144
  ".claude/hooks/guard-bash.mjs": {
@@ -138,42 +146,51 @@
138
146
  "hashes": [
139
147
  "4d396f412fc53094188b14348c5af4e79c7542a182630c20c4687d79899c5b0e",
140
148
  "e7a513216ebbceaa7f11ec8fb611de8bb5d5925dfdfd75b779dcb7c0ee6e83cc",
141
- "78047f42dda65076dd2cdb73ad530553db3d4a6f3ea7f0729590ac7286323cb1"
149
+ "78047f42dda65076dd2cdb73ad530553db3d4a6f3ea7f0729590ac7286323cb1",
150
+ "5782d91c6c54155ad8bf3e107b6574b3ad4c97baa7be673a5ed252c70b387300",
151
+ "5ffaba69ffc9b6c39cd3c97c4f29b44627416d55793b50aa1a26ffe5efc45497"
142
152
  ]
143
153
  },
144
154
  ".claude/hooks/guard-core-purity.mjs": {
145
155
  "since": "0.2.0",
146
156
  "hashes": [
147
157
  "e36fbb92ee8395c6686fef582f29f2701747074b3b781bed42fe068f5c000bd7",
148
- "282faa364c2d152808cd92ff7e39da26fd0549a5b2d0af9711d3453be2c666eb"
158
+ "282faa364c2d152808cd92ff7e39da26fd0549a5b2d0af9711d3453be2c666eb",
159
+ "4bdd9a38b1aa4050c109f7809ef924be4d411f5720b6030d57c5264ce3df556d",
160
+ "15de3ae9a6007270f7b10d71ff9940160aadabd8f5b0995662fc324c483807e5"
149
161
  ]
150
162
  },
151
163
  ".claude/hooks/guard-rulebook.mjs": {
152
164
  "since": "0.6.0",
153
165
  "hashes": [
154
166
  "4524d715f2e41f4cfdd3d0f9c858817f913aaca5192bda97dff876b4d8c51f19",
155
- "f9e3e4b7c22c4a64f521402419707ff382b05c8deb6310f62e5545db87f7cb4f"
167
+ "f9e3e4b7c22c4a64f521402419707ff382b05c8deb6310f62e5545db87f7cb4f",
168
+ "493ae58e54b055bd13ba992ee0dbfa2cb9ce9a3637ec345ab8d7cfff95831c60"
156
169
  ]
157
170
  },
158
171
  ".claude/hooks/guard-secret-file.mjs": {
159
172
  "since": "0.5.0",
160
173
  "hashes": [
161
174
  "f6b81cb7640924d2e56aced58e6b48f65df6638fb5a9099985fe5d673245c3ad",
162
- "8c333879dba1f2bf87bbb8e7b257ac51315a74a4cb45252408ca615e2a42d7b5"
175
+ "8c333879dba1f2bf87bbb8e7b257ac51315a74a4cb45252408ca615e2a42d7b5",
176
+ "5bf2896ec5e5f94fab20b52cd22418a4392778b40744602a087e320eeca3f688"
163
177
  ]
164
178
  },
165
179
  ".claude/hooks/guard-web-boundary.mjs": {
166
180
  "since": "0.2.0",
167
181
  "hashes": [
168
182
  "93d4fa0fd1c18261cc8ef2b1ae2abe3a0200cc4b5a7b1d1d4ae433ca92c514b1",
169
- "8deda7061122b69d72e708222ef2d38a971bb713269ec7fd1ca3440fe0a1150f"
183
+ "8deda7061122b69d72e708222ef2d38a971bb713269ec7fd1ca3440fe0a1150f",
184
+ "df325e672793e06b8315e64b59a329775d110fc166176074ff3bb8dea557c561",
185
+ "60959520dbe326880d284c9e2b76a2a89f72b981ea6a2cb76e2a252b1233bdfc"
170
186
  ]
171
187
  },
172
188
  ".claude/hooks/inject-rules.mjs": {
173
189
  "since": "0.2.0",
174
190
  "hashes": [
175
191
  "c472419f1076ea3707d640cd5246c0e69a94c55455f6648e2cbaf300a382c8df",
176
- "17c299ea4c6202745a3f8813aaef7711eb9030bf0a220cca77b58cac98c95940"
192
+ "17c299ea4c6202745a3f8813aaef7711eb9030bf0a220cca77b58cac98c95940",
193
+ "860a5d4ba02b59971f80bf79a9081f48f11022d46fe66b0470f0abc4ed9633e4"
177
194
  ]
178
195
  },
179
196
  ".claude/hooks/lib/edit-input.mjs": {
@@ -184,6 +201,13 @@
184
201
  "572c671f8f2cad190fe2f144071954ac4d3b1357cab80a19bad584dd3b3768c8"
185
202
  ]
186
203
  },
204
+ ".claude/hooks/lib/hook-input.mjs": {
205
+ "since": "0.6.2",
206
+ "hashes": [
207
+ "c40320d90e9585a52026e074e399b6883a0dfed704115b28e8da4dea284cf85f",
208
+ "3be3d4af4a25536d2a2bac0441a1370be7efafb5f8aa737b195bdce77db0091b"
209
+ ]
210
+ },
187
211
  ".claude/queue.json": {
188
212
  "since": "0.3.0",
189
213
  "hashes": [
@@ -221,14 +245,16 @@
221
245
  "518d9b3d7cbae50f30c86d33b2b4bbea11ab3ba6cfef270876e92604b2af5f50",
222
246
  "389484f0846c3dd8207c0f41bd56409103fbcc7f58b94b1bf4bd1d81b5af0e87",
223
247
  "a2e10499a0bcd2cdc32f3986d27b59077c86e524d40323faabb2e5d78afc002c",
224
- "c94c33d7ccbd46f191948325dfc7f68ce13b0d3a9470215de1de3f06b1499111"
248
+ "c94c33d7ccbd46f191948325dfc7f68ce13b0d3a9470215de1de3f06b1499111",
249
+ "ce90c1e697fdd444ca3fe2203d7991645f2c284c413ae187e4d6d6c618af52c9"
225
250
  ]
226
251
  },
227
252
  ".claude/rules/node-ts.md": {
228
253
  "since": "0.2.0",
229
254
  "hashes": [
230
255
  "3db68a4280cc30655be56fed9385179c378f560f3df55e21952a24066427e845",
231
- "be3b7bf901ef250b5957a37815b9a339083f7a8c4ecc866aeb12e3a0797c3c09"
256
+ "be3b7bf901ef250b5957a37815b9a339083f7a8c4ecc866aeb12e3a0797c3c09",
257
+ "b74979a3a1e57b69a6e1b3ee2d0cf9fc671d4487c411dc947e9ad0a47ac56dd1"
232
258
  ]
233
259
  },
234
260
  ".claude/rules/workflow.md": {
@@ -269,12 +295,24 @@
269
295
  "b022399f287cdce1bcb07329c0aab44bf99714b5f0515f274c962f41ea072b86"
270
296
  ]
271
297
  },
298
+ ".claude/scripts/lib/claim-records.mjs": {
299
+ "since": "0.7.0",
300
+ "hashes": [
301
+ "acb1d5702a826832977e7eb01b76c50cab19292528901f1b33693e561dbb0a24"
302
+ ]
303
+ },
272
304
  ".claude/scripts/lib/gate-coverage.mjs": {
273
305
  "since": "0.6.0",
274
306
  "hashes": [
275
307
  "1ef7f355071a747d8a8d9cd5e2072a19fe3d8c11a0e2a5f884d95a33fb95f12d"
276
308
  ]
277
309
  },
310
+ ".claude/scripts/lib/revalidation-evidence.mjs": {
311
+ "since": "0.7.0",
312
+ "hashes": [
313
+ "513369213374cf2c5415c7d5ea1f6d5c67300c77cec7af3e9190e710b156969f"
314
+ ]
315
+ },
278
316
  ".claude/scripts/lib/revalidation-points.mjs": {
279
317
  "since": "0.6.0",
280
318
  "hashes": [
@@ -289,6 +327,12 @@
289
327
  "60fab2cc9f2028bccf6139e6a744406b4a86a9039d1367f3cef409902e9b327d"
290
328
  ]
291
329
  },
330
+ ".claude/scripts/lib/shell-tools.mjs": {
331
+ "since": "0.7.0",
332
+ "hashes": [
333
+ "402428f4b2c4e507652d775e43b26c1e0a74aadb2cedec3156ac186af17d667a"
334
+ ]
335
+ },
292
336
  ".claude/scripts/lib/verdict.mjs": {
293
337
  "since": "0.5.0",
294
338
  "hashes": [
@@ -302,7 +346,8 @@
302
346
  "21083ff7baeebf8aedbdf85679a353f671276a9e0201a58a8235ae63f55f081c",
303
347
  "ceb6d35fa028f9c5e5e2d5965c627095d5ba80c37191a584627b4bc645b6be15",
304
348
  "efa193dc543237d82dcb371fa1df6483ccd43c1db88d0e218f5d89769564974c",
305
- "bed44df40412a7edac96914de21edc796df604ddc275ff1a02764dfcc4d4ede7"
349
+ "bed44df40412a7edac96914de21edc796df604ddc275ff1a02764dfcc4d4ede7",
350
+ "b3893c365de37ef6d9d04ab933296b9fcf09a0886197d7e12313fa63eacdbd89"
306
351
  ]
307
352
  },
308
353
  ".claude/scripts/queue/as-of.mjs": {
@@ -324,7 +369,8 @@
324
369
  "214f36e39f3809da5a121f404005d16a694280ca672ed10150b1b07d47912f6a",
325
370
  "d8a5916bae71efcc6a21978af713112c9ec33a7554fd07f5978bdf2c3633b560",
326
371
  "1804c2351a4f3042dc6a3fb4203f96e98ae12bec32569b99bda77d002d6ba5f2",
327
- "b81ae3181e02b9c1c3f0e954688490ab3db3961381c2dc397c47c651c9d07f88"
372
+ "b81ae3181e02b9c1c3f0e954688490ab3db3961381c2dc397c47c651c9d07f88",
373
+ "c9902da15d06de3e952352115db0288433520eae2caac1f70ee6e06753d1f444"
328
374
  ]
329
375
  },
330
376
  ".claude/scripts/queue/gate-rounds.mjs": {
@@ -339,7 +385,8 @@
339
385
  "f473f0ee5fc469f47b2b21ee601310944faa1abed21942e97ed251aba826cd5d",
340
386
  "86489ac7fcd06e43e31fb3d0ac9ab23174ef9c95196b08f127f1ae74da620c0c",
341
387
  "f84148fee47109a388a248c51d3eb40919ce341785b561dd4135b69c6fedabf3",
342
- "5ab8f741f17efb935b11caf245edf2b562cb887020c2a43d45464158342c933a"
388
+ "5ab8f741f17efb935b11caf245edf2b562cb887020c2a43d45464158342c933a",
389
+ "b5349837d16de0966139f5b65e2800486592f1b24d7e87087c2b7212cead479d"
343
390
  ]
344
391
  },
345
392
  ".claude/scripts/queue/index.mjs": {
@@ -348,7 +395,8 @@
348
395
  "cd149245dc29ef7489ae0e5394fa5a063dea2cc017bd3cbbface1ace6f8d7b46",
349
396
  "7db3c17b781e6876b4822afd09e6affa97e46607b63d443975d987daf1f14464",
350
397
  "9edd70b5960f367958e8e7500150b4edd285c99869cca803e40e0537d2d347b0",
351
- "4cf917ac06708e1068dfe9f8bbebc9376c4748526bd669b9bea32929ba996d0a"
398
+ "4cf917ac06708e1068dfe9f8bbebc9376c4748526bd669b9bea32929ba996d0a",
399
+ "b4a0789be7ad4b401de872edb06665bca349048178b4dd6c5db848ca44f7c977"
352
400
  ]
353
401
  },
354
402
  ".claude/scripts/queue/jira.mjs": {
@@ -358,7 +406,9 @@
358
406
  "86591a48b9264d641c2530238ea3720705f12e17af2ec8dccecabfa3a742a2e7",
359
407
  "13c301f828d4402fcf81e7e0b2b1d22472cbdb50f6fd606770056af4ec215e51",
360
408
  "b8be5855809c0d44ece94858456098663296c17c5ad9abb1ea2cf1a8f48ca491",
361
- "3fc8ff9a06a2e22355a660a31e2943a97f50869f7e5726f768a7931d17b64b5b"
409
+ "3fc8ff9a06a2e22355a660a31e2943a97f50869f7e5726f768a7931d17b64b5b",
410
+ "f44203af187e855b9f738f8dbedfd313abf9d6a5cc29182fb46cd58d70698d7a",
411
+ "c2f2af8ac5eadd8d35a15bcdeffe585e32c6f99b4e6ab9ace0f9d7fd9d694943"
362
412
  ]
363
413
  },
364
414
  ".claude/scripts/queue/plan-md.mjs": {
@@ -367,7 +417,8 @@
367
417
  "d137dad23f263b1a12b04b46625247fea648ded36d0fea7c5b4e4f2211a142eb",
368
418
  "07eab69bd86b19b7a1f01eb14efe4f8c007481806cbe029d4014fe9bf0703000",
369
419
  "27d7ae3832a32219d5c0ab136bc542388eb686e9f34053c3058104cdeea1574d",
370
- "1320909605824b2cd1ff57878e463ef360463b2b175d2152638eda2dff72f5ea"
420
+ "1320909605824b2cd1ff57878e463ef360463b2b175d2152638eda2dff72f5ea",
421
+ "816aec4cb84492370972f71813a9fec7c0309e5f501951a93620a37cb318ac39"
371
422
  ]
372
423
  },
373
424
  ".claude/scripts/queue/state.mjs": {
@@ -386,14 +437,16 @@
386
437
  "since": "0.6.0",
387
438
  "hashes": [
388
439
  "32f847a2a3a5136cabcb42f6447da9f8cf98e2d20512212ee5201461128d7798",
389
- "b62348a27bcaa1d62a0e4ddd53873fab6cb75f9af8e8c69d24f6ce81c592c4e3"
440
+ "b62348a27bcaa1d62a0e4ddd53873fab6cb75f9af8e8c69d24f6ce81c592c4e3",
441
+ "b151045e8083c398e94571b35dc9568dfa0102abcb847cdf764f6f694914d53e"
390
442
  ]
391
443
  },
392
444
  ".claude/scripts/revalidation-report.mjs": {
393
445
  "since": "0.6.0",
394
446
  "hashes": [
395
447
  "b99a3537158c2851698bfac027f7061811d7d428c3eea57f3ce0f58ea75dc249",
396
- "78adac5c8f696f2c9cc86f404abf1d55604ccb10f11dd612501c14d4cf5935b1"
448
+ "78adac5c8f696f2c9cc86f404abf1d55604ccb10f11dd612501c14d4cf5935b1",
449
+ "fed627d2c8f0f5e6a4524b7015ac7a1cb5051a8c316ff4544af18be9c61eb163"
397
450
  ]
398
451
  },
399
452
  ".claude/scripts/run-journal.mjs": {
@@ -406,7 +459,8 @@
406
459
  "since": "0.5.0",
407
460
  "hashes": [
408
461
  "5682b4ef1e63b83e1398da4959d8b34f52aede38f896557c041687d101df015f",
409
- "82c83fe9a66ff1a48c9e23fdfe84eef7da0de337c420e8d870085e7078d6f5e2"
462
+ "82c83fe9a66ff1a48c9e23fdfe84eef7da0de337c420e8d870085e7078d6f5e2",
463
+ "c502cefafdc720d178de685e8372d2c140cb2663517c9d88b5345a9f0c50d0de"
410
464
  ]
411
465
  },
412
466
  ".claude/scripts/stop-flag.mjs": {
@@ -420,7 +474,8 @@
420
474
  "since": "0.6.0",
421
475
  "hashes": [
422
476
  "060b001927d8b471f1c1a8c8851fbb4266d3b2edd674cccbd6c16c44b57b91dd",
423
- "7721ee19fd1bcf6902be3d359def40742d79b88f5d83e7e3ca22ba45ca3211aa"
477
+ "7721ee19fd1bcf6902be3d359def40742d79b88f5d83e7e3ca22ba45ca3211aa",
478
+ "250292c9959916240bfc0fdf5987a864f6d54799de3d932dc6b85b776e62eaa9"
424
479
  ]
425
480
  },
426
481
  ".claude/scripts/verdict.mjs": {
@@ -436,7 +491,8 @@
436
491
  "48212660b2823725c2c9ee785ad739701e4c0e4733b275201a544df1abba28d0",
437
492
  "55a6938b4d9967291a26e93301e34e5ffdef74a88f8c773a4d11b5d87d864fff",
438
493
  "713718fbb2cda132f05665b29b8f1108a6305729b5e7c789d2053d117c13e08e",
439
- "e588ab05bee707a099c80c9ea399008be31488e616f3db3c0598f66f3d1b3a52"
494
+ "e588ab05bee707a099c80c9ea399008be31488e616f3db3c0598f66f3d1b3a52",
495
+ "a180578d6e6de6a21900ff2f8a8ade2242170d16d2dd95574e5004435d870b9b"
440
496
  ]
441
497
  },
442
498
  ".claude/skills/check-premises/SKILL.md": {
@@ -456,7 +512,9 @@
456
512
  "e442ca58c4249ac10d5759bba2d8360544642e03b2b158e6253e71f5be3767fb",
457
513
  "eb52ef41269018107534d8dc2f552c57698e1677a1e76b5e666b5d09c007cac0",
458
514
  "47922b182915cb92696f851174f2e88c4ae8c67dc119ef39a3a597ef1300fab5",
459
- "57f6add0504db45e7577474f97705fe474310e4cd3310cdb348a2c64eabe88cd"
515
+ "57f6add0504db45e7577474f97705fe474310e4cd3310cdb348a2c64eabe88cd",
516
+ "18f4300de4c4c7ea380d726fb109fa224da950ef0a4cea5015ab1d408b823be5",
517
+ "0a1b6575f6df8139766c8e71ba7320e14d2a5a5ed8ab26b6b43f7a006153d37d"
460
518
  ]
461
519
  },
462
520
  ".claude/skills/new-invariant/SKILL.md": {
@@ -491,7 +549,8 @@
491
549
  "368a50be809f7be865d6d29ab3e54b9d69acd2ea3ba7929c0edeef161c2521b7",
492
550
  "75adb84414a330db621ff4f1363b3926f537133199236a9e25bb9880b935e02e",
493
551
  "a2fb0d03c65701af9d2d69cbcb2582ae573f097b1e1071eb2916e5e4f7832b37",
494
- "9616e4767942b2021e34ab7bb76eec9a5c280cc608a0756abb02743741d5fc8a"
552
+ "9616e4767942b2021e34ab7bb76eec9a5c280cc608a0756abb02743741d5fc8a",
553
+ "a6340b95a03000b89fb27f5357cdd9c7ec12b714054b5334b61a30da600405e8"
495
554
  ]
496
555
  },
497
556
  ".claude/skills/ro-debug/SKILL.md": {
@@ -545,7 +604,15 @@
545
604
  "since": "0.5.0",
546
605
  "hashes": [
547
606
  "c676647d585ec87427545a391598706ecaa74dfe413a7e05877e336bf8942874",
548
- "89d999c068ef5b6e48913c15a165359e66b1f505b9f97c145d8c730cbf42d09a"
607
+ "89d999c068ef5b6e48913c15a165359e66b1f505b9f97c145d8c730cbf42d09a",
608
+ "1fc2fc35b04fa4ad0859841af72f45695bc346d1a1a9b20ba5d971d48888a910",
609
+ "fa9a34eb9f889910e55269b76172608b989d553583de38af34316a31f4ad570b"
610
+ ]
611
+ },
612
+ ".rig/revalidation.json": {
613
+ "since": "0.7.0",
614
+ "hashes": [
615
+ "312b59f80fcbcf2897ef80fb54be236fb6b2b1745f705dae8e66c58f0bbd3099"
549
616
  ]
550
617
  },
551
618
  "AGENTS.md": {
@@ -583,7 +650,14 @@
583
650
  "docs/decisions/codex-adapter.md": {
584
651
  "since": "0.5.0",
585
652
  "hashes": [
586
- "30e55d866d9a2c7359e594181070c63b1974d9df36e000caf419229284303a2e"
653
+ "30e55d866d9a2c7359e594181070c63b1974d9df36e000caf419229284303a2e",
654
+ "ebf0ef61407944373c862d37e6a80d4965ece72304b931428c6b3fcc5d9527c4"
655
+ ]
656
+ },
657
+ "docs/decisions/content-blind-revalidation.md": {
658
+ "since": "0.7.0",
659
+ "hashes": [
660
+ "d640a152428ea4cc6a5f0a19be58e0d23f3a99c44b0ad0b72152ec7b48fe5bfd"
587
661
  ]
588
662
  },
589
663
  "docs/decisions/fail-open-guards.md": {
@@ -613,7 +687,8 @@
613
687
  "docs/decisions/spacing-rations-mechanisms.md": {
614
688
  "since": "0.5.0",
615
689
  "hashes": [
616
- "883852ffc14b9f0b6101f67b7045567056d2c5630e79391a6e542d6d3854095a"
690
+ "883852ffc14b9f0b6101f67b7045567056d2c5630e79391a6e542d6d3854095a",
691
+ "5894f8aa613fbbba0f125c871b2a91d9cc5bd9dd6a3fe4c8fd9d8a06aa8839b8"
617
692
  ]
618
693
  },
619
694
  "docs/decisions/stop-conditions-in-a-file.md": {
@@ -7,5 +7,7 @@
7
7
  "0.4.0": "c77c6c3e5d991a55b733a05a3b5ae01e2a55e578",
8
8
  "0.5.0": "d78d0e77307a2be128de46ff4f64e3c146b5df2b",
9
9
  "0.6.0": "29ca0543368e922349945e52541a92b46ddcc5bd",
10
- "0.6.1": "f1d1e3dbd2161545d77ee5e7f90fa8e74b8a9f3e"
10
+ "0.6.1": "f1d1e3dbd2161545d77ee5e7f90fa8e74b8a9f3e",
11
+ "0.6.2": "2a1fc8e10cd2b65deb5c95d937fd7de39f2c92a2",
12
+ "0.7.0": "6589db36e1daa63a99ec595191db1cccf7373196"
11
13
  }