devrites 4.1.0 → 4.2.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 (84) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/docs/engine/commands.md +65 -6
  4. package/engine/go.mod +1 -1
  5. package/engine/internal/gate/gate.go +154 -46
  6. package/engine/internal/gate/gate_test.go +290 -2
  7. package/engine/internal/gate/readiness_binding.go +66 -100
  8. package/engine/internal/gate/readiness_binding_test.go +126 -3
  9. package/engine/internal/lib/resolve.go +6 -6
  10. package/engine/internal/state/cmd/workflowmanifest/main.go +32 -3
  11. package/engine/internal/state/feature.go +1 -100
  12. package/engine/internal/state/observation.go +584 -0
  13. package/engine/internal/state/observation_open_other.go +9 -0
  14. package/engine/internal/state/observation_open_unix.go +12 -0
  15. package/engine/internal/state/observation_test.go +960 -0
  16. package/engine/internal/state/observation_unix_test.go +68 -0
  17. package/engine/internal/state/schema.go +60 -160
  18. package/engine/internal/state/state_test.go +489 -101
  19. package/engine/internal/state/status.go +67 -48
  20. package/engine/tests/adr_0004_required_by_phase_test.go +16 -13
  21. package/engine/tests/adr_0011_define_plan_test.go +14 -12
  22. package/engine/tests/gate_test.go +403 -28
  23. package/engine/tests/workspace_observation_migration_test.go +1065 -0
  24. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -10
  25. package/pack/.claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
  26. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -9
  27. package/pack/.claude/skills/devrites-lib/reference/standards/one-shot-actions.md +1 -6
  28. package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +411 -102
  29. package/pack/.claude/skills/rite-autocomplete/SKILL.md +98 -146
  30. package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +11 -5
  31. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +96 -134
  32. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +92 -131
  33. package/pack/.claude/skills/rite-build/SKILL.md +51 -79
  34. package/pack/.claude/skills/rite-build/reference/phase-contract.md +3 -17
  35. package/pack/.claude/skills/rite-plan/SKILL.md +17 -17
  36. package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +11 -1
  37. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +10 -3
  38. package/pack/.claude/skills/rite-prove/SKILL.md +95 -153
  39. package/pack/.claude/skills/rite-vet/SKILL.md +121 -174
  40. package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +14 -2
  41. package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -6
  42. package/pack/.claude/skills/rite-vet/reference/depth.md +10 -3
  43. package/pack/.claude/skills/rite-vet/reference/review-axes.md +12 -4
  44. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +1 -10
  45. package/pack/generated/claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
  46. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -9
  47. package/pack/generated/claude/skills/devrites-lib/reference/standards/one-shot-actions.md +1 -6
  48. package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +411 -102
  49. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +98 -146
  50. package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +11 -5
  51. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +96 -134
  52. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +92 -131
  53. package/pack/generated/claude/skills/rite-build/SKILL.md +51 -79
  54. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +3 -17
  55. package/pack/generated/claude/skills/rite-plan/SKILL.md +17 -17
  56. package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +11 -1
  57. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +10 -3
  58. package/pack/generated/claude/skills/rite-prove/SKILL.md +95 -153
  59. package/pack/generated/claude/skills/rite-vet/SKILL.md +121 -174
  60. package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +14 -2
  61. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -6
  62. package/pack/generated/claude/skills/rite-vet/reference/depth.md +10 -3
  63. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +12 -4
  64. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +1 -10
  65. package/pack/generated/codex/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
  66. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +2 -9
  67. package/pack/generated/codex/skills/devrites-lib/reference/standards/one-shot-actions.md +1 -6
  68. package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +411 -102
  69. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +98 -146
  70. package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +11 -5
  71. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +96 -134
  72. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +92 -131
  73. package/pack/generated/codex/skills/rite-build/SKILL.md +51 -79
  74. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +3 -17
  75. package/pack/generated/codex/skills/rite-plan/SKILL.md +17 -17
  76. package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +11 -1
  77. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +10 -3
  78. package/pack/generated/codex/skills/rite-prove/SKILL.md +95 -153
  79. package/pack/generated/codex/skills/rite-vet/SKILL.md +121 -174
  80. package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +14 -2
  81. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -6
  82. package/pack/generated/codex/skills/rite-vet/reference/depth.md +10 -3
  83. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +12 -4
  84. package/package.json +1 -1
@@ -7,165 +7,107 @@ user-invocable: true
7
7
 
8
8
  # /rite-prove: prove the completed feature
9
9
 
10
- Prove the **whole feature**. Read the active workspace; if absent, run
11
- `/rite-spec <feature>`.
10
+ Read the active workspace and prove the whole assembled feature once. Without
11
+ one, use `/verify` or `/run`; 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.
12
14
 
13
- > **Scope:** `/verify` proves one change; `/run` launches the app. `/rite-prove`
14
- > walks feature acceptance, relevant suite/build/typecheck/lint, and browser
15
- > proof, writing evidence under the active workspace. Without one, use
16
- > `/verify` or `/run`.
15
+ ## Rules
17
16
 
18
- ## Gate: all slices must be built first
19
- Read `tasks.md` + `state.md`. If any slice is pending, stop for `/rite-build`.
20
- This phase proves the assembled feature once, after per-slice tests.
21
-
22
- **Never report an unobserved pass.** If a command could not run, report that and give
23
- exact manual steps.
24
-
25
- After polish/review edits, rerun affected criteria/routes so evidence binds the
26
- changed candidate digest before Seal.
27
-
28
- ## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
29
- Pull these via `Read` when relevant:
30
- - `testing.md`: pyramid, determinism, no-flake discipline.
31
- - `test-proof-checklist.md`: compact proof-quality gate for tests and recorded evidence.
32
- - `browser-proof-checklist.md`: required UI states and Visual Verdict evidence.
33
- - `spec-grammar.md`: when the spec uses structured `### Requirement:` / `#### Scenario:`
34
- blocks, each scenario (WHEN/THEN) is one observable behavior to walk and prove.
35
- - `performance.md`: measure first when perf is in scope.
36
- - `observability.md`: runtime telemetry must be observed to emit.
37
- - `repository-topology.md`, `data-integrity.md`, `integration-reliability.md`: only
38
- for applicable spec/plan rows; their required proof cases cannot be replaced by a generic green suite.
39
- - `developer-experience.md`: for developer surfaces, run the flow and measure TTHW plus exact
40
- signal-bearing error text with typed redactions; never assert DX.
41
- - `definition-of-done.md`: acceptance, proof, gates, scope, rollback/docs.
42
- - `one-shot-actions.md`: pre-attempt evidence completeness and no-rerun handling for
43
- consumptive proof actions.
44
- - `workflow-artifacts.md`: exact root-owned executable proof/controller/harness
45
- artifacts under the active feature workspace.
46
-
47
-
48
- ## Operating rules
49
- - Evidence over confidence. Feature scope only: fix within the feature or record a
50
- blocker; don't refactor unrelated code.
51
- - Apply `testing.md`'s positive, discriminating proof rule to every behavioral claim.
52
- A green command without an executing assertion and decisive observed signal is unproven.
53
- - Follow the shared
54
- [`candidate-integrity.md`](../devrites-lib/reference/candidate-integrity.md).
55
- Prove owns proof binding, not manifest grammar or candidate hashing.
56
- - Spec Drift Guard applies: if tests/evidence reveal the spec is wrong, stop and handle
57
- drift (`rite-build/reference/spec-drift-guard.md`).
58
- - **Root executes/records; runner validates; wright fixes.** Under
59
- [`agents.md`](../devrites-lib/reference/standards/agents.md), root owns vetted gates, browser,
60
- verdict, and canonical writes; read-only proof runner checks immutable evidence; each source/
61
- test fix is one bounded wright task. Root materializes exact Vet-ready `.devrites/**`
62
- executables under `workflow-artifacts.md`; they are not product writer work.
63
- - **Prove remains the controlling caller during technical backtracking.** Save
64
- its return cursor, invoke Plan/Vet or bounded remediation inline, consume each
65
- nested phase boundary, then resume the failed Prove step. Never make the human
66
- submit an agent-owned repair, re-vet, or proof-rerun command. Apply `afk-hitl.md`
67
- progress accounting: only three no-progress attempts on the exact same fingerprint
68
- exhaust recovery; a closed prior finding or a genuinely new
69
- Critical/Important fingerprint continues inside this invocation.
17
+ Read the applicable standards: `testing.md`, `test-proof-checklist.md`,
18
+ `browser-proof-checklist.md` for UI, `spec-grammar.md`, `performance.md`,
19
+ `observability.md`, topology/data/integration rules named by the plan,
20
+ `developer-experience.md`, `definition-of-done.md`, `one-shot-actions.md`, and
21
+ `workflow-artifacts.md`. Developer surfaces require an observed flow, measured
22
+ TTHW, and exact signal-bearing errors; never assert DX.
70
23
 
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.
27
+ - Follow `candidate-integrity.md`. Prove owns proof binding, not candidate
28
+ 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.
32
+ - **Prove remains the controlling caller** during technical backtracking. Save
33
+ its cursor; run Plan repair, Recovery Vet, remediation, and re-proof inline;
34
+ consume nested boundaries; resume the failed rung. Recovery exhausts after
35
+ three no-progress attempts on the exact same fingerprint. Closing one or exposing a distinct
36
+ Critical/Important invariant is progress, not a reason to hand work off.
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"} -->
71
38
  ## Released-workspace refresh entry
72
39
 
73
- Only an admitted `/rite-upgrade` assessment that proves a released-format candidate
74
- defect may enter this branch. Normal Prove never reconstructs candidate scope.
75
-
76
- Before proof, require that the legacy touched-file scope, live diff, tasks, and traceability agree unambiguously on every candidate path and state. Missing, unknown, or
77
- ambiguous scope is a recorded gap and HITL stop; never guess from Git alone. When they
78
- agree, preserve unrelated `touched-files.md` content and refresh only its strict manifest
79
- from the currently observed project bytes under the workspace schema.
40
+ Only an admitted `/rite-upgrade` assessment proving a released-format candidate
41
+ defect enters. Require legacy touched-file scope, live diff, tasks, and traceability agree unambiguously
42
+ on every candidate path/state. Missing or
43
+ ambiguous scope stops; never guess from Git. Preserve unrelated manifest content
44
+ and refresh only the strict manifest from observed bytes.
80
45
 
81
- Discard every old pass as proof. Run all current approved real proof from scratch under
82
- the positive, discriminating rules below, and establish the pre-proof and post-proof engine digest
83
- with `devrites-engine check candidate <slug>`. Require an identical digest,
84
- then write one fresh exact binding in `evidence.md` and in `browser-evidence.md` when it
85
- exists. Historical evidence cannot substitute for any current gate. A current proof
86
- failure is a blocker; this Upgrade admission never authorizes source or test changes.
46
+ Discard old passes. Run all current approved real proof from scratch. Establish
47
+ pre-proof and post-proof engine digest with `devrites-engine check candidate
48
+ <slug>` and require equality, then write one fresh exact binding in evidence and
49
+ browser evidence. Current failure blocks; Upgrade does not authorize source or
50
+ test changes.
87
51
 
88
52
  ## Workflow
89
- 0. Read core, load relevant rules above, then resolve the active slug,
90
- require its `state.md`, and read the cursor directly. On a blocked Prove cold
91
- resume, reconcile any retained consumptive-action artifact against recorded
92
- no-progress corrections before accepting `next_action: none`; a distinct
93
- fingerprint below its cap resumes offline triage without another real action.
94
- 1. **Confirm all slices built.** Read `spec.md`, `tasks.md`, `state.md`,
95
- `test-plan.md`, and the full diff.
96
- A missing `test-plan.md` enters caller-owned Vet backtracking; invoke Vet
97
- inline and resume this step. It never authorizes ad hoc proof.
98
- 2. **Discover commands** if not recorded:
99
- [test-command-discovery](reference/test-command-discovery.md): README, package
100
- scripts, Makefile, CI configs, Gemfile/Rakefile, pyproject, go.mod, Cargo.toml.
101
- Discovery only supplies evidence. `test-plan.md` is the sole approved runtime
102
- command list. If a discovered command is absent from it, do not run or
103
- silently approve the command: return to the current Vet contract to add and
104
- vet it inline, refresh readiness, then return to Prove without a user handoff.
105
- **Completion:** exact commands are approved in `test-plan.md` or unavailable.
106
- 3. **Execute proof against a frozen candidate.** Run
107
- `devrites-engine check candidate <slug>` before any approved proof and retain
108
- its exact digest. The root runs only commands declared by `test-plan.md`,
109
- byte-for-byte, with exact cwd/prerequisites, exit code, and sanitized decisive output per
110
- [`security.md` § Secrets](../devrites-lib/reference/standards/security.md#secrets). Never retain
111
- raw secrets; lost signal is `cannot_verify` plus a safe manual step. Run the full relevant suite
112
- plus **build / typecheck / lint**. Then rerun the candidate check: require the
113
- identical digest and no candidate-source mutation. Reject synthesized or
114
- substituted commands, malformed manifests, zero-test/skipped/filtered results used as
115
- behavioral proof, success inferred only from exit status, and any source drift. Static
116
- gates prove only their named static criterion.
117
- Immediately before any consumptive action, apply `one-shot-actions.md` to the
118
- live candidate: require the vetted retained-artifact identity, bounds,
119
- sanitization, injective boundary map, per-seam fault fixtures, collision mutant,
120
- terminal-path fixtures, and cleanup-survival proof. A missing,
121
- stale, or disposable-only evidence surface returns to Vet inline and consumes
122
- no attempt. Record the admitted artifact identity before execution. After a
123
- failed consumptive action, triage from that artifact; never reproduce it by
124
- rerunning the action. Consuming its authorization blocks only another real
125
- execution. If the artifact identifies a new Critical/Important fingerprint,
126
- continue offline recovery inside this Prove invocation; do not label the new
127
- fingerprint exhausted because the action budget is zero.
128
- 4. **UI feature?** The root applies the browser proof ladder with
129
- `design-brief.md`, `references.md`, the requested routes, browser harness, and
130
- allowed scratch path:
131
- [proof-ladder](reference/proof-ladder.md) + [browser-proof](reference/browser-proof.md)
132
- (`devrites-browser-proof`): routes, viewports, screenshots (opened + described),
133
- console, network, interaction paths, and the brief's proof targets. Compare screenshots
134
- with target references and record deltas. An unresolved material mismatch is a failed
135
- result; the root handles any accepted correction at step 7 before re-rendering.
136
- 5. **Validate proof in fresh context.** In parallel, dispatch the exact read-only
137
- `devrites-proof-runner` on candidate identity, approved commands, immutable
138
- root evidence, and acceptance map, and `devrites-spec-reviewer` on the same
139
- candidate. Wait for both; reject missing/stale, invented-ID, label-only, or
140
- self-attested evidence. Neither executes commands.
141
- 6. **Map proof completely.** Reconcile both exact verdicts, then follow
142
- [`reference/acceptance-proof.md`](reference/acceptance-proof.md) for acceptance/scenario
143
- coverage and the conditional critical-path, observability, developer-surface, and wiring
144
- branches. Completion: every criterion, planned interaction, and declared key link has a
145
- proof class plus positive, discriminating passing evidence, or is recorded as a blocker.
146
- 7. **On failure** → [failure-triage](reference/failure-triage.md) +
147
- `devrites-debug-recovery`. The root reconciles the reproduction. Send an accepted,
148
- in-scope correction to the sole writer, `devrites-slice-wright`; update the
149
- manifest from its actual scoped diff, rerun affected real proof and both
150
- candidate checks, then dispatch a fresh proof runner. If a fix would exceed
151
- scope, record a blocker.
152
- If triage shows an agent-owned durable-plan error, apply the Spec Drift
153
- Guard's inline return contract: preserve Prove as the origin, run repair and
154
- Vet inside this invocation, and resume the exact failed proof rung. Ask only
155
- for a human-owned decision; causal-fingerprint exhaustion stops once with a
156
- technical blocker rather than another phase command.
157
- For a consumptive-action failure, use fixtures or another non-consumptive
158
- reproduction to fix and re-vet the retained fingerprint. Once the failure
159
- condition is demonstrably changed, stop at the fresh-authorization boundary;
160
- only a new human GO may admit the next real attempt.
161
- If the retained fingerprint is missing or ambiguous, the lost past evidence
162
- does not prove that no safe future acquisition design exists. Treat an in-scope
163
- discriminator as a diagnostic-amplification Plan gap: repair and narrow-Vet the
164
- boundary map and collision proof inline, then stop for fresh GO before one
165
- evidence-acquisition attempt. Do not guess the runtime fix or reuse the old GO.
166
- 8. The root updates `evidence.md`, `browser-evidence.md` (when present),
167
- `traceability.md`, and `state.md`. Record exactly one binding for the observed
168
- digest in evidence and browser evidence. New proof goes to canonical
169
- `evidence.md`.
170
53
 
171
- > **Mid-flight discipline.** When tempted to claim an un-observed pass, skip a rung of the browser-proof ladder, or proceed with slices pending: see [`anti-patterns`](reference/anti-patterns.md). Load it the moment you reach for the excuse.
54
+ 1. **Orient.** Read core, resolve active slug, require `state.md`, and read its
55
+ cursor. On blocked Prove cold resume, reconcile retained consumptive evidence
56
+ and no-progress corrections before accepting terminal none; a distinct
57
+ fingerprint below cap resumes offline triage without another real action.
58
+ 2. **Freeze scope.** Read spec, tasks, state, test plan, and full diff. Require
59
+ every slice built. Missing `test-plan.md` invokes caller-owned Vet and returns
60
+ here; it never authorizes ad hoc proof.
61
+ 3. **Approve commands.** If absent, use
62
+ [test-command-discovery](reference/test-command-discovery.md) over repository
63
+ manifests/CI. Discovery is evidence only: `test-plan.md` is the sole approved runtime
64
+ command list. A newly found command must return to the current Vet contract,
65
+ refresh readiness, then resume without user handoff.
66
+ 4. **Execute a frozen candidate.** Run candidate check and retain its digest.
67
+ The root runs only commands declared by `test-plan.md`, with exact approved
68
+ command, cwd, prerequisites, exit, and sanitized
69
+ decisive output. Run relevant suite plus build/typecheck/lint. Recheck the
70
+ candidate and require identical digest/no source mutation. Reject substituted
71
+ commands, malformed manifests, zero-test/skipped/filtered behavioral claims,
72
+ exit-status-only claims, and source drift. Static gates prove only their named
73
+ static criterion.
74
+ 5. **Gate consumptive actions.** Immediately before execution, apply
75
+ `one-shot-actions.md`: current retained identity, bounds/sanitization,
76
+ injective boundary map, per-seam fault fixtures, collision mutant, terminal
77
+ fixtures, and cleanup-survival proof must be green. Missing/stale/disposable-
78
+ only evidence returns to Vet without spending an attempt. Record the admitted artifact identity before execution.
79
+ After failure, retained evidence is the
80
+ reproduction; never rerun for diagnosis. Spent authorization blocks another
81
+ action, but when action budget is zero it does not exhaust a newly identified
82
+ offline fingerprint.
83
+ 6. **Prove UI when applicable.** Use design brief/references, browser harness,
84
+ allowed scratch path, [proof ladder](reference/proof-ladder.md), and
85
+ [browser proof](reference/browser-proof.md): routes, viewports, opened and
86
+ described screenshots, console/network, interaction, target comparisons, and
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.
97
+ 9. **Recover red.** Use [failure triage](reference/failure-triage.md) and Debug
98
+ Recovery. Reconcile reproduction; send accepted in-scope source/test correction
99
+ to the sole wright; update actual manifest; rerun affected proof, both candidate
100
+ checks, and fresh proof runner. Scope growth blocks.
101
+
102
+ Agent-owned durable-plan errors run Spec Drift Guard, Plan, and Vet inline,
103
+ preserving Prove as origin. Consumptive failures use retained fixtures, repair,
104
+ and Vet, then stop for fresh GO after changed conditions. Ambiguous retained
105
+ evidence does not prove that no safe future acquisition design exists: treat
106
+ an in-scope discriminator as diagnostic-amplification Plan gap, repair its
107
+ finite map/collision proof, narrow-Vet, then seek fresh GO before one evidence
108
+ attempt. Never guess the runtime fix or reuse old GO.
109
+ 10. **Record.** Root updates `evidence.md`, optional `browser-evidence.md`,
110
+ traceability, and state, with exactly one observed candidate binding.
111
+
112
+ > Do not claim an unobserved pass, skip browser proof, or proceed with pending
113
+ > slices. Load `reference/anti-patterns.md` when tempted to do so.
@@ -8,186 +8,133 @@ user-invocable: true
8
8
  # /rite-vet: review the plan before build
9
9
 
10
10
  Vet every plan before code for scope, architecture, quality, proof, performance,
11
- failure modes, and parallel safety. Cite findings, fold accepted technical hardening
12
- into the plan, and design Build tests. Risk sets depth; `/rite-autocomplete` has
13
- Vet and `--cross-model` adds one opinion. Missing `plan.md` routes to `/rite-define`.
11
+ failure modes, and writer safety. Cite findings; fold accepted technical
12
+ hardening into planning artifacts; design Build tests. Temper owns product
13
+ scope, Vet owns implementation; current `$ARGUMENTS` selects depth under
14
+ [`orchestration-profiles.md`](../devrites-lib/reference/orchestration-profiles.md), never removing the exact plan-reviewer gate.
14
15
 
15
- `/rite-temper` owns product scope/strategy; Vet owns implementation. Quick/Standard/Full
16
- comes from [`orchestration-profiles.md`](../devrites-lib/reference/orchestration-profiles.md),
17
- but every profile keeps the exact plan-reviewer gate.
16
+ ## Rules
18
17
 
19
- ## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
20
- Pull the standard named by the active axis: `principles.md`, `patterns.md`,
21
- `coding-style.md`, `testing.md`, `spec-grammar.md`, `performance.md`,
22
- `error-handling.md`, `development-workflow.md`, `afk-hitl.md`,
23
- `one-shot-actions.md`, `developer-experience.md`, `elicitation.md`, and
24
- `definition-of-done.md`. Load `repository-topology.md`, `data-integrity.md`, and
25
- `integration-reliability.md` only when the spec applicability map or live plan triggers them.
18
+ Read the active standard from: `principles.md`, `patterns.md`, `coding-style.md`,
19
+ `testing.md`, `spec-grammar.md`, `performance.md`, `error-handling.md`,
20
+ `development-workflow.md`, `afk-hitl.md`, `one-shot-actions.md`,
21
+ `developer-experience.md`, `elicitation.md`, and `definition-of-done.md`. Load
22
+ repository topology, data integrity, and integration reliability only when
23
+ triggered. Before classifying any Reslice, read `.claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
24
+ When a
25
+ plan declares a root-authored executable workflow file, read
26
+ `workflow-artifacts.md`.
26
27
 
28
+ <!-- BEGIN RESLICE ROUTE-TO-ACTION -->
29
+ - `FOLD` → fold technical topology; invalidate Vet/readiness; affected Vet before Build.
30
+ - `GUARD_AND_REPAIR` → no planning writes; Spec Drift Guard → Clarify → Plan repair → affected Vet.
31
+ - `BLOCKED_INPUT` → no planning writes; exact diagnostic; recover input; reclassify.
32
+ <!-- END RESLICE ROUTE-TO-ACTION -->
27
33
 
28
- ## Operating rules
29
- - **Review implementation, not ambition.** Temper's product scope is settled; challenge
30
- only implementation creep, complexity, proof, and risk.
31
- - **Root hardens; reviewers judge.** Root alone asks, decides, folds back, writes, and sets
32
- readiness. Write behavior-preserving test, boundary, ordering, error, and failure-mode
33
- refinements into `plan.md`/`tasks.md`/`test-plan.md`. Acceptance/product changes require
34
- the Spec Drift Guard: `drift.md`, recorded decision, then `/rite-plan repair` for reslicing.
35
- Build scope never grows without a recorded human decision.
36
- - **Support every finding.** Cite its plan/spec/code source and confidence. Unverified or
37
- confidence ≤4 stays suppressed per [`review-axes.md`](reference/review-axes.md).
38
- - **Apply maximum caution to hard-to-reverse changes.** Auth, migration, public API, and
39
- data-model changes always pause under the irreversible-risk list.
40
- - **Use the lowest axis band.** Never round `thin` up to `ready`; do not average the
41
- axes. Record the reason for every decision.
42
- - **Search before asking.** Verify facts and fold reversible technical hardening into the
43
- plan; ask only human-owned choices under `afk-hitl.md`. Dispatch uses the bounded
44
- [`agents.md`](../devrites-lib/reference/standards/agents.md) contract.
45
- - **Honor a recovery origin.** Preserve a valid technical-backtracking return
46
- cursor throughout review. Agent-owned `NEEDS REPLAN` returns internally to the
47
- controlling caller; it never becomes a request for the human to invoke Plan.
48
- - **Recovery recheck is bounded.** A valid technical-backtracking cursor plus a
49
- recorded open fingerprint enters the Recovery recheck below. Recovery recheck
50
- does not start another Full Vet or repeat unaffected axes/reviewers.
34
+ ## Invariants
51
35
 
36
+ - Review implementation, not ambition. Challenge creep, complexity, proof, and
37
+ risk without changing accepted product scope.
38
+ - Root alone asks, decides, folds, writes, and sets readiness. Reviewers judge;
39
+ they add no route policy. Cite every finding and confidence; suppress
40
+ unverified or confidence ≤4 findings under `review-axes.md`.
41
+ - Auth, migration, public API, and data-model changes use maximum caution and the
42
+ irreversible-risk stop. Project principles never become trade-offs.
43
+ - Use the lowest axis band; never average or round thin to ready. Search before
44
+ asking and resolve reversible technical choices. Ask only human-owned choices.
45
+ - Preserve a valid technical return cursor. Agent-owned `NEEDS REPLAN` returns
46
+ internally to its caller, not to the human.
47
+ - **Recovery recheck is bounded.** A valid cursor plus open fingerprint enters
48
+ Recovery recheck; it does not start another Full Vet or repeat unaffected
49
+ axes/reviewers.
50
+ <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"plan declares root-authored executable workflow file","action":"emit exact admission; stale/missing authority uses PLAN_VET_REPAIR","return":"Vet READY cursor or exact technical replan"} -->
52
51
  ## Workflow
53
- 0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** first.
54
- Then resolve the active slug from `.devrites/ACTIVE`, require its
55
- `state.md`, and read the workspace: `plan.md`, `tasks.md`, `spec.md`,
56
- `decision-coverage.md`
57
- (for intent + acceptance), `strategy.md` (if `/rite-temper` ran), `decisions.md`,
58
- `assumptions.md`, `design-brief.md` (if UI), `state.md`. Require a `plan.md` whose
59
- Readiness gate passes (or `Plan approved`): else STOP → `/rite-define`. Require
60
- `Decision coverage: CLEAR`: else STOP → `/rite-clarify`. Prefer a
61
- code-intelligence index if available (see
62
- `.claude/skills/devrites-lib/reference/standards/tooling.md`) for placement / blast-radius / reuse checks.
63
- 1. **Set review depth. Never skip this step.** Apply
64
- [`reference/depth.md`](reference/depth.md) exactly. Every plan leaves a recorded
65
- engineering verdict and `test-plan.md` coverage map. For an admitted Recovery
66
- recheck, retain the prior depth and proceed to step 1b instead of starting a new
67
- depth/pass.
68
- 1a. **Independent pass at every initial depth.** Freeze the candidate; dispatch exact
69
- `devrites-plan-reviewer` fresh/read-only and validate its report. Add exact
70
- `devrites-devex-reviewer` for developer surfaces and require the current exact
71
- `devrites-strategy-reviewer` verdict after significant Temper. Missing accounts
72
- block; never substitute inline work.
73
- 1b. **Recovery recheck.** Require the valid return cursor, prior accepted findings,
74
- exact open fingerprint/reproduction, repaired candidate identity, changed
75
- paths/criteria, and affected evidence from `drift.md` / `evidence.md`. Freeze
76
- that packet and dispatch each exact owning reviewer once, fresh/read-only and
77
- limited to those inputs. Do not rerun unaffected reviewers or the broad steps
78
- 2-4 inventory. Mark the prior fingerprint resolved only when discriminating
79
- evidence closes its reproduction; otherwise record one no-progress outcome.
80
- A newly caused or exposed Critical or Important finding may block only with a
81
- different failed invariant, exact evidence in the changed/affected boundary,
82
- and a new fingerprint. A Suggestion, Nit, or FYI cannot keep recovery open.
83
- Reconcile the common artifact/readiness gates below, then return to the caller
84
- or its next repair; never convert the nested result into a human command.
85
- 2. **Scope challenge (blocking gate):** apply §0 of
86
- [`reference/review-axes.md`](reference/review-axes.md). Search accepted ADRs and
87
- relevant workspace `decisions.md` files directly. Harden to the smallest
88
- behavior-preserving plan; ask only when that changes acceptance or explicit architecture policy.
89
- 2a. **Cross-artifact/project gates.** Check spec/tasks/traceability: every AC/REQ maps by
90
- ID/meaning to slice/proof and back. Check terms, conflicts, principles, anti-slop, conventions;
91
- Critical blocks and principle exceptions are human-owned. Recheck, then write `analysis.md`.
92
- 2b. **Build-entry preflight.** Using [`reference/artifacts.md`](reference/artifacts.md), verify
93
- exact command/cwd/tool/version/prerequisite; output filters must preserve upstream failure or
94
- check producer status separately. Verify packages against authoritative source and nearest
95
- manifest/lockfile; parser-sensitive syntax in an isolated fixture;
96
- applicable UI/browser harnesses. Remeasure decision-bearing counts/versions/state
97
- claims read-only: live facts win; conflicts mark stale artifacts;
98
- unmeasurable conflict = gap. Record complete SHA-256 provenance inputs. Require
99
- every behavioral mapping to name a positive,
100
- discriminating assertion and decisive signal, not merely a command or expected exit zero.
101
- Identify every consumptive action under `one-shot-actions.md`. Before admitting
102
- it, require the exact durable retention surface, trust-safe diagnostic schema,
103
- cleanup ordering, terminal-path coverage, a finite injective boundary map,
104
- per-boundary fault fixtures, and an executed collision mutant in `test-plan.md`.
105
- Every retained failure fingerprint must identify one actionable seam; a broad
106
- operation/cause shared by multiple emit sites is a gap. Missing or stale one-shot evidence completeness is a technical
107
- preflight gap; do not spend the action to learn what cleanup would erase.
108
- Preflight observes; it need not make future behavior pass.
109
- 2c. **Implementation-readiness audit.** Goal-backward map every REQ/AC/NFR, interaction,
110
- edge/prohibition, and decision-coverage row to a slice and executable proof. Verify
111
- UX/spec/architecture alignment, producer-consumer contracts, slice independence/order and
112
- wiring, exact prerequisites, failure paths, operations, observability, rollout, and rollback.
113
- Check `plan.md`'s canonical `Shared contract proof`: every changed API/event/schema or other
114
- provider/consumer boundary needs one reused artifact and two asserting tests that consume it;
115
- no boundary change needs the specific no-impact statement. Missing, one-sided, duplicated-contract,
116
- vague, or non-consuming proof fails closed.
117
- Fold technical fixes into the plan. Product/risk gaps are `NEEDS CLARIFICATION` →
118
- `/rite-clarify`; technical plan/preflight gaps are `NEEDS REPLAN` → `/rite-plan repair`.
119
- Neither becomes a build qid.
120
- 3. **Review four axes:** apply [`reference/review-axes.md`](reference/review-axes.md)
121
- through [`reference/eng-lenses.md`](reference/eng-lenses.md). Fold verified,
122
- behavior-preserving technical findings into the plan. Walk only human-owned decisions with
123
- the human, one coherent option set at a time. The AFK ceiling remains owned by
124
- [`reference/depth.md`](reference/depth.md): scope/acceptance changes and irreversible risk pause.
125
- 4. **Required outputs:** prepare every shape and fold-back in
126
- [`reference/artifacts.md`](reference/artifacts.md), using the review rules in
127
- [`reference/review-axes.md`](reference/review-axes.md). Derive dependency order
128
- from the plan; let the native host schedule independent read-only work while
129
- keeping source writers serial.
130
- Completion: every scenario and acceptance criterion maps to planned positive,
131
- discriminating proof, every slice is
132
- one-pass implementable, the Build-entry preflight is green or names an owned prerequisite,
133
- and developer-facing plans have a predicted `devex.md` scorecard. Durable proof commands
134
- are portable repository commands; host-local wrappers belong only in observed
135
- recorded execution evidence.
136
- 5. **Write and fold back every artifact required by
137
- [`reference/artifacts.md`](reference/artifacts.md).** Route every
138
- acceptance/behavior-changing delta through the **Spec Drift Guard** (`drift.md` +
139
- recorded decision + `/rite-plan repair`). After any edit to
140
- `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or `questions.md`, re-scan the
141
- affected coverage rows, assumption audit, residual uncertainty, and closed gates.
142
- Partial/Missing, an unowned material assumption, or an open blocking/escalating question is
143
- `NEEDS CLARIFICATION` → `/rite-clarify`/HITL; never refresh past it.
144
- After each fold-back rerun step 2a; missing/meaning-changing mappings block.
145
- Keep `state.md` non-READY for step 6.
146
- 6. **One narrow recheck after edits.** If the candidate changed, dispatch exact
147
- `devrites-plan-reviewer` once per correction/fingerprint with accepted findings,
148
- changed paths/criteria, and new identity. Within that same correction, no full
149
- or third loop; if it changes the plan, repeat step 5. If the recheck closes its
150
- input fingerprint but discovers a distinct Critical/Important invariant, return
151
- that new fingerprint to the controlling caller as progress. It may start the
152
- next bounded Plan/Recovery-Vet cycle; the prior reviewer count is not exhaustion.
153
- Then close the matrix and rerun step 2a's ID-and-meaning audit.
154
52
 
155
- 6a. **Build readback.** From the final owning artifacts, add a cited five-line
156
- readback to `eng-review.md` §7: outcome/ACs; IN/OUT and must-NOT boundaries;
157
- UI direction when applicable plus chosen architecture/rationale and
158
- critical happy/error flow; slice order and first slice; decisive proof and
159
- justified action-time gates. Ask whether a fresh implementer could explain and
160
- build it without inventing a product, design, architecture, or proof decision.
161
- Contradictory, ownerless, or materially ambiguous statements block READY:
162
- human-owned behavior, policy, or acceptance returns to `/rite-clarify`;
163
- technical architecture,
164
- slicing, or proof returns to `/rite-plan repair`.
165
- The readback is a derived view and MUST NOT override its cited owners.
53
+ 0. **Orient.** Read core. Resolve active slug, require state, and read plan,
54
+ tasks, spec, decision coverage, optional strategy/design brief, decisions,
55
+ assumptions, and state. Require approved Plan and `Decision coverage: CLEAR`;
56
+ otherwise stop for Define or Clarify. Use code intelligence for placement,
57
+ blast radius, and reuse.
58
+ 1. **Select depth.** Apply `reference/depth.md` exactly; never skip. Every initial
59
+ pass records an engineering verdict and test-plan coverage. A valid Recovery
60
+ recheck retains prior depth and enters 1b.
61
+ 1a. **Independent initial pass.** Freeze candidate and dispatch exact fresh
62
+ read-only plan reviewer. Add developer-experience reviewer for developer
63
+ surfaces and current strategy reviewer after significant Temper. Missing
64
+ required account blocks.
65
+ 1b. **Recovery recheck.** Require valid return cursor, accepted prior finding,
66
+ exact fingerprint/reproduction, repaired candidate identity, changed
67
+ paths/criteria, and affected drift/evidence. Freeze that packet and dispatch
68
+ each exact owning reviewer once, fresh/read-only, limited to it. Do not rerun
69
+ broad inventory or unaffected reviewers. Close the prior fingerprint only
70
+ with discriminating evidence. Otherwise record one no-progress outcome. A
71
+ different Critical/Important invariant needs exact evidence and a new
72
+ fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open. Reconcile
73
+ shared artifact/readiness gates and return to caller or next repair.
74
+ 2. **Challenge scope.** Apply review-axes §0 and search accepted decisions.
75
+ Harden to the smallest contract-complete plan, using marked topology action.
76
+ Then verify bidirectional ID-and-meaning traceability across spec/tasks/
77
+ acceptance, terms, principles, anti-slop, and conventions. Critical gaps and
78
+ unexcepted principle breaches block; write `analysis.md` after recheck.
79
+ 3. **Preflight Build entry.** Under `reference/artifacts.md`, verify exact
80
+ command/cwd/tool/version/prerequisite; output filters must preserve upstream
81
+ failure. Verify dependencies from authoritative source plus nearest manifest.
82
+ Run parser-sensitive syntax only in isolated fixtures. Remeasure mutable facts;
83
+ live evidence wins, conflict marks stale, and unmeasurable conflict is a gap.
84
+ Record complete SHA-256 provenance. Every behavioral mapping names a positive
85
+ discriminating assertion and decisive signal, never only exit zero.
166
86
 
167
- Write one typed field to `eng-review.md`: `Implementation readiness: READY`,
168
- `NEEDS CLARIFICATION`, or `NEEDS REPLAN`. Root alone sets READY after every
169
- exact account, checklist, proof preflight, and final sweep passes with no
170
- foreseeable human choice except a justified action-time checkpoint. Write
171
- `Phase: vet`, `Next step: /rite-build`, then emit the one exact
172
- `Readiness inputs SHA-256` line with `devrites-engine check readiness
173
- --emit-binding <slug>` only after this recheck. Normal `devrites-engine check
174
- readiness <slug>` must then pass; otherwise record the blocker. Technical failure
175
- records repro and `/rite-plan repair`, no qid; a human-owned gap routes
176
- `/rite-clarify` and awaiting-human.
177
- [`reference/cross-model.md`](reference/cross-model.md) owns the optional explicit
178
- cross-model integration.
179
- Completion: the final axis floor clears, an objective technical blocker is recorded, or a
180
- genuine human-owned gate is recorded.
181
- When READY has no pending remediation slice and a valid technical return
182
- cursor exists, restore and consume the return cursor instead of defaulting to
183
- `/rite-build`, then return the nested result to the controlling caller. If
184
- vetted remediation remains, preserve the cursor while the caller follows it;
185
- only a real stop condition reaches the human.
186
- 7. **STOP.** Show the Build readback, scope verdict, lowest axis band, closed coverage
187
- gaps, preflight, action-time checkpoints, and failure-mode criticals; recommend
188
- `/rite-build` only when the entry contract is ready.
87
+ For each consumptive action, one-shot evidence completeness must bind durable
88
+ retention, trust-safe diagnostics, cleanup order, terminal coverage, finite
89
+ injective boundary map, per-boundary fault fixtures, and an executed collision mutant.
90
+ Every fingerprint identifies one actionable seam; aliasing multiple
91
+ emit sites is a gap. Preflight observes but need not make future behavior pass.
92
+ 4. **Audit readiness.** Goal-backward map every requirement, criterion, NFR,
93
+ interaction, edge/prohibition, and decision row to one slice and executable
94
+ proof. Verify UX/spec/architecture alignment, contracts, dependency order,
95
+ slice independence/wiring, prerequisites, failure/observability/rollback, and
96
+ ownership. The plan's `Shared contract proof` names one reused boundary
97
+ artifact plus two consuming tests for every changed API/event/schema/provider-
98
+ consumer seam, or an explicit no-impact statement. Missing, one-sided,
99
+ duplicated-contract, vague, or non-consuming proof fails closed.
189
100
 
190
- > **Mid-flight discipline.** Do not replace the interactive review with
191
- > `eng-review.md`, change acceptance through plan hardening, score without source
192
- > evidence, or ignore unexplained complexity. See
193
- > [`reference/anti-patterns.md`](reference/anti-patterns.md).
101
+ Technical gaps are `NEEDS REPLAN` and Plan repair. Product/risk gaps are
102
+ `NEEDS CLARIFICATION` and Clarify. Neither becomes a Build qid.
103
+ 5. **Review axes.** Apply `review-axes.md` through `eng-lenses.md`. Fold verified
104
+ behavior-preserving technical findings; walk only human-owned decisions.
105
+ Profile gate ceiling and Reslice marked action remain authoritative.
106
+ 6. **Write outputs.** Produce every artifact in `reference/artifacts.md`. After
107
+ editing intent/decision/assumption/question owners, re-scan affected coverage,
108
+ assumptions, uncertainty, and gates. Keep state non-READY. Every scenario and
109
+ criterion needs positive, discriminating proof; every slice must be one-pass
110
+ implementable; developer plans need a predicted scorecard. Durable commands
111
+ are portable repository commands, not host wrappers.
112
+ 7. **Narrow recheck after edits.** Dispatch exact plan reviewer once per
113
+ correction/fingerprint (`per correction/fingerprint`) with accepted findings,
114
+ changed paths/criteria, and new
115
+ identity. Within one correction, no broad third loop. If it changes plan,
116
+ fold again. A closed input plus a distinct Critical/Important invariant returns
117
+ that new fingerprint as progress. Then close matrix and rerun ID/meaning audit.
118
+ 8. **Build readback and readiness.** Add a cited five-line readback to
119
+ `eng-review.md`: outcome/ACs; IN/OUT/must-NOT; UI direction and architecture/
120
+ critical flow; slice order/first slice; decisive proof/action-time gates. A
121
+ fresh implementer must need no product, architecture, or proof invention.
122
+ Contradiction, ownerlessness, or material ambiguity blocks via Clarify or Plan.
123
+
124
+ Write exactly one `Implementation readiness: READY`, `NEEDS CLARIFICATION`,
125
+ or `NEEDS REPLAN`. Root alone sets READY after every account, checklist,
126
+ preflight, and sweep is green. Write phase/next step and emit one
127
+ `Readiness inputs SHA-256` with
128
+ `devrites-engine check readiness --emit-binding <slug>`; normal readiness check
129
+ must pass. Technical failure records reproduction, not qid. Human gap awaits
130
+ Clarify. Optional cross-model follows `reference/cross-model.md`.
131
+
132
+ With READY, no pending remediation, and a valid technical return cursor,
133
+ restore and consume the return cursor instead of defaulting to Build. Preserve
134
+ it through admitted remediation. Only a real stop reaches the human.
135
+ 9. **Stop at the Vet boundary.** Show Build readback, scope verdict, lowest axis,
136
+ closed gaps, preflight, action checkpoints, and critical failures. Recommend
137
+ Build only when READY.
138
+
139
+ > Do not replace interactive review with artifacts, change acceptance through
140
+ > hardening, score without source evidence, or ignore unexplained complexity.
@@ -4,13 +4,21 @@ Universal rationalizations + red flags live in
4
4
  [`../../devrites-lib/reference/standards/anti-patterns.md`](../../devrites-lib/reference/standards/anti-patterns.md): read it when the
5
5
  reluctance is broader than this phase. Below are the vet-specific ones.
6
6
 
7
+ Authority: `.claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
8
+
9
+ <!-- BEGIN RESLICE ROUTE-TO-ACTION -->
10
+ - `FOLD` → fold technical topology; invalidate Vet/readiness; affected Vet before Build.
11
+ - `GUARD_AND_REPAIR` → no planning writes; Spec Drift Guard → Clarify → Plan repair → affected Vet.
12
+ - `BLOCKED_INPUT` → no planning writes; exact diagnostic; recover input; reclassify.
13
+ <!-- END RESLICE ROUTE-TO-ACTION -->
14
+
7
15
  ## Phase rationalizations
8
16
 
9
17
  | Excuse | Rebuttal |
10
18
  |---|---|
11
19
  | "I'll write all the findings into `eng-review.md` and let the user read it." | The artifact is the *output* of an interactive review, not a substitute for it. A material finding's path to "done" goes **through `AskUserQuestion`**, one at a time, with a recommendation + why. Dumping findings into one write and moving on is the exact failure this skill exists to prevent. |
12
20
  | "The plan doesn't handle X: flag it." (without checking) | Quote the line first. If you can't quote where the plan handles X, you also can't be sure it doesn't: force confidence ≤4 and suppress. The "field/case doesn't exist" finding is the most common false positive; the verification gate exists to kill it. |
13
- | "It's an obvious fix. I'll just edit the plan." | An obvious *plan refinement* (a test requirement, an error path, tighter scope) you write directly. That's vet's job. A fix that **changes an acceptance criterion or product behavior** is not obvious enough to skip the human: route it through the Spec Drift Guard with a recorded decision. |
21
+ | "It's an obvious fix. I'll just edit the plan." | Verified plan hardening is Vet's job; topology uses the marked action. |
14
22
  | "This dimension is thin but the others are strong: net it's fine." | The gate is the **floor**, not the average. A plan `broken` on test-coverage does not pass because it's `strong` on architecture. |
15
23
  | "I can see it's adequate. I'll note the band, the evidence is obvious." | Cite the quoted evidence **before** the band. Score-first-justify-later is how a reviewer waves through a plan it already likes. |
16
24
  | "8+ files but it all needs to change: proceed." | The complexity smell is a **STOP-and-ask**, not a note. Name the overbuilt part, propose the smaller version that still meets acceptance, and let the human decide before any axis runs. Maybe it's justified (record *why*) but the gate fires first. |
@@ -18,11 +26,15 @@ reluctance is broader than this phase. Below are the vet-specific ones.
18
26
  | "Performance looks fine." | "Looks fine" is not a measurement. A perf finding is "measure X against budget Y" or it's nothing: don't recommend speculative tuning, and don't wave past an N+1 you can quote. |
19
27
  | "Cross-model agrees, so apply it." | Cross-model consensus is a strong *signal*, not an approval. Every cross-model finding is informational until the human approves it (or, in AFK, until the gate ceiling clears a hardening-only change). |
20
28
 
29
+ ## Reslice classifier rationalizations
30
+
31
+ **RSLICE-VET-001** — Slice/topology growth alone does not stop; fewer slices do not prove scope reduction; remediation does not grow product.
32
+
21
33
  ## Red flags
22
34
  - `eng-review.md` / `test-plan.md` written but `plan.md` / `tasks.md` **not** hardened: the build
23
35
  follows the plan, so the review changed nothing.
24
36
  - A finding raised with confidence ≥7 but **no quoted source line**, that defeats the verification gate.
25
- - A scope-growing finding auto-applied in AFK (it must pause), or any irreversible-risk touch that didn't pause.
37
+ - Acceptance/product-behavior growth auto-applied in AFK, or an orthogonal human-owned gate that did not pause.
26
38
  - A failure-mode table with rows but no verdict column filled: a "no test + no handling + silent" row not marked Critical.
27
39
  - The reviewer loop running past 3 iterations, or the reviewer / cross-model being handed the author's reasoning (defeats the fresh-context point).
28
40
  - The skill writing code, implementing a slice, or running the build. That's `/rite-build`. Vet reviews and hardens the plan; it never implements.