devrites 6.0.2 → 6.0.4

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 (161) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/docs/adr/0034-workflow-artifact-byte-corrections-get-code-review.md +60 -0
  4. package/docs/adr/README.md +2 -1
  5. package/docs/engine/commands.md +8 -8
  6. package/engine/help.go +12 -7
  7. package/engine/help_test.go +1 -0
  8. package/engine/internal/gate/readiness_binding.go +19 -0
  9. package/engine/internal/lib/cli_observe.go +16 -0
  10. package/engine/internal/lib/context.go +197 -19
  11. package/engine/internal/lib/context_next_test.go +238 -0
  12. package/engine/internal/lib/dispatch.go +189 -15
  13. package/engine/internal/lib/drift.go +10 -2
  14. package/engine/internal/lib/drift_test.go +29 -0
  15. package/engine/internal/lib/metrics.go +74 -1
  16. package/engine/internal/lib/observe_budgets_test.go +32 -0
  17. package/engine/internal/lib/observe_summary.go +8 -0
  18. package/engine/internal/lib/slicecheck.go +19 -0
  19. package/engine/internal/lib/slicecheck_test.go +41 -0
  20. package/engine/internal/lib/windows.go +109 -13
  21. package/engine/internal/lib/windows_test.go +85 -0
  22. package/engine/main.go +3 -3
  23. package/pack/.claude/agents/devrites-slice-wright.md +7 -2
  24. package/pack/.claude/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
  25. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
  26. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +1 -1
  27. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  28. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +3 -0
  29. package/pack/.claude/skills/devrites-lib/reference/standards/glossary.md +1 -1
  30. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +1 -0
  31. package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +11 -3
  32. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
  33. package/pack/.claude/skills/rite-build/SKILL.md +1 -1
  34. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -1
  35. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +3 -2
  36. package/pack/.claude/skills/rite-build/reference/output.md +1 -1
  37. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +5 -3
  38. package/pack/.claude/skills/rite-build/reference/phase-contract.md +7 -3
  39. package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +3 -1
  40. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +23 -9
  41. package/pack/.claude/skills/rite-define/SKILL.md +2 -1
  42. package/pack/.claude/skills/rite-plan/SKILL.md +2 -1
  43. package/pack/.claude/skills/rite-pressure-test/SKILL.md +6 -3
  44. package/pack/.claude/skills/rite-vet/SKILL.md +9 -1
  45. package/pack/.claude/skills/rite-vet/reference/review-axes.md +6 -2
  46. package/pack/generated/claude/agents/devrites-slice-wright.md +7 -2
  47. package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
  48. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
  49. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +1 -1
  50. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  51. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +3 -0
  52. package/pack/generated/claude/skills/devrites-lib/reference/standards/glossary.md +1 -1
  53. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +1 -0
  54. package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +11 -3
  55. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
  56. package/pack/generated/claude/skills/rite-build/SKILL.md +1 -1
  57. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +3 -1
  58. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +3 -2
  59. package/pack/generated/claude/skills/rite-build/reference/output.md +1 -1
  60. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +5 -3
  61. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +7 -3
  62. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +3 -1
  63. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +23 -9
  64. package/pack/generated/claude/skills/rite-define/SKILL.md +2 -1
  65. package/pack/generated/claude/skills/rite-plan/SKILL.md +2 -1
  66. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +6 -3
  67. package/pack/generated/claude/skills/rite-vet/SKILL.md +9 -1
  68. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +6 -2
  69. package/pack/generated/codex/agents/devrites-slice-wright.toml +7 -2
  70. package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
  71. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
  72. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +1 -1
  73. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  74. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +3 -0
  75. package/pack/generated/codex/skills/devrites-lib/reference/standards/glossary.md +1 -1
  76. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +1 -0
  77. package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +11 -3
  78. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
  79. package/pack/generated/codex/skills/rite-build/SKILL.md +1 -1
  80. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +3 -1
  81. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +3 -2
  82. package/pack/generated/codex/skills/rite-build/reference/output.md +1 -1
  83. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +5 -3
  84. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +7 -3
  85. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +3 -1
  86. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +23 -9
  87. package/pack/generated/codex/skills/rite-define/SKILL.md +2 -1
  88. package/pack/generated/codex/skills/rite-plan/SKILL.md +2 -1
  89. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +6 -3
  90. package/pack/generated/codex/skills/rite-vet/SKILL.md +9 -1
  91. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +6 -2
  92. package/pack/generated/devin/agents/devrites-slice-wright.md +7 -2
  93. package/pack/generated/devin/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
  94. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
  95. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +1 -1
  96. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  97. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +3 -0
  98. package/pack/generated/devin/skills/devrites-lib/reference/standards/glossary.md +1 -1
  99. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +1 -0
  100. package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +11 -3
  101. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
  102. package/pack/generated/devin/skills/rite-build/SKILL.md +1 -1
  103. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +3 -1
  104. package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +3 -2
  105. package/pack/generated/devin/skills/rite-build/reference/output.md +1 -1
  106. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +5 -3
  107. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +7 -3
  108. package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +3 -1
  109. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +23 -9
  110. package/pack/generated/devin/skills/rite-define/SKILL.md +2 -1
  111. package/pack/generated/devin/skills/rite-plan/SKILL.md +2 -1
  112. package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +6 -3
  113. package/pack/generated/devin/skills/rite-vet/SKILL.md +9 -1
  114. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +6 -2
  115. package/pack/generated/omp/agents/devrites-slice-wright.md +7 -2
  116. package/pack/generated/omp/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
  117. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
  118. package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +1 -1
  119. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  120. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +3 -0
  121. package/pack/generated/omp/skills/devrites-lib/reference/standards/glossary.md +1 -1
  122. package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +1 -0
  123. package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +11 -3
  124. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
  125. package/pack/generated/omp/skills/rite-build/SKILL.md +1 -1
  126. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +3 -1
  127. package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +3 -2
  128. package/pack/generated/omp/skills/rite-build/reference/output.md +1 -1
  129. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +5 -3
  130. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +7 -3
  131. package/pack/generated/omp/skills/rite-build/reference/spec-drift-guard.md +3 -1
  132. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +23 -9
  133. package/pack/generated/omp/skills/rite-define/SKILL.md +2 -1
  134. package/pack/generated/omp/skills/rite-plan/SKILL.md +2 -1
  135. package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +6 -3
  136. package/pack/generated/omp/skills/rite-vet/SKILL.md +9 -1
  137. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +6 -2
  138. package/pack/generated/pi/agents/devrites-slice-wright.md +7 -2
  139. package/pack/generated/pi/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
  140. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
  141. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +1 -1
  142. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  143. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +3 -0
  144. package/pack/generated/pi/skills/devrites-lib/reference/standards/glossary.md +1 -1
  145. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +1 -0
  146. package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +11 -3
  147. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
  148. package/pack/generated/pi/skills/rite-build/SKILL.md +1 -1
  149. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +3 -1
  150. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +3 -2
  151. package/pack/generated/pi/skills/rite-build/reference/output.md +1 -1
  152. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +5 -3
  153. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +7 -3
  154. package/pack/generated/pi/skills/rite-build/reference/spec-drift-guard.md +3 -1
  155. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +23 -9
  156. package/pack/generated/pi/skills/rite-define/SKILL.md +2 -1
  157. package/pack/generated/pi/skills/rite-plan/SKILL.md +2 -1
  158. package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +6 -3
  159. package/pack/generated/pi/skills/rite-vet/SKILL.md +9 -1
  160. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +6 -2
  161. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
1
  # Windows — the deferral ledger
2
2
 
3
3
  > Applies when: a change introduces a deferral marker (TODO, FIXME, XXX, HACK,
4
- > a skipped test, a stub body) or `windows.md` waivers are authored or judged.
4
+ > a skipped or focused test, a stub body), lowers the bar (a checker
5
+ > suppression, an empty catch, a deleted test file, stripped assertions), or
6
+ > `windows.md` waivers are authored or judged.
5
7
 
6
8
  `windows.md` is the broken-windows ledger. A review finding can describe a new
7
9
  `TODO`, a skipped test, or a stubbed body; this artifact makes the register
@@ -24,7 +26,8 @@ Optional until a marker is introduced: a feature with no new markers needs no
24
26
  that marker. Five new TODOs in one file need five rows — a blanket row
25
27
  cannot cover them.
26
28
  - `marker token` is the literal marker the checker reported (`TODO`, `t.Skip(`,
27
- `NotImplementedError`, `panic("TODO`, …).
29
+ `NotImplementedError`, `panic("TODO`, `it.only(`, `eslint-disable`, `noqa`,
30
+ `nolint`, `#nosec`, `empty-catch`, `deleted-test`, `removed-assertion`, …).
28
31
  - `reason` must be non-empty and should name the follow-up owner or slice; a
29
32
  row with an empty reason warns and waives nothing.
30
33
  - Rows never suppress coverage — they explain it. Reviewers still judge
@@ -39,8 +42,13 @@ devrites-engine check windows <slug> [--worktree|--staged|--base <ref>]
39
42
  Exit `0` when no marker is introduced or every hit is waived; `3` when any
40
43
  introduced marker lacks a waiver or the workspace/ledger is unreadable; `2`
41
44
  on usage errors. It parses the unified diff (`-U0`), treats untracked files as
42
- wholly new in `--worktree`, and ignores binary files, deletions, and
45
+ wholly new in `--worktree`, and ignores binary files, non-test deletions, and
43
46
  `.devrites/` paths; `--staged` and `--base` cover the tracked diff only.
47
+ Removals are file-level hits: a deleted test file is `deleted-test`, and a test
48
+ file that remains but loses assertion lines on net is `removed-assertion`
49
+ (moving an assertion within the file is not a loss; a git-detected rename is
50
+ not a deletion). Loosened thresholds have no deterministic signal and stay a
51
+ review judgment ([`code-review.md`](code-review.md) § Bar integrity).
44
52
 
45
53
  ## Reviewer posture
46
54
 
@@ -64,7 +64,7 @@ accept safe legacy basenames. Ordinary phases never rename them.
64
64
  | `review.md` | reconciled Review verdict: `## Spec` and `## Code review` accounts, deferred-finding labels/actions, drift | 240 lines |
65
65
  | `seal.md` | seal preflight, exact reviewer roster accounts, GO/NO-GO verdict and disclosures | 200 lines |
66
66
  | `ai-spec.md` | model/RAG/agent/eval/LLM-output scope for AI surfaces | 160 lines |
67
- | `windows.md` | deferral-marker waiver ledger: one `- path | marker | reason` row per introduced marker; `check windows` fails on unwaived hits | 120 lines |
67
+ | `windows.md` | deferral/bar-lowering waiver ledger: one `- path | marker | reason` row per introduced marker; `check windows` fails on unwaived hits | 120 lines |
68
68
  | `notes.md` | `NOTE-###` anchored notes — rationale/warnings bound to a verbatim quote in one repository file; `note check` regrades anchors and drift blocks seal | 160 lines |
69
69
 
70
70
  For visual pairs load only matching [playbooks](visual-playbooks/index.md); use
@@ -230,7 +230,10 @@ Done condition: <checkable, exhaustive completion criterion>
230
230
  `depends_on` is the machine-readable mirror of `Dependencies`; keep the sets
231
231
  identical and cycle-free. `Gate`, `SLA`, and `Checkpoint` are required for HITL
232
232
  slices; use `none` when they do not apply. Complexity above 3 triggers reslicing
233
- unless the stated reason makes the boundary irreducible.
233
+ unless the stated reason makes the boundary irreducible. A Writer allowlist of 12+
234
+ files prints an engine `ADVISORY size:` line (`check task-graph`, `check slice`;
235
+ never blocking): split it acceptance-preserving, or add `Size rationale:` naming
236
+ the inseparable capability.
234
237
 
235
238
  ## Read next by phase
236
239
 
@@ -5,7 +5,7 @@ argument-hint: "[--parallel N] [slice number or name]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
8
+ <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"rootOnly":["rite-build/reference/phase-contract.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/output.md","rite-build/reference/afk-discipline.md","rite-build/reference/checkpoint-protocol.md","rite-build/reference/parallel-batch.md","devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/standards/workflow-artifacts.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
9
9
  > Read-set manifest: `devrites-engine context <slug> --phase build` bundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.
10
10
 
11
11
 
@@ -9,7 +9,9 @@ contract for the sentinel schema, defaults, gate ceiling, and mutable-counter
9
9
  ownership. This file owns only Build's dispatch, charging, and red-path behavior.
10
10
 
11
11
  Rules: green before `built`; hard `max_slices` cap; gates before the action they
12
- control; irreversible work (destructive/auth/public API) always pauses.
12
+ control; irreversible work (destructive/auth/public API) always pauses; a tick
13
+ never ends with an open or sealed wave — wait for its returns or
14
+ `dispatch abandon --reason`.
13
15
 
14
16
  ## Iteration cap
15
17
 
@@ -21,8 +21,9 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
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
- 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)
24
+ PROVE → root, concurrent with the reviews on the same frozen candidate:
25
+ required build/browser/E2E, then returned-diff/path recheck; fail-on-red
26
+ (red/gap → repair wright, then re-review and re-prove; do not commit yet)
26
27
  RECORD → orchestrator: after green verification, update state.md/evidence.md and
27
28
  upsert the authoritative candidate manifest from the actual scoped diff
28
29
  (CHECKPOINT) → only now, with review+proof green: local WIP(<slug>): <imperative summary>
@@ -9,7 +9,7 @@ Evidence: acceptance met; tests <cmd> → pass; browser <summary|n/a>; drift <no
9
9
  Open: <none|blockers|questions>
10
10
  Next: /rite-build
11
11
  Record: .devrites/work/<slug>/evidence.md
12
- ↻ Hygiene: /clear between slices; /rite-handoff if away > a few hours
12
+ ↻ Hygiene: /clear between slices (none in `orient` `inflight_waves`); /rite-handoff if away > a few hours
13
13
  ```
14
14
 
15
15
  **All built:**
@@ -94,13 +94,15 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
94
94
  <id>`; a malformed contract is dropped from the batch and recorded as a
95
95
  gap, not dispatched.
96
96
  2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
97
- 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`).
97
+ 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`;
98
+ one `--slice` per sibling on the wave).
98
99
  4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
99
100
  and required result fields against the immutable contract. Reject malformed,
100
101
  stale, or out-of-scope work. Apply
101
102
  [independent Build review](phase-contract.md#independent-build-review): first
102
- full inventory, then bounded owning-role rechecks after repairs. Gap or
103
- Critical/Important → `gap`; else approved proof → `green|red|gap`.
103
+ full inventory, then bounded owning-role rechecks after repairs. Run approved
104
+ proof in the same window as that review. Gap or Critical/Important → `gap`;
105
+ else proof → `green|red|gap`.
104
106
  Reviewer fan-out for a batch is itself batched under
105
107
  [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md#scale-limits)
106
108
  (≈4 concurrent read-only reviewers, 8 only with disjoint paths), and `max_agents`
@@ -14,6 +14,8 @@ Spec Drift Guard still applies.
14
14
  `Implementation readiness: READY`, current `Readiness inputs SHA-256`, exact
15
15
  required accounts, ID/meaning traceability and green proof preflight.
16
16
  Run `devrites-engine check readiness <slug>`; any miss/nonzero blocks.
17
+ Non-empty `orient` `inflight_waves` is reconciled first: `dispatch return` each
18
+ role whose account is in hand, else `dispatch abandon --reason` and re-dispatch.
17
19
  2. **Select.** Pick the lowest pending slice whose `depends_on` are all built, using
18
20
  `orient` `task_graph.slices` plus the `state.md` built list — never by scanning
19
21
  `tasks.md`; then `observe slice` it. Restate its goal, ACs, exclusions and exact paths. Include
@@ -33,11 +35,13 @@ Spec Drift Guard still applies.
33
35
  spending review. Then compare returned paths and `git diff --name-only` with the
34
36
  contract for semantics diff-scope cannot judge (stale/partial/malformed work;
35
37
  preserved user work). Restoration uses the bounded wright.
36
- 5. **Review.** Apply [Independent Build review](#independent-build-review).
38
+ 5. **Review.** Apply [Independent Build review](#independent-build-review). Run step 6
39
+ proof in the same window on the same frozen candidate; both gate step 7, and a
40
+ repair or source-mutating proof voids both.
37
41
  Missing verdicts, principle breaches and open Critical/Important block acceptance.
38
42
  6. **Prove.** Against the frozen pre-slice candidate inspect
39
43
  test hunks for deletion, skipping/focus, tautology, or weaker expectations.
40
- Use step 5's exact test-analyst account; missing/adverse criterion verdict is
44
+ Wait for step 5's exact test-analyst account; missing/adverse criterion verdict is
41
45
  Critical. Run only `test-plan.md` repository/CI commands, record output, recheck
42
46
  `git diff --name-only`. Missing/weakened/red/source-mutating proof cannot pass.
43
47
  Pre-existing/environment-specific claims need a predating same-command,
@@ -70,7 +74,7 @@ inventory: one full-diff `devrites-code-reviewer`, one `devrites-test-analyst`,
70
74
  and one exact `devrites-doubt-reviewer` per stood decision that meets
71
75
  `devrites-doubt` § When to use (boundary, data model, auth, public API, migration,
72
76
  user flow, assumption tests cannot prove); other stood decisions are recorded in
73
- `decisions.md` without dispatch. Dispatch fresh,
77
+ `decisions.md` without dispatch. Bundles take `--slice <SLICE-ID>`. Dispatch fresh,
74
78
  read-only under [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
75
79
  Wait for every required account to become terminal; missing/gap needs a valid result.
76
80
  Fold supported in-scope Critical/Important findings by cause into one inventory.
@@ -22,7 +22,9 @@ phases. Never silently code against a known-wrong plan.
22
22
  4. Local repair that preserves behavior/scope/architecture/data/UX/security/migration?
23
23
  YES, active-slice technical/tool failure → log it and use Build's bounded debug
24
24
  recovery. Do not ask for retry authorization and do not re-plan unless the
25
- durable remaining-work instructions are wrong.
25
+ durable remaining-work instructions are wrong. A Workflow Artifact byte fix
26
+ that keeps every admission row is this case: `OFFLINE_RECOVERY`, then
27
+ `/rite-vet`'s bytes-only recheck — never `/rite-plan repair`.
26
28
  YES, durable plan is wrong → run the batch sweep below, log every
27
29
  violation, save the caller's return cursor, then invoke `/rite-plan repair` and `/rite-vet` inline
28
30
  without a question — ONE folded repair for all open entries, ONE
@@ -55,8 +55,9 @@ worktrees stay forbidden.
55
55
  2. Include goal, verbatim acceptance, exclusions, context,
56
56
  `test-plan.md` proof commands, applicable standards, and the exact
57
57
  `WIP(<slug>):` subject (no slice id). Build the wright's read-set with
58
- `devrites-engine context <slug> --phase build --role slice-wright --trigger <set>`
59
- and hand it the bundle path; evaluate each trigger condition and pass those
58
+ `devrites-engine context <slug> --phase build --role slice-wright --slice <SLICE-ID> --trigger <set>`
59
+ and hand it the bundle path (over-budget artifacts arrive as anchor indexes;
60
+ read owning sections live). Evaluate each trigger condition and pass those
60
61
  that fire (TDD slice → `tdd`, AFK run → `afk`, UI work → `frontend`, …).
61
62
  The command prints `unselected=[...]`; an omitted applicable trigger is a gap.
62
63
  For each triggered
@@ -80,8 +81,14 @@ is never a task path; see [Workflow Artifact admission](../../devrites-lib/refer
80
81
  Ask the host
81
82
  for the exact writer in fresh context and wait. Track it through the
82
83
  launch barrier — `devrites-engine dispatch <slug> open --phase build --wave
83
- <slice-id> --role slice-wright`, then `start` with the host handle, `seal`, and
84
- `return` on completion (auto-records dispatch/return metrics). Use
84
+ <slice-id> --role slice-wright --slice <SLICE-ID>`, then `start` with the host handle, `seal`, and
85
+ `return` on completion (auto-records dispatch/return metrics). Every 5 wright
86
+ rounds on one slice, `open` blocks for a reslice review: propose an
87
+ acceptance-preserving split (`root_no_change_analysis` → `FOLD` per
88
+ [acceptance-preserving-reslice](../../devrites-lib/reference/standards/acceptance-preserving-reslice.md);
89
+ open findings move to the new slice owning their paths), or record
90
+ `## <DRIFT-ID> — <SLICE-ID> reslice review` with why no smaller split exists and
91
+ reopen with `--reslice-review <DRIFT-ID>`. Use
85
92
  at most one writer across all linked worktrees for this workspace. Never run two
86
93
  writers in one worktree, run isolated and same-worktree writers concurrently, or
87
94
  substitute a generic agent. Opt-in `/rite-build --parallel N` fans out only under
@@ -106,17 +113,24 @@ TTL is crash recovery, not normal cleanup.
106
113
  Reject a result that omits any required key — the bookkeeping arrays count
107
114
  whether empty or filled — or adds a path. Root never widens scope or edits
108
115
  source.
109
- 2. Inspect the test diff for deletion, skipping, focus markers, or loosened
116
+ 2. Run `devrites-engine check windows <slug>` on the wright's diff (`--worktree`
117
+ in the same tree; `--base <B> --cwd <worktree>` for a parallel transfer
118
+ commit). Each unwaived hit is repaired through the bounded wright or gets a
119
+ reasoned `windows.md` row before review; never waive to reach green. Then
120
+ inspect the test diff for deletion, skipping, focus markers, or loosened
110
121
  assertions. Dedicated test analysis treats weakening as Critical.
111
122
  Confirm a test for a data/integration/topology risk can actually exhibit that risk;
112
123
  mocks that erase it and one-root proof offered for another root are unproven.
113
124
  3. Apply [independent Build review](phase-contract.md#independent-build-review)
114
- before proof. Human choices return; technical failures follow
125
+ and, in the same window, run only repository proof already approved by
126
+ `test-plan.md` against the same frozen candidate; neither waits for the
127
+ other. Human choices return; technical failures follow
115
128
  [the canonical retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
116
129
  Derive accounting from recorded reproductions, corrections, and decisive rechecks.
117
- 4. Run only repository proof already approved by `test-plan.md`, then inspect
118
- `git diff --name-only` again in case a proof tool changed source.
119
- **Do not land on control until review and proof are green.** Isolated
130
+ 4. After proof, inspect `git diff --name-only` again in case a proof tool changed
131
+ source; a change rejects that candidate and voids the concurrent review. A
132
+ repair wright voids both; rerun both on the new candidate.
133
+ **Do not land on control until review and proof are both green.** Isolated
120
134
  `transfer_commit` stays on the worker branch; same-worktree diffs stay
121
135
  uncommitted. Serial: [`checkpoint.md`](checkpoint.md), then host may remove the
122
136
  worktree. Parallel: `record-green` only; land with `parallel integrate
@@ -158,7 +158,8 @@ Pull these via `Read` when shaping the plan:
158
158
  acceptance, and names/prose agree. Missing, duplicate, contradictory, or
159
159
  meaning-changing mappings block. Then run
160
160
  `devrites-engine check task-graph <slug>`; a malformed dependency graph blocks
161
- before Vet rather than spending a reviewer context on invalid tasks.
161
+ before Vet rather than spending a reviewer context on invalid tasks. Resolve each
162
+ `ADVISORY size:` line now (split, or `Size rationale:`); it never blocks.
162
163
  7. **Readiness gate** (`plan-template.md`): require CLEAR coverage; complete acceptance,
163
164
  wiring, shared-contract proof, applicable outputs, and rollback; risk-first acyclic order;
164
165
  justified deviations; and every horizon item present, with blockers resolved, planning
@@ -79,7 +79,8 @@ Before classifying any Reslice, read `.claude/skills/devrites-lib/reference/stan
79
79
  `/rite-spec`, and stop.
80
80
  See [replan-and-repair](reference/replan-and-repair.md) for each mode's steps.
81
81
  2a. **Draft fresh.** Dispatch `devrites-plan-drafter` in `repair` mode with frozen mode,
82
- affected artifacts, settled contract, and failure/drift. Await one atomic, read-only
82
+ affected artifacts, settled contract, and failure/drift; a slice-bound repair
83
+ builds its bundle with `--slice <SLICE-ID>` per affected slice. Await one atomic, read-only
83
84
  the drafter's `candidate_files` bundle; human choices return separately.
84
85
  When the observed failure is missing or ambiguous consumptive-action evidence,
85
86
  require the drafter to apply [`one-shot-actions.md`](../devrites-lib/reference/standards/one-shot-actions.md) and return the bounded
@@ -18,7 +18,8 @@ first and write only workspace/ticket artifacts.
18
18
  - Search `decisions.md`, accepted ADRs, and relevant archives for rejected directions;
19
19
  revive one only with evidence that answers its recorded reason, citing both.
20
20
  - Generate 3-5 different shapes, including obvious, smaller, and different-boundary/data/
21
- flow options. Use named lenses— inversion, constraint removal, audience shift, 10×, or
21
+ flow options, plus a **do-nothing baseline** (cost of not building) that every option
22
+ must beat. Use named lenses— inversion, constraint removal, audience shift, 10×, or
22
23
  expert practice—without padding. Borrow analogous mechanisms, not branding.
23
24
  - For each, name concrete entities/flows/surfaces, optimization, rough cost, and main risk.
24
25
 
@@ -27,7 +28,9 @@ first and write only workspace/ticket artifacts.
27
28
  - Weigh options against the goal, constraints, and existing codebase conventions.
28
29
  - Prefer felt pain over nice-to-have. Rank differentiation: new capability > 10× gain >
29
30
  new audience > new context > better UX > cheaper; do not dress a vitamin as a painkiller.
30
- - Recommend one, with the reason and the key trade-off accepted.
31
+ - Recommend one, with the reason and the key trade-off accepted. When no option beats
32
+ the do-nothing baseline, recommend **Kill**: record the reason in `decisions.md` and
33
+ do not route to `/rite-spec`.
31
34
  - Note what would change the recommendation (the decision's hinge).
32
35
 
33
36
  ## Premise evidence floor
@@ -65,7 +68,7 @@ Done: pressure test complete for <goal>.
65
68
  Changed: workspace only
66
69
  Evidence: options compared <n>; recommendation <option>; hinge <condition>; premises <supported/assumption/refuted + sources>
67
70
  Open: <none | unresolved premise and resolving evidence>
68
- Next: <when supported: /rite-spec <feature>; when Hold: none — requires <resolving evidence>>
71
+ Next: <when supported: /rite-spec <feature>; when Hold: none — requires <resolving evidence>; when Kill: none — not building: <reason>>
69
72
  Record: <investigation-map.md path | questions.md id (Hold) | not applicable>
70
73
  ↻ Hygiene: /clear before starting the lifecycle
71
74
  ```
@@ -171,7 +171,15 @@ plan declares a root-authored executable workflow file, read
171
171
  `devrites-engine gates lint <slug> --strict` and resolve every finding before
172
172
  READY; the readiness check refuses a missing or malformed ledger but does not
173
173
  replace this oracle-quality gate.
174
- 7. **Narrow recheck after edits.** Dispatch the exact plan reviewer once per
174
+ 7. **Narrow recheck after edits.** A slice-bound recheck builds its bundle and
175
+ opens its wave with `--slice <SLICE-ID>` per affected slice (every 5 rechecks
176
+ per slice need a reslice review, as in Build). **Workflow Artifact bytes-only:**
177
+ after `OFFLINE_RECOVERY`, a correction leaving every admission/`WA-*` row
178
+ unchanged records `Workflow Artifact reviewed identity: <re-preflight identity
179
+ digest>` below the admission block; when `check drift` reports only
180
+ `reviewed-identity-only`, the reviewer is one fresh `devrites-code-reviewer` on
181
+ the prior-source→re-preflight diff against those rows (no drafter or plan
182
+ reviewer); green proceeds to step 8. Otherwise dispatch the exact plan reviewer once per
175
183
  fold — one dispatch covering every open fingerprint, preserving
176
184
  per correction/fingerprint accounting (each checked individually with its
177
185
  accepted findings, changed paths/criteria, new identity, and recorded delta
@@ -27,7 +27,8 @@ Before implementation review, check for work beyond the settled spec.
27
27
  [feature ceiling](../../rite-plan/reference/slicing.md#feature-ceiling-split-an-epic-never-override-the-budget)
28
28
  (over-budget `tasks.md`/`plan.md` from slice or AC count) is a scope finding, not a
29
29
  `Budget override`: route to `/rite-plan course-correct` (`MVP cut`) with the
30
- continuation sequence named; do not vet the whole epic.
30
+ continuation sequence named; do not vet the whole epic. An `ADVISORY size:`
31
+ slice without `Size rationale:` is a non-blocking Suggestion to split it.
31
32
  4. **Built-in check.** For each new pattern/infra/concurrency approach, invoke
32
33
  `devrites-source-driven` inline to verify current framework/runtime support and cite it. Custom
33
34
  work where a built-in suffices is a scope-reduction finding.
@@ -195,7 +196,10 @@ Use standard `AskUserQuestion`:
195
196
  recovery owner, test, handling, and user-visible/silent result. No test + no handling +
196
197
  silent = **Critical** (`artifacts.md`).
197
198
  4. **Dependency safety:** verify graph/order and shared file/state/contract/lock/port/queue/env
198
- conflicts. Correct the plan; native host scheduling needs no lane artifact.
199
+ conflicts. Each `Dependencies` edge must genuinely gate its slice (consumes an
200
+ output, interface, or state the predecessor produces); remove an ordering-only
201
+ edge, since it silently shrinks the parallel set. Correct the plan; native host
202
+ scheduling needs no lane artifact.
199
203
  5. **Build-entry preflight:** commands/cwds, tools, package state, parser/browser smoke,
200
204
  prerequisites, and provenance ([`artifacts.md`](artifacts.md)).
201
205
  6. **Implementation readiness:** goal-backward coverage, wiring, dependency simulation,
@@ -120,7 +120,10 @@ unclear boundary is underspecified: return `Escalation` without proceeding.
120
120
  new fingerprint. At the limit return the gate and repro. `Escalation` is only for product/irreversible choices
121
121
  or human-only access; technical failure is a blocker.
122
122
  Before handoff, inspect your cumulative slice diff against the contract and
123
- scenario matrix, including correction-affected adjacent variants. Fix supported
123
+ scenario matrix, including correction-affected adjacent variants, then against
124
+ the reviewers' own checks: [code review § What to check](../skills/devrites-lib/reference/standards/code-review.md#what-to-check-tests-first)
125
+ and test analysis (each acceptance criterion has a test that fails without the
126
+ change; no assertion-free, tautological, or mock-asserting test). Fix supported
124
127
  in-scope gaps together, rerun affected proof, and report remaining gaps. Self-check
125
128
  never replaces independent review; green tests do not prove all possible cases.
126
129
  5. **TRANSFER when isolated.** After green writer-safe proof, verify the diff again,
@@ -138,7 +141,9 @@ Stay inside the exact project-relative paths listed in the dispatch task.
138
141
  return an `Escalation`** when:
139
142
  - the slice is **underspecified**, the **plan looks wrong**, or requirements, code,
140
143
  and tests conflict;
141
- - the slice needs a **new dependency** or a **second design system**;
144
+ - the slice needs a **new dependency** or a **second design system**, or a planned
145
+ package fails to install or resolve (report the failure; never retry under a
146
+ similar or alternative package name);
142
147
  - the work requires an unapproved product/security-policy choice, public API break,
143
148
  external-service contract change, destructive live migration, or filesystem
144
149
  destruction outside the workspace. A path allowlist alone does not approve those
@@ -3,6 +3,12 @@
3
3
  Generate **3-5 ranked hypotheses** *before* testing any of them.
4
4
  Single-hypothesis generation anchors on the first plausible idea.
5
5
 
6
+ **Check past root causes first.** Search `.devrites/archive/*/evidence.md` with
7
+ native file search for the failure's error text, symbol, and file names. A hit
8
+ whose recorded correct hypothesis matches enters the ranked list with its
9
+ recurrence noted; it is still tested, never assumed. No archive or no hit →
10
+ skip silently.
11
+
6
12
  Each hypothesis must be **falsifiable**: state the prediction it makes.
7
13
 
8
14
  > Format: *"If <X> is the cause, then <changing Y> will make the failure
@@ -36,6 +36,7 @@ If the candidate diff has no matching surfaces, record
36
36
  2. Build each reviewer's read-set once with
37
37
  `devrites-engine context <slug> --phase <p> --role <role> --trigger <set>` and
38
38
  hand the bundle path as the packet's source list instead of a file roster.
39
+ Build roles add `--slice <SLICE-ID>` (slice-scoped, slice-named bundle).
39
40
  Evaluate the skill's trigger conditions and pass each that fires — a role's
40
41
  Trigger column maps to manifest names: `security-auditor` → `security`,
41
42
  `frontend-reviewer` → `ui`/`frontend`, `performance-reviewer` → `performance`.
@@ -59,7 +59,7 @@ topic's owner.
59
59
  | `architecture-health.md` | An audit needs a whole-codebase structural score from a code index — coupling, cohesion, cycles, god files, orphans, depth. |
60
60
  | `assumption-checkpoints.md` | Scope generalizes an existing boundary: a second case, a newly optional field, or a constant turned parameter. |
61
61
  | `debug-recovery.md` | Waiting on async readiness (server start, job completion, browser signal) needs a bounded condition-based poll. |
62
- | `windows.md` | A deferral marker (TODO/FIXME/skipped test/stub) is introduced or waived — the `check windows` ledger and grammar. |
62
+ | `windows.md` | A deferral or bar-lowering marker (TODO/FIXME/skipped test/stub/suppression/removed test) is introduced or waived — the `check windows` ledger and grammar. |
63
63
  | `glossary.md` | A DevRites term is unclear; resolve it once here instead of inferring. |
64
64
 
65
65
  The table is a load trigger, not an exemption. [`core.md` § Rule summary](core.md#rule-summary-load-the-full-file-when-in-scope)
@@ -357,6 +357,8 @@ access, safety and irreversible-action boundaries independently stop work.
357
357
  renaming/splitting an unchanged cause does not. Suggestion/Nit/FYI cannot extend
358
358
  recovery. Initial discovery and expected test-first RED are not corrections;
359
359
  total rounds, re-batches and distinct-finding counts never exhaust recovery.
360
+ Every 5 Build wright rounds on one slice, the next first needs a reslice review
361
+ ([`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#run)).
360
362
  - **Rechecks are scoped; late findings never reopen the round.** *Late* applies only
361
363
  from a phase's **second** review pass (Vet 1b, Build's recheck after the first repair,
362
364
  Review step 7); an initial pass has no late findings and every supported finding is
@@ -30,6 +30,9 @@ If it does not, do not merge it.
30
30
  no justification), stripped assertions, deleted or skipped tests, and new
31
31
  unimplemented stubs or `throw`-only placeholders. Each names what it lowers and
32
32
  needs a recorded reason in the diff or `decisions.md`; unexplained is a finding.
33
+ `devrites-engine check windows` flags the mechanical subset (suppressions,
34
+ skip/focus, stubs, empty catch, deleted tests, stripped assertions) against
35
+ `windows.md` waivers; loosened thresholds remain this sweep's judgment.
33
36
  3. **Correctness:** logic, edge cases, error paths, race conditions, wrong assumptions. For branching or boundary changes, run the [`edge-case trace`](edge-case-trace.md): relevant probe classes, fixed-set siblings, real wiring, negative intent, and deletion contracts with an evidence disposition.
34
37
  4. **Readability:** names, function size, control flow, intent obvious without the author.
35
38
  5. **Architecture:** right seam, coupling/cohesion, fits existing patterns, no premature
@@ -35,6 +35,6 @@
35
35
  | Standards | The rule files in this directory; `core.md` is always-on, the rest load on trigger (`README.md` table). |
36
36
  | Transfer commit | The isolated wright's local unpushed `WIP(<slug>):` transport commit; never the control-branch checkpoint. |
37
37
  | Trigger | A named conditional read-set in a `loads:` manifest (e.g. `tdd`, `applicability`, `ui`); engine fails closed on unknown names. |
38
- | Windows ledger | `windows.md`: one waiver row per deferral marker the change introduces; `check windows` fails on unwaived hits. [`windows.md`](windows.md). |
38
+ | Windows ledger | `windows.md`: one waiver row per deferral or bar-lowering marker the change introduces; `check windows` fails on unwaived hits. [`windows.md`](windows.md). |
39
39
  | Workflow Artifact | A Vet-ready, root-authored executable file under `.devrites/work/<slug>/`; [`workflow-artifacts.md`](workflow-artifacts.md). |
40
40
  | Wright | `devrites-slice-wright`: the sole product source/test writer under a path-bounded contract. |
@@ -96,6 +96,7 @@ On any security-relevant error: deny, roll back; never default to allow or half-
96
96
  - Install reproducibly from a committed lockfile (`npm ci` / frozen); never resolving installs in CI. Hand-editing lockfiles bypasses review.
97
97
  - Distrust install scripts (`postinstall` runs arbitrary code) — review before adding; prefer `--ignore-scripts`.
98
98
  - Typosquats are a delivery vector: confirm exact name/publisher, not install success.
99
+ After a failed install, never try a similarly named package; report the failure.
99
100
  - A CI/release change names the SLSA build provenance level it claims and where the build runs; a claimed level with no verified provenance attestation is `cannot_verify`, not a pass.
100
101
 
101
102
  ## Trust boundary (three tiers)
@@ -1,7 +1,9 @@
1
1
  # Windows — the deferral ledger
2
2
 
3
3
  > Applies when: a change introduces a deferral marker (TODO, FIXME, XXX, HACK,
4
- > a skipped test, a stub body) or `windows.md` waivers are authored or judged.
4
+ > a skipped or focused test, a stub body), lowers the bar (a checker
5
+ > suppression, an empty catch, a deleted test file, stripped assertions), or
6
+ > `windows.md` waivers are authored or judged.
5
7
 
6
8
  `windows.md` is the broken-windows ledger. A review finding can describe a new
7
9
  `TODO`, a skipped test, or a stubbed body; this artifact makes the register
@@ -24,7 +26,8 @@ Optional until a marker is introduced: a feature with no new markers needs no
24
26
  that marker. Five new TODOs in one file need five rows — a blanket row
25
27
  cannot cover them.
26
28
  - `marker token` is the literal marker the checker reported (`TODO`, `t.Skip(`,
27
- `NotImplementedError`, `panic("TODO`, …).
29
+ `NotImplementedError`, `panic("TODO`, `it.only(`, `eslint-disable`, `noqa`,
30
+ `nolint`, `#nosec`, `empty-catch`, `deleted-test`, `removed-assertion`, …).
28
31
  - `reason` must be non-empty and should name the follow-up owner or slice; a
29
32
  row with an empty reason warns and waives nothing.
30
33
  - Rows never suppress coverage — they explain it. Reviewers still judge
@@ -39,8 +42,13 @@ devrites-engine check windows <slug> [--worktree|--staged|--base <ref>]
39
42
  Exit `0` when no marker is introduced or every hit is waived; `3` when any
40
43
  introduced marker lacks a waiver or the workspace/ledger is unreadable; `2`
41
44
  on usage errors. It parses the unified diff (`-U0`), treats untracked files as
42
- wholly new in `--worktree`, and ignores binary files, deletions, and
45
+ wholly new in `--worktree`, and ignores binary files, non-test deletions, and
43
46
  `.devrites/` paths; `--staged` and `--base` cover the tracked diff only.
47
+ Removals are file-level hits: a deleted test file is `deleted-test`, and a test
48
+ file that remains but loses assertion lines on net is `removed-assertion`
49
+ (moving an assertion within the file is not a loss; a git-detected rename is
50
+ not a deletion). Loosened thresholds have no deterministic signal and stay a
51
+ review judgment ([`code-review.md`](code-review.md) § Bar integrity).
44
52
 
45
53
  ## Reviewer posture
46
54
 
@@ -64,7 +64,7 @@ accept safe legacy basenames. Ordinary phases never rename them.
64
64
  | `review.md` | reconciled Review verdict: `## Spec` and `## Code review` accounts, deferred-finding labels/actions, drift | 240 lines |
65
65
  | `seal.md` | seal preflight, exact reviewer roster accounts, GO/NO-GO verdict and disclosures | 200 lines |
66
66
  | `ai-spec.md` | model/RAG/agent/eval/LLM-output scope for AI surfaces | 160 lines |
67
- | `windows.md` | deferral-marker waiver ledger: one `- path | marker | reason` row per introduced marker; `check windows` fails on unwaived hits | 120 lines |
67
+ | `windows.md` | deferral/bar-lowering waiver ledger: one `- path | marker | reason` row per introduced marker; `check windows` fails on unwaived hits | 120 lines |
68
68
  | `notes.md` | `NOTE-###` anchored notes — rationale/warnings bound to a verbatim quote in one repository file; `note check` regrades anchors and drift blocks seal | 160 lines |
69
69
 
70
70
  For visual pairs load only matching [playbooks](visual-playbooks/index.md); use
@@ -230,7 +230,10 @@ Done condition: <checkable, exhaustive completion criterion>
230
230
  `depends_on` is the machine-readable mirror of `Dependencies`; keep the sets
231
231
  identical and cycle-free. `Gate`, `SLA`, and `Checkpoint` are required for HITL
232
232
  slices; use `none` when they do not apply. Complexity above 3 triggers reslicing
233
- unless the stated reason makes the boundary irreducible.
233
+ unless the stated reason makes the boundary irreducible. A Writer allowlist of 12+
234
+ files prints an engine `ADVISORY size:` line (`check task-graph`, `check slice`;
235
+ never blocking): split it acceptance-preserving, or add `Size rationale:` naming
236
+ the inseparable capability.
234
237
 
235
238
  ## Read next by phase
236
239
 
@@ -5,7 +5,7 @@ argument-hint: "[--parallel N] [slice number or name]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
8
+ <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"rootOnly":["rite-build/reference/phase-contract.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/output.md","rite-build/reference/afk-discipline.md","rite-build/reference/checkpoint-protocol.md","rite-build/reference/parallel-batch.md","devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/standards/workflow-artifacts.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
9
9
  > Read-set manifest: `devrites-engine context <slug> --phase build` bundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.
10
10
 
11
11
 
@@ -9,7 +9,9 @@ contract for the sentinel schema, defaults, gate ceiling, and mutable-counter
9
9
  ownership. This file owns only Build's dispatch, charging, and red-path behavior.
10
10
 
11
11
  Rules: green before `built`; hard `max_slices` cap; gates before the action they
12
- control; irreversible work (destructive/auth/public API) always pauses.
12
+ control; irreversible work (destructive/auth/public API) always pauses; a tick
13
+ never ends with an open or sealed wave — wait for its returns or
14
+ `dispatch abandon --reason`.
13
15
 
14
16
  ## Iteration cap
15
17
 
@@ -21,8 +21,9 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
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
- 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)
24
+ PROVE → root, concurrent with the reviews on the same frozen candidate:
25
+ required build/browser/E2E, then returned-diff/path recheck; fail-on-red
26
+ (red/gap → repair wright, then re-review and re-prove; do not commit yet)
26
27
  RECORD → orchestrator: after green verification, update state.md/evidence.md and
27
28
  upsert the authoritative candidate manifest from the actual scoped diff
28
29
  (CHECKPOINT) → only now, with review+proof green: local WIP(<slug>): <imperative summary>
@@ -9,7 +9,7 @@ Evidence: acceptance met; tests <cmd> → pass; browser <summary|n/a>; drift <no
9
9
  Open: <none|blockers|questions>
10
10
  Next: /rite-build
11
11
  Record: .devrites/work/<slug>/evidence.md
12
- ↻ Hygiene: /clear between slices; /rite-handoff if away > a few hours
12
+ ↻ Hygiene: /clear between slices (none in `orient` `inflight_waves`); /rite-handoff if away > a few hours
13
13
  ```
14
14
 
15
15
  **All built:**
@@ -94,13 +94,15 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
94
94
  <id>`; a malformed contract is dropped from the batch and recorded as a
95
95
  gap, not dispatched.
96
96
  2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
97
- 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`).
97
+ 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`;
98
+ one `--slice` per sibling on the wave).
98
99
  4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
99
100
  and required result fields against the immutable contract. Reject malformed,
100
101
  stale, or out-of-scope work. Apply
101
102
  [independent Build review](phase-contract.md#independent-build-review): first
102
- full inventory, then bounded owning-role rechecks after repairs. Gap or
103
- Critical/Important → `gap`; else approved proof → `green|red|gap`.
103
+ full inventory, then bounded owning-role rechecks after repairs. Run approved
104
+ proof in the same window as that review. Gap or Critical/Important → `gap`;
105
+ else proof → `green|red|gap`.
104
106
  Reviewer fan-out for a batch is itself batched under
105
107
  [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md#scale-limits)
106
108
  (≈4 concurrent read-only reviewers, 8 only with disjoint paths), and `max_agents`