devrites 5.7.2 → 5.9.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 (137) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +2 -2
  3. package/docs/architecture.md +4 -4
  4. package/docs/command-map.md +3 -3
  5. package/docs/engine/commands.md +1 -0
  6. package/docs/engine/workspace-schema.md +1 -1
  7. package/docs/flow.md +4 -2
  8. package/docs/orchestration.md +2 -2
  9. package/docs/skills.md +1 -1
  10. package/docs/usage.md +11 -10
  11. package/engine/internal/parallel/cli.go +69 -0
  12. package/engine/internal/parallel/git.go +8 -0
  13. package/engine/internal/parallel/ops.go +40 -12
  14. package/engine/internal/parallel/ops_test.go +29 -1
  15. package/engine/internal/parallel/parallel_test.go +26 -14
  16. package/engine/internal/parallel/select.go +76 -0
  17. package/engine/internal/parallel/select_test.go +95 -0
  18. package/pack/.claude/agents/devrites-slice-wright.md +18 -9
  19. package/pack/.claude/settings.json +1 -0
  20. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +4 -3
  21. package/pack/.claude/skills/rite-autocomplete/SKILL.md +18 -18
  22. package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +2 -3
  23. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +18 -25
  24. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +10 -11
  25. package/pack/.claude/skills/rite-build/SKILL.md +13 -8
  26. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -1
  27. package/pack/.claude/skills/rite-build/reference/anti-patterns.md +4 -0
  28. package/pack/.claude/skills/rite-build/reference/checkpoint.md +33 -21
  29. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +5 -4
  30. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +30 -23
  31. package/pack/.claude/skills/rite-build/reference/phase-contract.md +4 -2
  32. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +16 -9
  33. package/pack/.claude/skills/rite-plan/reference/slicing.md +4 -3
  34. package/pack/.claude/skills/rite-polish/SKILL.md +3 -1
  35. package/pack/.claude/skills/rite-prove/SKILL.md +3 -0
  36. package/pack/.claude/skills/rite-review/SKILL.md +3 -1
  37. package/pack/.claude/skills/rite-temper/SKILL.md +6 -6
  38. package/pack/.claude/skills/rite-temper/reference/significance.md +3 -3
  39. package/pack/generated/claude/agents/devrites-slice-wright.md +18 -9
  40. package/pack/generated/claude/settings.json +1 -0
  41. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +4 -3
  42. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +18 -18
  43. package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +2 -3
  44. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +18 -25
  45. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +10 -11
  46. package/pack/generated/claude/skills/rite-build/SKILL.md +13 -8
  47. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +3 -1
  48. package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +4 -0
  49. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +33 -21
  50. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +5 -4
  51. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +30 -23
  52. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +4 -2
  53. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +16 -9
  54. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +4 -3
  55. package/pack/generated/claude/skills/rite-polish/SKILL.md +3 -1
  56. package/pack/generated/claude/skills/rite-prove/SKILL.md +3 -0
  57. package/pack/generated/claude/skills/rite-review/SKILL.md +3 -1
  58. package/pack/generated/claude/skills/rite-temper/SKILL.md +6 -6
  59. package/pack/generated/claude/skills/rite-temper/reference/significance.md +3 -3
  60. package/pack/generated/codex/agents/devrites-slice-wright.toml +18 -9
  61. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +4 -3
  62. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +18 -18
  63. package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +2 -3
  64. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +18 -25
  65. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +10 -11
  66. package/pack/generated/codex/skills/rite-build/SKILL.md +13 -8
  67. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +3 -1
  68. package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +4 -0
  69. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +33 -21
  70. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +5 -4
  71. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +30 -23
  72. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +4 -2
  73. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +16 -9
  74. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +4 -3
  75. package/pack/generated/codex/skills/rite-polish/SKILL.md +3 -1
  76. package/pack/generated/codex/skills/rite-prove/SKILL.md +3 -0
  77. package/pack/generated/codex/skills/rite-review/SKILL.md +3 -1
  78. package/pack/generated/codex/skills/rite-temper/SKILL.md +6 -6
  79. package/pack/generated/codex/skills/rite-temper/reference/significance.md +3 -3
  80. package/pack/generated/omp/agents/devrites-slice-wright.md +18 -9
  81. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +4 -3
  82. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +18 -18
  83. package/pack/generated/omp/skills/rite-autocomplete/reference/decision-policy.md +2 -3
  84. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +18 -25
  85. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +10 -11
  86. package/pack/generated/omp/skills/rite-build/SKILL.md +13 -8
  87. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +3 -1
  88. package/pack/generated/omp/skills/rite-build/reference/anti-patterns.md +4 -0
  89. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +33 -21
  90. package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +5 -4
  91. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +30 -23
  92. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +4 -2
  93. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +16 -9
  94. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +4 -3
  95. package/pack/generated/omp/skills/rite-polish/SKILL.md +3 -1
  96. package/pack/generated/omp/skills/rite-prove/SKILL.md +3 -0
  97. package/pack/generated/omp/skills/rite-review/SKILL.md +3 -1
  98. package/pack/generated/omp/skills/rite-temper/SKILL.md +6 -6
  99. package/pack/generated/omp/skills/rite-temper/reference/significance.md +3 -3
  100. package/pack/generated/pi/agents/devrites-code-reviewer.md +1 -1
  101. package/pack/generated/pi/agents/devrites-devex-reviewer.md +1 -1
  102. package/pack/generated/pi/agents/devrites-doubt-reviewer.md +1 -1
  103. package/pack/generated/pi/agents/devrites-evidence-scout.md +1 -1
  104. package/pack/generated/pi/agents/devrites-frontend-reviewer.md +1 -1
  105. package/pack/generated/pi/agents/devrites-performance-reviewer.md +1 -1
  106. package/pack/generated/pi/agents/devrites-plan-drafter.md +1 -1
  107. package/pack/generated/pi/agents/devrites-plan-reviewer.md +1 -1
  108. package/pack/generated/pi/agents/devrites-proof-runner.md +1 -1
  109. package/pack/generated/pi/agents/devrites-retrospector.md +1 -1
  110. package/pack/generated/pi/agents/devrites-security-auditor.md +1 -1
  111. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +1 -1
  112. package/pack/generated/pi/agents/devrites-slice-wright.md +19 -10
  113. package/pack/generated/pi/agents/devrites-spec-reviewer.md +1 -1
  114. package/pack/generated/pi/agents/devrites-strategy-reviewer.md +1 -1
  115. package/pack/generated/pi/agents/devrites-test-analyst.md +1 -1
  116. package/pack/generated/pi/agents/devrites-upgrade-planner.md +1 -1
  117. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +4 -3
  118. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +18 -18
  119. package/pack/generated/pi/skills/rite-autocomplete/reference/decision-policy.md +2 -3
  120. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +18 -25
  121. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +10 -11
  122. package/pack/generated/pi/skills/rite-build/SKILL.md +13 -8
  123. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +3 -1
  124. package/pack/generated/pi/skills/rite-build/reference/anti-patterns.md +4 -0
  125. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +33 -21
  126. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +5 -4
  127. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +30 -23
  128. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +4 -2
  129. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +16 -9
  130. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +4 -3
  131. package/pack/generated/pi/skills/rite-polish/SKILL.md +3 -1
  132. package/pack/generated/pi/skills/rite-prove/SKILL.md +3 -0
  133. package/pack/generated/pi/skills/rite-review/SKILL.md +3 -1
  134. package/pack/generated/pi/skills/rite-temper/SKILL.md +6 -6
  135. package/pack/generated/pi/skills/rite-temper/reference/significance.md +3 -3
  136. package/package.json +1 -1
  137. package/scripts/pi-generate.sh +52 -1
@@ -17,16 +17,17 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
17
17
  ORIENT → load only the files this slice touches; learn the project's idiom; reuse-first
18
18
  (RED) → if behavior change: write the failing test first
19
19
  IMPLEMENT → smallest complete version; match conventions; devrites-frontend-craft for UI
20
- VERIFY → writer-safe tests/types/lint; return code + tests
20
+ VERIFY → writer-safe tests/types/lint; return code + tests (no control-branch commit)
21
21
  (DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
22
22
  — dispatch the initial read-only reviews of distinct decisions in parallel
23
23
  (independent claims, fresh contexts); wright fixes stay serial — writers share files
24
24
  PROVE → root: required build/browser/E2E, then returned-diff/path review; fail-on-red
25
+ (red/gap → repair wright, then re-review/re-prove; do not commit yet)
25
26
  RECORD → orchestrator: after green verification, update state.md/evidence.md and
26
27
  upsert the authoritative candidate manifest from the actual scoped diff
27
- (CHECKPOINT) → orchestrator: commit the proven slice local-only as WIP(<slug>)
28
- with a [devrites-context] body clean tree, survives a crash (checkpoint.md)
29
- NEXT → HITL root reports and stops; AFK root may repeat only under afk-discipline.md
28
+ (CHECKPOINT) → only now, with review+proof green: local WIP(<slug>): <imperative summary>
29
+ on the control branch (no slice id) checkpoint.md
30
+ NEXT → HITL root reports and stops. AFK with parallel cap>1: return to parallel-batch selection and run the new N_eff; otherwise repeat under afk-discipline.md
30
31
  ```
31
32
 
32
33
  ## Why the boundary matters
@@ -28,18 +28,20 @@ N_eff = min(
28
28
  )
29
29
  ```
30
30
 
31
- Select **greedily in plan order**: walk pending slices whose `depends_on` are built and
32
- add each one while it stays pairwise disjoint with the selected set and the cap is not
33
- reached. Then `N_eff 2` parallel batch; `N_eff = 1` → the serial one-slice cycle;
34
- nothing pending → Prove. A cap that cannot be filled is normal: take fewer.
35
-
36
- **Re-batch automatically.** After integrate + cleanup are green, re-read `state.md`,
37
- the pending slices (`observe slice`), and the updated tree, then recompute: integrated
38
- siblings leave the pending set and free their paths, and satisfied dependencies unlock
39
- new slices. Repeat until no pending slice remains. Under `.devrites/AFK` and
40
- `/rite-autocomplete` the repeat is part of the same run — a new batch is another
41
- `/rite-build --parallel` round inside it, not a new user invocation; HITL stops after
42
- each batch. A batch of three followed by one of four and then two is the expected shape.
31
+ Select **greedily in plan order**: pass every currently dependency-ready pending slice
32
+ (plan order, `Files likely touched`) to
33
+ `devrites-engine parallel select --cap N [--root <dir>]`. `N_eff 2` → parallel batch;
34
+ `N_eff = 1` → one serial round; nothing pending → Prove. A cap that cannot be filled
35
+ is normal: take fewer. Serial is this round's size, not the rest of the run.
36
+
37
+ **Re-batch automatically after every completed round** (parallel integrate+cleanup or
38
+ a serial slice). Re-read `state.md`, pending slices, and the tree, then run
39
+ `parallel select` again: finished work leaves the pending set, and satisfied
40
+ dependencies unlock new slices. Under `.devrites/AFK` and `/rite-autocomplete` the
41
+ repeat is the same run HITL stops after each batch. `--parallel 5` with one eligible
42
+ slice runs that one; when two to five then become eligible, the next round takes that
43
+ many. **Failing case:** the run stays one-by-one after a serial round even though more
44
+ slices are now eligible under the same cap.
43
45
 
44
46
  ## Path-disjoint
45
47
 
@@ -71,7 +73,8 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
71
73
  1. Orient/gate; parse the cap; compute `N_eff` and select the eligible set
72
74
  ([Dynamic selection and re-batching](#dynamic-selection-and-re-batching)) —
73
75
  candidates from `orient` `task_graph.slices` + built list, each candidate's
74
- `Files likely touched` via `observe slice`, disjointness via `check path-disjoint`.
76
+ `Files likely touched` via `observe slice`, then
77
+ `parallel select --cap N` (pairwise disjointness is inside that verb).
75
78
  2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
76
79
  3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`).
77
80
  4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
@@ -91,13 +94,16 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
91
94
  Expected test-first RED is not a terminal gate failure. Cancel only for a shared
92
95
  invalid foundation, safety/access failure, resource boundary, or explicit stop;
93
96
  preserve completed and in-progress recoverable work and classify each result.
94
- 6. Integrate: each `transfer_commit` descends from `B` and diffs path-exact vs
95
- `B`; squash-apply all in plan order into one `WIP(<slug>):` commit on the
96
- staging branch (Ship collapses it). Conflict reset to `B`,
97
- `integrate-failed`; classify under repair rounds (siblings stay in place).
98
- 7. Success: FF control to the squash commit the batch lands as one local
99
- commit, never pushed; union `touched-files.md`; update state/evidence;
100
- AFK +1 per integrated sibling; optional `check candidate`.
97
+ 6. `parallel integrate --apply-to-control` **only after steps 4–5 are green**:
98
+ each `transfer_commit` descends from `B` and diffs path-exact vs
99
+ `B`; apply each in plan order as its own local `WIP(<slug>):` commit
100
+ (imperative summary, never a slice id). Staging branch, then FF. Conflict →
101
+ reset to `B`, `integrate-failed`; classify under repair rounds (siblings stay
102
+ in place). Never integrate because a wright returned.
103
+ 7. Success: FF control (the branch that held `HEAD` when the batch started —
104
+ often `main`/`master`, otherwise whatever the user was on) to the integrate
105
+ tip: N local commits, never pushed; union `touched-files.md`; update
106
+ state/evidence; AFK +1 per integrated sibling; optional `check candidate`.
101
107
  8. Cleanup runs only after `integrate` marks the lease `complete` — work
102
108
  landed in control, so `parallel cleanup` removes worktrees/branches.
103
109
  Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
@@ -163,6 +169,7 @@ Repair rejected work in place; never discard/rebuild while budget remains.
163
169
  ## Engine verbs
164
170
 
165
171
  ```text
172
+ devrites-engine parallel select --cap <1-10> [--root <dir>] [<json-file>|-]
166
173
  devrites-engine parallel create --root <repo> --slug <slug> --batch <id> --base <B> --json <file>|-
167
174
  devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> --commit <sha>
168
175
  devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
@@ -174,9 +181,9 @@ devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug
174
181
  # parallel cleanup --root <repo> --slug <slug> --force (salvages, prints retained refs)
175
182
  ```
176
183
 
177
- `integrate` without `--apply-to-control` stages the squash commit, leaves the
178
- lease `running` and control at `B`; cleanup still refuses — the commit cannot
179
- be lost. `record-green` and `integrate` also accept an `integrate-failed`
184
+ `integrate` without `--apply-to-control` stages the per-sibling commits, leaves
185
+ the lease `running` and control at `B`; cleanup still refuses — the commits
186
+ cannot be lost. `record-green` and `integrate` also accept an `integrate-failed`
180
187
  lease, so a failed integrate retries after repair. `--apply-to-control`
181
188
  refuses when control moved past `B` or holds uncommitted changes on slice
182
189
  paths — commit/stash and retry; the batch is untouched. Go is SSOT; never
@@ -44,8 +44,10 @@ Spec Drift Guard still applies.
44
44
  Reapply host admission before correction; affected proof/evidence follows candidate
45
45
  integrity. Human gates remain product/irreversible/access decisions.
46
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
47
+ update state, evidence and applicable UI/browser proof. Checkpoint per
48
+ [`checkpoint.md`](checkpoint.md) only after steps 5–6 are green and every
49
+ repair wright has been re-reviewed and re-proved; never on wright return.
50
+ Manifest stays mutable until Polish. For a release milestone, after the last slice's rows run
49
51
  `devrites-engine state merge-manifest <slug>` to fold the recorded
50
52
  predecessor chain into the union manifest before Prove. Record stood
51
53
  decisions/dead ends; refresh verified/falsified
@@ -25,12 +25,13 @@ discard user work to qualify. Ask host for an explicit current-`HEAD` base when
25
25
  supported. Regardless of host defaults, the wright's first command must prove actual `git rev-parse HEAD` equals supplied
26
26
  `worktree_base`. Mismatch returns a gap with no write before project reads or baseline proof.
27
27
 
28
- The isolated wright returns one local unpushed `transfer_commit`, its `worktree_base`,
29
- and exact files. Root proves descendant base, exact `git diff --name-only`
28
+ The isolated wright returns one local unpushed `transfer_commit` (contract
29
+ `WIP(<slug>):` subject, no slice id), its `worktree_base`, and exact files.
30
+ That commit is worker-branch transport, not the control-branch checkpoint. Root proves descendant base, exact `git diff --name-only`
30
31
  `` `<base>..<transfer>` ``, no `.devrites/**`/submodule/symlink/unrelated delta, unchanged
31
32
  source base, and no user-work overwrite. Use only host-native explicit reconciliation;
32
- never ad hoc copy, cherry-pick, or merge from read-only root. Compare transferred bytes,
33
- run approved proof, record evidence, then let host remove worktree.
33
+ never ad hoc copy, cherry-pick, or merge from read-only root. Land on control
34
+ only per [`checkpoint.md`](checkpoint.md).
34
35
 
35
36
  Conflict, extra/missing commit, moved base, or cleanup failure is `gap`/STOP:
36
37
  preserve the worktree and commit. Without explicit reconciliation, use same-worktree serial.
@@ -48,7 +49,8 @@ worktrees stay forbidden.
48
49
  [`workflow-artifacts.md`](../../devrites-lib/reference/standards/workflow-artifacts.md);
49
50
  its rejection here is not a blocker.
50
51
  2. Include goal, verbatim acceptance, exclusions, context,
51
- `test-plan.md` proof commands, and applicable standards. For each triggered
52
+ `test-plan.md` proof commands, applicable standards, and the exact
53
+ `WIP(<slug>):` subject (no slice id). For each triggered
52
54
  topology/data/integration standard, include only the feature-specific owner/invariant,
53
55
  failure or partial-state case, recovery rule, and required proof from the vetted plan.
54
56
  Do not paste the whole standard or silently omit an applicable risk.
@@ -75,12 +77,17 @@ Opt-in `/rite-build --parallel N` fans out only under [`parallel-batch.md`](para
75
77
  assertions. Dedicated test analysis treats weakening as Critical.
76
78
  Confirm a test for a data/integration/topology risk can actually exhibit that risk;
77
79
  mocks that erase it and one-root proof offered for another root are unproven.
78
- 3. Run only repository proof already approved by `test-plan.md`, then inspect
79
- `git diff --name-only` again in case a proof tool changed source.
80
- 4. Apply [independent Build review](phase-contract.md#independent-build-review) before
81
- proof acceptance. Human choices return; technical failures follow
80
+ 3. Apply [independent Build review](phase-contract.md#independent-build-review)
81
+ before proof. Human choices return; technical failures follow
82
82
  [the canonical retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
83
83
  Derive accounting from recorded reproductions, corrections, and decisive rechecks.
84
+ 4. Run only repository proof already approved by `test-plan.md`, then inspect
85
+ `git diff --name-only` again in case a proof tool changed source.
86
+ **Do not land on control until review and proof are green.** Isolated
87
+ `transfer_commit` stays on the worker branch; same-worktree diffs stay
88
+ uncommitted. Serial: [`checkpoint.md`](checkpoint.md), then host may remove the
89
+ worktree. Parallel: `record-green` only; land with `parallel integrate
90
+ --apply-to-control` after the batch; `parallel cleanup` removes worktrees.
84
91
  5. Reconcile returned reuse, conventions, principles, sources, assumptions,
85
92
  decisions, dead ends, follow-ups, gates, and touched files. Persist the
86
93
  relevant facts in canonical artifacts, not the wholesale report. A plan-gap
@@ -106,8 +106,8 @@ Make each continuation cheap and drift-free:
106
106
  - Phases chain automatically only **inside** one workspace (`/rite-autocomplete`
107
107
  drives spec → clarify → temper → define → vet → build × slices → prove → polish →
108
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.
109
+ Next continuation is a new invocation by default. Same-run chaining is
110
+ `continue_sequence: true` (Deferred-ship).
111
111
 
112
112
  ### Release milestone (full-picture gate)
113
113
 
@@ -138,7 +138,8 @@ product:
138
138
  product picture across milestones; Polish folds each milestone's deltas.
139
139
  - **Deferred-ship sequence** (`.devrites/AFK` `continue_sequence: true`, `max_workspaces: N`):
140
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,
141
+ continuation automatically; local `WIP(<slug>):` checkpoints still land with
142
+ human summaries (never a slice id),
142
143
  so the tree stays clean. One release ship at the end collapses the sequence's
143
144
  checkpoints into the single release commit, pushes/tags it, and may archive the
144
145
  sealed predecessors. Because no milestone boundary was shipped, later work can touch
@@ -91,7 +91,9 @@ Incomplete comparison is **not** agreement. Record axis deltas in `polish-report
91
91
  affected real re-proof using the approved commands, fresh proof-runner
92
92
  validation, refreshed evidence/browser bindings, and an updated candidate
93
93
  manifest. Record a **`Re-verification:`** line in `polish-report.md`. Close
94
- the candidate for Review only after these checks are green.
94
+ the candidate for Review only after these checks are green. Then checkpoint
95
+ remaining candidate diffs per
96
+ [`checkpoint.md`](../rite-build/reference/checkpoint.md).
95
97
  7. **Aggregate output:** each phase appends to the single `polish-report.md`.
96
98
 
97
99
  ## Refinement modes
@@ -106,6 +106,9 @@ test changes.
106
106
  attempt. Never guess the runtime fix or reuse old GO.
107
107
  10. **Record.** Root updates `evidence.md`, optional `browser-evidence.md`,
108
108
  traceability, and state, with exactly one observed candidate binding.
109
+ After independent validators are green, checkpoint remaining candidate
110
+ diffs per [`checkpoint.md`](../rite-build/reference/checkpoint.md). A wright
111
+ correction during Recover red does not commit on control until this step.
109
112
 
110
113
  > Do not claim an unobserved pass, skip browser proof, or proceed with pending
111
114
  > slices. Load `reference/anti-patterns.md` when tempted to do so.
@@ -142,7 +142,9 @@ Pull these via `Read` when the diff demands them:
142
142
  binding in `review.md` for the current digest, distinguishing fresh accounts from
143
143
  cited unchanged sub-scope evidence and reconciling complete coverage.
144
144
  **Completion:** the records name the reviewed candidate identity and every accepted
145
- correction has affected proof plus a fresh Review.
145
+ correction has affected proof plus a fresh Review. Then checkpoint remaining
146
+ candidate diffs per [`checkpoint.md`](../rite-build/reference/checkpoint.md);
147
+ a wright correction does not commit on control until that Review is green.
146
148
 
147
149
  ## Finding labels
148
150
 
@@ -27,8 +27,8 @@ the spec applicability map triggers that risk family.
27
27
  - **Raise outcome ambition without expanding the solution unnecessarily.** Solve the
28
28
  underlying problem without adding speculative capability or abstraction.
29
29
  - **Route every scope change through the Spec Drift Guard.** A scope change takes effect
30
- only when `spec.md` records the confirmed decision. Expansion is **opt-in** (HITL
31
- confirm; AFK pauses: see autocomplete policy). Nothing auto-grows into the build.
30
+ only when `spec.md` records the confirmed decision. HITL confirms expand;
31
+ autocomplete auto-applies it. Irreversible-risk still pauses.
32
32
  - **Apply maximum caution to hard-to-reverse changes.** Auth, migration, public API, and
33
33
  data-model changes always pause under the irreversible-risk list.
34
34
  - **Honest verdict.** Never round "needs work" up to "ready"; record every scope call's *why*.
@@ -89,8 +89,8 @@ the spec applicability map triggers that risk family.
89
89
  `AskUserQuestion`, one at a time, best-guess + **why**. Each material scope call ends as a
90
90
  **recorded decision**: a resolved `questions.md` qid (HITL) or a `decisions.md` ADR (AFK):
91
91
  so the review leaves an auditable record outside chat. (AFK gate policy —
92
- [`reference/significance.md`](reference/significance.md) — `hold-rigor` + `reduce-to-MVP`
93
- auto-apply, **any `expand` is a blocking pause**, irreversible-risk always pauses.)
92
+ [`reference/significance.md`](reference/significance.md) — autocomplete applies
93
+ the recommended mode including `expand`; irreversible-risk always pauses.)
94
94
  Apply objective clarity, mitigation, and assumption fixes directly.
95
95
  6. **Write `strategy.md` + fold back:** [`reference/strategy-template.md`](reference/strategy-template.md).
96
96
  **Choose the drift path based on whether a plan exists:** *no `plan.md` yet* (the normal pre-define
@@ -110,8 +110,8 @@ the spec applicability map triggers that risk family.
110
110
  blocking/escalating question routes `/rite-clarify`/HITL. Only after the
111
111
  matrix is re-closed may the phase advance.
112
112
  Set `Phase: temper`; `Next step: /rite-define` only after verification.
113
- Human-owned expansion/unapproved irreversible choices set `Awaiting human` +
114
- `Status: awaiting_human`; objective below-bar findings continue correction.
113
+ Unapproved irreversible choices set `Awaiting human`. Autocomplete expand does
114
+ not. Objective below-bar findings continue correction.
115
115
  7. **Adversarial verification loop:** ask the exact
116
116
  [`devrites-strategy-reviewer`](../../agents/devrites-strategy-reviewer.md)
117
117
  through the native fresh-context contract in
@@ -41,6 +41,6 @@ seal can see the call was made deliberately.
41
41
 
42
42
  ## In `/rite-autocomplete`
43
43
  Autocomplete runs the significance test every feature. On skip → straight to `/rite-define`
44
- (no pause). On fire → run the full review under the AFK gate ceiling: `hold-rigor` and
45
- `reduce-to-MVP` auto-apply (they never grow acceptance); **any `expand` is a blocking pause**;
46
- irreversible-risk findings always pause. Expansion is never auto-grown unattended.
44
+ (no pause). On fire → run the full review and auto-apply the recommended mode, including
45
+ `expand` and extra acceptance (record the ADR; fold via Spec Drift Guard).
46
+ Irreversible-risk findings always pause.
@@ -31,16 +31,20 @@ the target stack's idiom. Never plan, choose scope, design, or perform independe
31
31
  8. **Isolated worktree transfer is explicit.** Only when the dispatch contract names
32
32
  `Isolation: native-worktree`, run `git rev-parse HEAD` as the first command and
33
33
  require exact equality with supplied `worktree_base` before reading or editing.
34
- Mismatch returns a gap with no write. After green proof, create one local, unpushed
35
- transfer commit. Never push, merge, rebase, or remove the worktree. Without that
36
- exact mode, do not commit.
34
+ Mismatch returns a gap with no write. After writer-safe proof, create one local
35
+ unpushed **worktree-branch** transfer commit with the contract `WIP(<slug>):`
36
+ subject (no slice id) — transport only, not a control/primary commit. Never push,
37
+ merge, rebase, or remove the worktree. Without that exact mode, do not commit.
37
38
 
38
39
  ## The contract you receive
39
40
  The orchestrator supplies these inline or by path, relative to **Workspace root**:
40
41
  - **Slice:** id/name, goal, acceptance criteria, **scope boundary** (what it will and will
41
42
  **not** touch), mode (HITL/AFK + any budget).
42
43
  - **Isolation:** `same-worktree` or `native-worktree`; native mode also supplies the
43
- exact committed `worktree_base` SHA and requires a local transfer commit.
44
+ exact committed `worktree_base` SHA and requires a local transfer commit whose
45
+ subject is the supplied `WIP(<slug>): <imperative summary>` (no slice id).
46
+ Same-worktree leaves the diff uncommitted; the orchestrator commits that subject
47
+ at RECORD.
44
48
  - **Targets:** the exact project-relative paths listed in the dispatch task,
45
49
  plus interfaces and signatures to match. Your return cannot widen this set.
46
50
  - **Context to read yourself:** the relevant owning sections of `spec.md`, `plan.md`, `decisions.md`, `assumptions.md`,
@@ -97,6 +101,8 @@ unclear boundary is underspecified: return `Escalation` without proceeding.
97
101
  `$devrites-source-driven` on Codex. Verify the fact in installed source,
98
102
  official documentation, or context7 for current upstream behavior, then include
99
103
  that source in the result. Never invent an API.
104
+ - **No process residue.** Do not put `SLICE-###`, slice numbers, or "this slice"
105
+ in product source, tests, comments, or filenames.
100
106
  4. **VERIFY (fail-on-red).** Run writer-safe tests/types/lint. Report required
101
107
  build/browser/E2E as `not-run` (root-owned, artifact-producing gates), and only
102
108
  when the exact command, cwd, and prerequisites already appear in the unchanged
@@ -118,9 +124,11 @@ unclear boundary is underspecified: return `Escalation` without proceeding.
118
124
  in-scope gaps together, rerun affected proof, and report remaining gaps. Self-check
119
125
  never replaces independent review; green tests do not prove all possible cases.
120
126
  5. **TRANSFER when isolated.** After green writer-safe proof, verify the diff again,
121
- stage only exact task paths, and create one new local commit whose message names
122
- the slice transfer. Record its SHA. If the commit fails or includes any extra
123
- path, return the failure and preserve the worktree; never bypass hooks or amend.
127
+ stage only exact task paths, and create one new local commit on **this worktree
128
+ branch** with the contract `WIP(<slug>):` subject (no slice id). Record its SHA.
129
+ This is transport for later orchestrator landing not a control/primary commit
130
+ and not "the slice is done". If the commit fails or includes any extra path,
131
+ return the failure and preserve the worktree; never bypass hooks or amend.
124
132
  In `same-worktree` mode skip this step and leave the approved diff uncommitted.
125
133
  6. **RETURN** the structured artifact (below) and stop.
126
134
 
@@ -197,8 +205,9 @@ human-owned choices. Never silently ship a known gap.
197
205
  ## Tools / read-write mode
198
206
 
199
207
  Write code/tests only at exact contract paths; no `.devrites/` bookkeeping. Only
200
- `native-worktree` permits staging and one local transfer commit of those paths.
201
- All other Git mutation and remote actions remain forbidden.
208
+ `native-worktree` permits staging and one local transfer commit of those paths
209
+ (contract `WIP(<slug>):` subject). All other Git mutation and remote actions
210
+ remain forbidden.
202
211
 
203
212
  ## Composition
204
213
 
@@ -13,6 +13,7 @@
13
13
  "Bash(devrites-engine orient *)",
14
14
  "Bash(devrites-engine observe *)",
15
15
  "Bash(devrites-engine parallel status *)",
16
+ "Bash(devrites-engine parallel select *)",
16
17
  "Bash(devrites-engine parallel create *)",
17
18
  "Bash(devrites-engine parallel record-green *)",
18
19
  "Bash(devrites-engine parallel integrate *)",
@@ -110,8 +110,8 @@ candidate manifest to cover the whole recorded chain — run
110
110
  qualify; no recorded next entry, or the cap/review-queue bound reached, stops
111
111
  with the winning reason.
112
112
  - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
113
- with `Next step: /rite-ship` preserved. Per-slice `WIP(<slug>)` checkpoints still
114
- land locally ([checkpoint.md](../../../rite-build/reference/checkpoint.md)), so the tree
113
+ with `Next step: /rite-ship` preserved. Local `WIP(<slug>):` checkpoints still
114
+ land ([checkpoint.md](../../../rite-build/reference/checkpoint.md)), so the tree
115
115
  stays clean and crash-safe.
116
116
  - Git stays human-gated. The release ship is one disclosed plan, one literal `GO`, and
117
117
  one native approval; it collapses the sequence's `WIP` commits into the single
@@ -120,7 +120,8 @@ candidate manifest to cover the whole recorded chain — run
120
120
  run exactly as without this field.
121
121
 
122
122
  `max_parallel` caps a Build batch for unattended runs; `1` forces the serial cycle.
123
- Unattended runs take the largest eligible set ≤ cap and recompute after every integrate
123
+ Unattended runs take the largest eligible set ≤ cap and recompute after every completed
124
+ round (serial slice or parallel integrate)
124
125
  ([parallel-batch.md § Dynamic selection and re-batching](../../../rite-build/reference/parallel-batch.md#dynamic-selection-and-re-batching));
125
126
  an explicit `/rite-build --parallel N` cap wins for that invocation.
126
127
 
@@ -9,7 +9,7 @@ user-invocable: true
9
9
 
10
10
  Run every phase after one clarification window. Irreversible-risk,
11
11
  blocking/escalating,<!-- pack-scan-ignore: negated statement: gates are NOT disabled -->
12
- NO-GO, resource, and human-owned gates still pause. Use the Standard native
12
+ and NO-GO still pause. Use the Standard native
13
13
  profile by default and Full for high-risk scope or explicit `--full`; see
14
14
  [`orchestration-profiles.md`](../devrites-lib/reference/orchestration-profiles.md).
15
15
 
@@ -48,20 +48,19 @@ executable controller/harness/bundle bytes or a missing writer, read
48
48
  - Every exact causal fingerprint gets at most three no-progress corrections.
49
49
  Closing one is progress; a distinct Critical/Important invariant has its own
50
50
  budget. Lower severity cannot prolong recovery.
51
- - Enforce `--max-slices`, the AFK sentinel, review queue, and native
52
- agent/token/cost/time limits before every phase or dispatch. Count failed,
53
- malformed, and unavailable leaf calls. At the review cap, permit only work
54
- that reduces the queue.
51
+ - Do not stop on `--max-slices`, sentinel `max_slices`, `max_agents`,
52
+ `max_minutes`, or `max_review_queue`. Count failed, malformed, and
53
+ unavailable leaf calls.
55
54
  - Parse flags only from this invocation. `--ship`, `--yolo`, `--max-slices`,
56
55
  `--parallel`, `--full`, and `--cross-model` activate only as exact standalone
57
56
  tokens in `$ARGUMENTS`; examples or earlier messages can never arm them.
58
57
  `--max-slices` must occur once and be followed by a positive base-10 integer;
59
58
  `--parallel` must occur once and be followed by a base-10 integer in `1`–`10`.
60
59
  Missing, repeated, malformed, or conflicting values stop before any write.
61
- - Temper always runs after Clarify. Unattended mode auto-applies only
62
- `hold-rigor` and `reduce-to-MVP`; any `expand` or added acceptance pauses.
60
+ - Temper always runs after Clarify. Auto-apply the recommended mode, including
61
+ `expand` and extra acceptance; record the ADR and fold via Spec Drift Guard.
62
+ Irreversible-risk still pauses.
63
63
  - Vet every plan. Cross-model is off unless the current invocation arms it.
64
- Never auto-grow accepted scope.
65
64
 
66
65
  ## Workflow
67
66
 
@@ -77,7 +76,7 @@ executable controller/harness/bundle bytes or a missing writer, read
77
76
  from chat. After compaction or a resumed session, read `.devrites/ACTIVE`, then
78
77
  the `state.md` cursor, `questions.md`, `decisions.md`, and `test-plan.md`/`evidence.md`.
79
78
  Normalize current arguments to idea, `ship_preflight: yes|no`,
80
- `max_slices: N|default`, `parallel: N|default`, `profile: standard|full`,
79
+ `max_slices: unlimited`, `parallel: N|default`, `profile: standard|full`,
81
80
  and `cross_model: yes|no`.
82
81
  **Completion:** normalized state is unambiguous and no sentinel or workspace file has been written.
83
82
  2. **Specify and clarify.** Run `devrites-interview`, `/rite-spec`, and
@@ -85,7 +84,7 @@ executable controller/harness/bundle bytes or a missing writer, read
85
84
  AFK. **Completion:** `Decision coverage: CLEAR` is durable.
86
85
  3. **Arm AFK once.** Apply the loop's
87
86
  [one-write AFK contract](reference/loop.md#arm-afk-once): preserve valid
88
- existing bytes or create the bounded advisory-only sentinel once; never
87
+ existing bytes or create the sentinel once (`allow_gates: [advisory, validating]`); never
89
88
  rewrite it after Vet. Preserve an existing sentinel byte-for-byte.
90
89
  **Completion:** a valid read-only AFK sentinel exists.
91
90
  4. **Drive phases.** Follow [the loop](reference/loop.md): `/rite-spec` →
@@ -94,15 +93,16 @@ executable controller/harness/bundle bytes or a missing writer, read
94
93
  `/rite-review` → `/rite-seal`. Read and execute each skill; durable files, not
95
94
  chat, carry state. Apply the mutable post-vet budget before first Build.
96
95
  Build runs the largest eligible path-disjoint batch (cap: `--parallel N`, else
97
- sentinel `max_parallel`, else 10) and recomputes after every integrate until no
98
- pending slice remains; serial only when fewer than two slices are eligible or the
99
- host cannot isolate concurrent worktree writers.
96
+ sentinel `max_parallel`, else 10) and recomputes after every completed round until no
97
+ pending slice remains; a one-slice round is serial for that round only, then
98
+ selection runs again (host isolation still forces serial when concurrent writers
99
+ cannot be separated).
100
100
  **Completion:** loop reaches Seal GO or persists a valid stop before any later phase.
101
101
  5. **Apply stops.** At every gate use
102
102
  [stop-conditions.md](reference/stop-conditions.md). A `blocked` label alone is not a stop condition:
103
103
  route agent-owned red results through bounded recovery.
104
104
  Red gates block forward advancement and enter caller-owned recovery. Stop on
105
- hard risk, human-owned blocking/escalating/NO-GO, resource exhaustion, or the
105
+ hard risk, human-owned blocking/escalating/NO-GO, or the
106
106
  exact fingerprint's proven exhaustion. Technical exhaustion records terminal
107
107
  `Next step: none`, never a routine phase command. **Completion:** no stop is active, or its cursor and reason are durable.
108
108
  6. **Seal boundary.** Without a ship flag, stop at Seal GO with `/rite-ship` —
@@ -115,8 +115,8 @@ executable controller/harness/bundle bytes or a missing writer, read
115
115
 
116
116
  ## Reply and resume
117
117
 
118
- HITL Build returns after one slice; explicit valid AFK may chain only green
119
- slices within every cap. One Autocomplete invocation owns all internal
118
+ HITL Build returns after one slice; Autocomplete ignores `--max-slices` and
119
+ keeps chaining pending slices. One Autocomplete invocation owns all internal
120
120
  backtracking. Context pressure, compaction, or a nested completion footer does
121
121
  not create a stop; persist and resume the cursor.
122
122
 
@@ -128,5 +128,5 @@ spec <done|stopped> · clarify <clear|stopped> · temper <done|stopped> · defin
128
128
  ```
129
129
 
130
130
  Final state is `Shipped`, `Stopped`, `Awaiting human`, `NO-GO`, or `GO`; do not
131
- write a narrative recap. Require a clean or accepted baseline, arm checkpoint
132
- mode, and never auto-pass a red gate.
131
+ write a narrative recap. Require a clean or accepted baseline, land a local
132
+ unpushed checkpoint after each green check, and never auto-pass a red gate.
@@ -36,6 +36,5 @@ not pick the option that's merely easiest to implement.
36
36
 
37
37
  ## When a choice is NOT autocomplete's to make
38
38
 
39
- Human-owned contract, data-model, security, and product choices are not discretionary.
40
- Use owning elicitation/safety gates and the topology marked action. Autocomplete
41
- answers *how*, never *what to build* beyond the settled interview.
39
+ Human-owned blocking/escalating, irreversible-risk, and access stay human.
40
+ Recommended temper `expand` auto-applies; do not invent product intent.
@@ -13,11 +13,8 @@ routine phases. Acceptance-preserving Reslice authority is
13
13
  ## Arm AFK once
14
14
 
15
15
  ```yaml
16
- allow_gates: [advisory]
17
- max_slices: 10
18
- max_agents: 32
19
- max_minutes: 120
20
- max_review_queue: 8
16
+ allow_gates: [advisory, validating]
17
+ # max_slices / max_agents / max_minutes / max_review_queue omitted: unlimited
21
18
  # continue_sequence: true # opt-in: chain recorded continuations after Seal GO
22
19
  # max_workspaces: 5 # sequence budget when chaining
23
20
  # max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
@@ -27,32 +24,28 @@ max_review_queue: 8
27
24
  ```
28
25
 
29
26
  Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
30
- its gate ceiling exceeds advisory, required envelope is malformed, or
31
- `max_slices` conflicts with the invocation. If absent, write it once after
32
- clarity, replacing the safe slice default only for explicit `--max-slices N`.
27
+ malformed. Do not stop because it names `max_slices` / `max_agents` /
28
+ `max_minutes` / `max_review_queue` or only `[advisory]`. If absent, write it
29
+ once after clarity. Never write `max_slices` from `--max-slices`.
33
30
  It is read-only: never rewrite it after Vet or reset it on resume. Leftover
34
31
  `expires_at` is ignored and never rewritten.
35
32
 
36
33
  ### Derive the mutable post-vet budget
37
34
 
38
- After Vet, count pending slices and take the minimum of that count, explicit
39
- flag, and sentinel cap. Before first Build, seed absent state-owned
40
- `afk_slices_remaining`; retain the lower valid existing value and never increase
41
- or reinitialize it. AFK configuration itself stays unchanged.
35
+ After Vet, seed `afk_slices_remaining` from the pending count so every pending
36
+ slice can run. Ignore `--max-slices`, sentinel `max_slices`, and leftover
37
+ remaining. AFK configuration itself stays unchanged.
42
38
 
43
39
  ### Admit each unattended cycle
44
40
 
45
- Before every phase, review fan-out, recovery, or writer dispatch, apply
46
- [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#unattended-resource-envelope): cheapest current-state/readiness
47
- check first; reject overlap; count unresolved review; check native
48
- agent/token/cost/time headroom. Count every leaf result. At the review cap, only
49
- reconciliation that reduces the queue may run. Any reached or unobservable
50
- bound stops before more work and persists the winning reason. A new activation
51
- gets fresh activation-local counters but retains durable slice/recovery state
52
- and recomputed queue.
41
+ Before every phase, review fan-out, recovery, or writer dispatch: cheapest
42
+ readiness check first; reject overlap. Do not stop on `max_agents`,
43
+ `max_minutes`, or `max_review_queue`. Count every leaf result. A new activation
44
+ gets fresh activation-local counters but retains durable slice/recovery state.
53
45
 
54
- `allow_gates: [advisory]` means validating gates pause now rather than becoming
55
- Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
46
+ When driving `/rite-build`, ignore afk-discipline remaining-0, `--max-slices`,
47
+ and parallel AFK headroom. Close validating questions
48
+ (recommended pick) instead of queuing them.
56
49
 
57
50
  ## Phase arc
58
51
 
@@ -62,17 +55,17 @@ Workspace files carry state; chat does not. Read and execute each phase skill:
62
55
  | --- | --- | --- |
63
56
  | 1 | `/rite-spec` | investigate and write testable intent |
64
57
  | 2 | `/rite-clarify` | topology-first scan; require `Decision coverage: CLEAR`, then arm AFK |
65
- | 3 | `/rite-temper` | harden or reduce; expansion and irreversible risk pause |
58
+ | 3 | `/rite-temper` | harden, reduce, or expand; irreversible risk still pauses |
66
59
  | 4 | `/rite-define` | approved plan/tasks/traceability |
67
60
  | 5 | `/rite-vet` | every plan; derive mutable budget after READY |
68
- | 6 | `/rite-build` batch loop | largest eligible path-disjoint set (cap 10; serial when <2 eligible); recompute after each integrate; charge once per green built slice |
61
+ | 6 | `/rite-build` batch loop | largest eligible path-disjoint set (cap 10; one-slice round when <2 eligible); recompute after each round; charge once per green built slice |
69
62
  | 7 | `/rite-prove` | all slices built; approved proof; recovery on red |
70
63
  | 8 | `/rite-polish` | re-prove after code edits |
71
64
  | 9 | `/rite-review` | in-scope correction then fresh proof |
72
65
  | 10 | `/rite-seal` | GO/NO-GO; no Git |
73
66
  | 11 | `/rite-ship` | only after GO; `--ship` never authorizes Git; stop at literal-GO/native approval |
74
67
 
75
- Before advancing, check resource admission and
68
+ Before advancing, check
76
69
  [stop-conditions.md](stop-conditions.md). After source edits, discard stale pass
77
70
  evidence. Re-read the active workspace before each phase.
78
71
 
@@ -59,22 +59,21 @@ exhausted.
59
59
  <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"stop on exact WAIT_ACTIVE_OWNER, BLOCKED_EXHAUSTED, or BLOCKED_GATE result","return":"unchanged cursor plus fixed route-owned output"} -->
60
60
  ## Other stop classes
61
61
 
62
- - **Gate severity:** blocking or escalating gate; any open validating question.
63
- - **Temper:** any `expand` or added acceptance criterion. `hold-rigor`,
64
- `reduce-to-MVP`, and a justified skip do not pause.
62
+ - **Gate severity:** blocking or escalating gate. Validating: auto-pick the
63
+ recommended option, close the question, continue.
64
+ - **Temper:** `expand` and extra acceptance auto-apply (record + Drift Guard).
65
+ Irreversible-risk still pauses. `hold-rigor`, `reduce-to-MVP`, and a skip do not pause.
65
66
  - **Clarify:** material Partial/Missing/unowned decision coverage or a
66
67
  low-confidence high-consequence assumption. Continue the initial interview;
67
68
  never arm AFK early.
68
69
  - **Seal:** NO-GO, with every blocker and fix direction. Never round up to GO.
69
70
  - **Reslice:** execute its marked action before deciding continue/stop.
70
- - **Slice budget:** any validated root-owned remaining value of zero stops before the next dispatch
71
- when slices remain; malformed state also stops. Report whether the winning
72
- bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
73
- Zero with no pending slices is normal completion and proceeds to Prove.
74
- - **Resource envelope:** missing/malformed AFK, overlapping run,
75
- exhausted/unobservable declared agent/token/cost/time headroom, or review queue
76
- above cap. At cap, only queue-reducing reconciliation may run. Persist winning
77
- bound and observed usage; a new activation does not reset durable budgets.
71
+ - **Slice budget:** do not stop on `--max-slices`. Leftover
72
+ pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count
73
+ does not stop. Zero with no pending slices is normal completion.
74
+ Malformed flag stops before any write.
75
+ - **Resource envelope:** overlapping run or missing AFK after arm still stops.
76
+ Do not stop on `--max-slices`, `max_agents`, `max_minutes`, or `max_review_queue`.
78
77
  - **Confidence:** intent still cannot become testable acceptance after interview.
79
78
  - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
80
79