devrites 5.4.0 → 5.5.0

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 (213) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/docs/command-map.md +2 -2
  4. package/docs/engine/state-schema.md +12 -0
  5. package/docs/flow.md +4 -0
  6. package/docs/orchestration.md +5 -2
  7. package/engine/commands.go +2 -2
  8. package/engine/internal/devritespaths/paths.go +15 -0
  9. package/engine/internal/gate/gate.go +78 -0
  10. package/engine/internal/gate/gate_test.go +118 -0
  11. package/engine/internal/lib/candidate.go +7 -3
  12. package/engine/internal/lib/manifest_union.go +326 -0
  13. package/engine/internal/lib/manifest_union_test.go +214 -0
  14. package/engine/internal/lib/observe_budgets.go +73 -0
  15. package/engine/internal/lib/observe_budgets_test.go +142 -0
  16. package/engine/internal/lib/observe_summary.go +74 -13
  17. package/engine/internal/lib/workspace_read.go +11 -6
  18. package/engine/internal/state/budgets.go +163 -0
  19. package/engine/internal/state/budgets_test.go +42 -0
  20. package/engine/internal/state/cursor.go +16 -10
  21. package/engine/internal/state/observation.go +50 -4
  22. package/engine/internal/state/status.go +38 -26
  23. package/engine/internal/state/taskgraph.go +23 -0
  24. package/engine/main.go +32 -13
  25. package/engine/root_routing_test.go +3 -1
  26. package/pack/.claude/agents/devrites-code-reviewer.md +9 -6
  27. package/pack/.claude/agents/devrites-doubt-reviewer.md +6 -0
  28. package/pack/.claude/agents/devrites-plan-reviewer.md +7 -1
  29. package/pack/.claude/agents/devrites-slice-wright.md +42 -46
  30. package/pack/.claude/agents/devrites-test-analyst.md +9 -4
  31. package/pack/.claude/agents/devrites-upgrade-planner.md +9 -1
  32. package/pack/.claude/settings.json +17 -0
  33. package/pack/.claude/skills/devrites-api-interface/SKILL.md +2 -2
  34. package/pack/.claude/skills/devrites-doubt/SKILL.md +9 -17
  35. package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +34 -35
  36. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +11 -12
  37. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +104 -51
  38. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +1 -0
  39. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +45 -25
  40. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +1 -1
  41. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +80 -41
  42. package/pack/.claude/skills/rite-autocomplete/SKILL.md +19 -8
  43. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +33 -1
  44. package/pack/.claude/skills/rite-build/SKILL.md +26 -19
  45. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +1 -1
  46. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +90 -40
  47. package/pack/.claude/skills/rite-build/reference/phase-contract.md +79 -59
  48. package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +14 -15
  49. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +8 -8
  50. package/pack/.claude/skills/rite-define/SKILL.md +4 -1
  51. package/pack/.claude/skills/rite-plan/SKILL.md +4 -1
  52. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +21 -0
  53. package/pack/.claude/skills/rite-plan/reference/slicing.md +117 -15
  54. package/pack/.claude/skills/rite-prove/SKILL.md +20 -22
  55. package/pack/.claude/skills/rite-review/SKILL.md +23 -16
  56. package/pack/.claude/skills/rite-seal/SKILL.md +8 -8
  57. package/pack/.claude/skills/rite-seal/reference/final-evidence.md +6 -5
  58. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +13 -13
  59. package/pack/.claude/skills/rite-ship/SKILL.md +3 -0
  60. package/pack/.claude/skills/rite-ship/reference/close-out.md +16 -2
  61. package/pack/.claude/skills/rite-ship/reference/git-ship.md +14 -5
  62. package/pack/.claude/skills/rite-spec/SKILL.md +6 -0
  63. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +6 -0
  64. package/pack/.claude/skills/rite-status/SKILL.md +4 -1
  65. package/pack/.claude/skills/rite-temper/SKILL.md +14 -11
  66. package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +14 -13
  67. package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +3 -4
  68. package/pack/.claude/skills/rite-upgrade/SKILL.md +11 -2
  69. package/pack/.claude/skills/rite-vet/SKILL.md +22 -15
  70. package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +11 -9
  71. package/pack/.claude/skills/rite-vet/reference/depth.md +6 -7
  72. package/pack/.claude/skills/rite-vet/reference/review-axes.md +39 -14
  73. package/pack/generated/claude/agents/devrites-code-reviewer.md +9 -6
  74. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +6 -0
  75. package/pack/generated/claude/agents/devrites-plan-reviewer.md +7 -1
  76. package/pack/generated/claude/agents/devrites-slice-wright.md +42 -46
  77. package/pack/generated/claude/agents/devrites-test-analyst.md +9 -4
  78. package/pack/generated/claude/agents/devrites-upgrade-planner.md +9 -1
  79. package/pack/generated/claude/settings.json +17 -0
  80. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +2 -2
  81. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +9 -17
  82. package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +34 -35
  83. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +11 -12
  84. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +104 -51
  85. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +1 -0
  86. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +45 -25
  87. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +1 -1
  88. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +80 -41
  89. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +19 -8
  90. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +33 -1
  91. package/pack/generated/claude/skills/rite-build/SKILL.md +26 -19
  92. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +1 -1
  93. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +90 -40
  94. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +79 -59
  95. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +14 -15
  96. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +8 -8
  97. package/pack/generated/claude/skills/rite-define/SKILL.md +4 -1
  98. package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -1
  99. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +21 -0
  100. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +117 -15
  101. package/pack/generated/claude/skills/rite-prove/SKILL.md +20 -22
  102. package/pack/generated/claude/skills/rite-review/SKILL.md +23 -16
  103. package/pack/generated/claude/skills/rite-seal/SKILL.md +8 -8
  104. package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +6 -5
  105. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +13 -13
  106. package/pack/generated/claude/skills/rite-ship/SKILL.md +3 -0
  107. package/pack/generated/claude/skills/rite-ship/reference/close-out.md +16 -2
  108. package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +14 -5
  109. package/pack/generated/claude/skills/rite-spec/SKILL.md +6 -0
  110. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +6 -0
  111. package/pack/generated/claude/skills/rite-status/SKILL.md +4 -1
  112. package/pack/generated/claude/skills/rite-temper/SKILL.md +14 -11
  113. package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +14 -13
  114. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +3 -4
  115. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +11 -2
  116. package/pack/generated/claude/skills/rite-vet/SKILL.md +22 -15
  117. package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +11 -9
  118. package/pack/generated/claude/skills/rite-vet/reference/depth.md +6 -7
  119. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +39 -14
  120. package/pack/generated/codex/agents/devrites-code-reviewer.toml +9 -6
  121. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +6 -0
  122. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +7 -1
  123. package/pack/generated/codex/agents/devrites-slice-wright.toml +42 -46
  124. package/pack/generated/codex/agents/devrites-test-analyst.toml +9 -4
  125. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +9 -1
  126. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +2 -2
  127. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +9 -17
  128. package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +34 -35
  129. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +11 -12
  130. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +104 -51
  131. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +1 -0
  132. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +45 -25
  133. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +1 -1
  134. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +80 -41
  135. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +19 -8
  136. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +33 -1
  137. package/pack/generated/codex/skills/rite-build/SKILL.md +26 -19
  138. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +1 -1
  139. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +90 -40
  140. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +79 -59
  141. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +14 -15
  142. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +8 -8
  143. package/pack/generated/codex/skills/rite-define/SKILL.md +4 -1
  144. package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -1
  145. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +21 -0
  146. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +117 -15
  147. package/pack/generated/codex/skills/rite-prove/SKILL.md +20 -22
  148. package/pack/generated/codex/skills/rite-review/SKILL.md +23 -16
  149. package/pack/generated/codex/skills/rite-seal/SKILL.md +8 -8
  150. package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +6 -5
  151. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +13 -13
  152. package/pack/generated/codex/skills/rite-ship/SKILL.md +3 -0
  153. package/pack/generated/codex/skills/rite-ship/reference/close-out.md +16 -2
  154. package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +14 -5
  155. package/pack/generated/codex/skills/rite-spec/SKILL.md +6 -0
  156. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +6 -0
  157. package/pack/generated/codex/skills/rite-status/SKILL.md +4 -1
  158. package/pack/generated/codex/skills/rite-temper/SKILL.md +14 -11
  159. package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +14 -13
  160. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +3 -4
  161. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +11 -2
  162. package/pack/generated/codex/skills/rite-vet/SKILL.md +22 -15
  163. package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +11 -9
  164. package/pack/generated/codex/skills/rite-vet/reference/depth.md +6 -7
  165. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +39 -14
  166. package/pack/generated/omp/agents/devrites-code-reviewer.md +9 -6
  167. package/pack/generated/omp/agents/devrites-doubt-reviewer.md +6 -0
  168. package/pack/generated/omp/agents/devrites-plan-reviewer.md +7 -1
  169. package/pack/generated/omp/agents/devrites-slice-wright.md +42 -46
  170. package/pack/generated/omp/agents/devrites-test-analyst.md +9 -4
  171. package/pack/generated/omp/agents/devrites-upgrade-planner.md +9 -1
  172. package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +2 -2
  173. package/pack/generated/omp/skills/devrites-doubt/SKILL.md +9 -17
  174. package/pack/generated/omp/skills/devrites-lib/reference/candidate-integrity.md +34 -35
  175. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +11 -12
  176. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +104 -51
  177. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +1 -0
  178. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +45 -25
  179. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +1 -1
  180. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +80 -41
  181. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +19 -8
  182. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +33 -1
  183. package/pack/generated/omp/skills/rite-build/SKILL.md +26 -19
  184. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
  185. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +90 -40
  186. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +79 -59
  187. package/pack/generated/omp/skills/rite-build/reference/spec-drift-guard.md +14 -15
  188. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +8 -8
  189. package/pack/generated/omp/skills/rite-define/SKILL.md +4 -1
  190. package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -1
  191. package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +21 -0
  192. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +117 -15
  193. package/pack/generated/omp/skills/rite-prove/SKILL.md +20 -22
  194. package/pack/generated/omp/skills/rite-review/SKILL.md +23 -16
  195. package/pack/generated/omp/skills/rite-seal/SKILL.md +8 -8
  196. package/pack/generated/omp/skills/rite-seal/reference/final-evidence.md +6 -5
  197. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +13 -13
  198. package/pack/generated/omp/skills/rite-ship/SKILL.md +3 -0
  199. package/pack/generated/omp/skills/rite-ship/reference/close-out.md +16 -2
  200. package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +14 -5
  201. package/pack/generated/omp/skills/rite-spec/SKILL.md +6 -0
  202. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +6 -0
  203. package/pack/generated/omp/skills/rite-status/SKILL.md +4 -1
  204. package/pack/generated/omp/skills/rite-temper/SKILL.md +14 -11
  205. package/pack/generated/omp/skills/rite-temper/reference/anti-patterns.md +14 -13
  206. package/pack/generated/omp/skills/rite-temper/reference/review-dimensions.md +3 -4
  207. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +11 -2
  208. package/pack/generated/omp/skills/rite-vet/SKILL.md +22 -15
  209. package/pack/generated/omp/skills/rite-vet/reference/anti-patterns.md +11 -9
  210. package/pack/generated/omp/skills/rite-vet/reference/depth.md +6 -7
  211. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +39 -14
  212. package/package.json +1 -1
  213. package/scripts/codex-generate.sh +6 -0
@@ -1,67 +1,87 @@
1
1
  # rite-build phase contract
2
2
 
3
- See [`one-slice-cycle.md`](one-slice-cycle.md); candidate lifecycle is
3
+ Apply [`one-slice-cycle.md`](one-slice-cycle.md) and
4
4
  [`candidate-integrity.md`](../../devrites-lib/reference/candidate-integrity.md).
5
- Opt-in `--parallel N` uses [`parallel-batch.md`](parallel-batch.md) instead of steps 2–8.
6
- Spec Drift Guard still applies on abort or plan-gap.
5
+ Opt-in `--parallel N` replaces steps 2–8 with [`parallel-batch.md`](parallel-batch.md);
6
+ Spec Drift Guard still applies.
7
7
 
8
- 1. **Orient and gate.** Read core, `.devrites/ACTIVE`, `state.md`, and required
9
- slice artifacts. Require `Implementation readiness: READY`, its current
10
- `Readiness inputs SHA-256`, all applicable exact reviewer accounts,
11
- ID-and-meaning traceability, and green proof preflight; run
12
- `devrites-engine check readiness <slug>`. Any miss/nonzero stops.
13
- 2. **Select one target.** Restate goal, acceptance criteria, exclusions, and exact
14
- source/test paths. Reconcile the spec/plan applicability map and include only the
15
- triggered topology/data/integration standards plus their named failure/recovery/proof
16
- cases in the writer contract. Before dispatch, validate relevant `assumptions.md` rows
17
- against live evidence. If one is disproved and changes acceptance, architecture,
18
- scope, or proof, use the Spec Drift Guard/plan recovery; a human-owned unknown
19
- stops. Resolve HITL before source work. AFK answers only permitted gates;
20
- human-owned or irreversible risk persists a question and stops for `/rite-resolve`.
21
- If the target is an exact Vet-ready Workflow Artifact set, apply
22
- [`workflow-artifacts.md`](../../devrites-lib/reference/standards/workflow-artifacts.md)
23
- instead of treating it as a product slice.
24
- 3. **Dispatch or transact.** Product source/tests apply [`wright-dispatch.md`](wright-dispatch.md).
25
- Put the smallest exact project-relative source/test path list directly in the task;
26
- dispatch the exact `devrites-slice-wright` fresh. Root never writes those product
27
- paths, wright never widens, and a missing profile stops.
8
+ 1. **Gate.** Read core, `.devrites/ACTIVE`, then `devrites-engine orient <slug>`
9
+ and the Build read-next in
10
+ [`workspace-artifact-schema.md`](../../devrites-lib/reference/workspace-artifact-schema.md#read-next-by-phase):
11
+ the selected slice via `devrites-engine observe slice <slug> <SLICE-ID>`, not whole
12
+ `tasks.md`; over-budget or `bulk_files` artifacts are read by anchor only. Require
13
+ `Implementation readiness: READY`, current `Readiness inputs SHA-256`, exact
14
+ required accounts, ID/meaning traceability and green proof preflight.
15
+ Run `devrites-engine check readiness <slug>`; any miss/nonzero blocks.
16
+ 2. **Select.** Pick the lowest pending slice whose `depends_on` are all built, using
17
+ `orient` `task_graph.slices` plus the `state.md` built list never by scanning
18
+ `tasks.md`; then `observe slice` it. Restate its goal, ACs, exclusions and exact paths. Include
19
+ applicable topology/data/integration invariants and failure/recovery/proof cases.
20
+ Verify relevant assumptions live; falsified acceptance/architecture/scope/proof
21
+ routes through Spec Drift Guard. Resolve human-owned/irreversible gates before
22
+ source work; AFK follows its ceiling. Vet-ready Workflow Artifacts use
23
+ [`workflow-artifacts.md`](../../devrites-lib/reference/standards/workflow-artifacts.md).
24
+ 3. **Dispatch.** Apply [`wright-dispatch.md`](wright-dispatch.md). Put the smallest
25
+ exact project-relative source/test path list directly in the task;
26
+ dispatch the exact `devrites-slice-wright` fresh. Root never writes product
27
+ paths; wright cannot widen scope; missing profile blocks.
28
28
  <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Build gate enters or resumes transaction","action":"invoke canonical operation table; reconcile exact result","return":"same slice/checkpoint cursor or Plan/Vet route"} -->
29
- 4. **Inspect the return.** Wait; compare its file list and `git diff --name-only`
30
- with the contract. Reject stale, partial, malformed, or out-of-scope work.
31
- Preserve user work; source restoration uses the same bounded wright.
32
- 5. **Challenge stood decisions.** For each stood decision, run exact
33
- `devrites-doubt-reviewer` fresh/read-only and record accepted or resolved-rejected
34
- in `decisions.md`. A missing verdict, principle breach, scope change, or
35
- irreversible risk blocks.
36
- 6. **Prove without guessing.** Against the frozen pre-slice candidate, inspect
37
- test hunks for deletion, skipping/focus, tautology, or weaker expectations. Dispatch exact
38
- `devrites-test-analyst` on that immutable diff; missing account or adverse criterion
39
- verdict is Critical. Run only `test-plan.md` repository/CI commands, capture output,
40
- and recheck `git diff --name-only`. Missing, weakened, red, or source-mutating proof
41
- is not success.
29
+ 4. **Inspect.** Wait; compare returned paths and `git diff --name-only` with the
30
+ contract. Reject stale/partial/malformed/out-of-scope work; preserve user work.
31
+ Restoration uses the bounded wright.
32
+ 5. **Review.** Apply [Independent Build review](#independent-build-review).
33
+ Missing verdicts, principle breaches and open Critical/Important block acceptance.
34
+ 6. **Prove.** Against the frozen pre-slice candidate inspect
35
+ test hunks for deletion, skipping/focus, tautology, or weaker expectations.
36
+ Use step 5's exact test-analyst account; missing/adverse criterion verdict is
37
+ Critical. Run only `test-plan.md` repository/CI commands, record output, recheck
38
+ `git diff --name-only`. Missing/weakened/red/source-mutating proof cannot pass.
39
+ Pre-existing/environment-specific claims need a predating same-command,
40
+ same-environment baseline; otherwise unresolved.
42
41
 
43
- A failure is `pre-existing` or environment-specific only with a same-command,
44
- same-environment baseline predating the candidate; otherwise it remains unresolved.
42
+ Technical failure uses `devrites-debug-recovery` and
43
+ [canonical recovery](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
44
+ Reapply host admission before correction; affected proof/evidence follows candidate
45
+ integrity. Human gates remain product/irreversible/access decisions.
46
+ 7. **Record green.** Upsert actual scoped `present`/`deleted` rows in `touched-files.md`;
47
+ update state, evidence and applicable UI/browser proof. Manifest stays mutable
48
+ until Polish. For a release milestone, after the last slice's rows run
49
+ `devrites-engine state merge-manifest <slug>` to fold the recorded
50
+ predecessor chain into the union manifest before Prove. Record stood
51
+ decisions/dead ends; refresh verified/falsified
52
+ assumptions. Propose reviewed durable project rules in the nearest guidance.
53
+ 8. **Account/reply.** Apply `afk-discipline.md`: charge
54
+ exactly once after each green built slice; never negative, stop at zero,
55
+ malformed budget fails closed. Reply names next pending slice or `/rite-prove`
56
+ only when all built; no decorative renderer/dispatch telemetry.
45
57
 
46
- Technical failure uses bounded `devrites-debug-recovery`: reapply the host gate
47
- before an accepted in-slice correction, keep one exact fingerprint/three
48
- no-progress attempts, and never rerun an unchanged check. A closed reproduction
49
- is progress; a different Critical/Important invariant gets its own fingerprint.
50
- Ask humans only for product decisions,
51
- irreversible risk, or genuinely human-only access.
52
- 7. **Record.** After green proof, upsert `touched-files.md`'s authoritative candidate
53
- manifest from the actual scoped diff with explicit `present`/`deleted` rows;
54
- update `state.md`, `evidence.md`, and applicable UI/browser evidence. The manifest
55
- stays mutable until Polish closes it.
56
- Record stood decisions/dead ends in `decisions.md`; update checked assumptions'
57
- status/evidence, never leaving a disproved row live. If code reveals a durable
58
- project rule, propose a reviewed `AGENTS.md`/nearest-doc update, not a scored ledger.
59
- 8. **AFK and reply.** Under `afk-discipline.md`, root charges
60
- exactly once after each green built slice, never below zero; stop before another dispatch at zero, and fail closed
61
- on malformed budget. Use the reply contract; name the next pending slice or, only
62
- when all slices are built, `/rite-prove`. Emit no decorative progress renderer or
63
- dispatch telemetry.
58
+ One contract builds one slice: preserve TDD, exact paths and independent judgment.
64
59
 
65
- > **Mid-flight discipline.** One writer contract builds one slice. Do not skip
66
- > TDD, widen paths, fold in a second slice, or accept the writer's judgment as
67
- > independent review.
60
+ ## Independent Build review
61
+
62
+ After inspection, freeze full slice scope and cumulative baseline diff. Initial
63
+ inventory: one full-diff `devrites-code-reviewer`, one `devrites-test-analyst`,
64
+ and one exact `devrites-doubt-reviewer` per stood decision that meets
65
+ `devrites-doubt` § When to use (boundary, data model, auth, public API, migration,
66
+ user flow, assumption tests cannot prove); other stood decisions are recorded in
67
+ `decisions.md` without dispatch. Dispatch fresh,
68
+ read-only under [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
69
+ Wait for every required account to become terminal; missing/gap needs a valid result.
70
+ Fold supported in-scope Critical/Important findings by cause into one inventory.
71
+ Dispatch one repair-all wright instructed to fix every finding, then attack its own
72
+ correction for fix-introduced defects before returning; durable contract defects use Spec
73
+ Drift Guard.
74
+ Suggestion/Nit/FYI cannot prolong recovery.
75
+
76
+ Rechecks use Vet's bounded pattern: each exact responsible reviewer checks
77
+ all open findings owned by that role and affected dependency/regression closure
78
+ in one fresh dispatch. Supply new candidate, inventory, correction diff, tests
79
+ and unchanged-coverage evidence under candidate integrity; include newly triggered
80
+ roles. A changed contract or uncertain impact requires the full inventory.
81
+ Collect all required rechecks before another folded correction. Canonical recovery
82
+ owns fingerprints/budget and the
83
+ [late-finding rule](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve):
84
+ a recheck's `Late:` rows on hunks unchanged since that role's previous pass go to
85
+ `touched-files.md` `## Review trail` for `/rite-review`, not into another slice
86
+ repair, unless Critical with a failure path. Evidenced scope coverage never
87
+ guarantees no later defect; the feature-level Review and Seal gates still run.
@@ -1,8 +1,7 @@
1
1
  # Spec Drift Guard (build phase)
2
2
 
3
- Active throughout `/rite-build`. The spec is living, not sacred, but you may not
4
- silently code against a plan you know is wrong. This is the canonical Spec Drift Guard;
5
- other phases reference it here.
3
+ Canonical Spec Drift Guard, active in `/rite-build` and referenced by other
4
+ phases. Never silently code against a known-wrong plan.
6
5
 
7
6
  ## Drift has occurred when
8
7
  - the spec says X but the code makes X impossible/wrong;
@@ -16,7 +15,7 @@ other phases reference it here.
16
15
  ## Workflow
17
16
  ```
18
17
  1. STOP coding.
19
- 2. Record in drift.md (assumed vs observed, when).
18
+ 2. Record drift.md (assumed vs observed, when).
20
19
  3. Classify: requirement ambiguity | implementation-plan error | codebase reality
21
20
  mismatch | design-system mismatch | test/evidence mismatch | external-doc mismatch
22
21
  | user-decision required.
@@ -35,12 +34,14 @@ other phases reference it here.
35
34
 
36
35
  ## Batch sweep (before repair)
37
36
 
38
- A durable-plan drift abort never repairs the first gap alone:
37
+ Repair durable-plan drift as a folded set:
39
38
 
40
- 1. Verify every remaining statically-checkable contract assumption against the
41
- live repo named paths, symbols/APIs/signatures, routes, commands, dependency
42
- versions, contract artifacts. The wright's return names what it falsified;
43
- check the rest yourself existence checks are deterministic, no dispatch.
39
+ 1. Trace the falsified assumption's full dependency/consumer closure and affected
40
+ frontier, including dependent future slices. Verify unchecked paths, symbols/APIs/
41
+ signatures, routes, commands, versions, and artifacts there against live source.
42
+ Reuse the wright inventory and unchanged evidence; deterministic existence checks
43
+ need no dispatch. Do not rescan unrelated slices. Broaden unknown closure or shared
44
+ contract changes until coverage is justified; retain every known gap.
44
45
  2. Record each violation as its own `drift.md` entry/fingerprint; one folded
45
46
  repair + one batched recheck resolves the set.
46
47
  3. A recheck-surfaced gap is a new fingerprint with its own budget — loop
@@ -75,11 +76,9 @@ human permission question. Re-plan only when the durable plan changed.
75
76
 
76
77
  ## Inline return contract
77
78
 
78
- The phase that detected agent-owned drift owns the whole backtrack, batch sweep
79
- included. Preserve it
80
- as `return_phase`/`return_next_action`; consume Plan and Vet's nested `STOP`
81
- boundaries internally; follow any vetted remediation required by the settled
82
- acceptance; then restore the cursor and resume the failed step. Do not hand an
83
- intermediate command to the human. The shared three-attempt causal-fingerprint
79
+ The detecting phase owns backtracking and the batch sweep. Save
80
+ `return_phase`/`return_next_action`; consume nested Plan/Vet `STOP` internally, complete
81
+ vetted acceptance-preserving remediation, then restore the cursor and failed step.
82
+ Never hand the human an intermediate command. The shared three-attempt causal-fingerprint
84
83
  cap still applies: exhaustion produces one technical blocker, while a genuinely
85
84
  human-owned decision uses the question format below.
@@ -1,12 +1,12 @@
1
1
  # Slice-wright dispatch
2
2
 
3
3
  `/rite-build` gives one bounded task to exact `devrites-slice-wright`.
4
- Root owns scope, artifacts, inspection, and routing but never writes source/tests; only
5
- the wright writes them and invokes no agent.
4
+ Root owns scope/artifacts/inspection; never writes source/tests.
5
+ Wright alone writes; no agents.
6
6
 
7
7
  ## Host gate
8
8
 
9
- Follow the canonical [source-writing boundary](../../devrites-lib/reference/standards/agents.md#source-writing-boundary):
9
+ Apply [source-writing boundary](../../devrites-lib/reference/standards/agents.md#source-writing-boundary):
10
10
  Claude grants only the exact wright `acceptEdits`; Codex uses its workspace root,
11
11
  the exact `:workspace` wright, and read-only specialists. Never bypass/substitute
12
12
  the wright or recreate an engine bridge.
@@ -47,7 +47,7 @@ worktrees stay forbidden.
47
47
  controlling root under
48
48
  [`workflow-artifacts.md`](../../devrites-lib/reference/standards/workflow-artifacts.md);
49
49
  its rejection here is not a blocker.
50
- 2. Put it in the task with goal, verbatim acceptance, exclusions, context,
50
+ 2. Include goal, verbatim acceptance, exclusions, context,
51
51
  `test-plan.md` proof commands, and applicable standards. For each triggered
52
52
  topology/data/integration standard, include only the feature-specific owner/invariant,
53
53
  failure or partial-state case, recovery rule, and required proof from the vetted plan.
@@ -77,10 +77,10 @@ Opt-in `/rite-build --parallel N` fans out only under [`parallel-batch.md`](para
77
77
  mocks that erase it and one-root proof offered for another root are unproven.
78
78
  3. Run only repository proof already approved by `test-plan.md`, then inspect
79
79
  `git diff --name-only` again in case a proof tool changed source.
80
- 4. Challenge decisions. Human choices return; native diagnosis routes failures.
81
- The root counts the wright plus recovery failures by causal fingerprint from
82
- the current context and recorded Dead ends/evidence. Three total failed
83
- attempts is the limit; persist each and never dispatch a fourth related try.
80
+ 4. Apply [independent Build review](phase-contract.md#independent-build-review) before
81
+ proof acceptance. Human choices return; technical failures follow
82
+ [the canonical retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
83
+ Derive accounting from recorded reproductions, corrections, and decisive rechecks.
84
84
  5. Reconcile returned reuse, conventions, principles, sources, assumptions,
85
85
  decisions, dead ends, follow-ups, gates, and touched files. Persist the
86
86
  relevant facts in canonical artifacts, not the wholesale report. A plan-gap
@@ -33,7 +33,10 @@ Pull these via `Read` when shaping the plan:
33
33
  - **Derive the slice count from the work.**
34
34
  One per independently-shippable increment, sized by `slicing.md`; map every acceptance
35
35
  criterion. User counts are hints: explain honest differences, never pad/compress.
36
- `.devrites/AFK` `max_slices` is an iteration budget, not decomposition.
36
+ `.devrites/AFK` `max_slices` is an iteration budget, not decomposition. A derivation
37
+ over the [feature ceiling](../rite-plan/reference/slicing.md#feature-ceiling-split-an-epic-never-override-the-budget)
38
+ is a split signal, never a `Budget override`: keep the thinnest shippable subset
39
+ here and route the rest to Non-goals + continuation workspaces via the Drift Guard.
37
40
  - **Complexity does not shrink scope.** Split/reorder; never drop/defer approved REQ/AC.
38
41
  Reduction needs Drift Guard + human decision; hard/large means decompose.
39
42
  - **Wide refactors use expand → migrate → contract.** Add compatibility, migrate green
@@ -97,7 +97,10 @@ Before classifying any Reslice, read `.claude/skills/devrites-lib/reference/stan
97
97
  in one cluster, and each bundle applies independently. A `partial`-
98
98
  continuation re-dispatch continues the same packet; it does not advance the
99
99
  same-seam counter. Count consecutive repair packets whose findings' cited clause sets overlap
100
- the immediately previous packet's — the overlap is the seam. At the third
100
+ the immediately previous packet's — the overlap is the seam. Carry it as an explicit
101
+ integer `same_seam_count` in every packet (previous value + 1 when the seam repeats,
102
+ else 1) so the threshold is counted rather than judged; a packet that reports the same
103
+ seam without the counter is malformed. At the third
101
104
  same-seam packet, mark it `convergence_pressure: true` with the seam named.
102
105
  Under pressure the drafter may close a finding marked as a refinement of an
103
106
  already-pinned clause by folding an explicit, bounded declared
@@ -31,6 +31,11 @@ A drift event stopped the build. Steps:
31
31
  2. If the user answered a drift question, encode that decision in `decisions.md`.
32
32
  3. Update `spec.md` (only the affected sections) and `plan.md`/`tasks.md` to match
33
33
  reality. Adjust acceptance criteria if they were wrong.
34
+ **Write the pointer, not the history.** Name the findings a fold closes by ID, one line
35
+ of meaning each; never restate prior folds, prior DEC lists, or closed-round narrative in
36
+ `architecture.md`/`plan.md`/`tasks.md`/`traceability.md`. That text belongs in
37
+ `decisions.md`, or in `history/` via [Budget relocation](#revise) once closed, so each
38
+ fold appends a bounded line. A banner that grows with the round count is the defect.
34
39
  4. Mark each `drift.md` entry **resolved** with the resolution + date.
35
40
  5. **Self-check and self-attack the repaired candidate on the delta before
36
41
  handoff** — re-verify every invariant the correction touched (acyclic
@@ -68,6 +73,14 @@ Mid-build user pivot. Apply the marked action, choose rollback or forward-fix, a
68
73
  update permitted artifacts atomically (`MVP cut` is the named retreat). Invalidate
69
74
  Vet/readiness when contract or topology changes.
70
75
 
76
+ **Feature-ceiling cut.** When unbuilt slices exceed the
77
+ [feature ceiling](slicing.md#feature-ceiling-split-an-epic-never-override-the-budget),
78
+ `MVP cut` keeps the built slices plus the thinnest shippable unbuilt subset here; the
79
+ remaining slices, their REQ/AC IDs and proof rows move verbatim into a named
80
+ continuation list (spec `Non-goals` → future `/rite-spec <slug>-2`, `-3`, …) through
81
+ the Spec Drift Guard. IDs never renumber; each ID is owned by exactly one workspace.
82
+ Record the sequence once in `decisions.md`.
83
+
71
84
  ## revise
72
85
 
73
86
  Artifact-only reconciliation of `spec.md`, `architecture.md`, `plan.md`, `tasks.md`,
@@ -78,6 +91,14 @@ Unchanged acceptance/behavior with non-equivalent `proposed_coverage` is a
78
91
  contradictory input: the canonical classifier blocks it — there is no fourth
79
92
  route (see `acceptance-preserving-reslice.md`).
80
93
 
94
+ **Budget relocation** (admitted by `/rite-upgrade`, or by the phase owner when
95
+ `orient` reports `over: true`): move checkpoint narrative, historical fold text and
96
+ closed-round accounts verbatim from `state.md`/`tasks.md`/`plan.md`/`architecture.md`/
97
+ `eng-review.md` into `history/<file>-<YYYYMMDD>.md`, packets/accounts from the root
98
+ into `packets/`, leaving a one-line pointer. Cursor, live slices, open findings, IDs,
99
+ answers, decisions and bindings stay unchanged; nothing is deleted or reworded.
100
+ Re-emit the readiness binding when a readiness input moved.
101
+
81
102
  ## Always
82
103
 
83
104
  Update `state.md` (phase, next step) and append a dated line to `decisions.md`
@@ -4,9 +4,7 @@ DevRites builds in **thin vertical slices**: each slice cuts through every layer
4
4
  needs (data → logic → API → UI) and leaves the system in a working, testable state.
5
5
 
6
6
  ## Vertical, not horizontal
7
- Horizontal ("build all models, then all controllers, then all views") delays working
8
- software and hides integration risk until the end. Vertical delivers a usable path each
9
- slice:
7
+ Horizontal layering delays integration feedback. Vertical slicing delivers a usable path:
10
8
  ```
11
9
  SLICE-001: Create a task (DB + API + minimal UI) -> user can create + test passes
12
10
  SLICE-002: List tasks (query + API + UI) -> user can see them
@@ -17,20 +15,21 @@ SLICE-004: Delete a task (delete + API + UI + confirm) -> full CRUD
17
15
  ## Sizing a slice
18
16
  A slice is the right size when it:
19
17
  - delivers one observable capability end-to-end;
20
- - can be built and proven in a single `/rite-build` `/rite-prove` cycle;
18
+ - can finish its writer, independent review, and slice proof within `/rite-build`;
21
19
  - has acceptance criteria you can verify with evidence;
22
20
  - can be rolled back on its own;
23
21
  - is worth its own review gate: a reviewer could meaningfully reject *this* slice while
24
22
  approving its neighbor. If two slices can only pass or fail together, they're one slice.
25
23
 
26
- Too big if: it touches many unrelated files, or you can't name its single observable outcome.
27
- **The "and" test:** if the slice's *name* needs an "and" ("create **and** list tasks"), it's two
28
- slices: split on the "and". reslice.
24
+ Size by independent invariants, failure modes, and proof seams, not file count or
25
+ the word "and". Split independently acceptable/provable responsibilities; several
26
+ files may serve one inseparable capability. Full feature `/rite-prove` follows all
27
+ slices; slice proof never replaces final integration or acceptance proof.
29
28
 
30
- Sizing isn't cosmetic. An agent builds a small or medium slice reliably in one pass but drifts on
31
- an outsized one, which is why a slice over `Complexity: 3/5` reslices (the `tasks.md` slice format
32
- in [`rite-define`](../../rite-define/SKILL.md)). Push every slice to the smallest cut that still
33
- stands alone end-to-end.
29
+ For `Complexity` and irreducible boundaries, use the canonical
30
+ [`tasks.md` slice grammar](../../devrites-lib/reference/workspace-artifact-schema.md#canonical-slice-grammar).
31
+ Keep the smallest cut that stands alone end-to-end; do not add slices or gates for
32
+ fragments that can only pass together. No slice size guarantees first-pass correctness.
34
33
 
35
34
  ## How many slices?: derive, don't dictate
36
35
  The slice **count is an output, not an input.** It falls out of the work: one slice per
@@ -46,10 +45,113 @@ a 12-criterion feature is however many thin end-to-end cuts those 12 need.
46
45
  - **Re-size by the rule, not the tally** (`/rite-plan reslice`): split a slice because it
47
46
  failed the sizing test, not to hit a count.
48
47
 
49
- Not to be confused with `.devrites/AFK` `max_slices`. That's an AFK *iteration budget*
50
- capping how many slices the unattended loop builds before it stops, **not** the plan's
51
- decomposition. The plan always holds exactly the slices the work needs; `max_slices` only
52
- limits how many run unattended.
48
+ `.devrites/AFK` `max_slices` limits unattended execution, never plan decomposition.
49
+
50
+ ## Feature ceiling: split an epic, never override the budget
51
+
52
+ The derived count is also a size signal. A decomposition that cannot fit the
53
+ `tasks.md` / `plan.md` / `traceability.md` budgets in
54
+ [`workspace-artifact-schema.md`](../../devrites-lib/reference/workspace-artifact-schema.md)
55
+ (about ten canonical slices) is an epic: every Vet/Doubt/Build review re-reads the
56
+ whole surface, each round finds new material, and the loop never converges.
57
+ `Budget override` never covers slice or acceptance-criteria count.
58
+
59
+ - Keep the thinnest independently shippable subset here; the rest becomes spec
60
+ `Non-goals` (via the Spec Drift Guard), each continuation a named future `/rite-spec`
61
+ workspace. Record the sequence once in `decisions.md`.
62
+ - Acceptance-preserving: every REQ/AC keeps its ID, owned by exactly one workspace.
63
+ - Earliest owner wins: Temper's one-sentence test → Define/Plan decomposition → Vet §0
64
+ scope finding → `/rite-plan course-correct` (`MVP cut`). Mid-build, unbuilt slices
65
+ beyond the ceiling move; built slices stay.
66
+ - The ceiling bounds one **workspace**, never the product: the sequence delivers every
67
+ slice, in order, each with its own Vet/Build/Review loop. A human may still accept a
68
+ single larger workspace by recording the decision in `decisions.md` and a structural
69
+ `Budget override:` in the affected artifacts; the extra review rounds on the whole
70
+ surface are then the accepted, named cost. The deterministic gate
71
+ (`check readiness`/`check seal`) blocks only a material overshoot without such an
72
+ override, so the choice stays explicit rather than accidental.
73
+
74
+ ### Continuation workspaces
75
+
76
+ Granularity is a real cost choice, not a formality: a workspace costs ~8–12 fixed
77
+ dispatches (drafter, plan reviewer, proof runner, spec/code reviewers, seal roster;
78
+ Temper is skippable when the parent's `strategy.md` already covers the scope) plus
79
+ ~3–5 per slice. The split does not remove per-slice cost; it bounds each round's
80
+ context, stops the non-convergent whole-surface loop, isolates a plan defect's blast
81
+ radius to its own workspace, and lets independent continuations run in parallel.
82
+
83
+ Make each continuation cheap and drift-free:
84
+
85
+ - `brief.md` names the parent slug and the sequence position; `decisions.md` holds the
86
+ sequence once (in the parent).
87
+ - The child's `state.md` seeds the durable cursor at creation — `sequence_parent` =
88
+ parent slug, `sequence_position` = parent position + 1,
89
+ `sequence_workspaces_remaining` = parent remaining − 1, and `sequence_role:
90
+ release` only when the recorded entry is the sequence's release milestone.
91
+ Values derive from the parent's `state.md` and its `decisions.md` record,
92
+ exactly once; resume re-derives the same values rather than charging again.
93
+ A workspace that is not a recorded continuation leaves all four rows absent.
94
+ This is what `state merge-manifest` walks and what the release-union gate reads,
95
+ so a manually opened continuation needs the same seeding as an armed run.
96
+ - Read the parent's `architecture.md`, `plan.md`, `decisions.md` (or its archived copy)
97
+ as **design input** — never re-derive settled architecture, dependency choices, or
98
+ interfaces. Proof is always fresh for the new candidate; parent evidence is cited as
99
+ input, never as proof for this workspace.
100
+ - Shared interfaces, data shapes, and contracts are pinned **once**, in the workspace
101
+ that introduces them, and referenced afterwards. A continuation that must change a
102
+ pinned contract does so through its own `plan.md` shared-contract proof and an ADR
103
+ that names the superseded owner — never by silently re-deciding it.
104
+ - A request that names a recorded continuation is a new workspace, not
105
+ `/rite-plan revise` on the parent.
106
+ - Phases chain automatically only **inside** one workspace (`/rite-autocomplete`
107
+ drives spec → clarify → temper → define → vet → build × slices → prove → polish →
108
+ review → seal; plain HITL chains plan↔vet inline and stops at each other boundary).
109
+ Crossing into the next continuation is a new invocation by design, so the human sees
110
+ each delivered increment before the next one starts.
111
+
112
+ ### Release milestone (full-picture gate)
113
+
114
+ Milestone gates are feature-scoped: `prove` proves *that* workspace's acceptance,
115
+ `review`/`seal` judge *that* candidate. A product release therefore needs one more
116
+ workspace — the **release milestone** — planned last, whose subject is the assembled
117
+ product:
118
+
119
+ - Its ACs are product-level: cross-milestone integration, end-to-end journeys,
120
+ performance/release budgets, docs/rollout. Milestone ACs stay owned by their
121
+ milestones and are **referenced** here, never re-owned.
122
+ - Its candidate manifest lists the union of shipped surfaces, so one `prove` → `review`
123
+ → `seal` binds the whole product, and one `ship` commits/pushes/tags the release.
124
+ Its `state.md` cursor carries `sequence_role: release` (seeded when the recorded
125
+ continuation is the sequence's release entry); `check candidate`/`check seal`
126
+ then require the manifest to cover the whole recorded chain. Build that union
127
+ deterministically: `devrites-engine state merge-manifest <release-slug>` walks
128
+ the recorded `sequence_parent` chain (live `work/` first, then `archive/`) and
129
+ folds every predecessor's manifest into the release `## Candidate manifest`;
130
+ on a path collision the later sequence position's row wins. An explicit
131
+ ordered `<pred>...` argument exists for chains recorded before the sequence
132
+ cursor fields.
133
+ - Earlier milestones keep their own slice-level proof and their own prove/review/seal;
134
+ that is what stops a late defect from invalidating 170 slices of work. Skipping a
135
+ milestone's proof is allowed only by recording the decision — the release milestone
136
+ then carries the full acceptance burden, and that cost is the named trade-off.
137
+ - The capability ledger (`.devrites/specs/<capability>/spec.md`) accumulates the
138
+ product picture across milestones; Polish folds each milestone's deltas.
139
+ - **Deferred-ship sequence** (`.devrites/AFK` `continue_sequence: true`, `max_workspaces: N`):
140
+ milestones are sealed but not shipped, and the armed run opens the next recorded
141
+ continuation automatically; per-slice `WIP(<slug>)` checkpoints still land locally,
142
+ so the tree stays clean. One release ship at the end collapses the sequence's
143
+ checkpoints into the single release commit, pushes/tags it, and may archive the
144
+ sealed predecessors. Because no milestone boundary was shipped, later work can touch
145
+ an earlier milestone's surfaces without an affected-re-proof trigger — so the release
146
+ milestone re-proves the union acceptance map, and that full re-proof is this mode's
147
+ named cost. Trade-off against per-milestone ship: no shared-history rollback point
148
+ per increment, one Git approval at the end.
149
+ - What is full-surface here is the **review**: reviewers see the whole product diff.
150
+ Re-proof stays targeted — this milestone's product ACs, everything a later milestone
151
+ touched, and any uncertain closure. Milestone evidence is cited only under
152
+ [evidence validity](../../devrites-lib/reference/candidate-integrity.md#evidence-validity)
153
+ with explicit unchanged-input/dependency justification and a link to the original
154
+ account; a blind re-proof of every milestone AC is a recorded decision, not a default.
53
155
 
54
156
  ## First slice
55
157
  Make slice 1 the **thinnest useful end-to-end path**. It flushes out integration and
@@ -7,10 +7,12 @@ user-invocable: true
7
7
 
8
8
  # /rite-prove: prove the completed feature
9
9
 
10
- Read the active workspace and prove the whole assembled feature once. With no
11
- active workspace, use `/verify` or `/run` instead; if any task is pending, stop for `/rite-build`.
12
- Never report an unobserved pass. After Polish/Review code edits, repeat affected
13
- criteria and bind evidence to the changed candidate digest.
10
+ Prove the assembled feature once. No workspace: use `/verify` or `/run`;
11
+ pending tasks: stop for `/rite-build`.
12
+ Never assert unobserved passes. After Polish/Review edits, repeat affected
13
+ criteria/dependencies and bind under
14
+ [evidence validity](../devrites-lib/reference/candidate-integrity.md#evidence-validity).
15
+ Initial full feature proof and required mutable observations still run.
14
16
 
15
17
  ## Rules
16
18
 
@@ -21,21 +23,19 @@ Read the applicable standards: `testing.md`, `test-proof-checklist.md`,
21
23
  `workflow-artifacts.md`. Developer surfaces require an observed flow, measured
22
24
  TTHW, and exact signal-bearing errors; never assert DX.
23
25
 
24
- - Evidence over confidence. Apply positive, discriminating proof to every
25
- behavioral claim; a green command without executing assertion and decisive
26
- signal is unproven.
26
+ - Each claim needs an executed positive, discriminating assertion and decisive
27
+ signal; green commands alone are unproven.
27
28
  - Follow [`candidate-integrity.md`](../devrites-lib/reference/candidate-integrity.md). Prove owns proof binding, not candidate
28
29
  grammar/hashing. Spec Drift Guard owns revealed contract drift.
29
- - Root executes vetted gates/browser and records evidence. A read-only proof
30
- runner validates immutable evidence. The sole bounded wright fixes product
31
- source/tests; root never does.
30
+ - Root runs vetted gates/browser and records immutable evidence; proof runner
31
+ validates it. Only the bounded wright fixes product source/tests.
32
32
  - **Prove remains the controlling caller** during technical backtracking. Save
33
33
  its cursor; run Plan repair, Recovery Vet, remediation, and re-proof inline;
34
34
  consume nested boundaries; resume the failed rung. Recovery exhausts after
35
35
  three no-progress attempts on the exact same fingerprint. Closing one or exposing a distinct
36
36
  Critical/Important invariant is progress, not a reason to hand work off.
37
37
  <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Prove consumes installed Workflow Artifact or CLEANED rerun","action":"VERIFY_EXISTING or admitted proof path ending PROVE_AND_RETURN","return":"saved Prove cursor; stop before real action"} -->
38
- ## Released-workspace refresh entry
38
+ ## Released-workspace refresh
39
39
 
40
40
  Only an admitted `/rite-upgrade` assessment proving a released-format candidate
41
41
  defect enters. Require legacy touched-file scope, live diff, tasks, and traceability agree unambiguously
@@ -85,19 +85,17 @@ test changes.
85
85
  [browser proof](reference/browser-proof.md): routes, viewports, opened and
86
86
  described screenshots, console/network, interaction, target comparisons, and
87
87
  every required state. Material mismatch fails.
88
- 7. **Independent validation.** Dispatch exact fresh read-only
89
- `devrites-proof-runner` and `devrites-spec-reviewer` on the same candidate,
90
- commands, immutable evidence, and acceptance map. Reject missing/stale,
91
- invented-ID, label-only, or self-attested reports; neither executes commands.
92
- 8. **Map proof.** Reconcile both verdicts and
93
- [acceptance-proof.md](reference/acceptance-proof.md). Every criterion,
94
- scenario, interaction, and planned key link gets positive discriminating
95
- evidence or a blocker, including applicable critical-path, observability,
96
- developer, and wiring branches.
88
+ 7. **Independent validation.** Fresh read-only `devrites-proof-runner` and
89
+ `devrites-spec-reviewer` judge the same candidate/commands/evidence/acceptance map.
90
+ Neither runs commands; reject missing/stale, invented-ID, label-only or self-attested reports.
91
+ 8. **Map proof.** Reconcile verdicts under [acceptance-proof.md](reference/acceptance-proof.md).
92
+ Every criterion/scenario/interaction/key link needs discriminating evidence or a
93
+ blocker, including critical-path, observability, developer and wiring branches.
97
94
  9. **Recover red.** Use [failure triage](reference/failure-triage.md) and Debug
98
95
  Recovery. Reconcile reproduction; send accepted in-scope source/test correction
99
96
  to the sole wright; update actual manifest; rerun affected proof, both candidate
100
- checks, and fresh proof runner. Scope growth blocks.
97
+ checks, and fresh proof runner. Recheck affected acceptance with the exact spec
98
+ reviewer; reconcile both validators under evidence validity. Scope growth blocks.
101
99
 
102
100
  Agent-owned durable-plan errors run Spec Drift Guard, Plan, and Vet inline,
103
101
  preserving Prove as origin. Consumptive failures use retained fixtures, repair,
@@ -112,7 +110,7 @@ test changes.
112
110
  > Do not claim an unobserved pass, skip browser proof, or proceed with pending
113
111
  > slices. Load `reference/anti-patterns.md` when tempted to do so.
114
112
 
115
- ## Phase exit (observable)
113
+ ## Phase exit
116
114
 
117
115
  **Complete when:** every criterion in `acceptance-proof.md` has discriminating
118
116
  evidence bound to the current candidate digest, both independent validators admit