devrites 4.0.11 → 4.1.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 (244) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +5 -3
  3. package/docs/architecture.md +4 -4
  4. package/docs/command-map.md +4 -3
  5. package/docs/flow.md +2 -1
  6. package/docs/orchestration.md +45 -4
  7. package/docs/skills.md +5 -4
  8. package/engine/internal/devritespaths/paths.go +5 -4
  9. package/engine/internal/hostpack/hostpack.go +9 -4
  10. package/engine/internal/hostpack/hostpack_test.go +16 -7
  11. package/engine/internal/install/install_test.go +5 -0
  12. package/pack/.claude/agents/devrites-code-reviewer.md +6 -1
  13. package/pack/.claude/agents/devrites-plan-drafter.md +5 -0
  14. package/pack/.claude/agents/devrites-plan-reviewer.md +6 -0
  15. package/pack/.claude/agents/devrites-proof-runner.md +7 -1
  16. package/pack/.claude/agents/devrites-retrospector.md +21 -25
  17. package/pack/.claude/agents/devrites-security-auditor.md +7 -3
  18. package/pack/.claude/agents/devrites-slice-wright.md +30 -4
  19. package/pack/.claude/agents/devrites-spec-reviewer.md +5 -0
  20. package/pack/.claude/agents/devrites-strategy-reviewer.md +3 -4
  21. package/pack/.claude/agents/devrites-test-analyst.md +5 -0
  22. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +12 -16
  23. package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -14
  24. package/pack/.claude/skills/devrites-doubt/SKILL.md +3 -4
  25. package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -4
  26. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +6 -0
  27. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +5 -1
  28. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -8
  29. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +11 -3
  30. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +19 -0
  31. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +1 -1
  32. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +9 -0
  33. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +9 -1
  34. package/pack/.claude/skills/devrites-lib/reference/standards/data-integrity.md +95 -0
  35. package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +5 -5
  36. package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +28 -29
  37. package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +70 -10
  38. package/pack/.claude/skills/devrites-lib/reference/standards/integration-reliability.md +79 -0
  39. package/pack/.claude/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
  40. package/pack/.claude/skills/devrites-lib/reference/standards/observability.md +10 -0
  41. package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +20 -0
  42. package/pack/.claude/skills/devrites-lib/reference/standards/repository-topology.md +73 -0
  43. package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +6 -2
  44. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +51 -16
  45. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +35 -40
  46. package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +4 -0
  47. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +51 -6
  48. package/pack/.claude/skills/rite/SKILL.md +2 -0
  49. package/pack/.claude/skills/rite-adopt/SKILL.md +8 -10
  50. package/pack/.claude/skills/rite-adopt/reference/adoption.md +13 -15
  51. package/pack/.claude/skills/rite-autocomplete/SKILL.md +26 -11
  52. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +47 -6
  53. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +12 -0
  54. package/pack/.claude/skills/rite-build/SKILL.md +7 -1
  55. package/pack/.claude/skills/rite-build/reference/phase-contract.md +6 -1
  56. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +37 -4
  57. package/pack/.claude/skills/rite-clarify/SKILL.md +3 -2
  58. package/pack/.claude/skills/rite-converge/SKILL.md +4 -2
  59. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +8 -4
  60. package/pack/.claude/skills/rite-customize/SKILL.md +16 -18
  61. package/pack/.claude/skills/rite-define/SKILL.md +60 -62
  62. package/pack/.claude/skills/rite-define/reference/plan-template.md +88 -71
  63. package/pack/.claude/skills/rite-explain/SKILL.md +2 -1
  64. package/pack/.claude/skills/rite-learn/SKILL.md +28 -32
  65. package/pack/.claude/skills/rite-plan/SKILL.md +42 -45
  66. package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +11 -2
  67. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +2 -0
  68. package/pack/.claude/skills/rite-polish/reference/adr-promotion.md +7 -7
  69. package/pack/.claude/skills/rite-pressure-test/SKILL.md +24 -31
  70. package/pack/.claude/skills/rite-prove/SKILL.md +12 -15
  71. package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +28 -0
  72. package/pack/.claude/skills/rite-review/SKILL.md +5 -4
  73. package/pack/.claude/skills/rite-review/reference/five-axis-review.md +6 -0
  74. package/pack/.claude/skills/rite-review/reference/security-review.md +7 -2
  75. package/pack/.claude/skills/rite-seal/reference/final-evidence.md +3 -0
  76. package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +19 -4
  77. package/pack/.claude/skills/rite-ship/reference/rollout.md +62 -43
  78. package/pack/.claude/skills/rite-spec/SKILL.md +8 -1
  79. package/pack/.claude/skills/rite-spec/reference/ai-spec-template.md +13 -6
  80. package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +14 -2
  81. package/pack/.claude/skills/rite-spec/reference/spec-template.md +33 -4
  82. package/pack/.claude/skills/rite-temper/SKILL.md +5 -1
  83. package/pack/.claude/skills/rite-vet/SKILL.md +14 -10
  84. package/pack/.claude/skills/rite-vet/reference/artifacts.md +5 -3
  85. package/pack/.claude/skills/rite-vet/reference/review-axes.md +67 -77
  86. package/pack/.claude/skills/rite-watch-pr/SKILL.md +85 -0
  87. package/pack/.claude/skills/rite-zoom-out/SKILL.md +4 -5
  88. package/pack/.claude/workflows/devrites-readonly-review.js +194 -0
  89. package/pack/generated/README.md +1 -1
  90. package/pack/generated/claude/agents/devrites-code-reviewer.md +6 -1
  91. package/pack/generated/claude/agents/devrites-plan-drafter.md +5 -0
  92. package/pack/generated/claude/agents/devrites-plan-reviewer.md +6 -0
  93. package/pack/generated/claude/agents/devrites-proof-runner.md +7 -1
  94. package/pack/generated/claude/agents/devrites-retrospector.md +21 -25
  95. package/pack/generated/claude/agents/devrites-security-auditor.md +7 -3
  96. package/pack/generated/claude/agents/devrites-slice-wright.md +30 -4
  97. package/pack/generated/claude/agents/devrites-spec-reviewer.md +5 -0
  98. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +3 -4
  99. package/pack/generated/claude/agents/devrites-test-analyst.md +5 -0
  100. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +12 -16
  101. package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -14
  102. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +3 -4
  103. package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -4
  104. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +6 -0
  105. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +5 -1
  106. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -8
  107. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +11 -3
  108. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +19 -0
  109. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +1 -1
  110. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +9 -0
  111. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +9 -1
  112. package/pack/generated/claude/skills/devrites-lib/reference/standards/data-integrity.md +95 -0
  113. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +5 -5
  114. package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +28 -29
  115. package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +70 -10
  116. package/pack/generated/claude/skills/devrites-lib/reference/standards/integration-reliability.md +79 -0
  117. package/pack/generated/claude/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
  118. package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +10 -0
  119. package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +20 -0
  120. package/pack/generated/claude/skills/devrites-lib/reference/standards/repository-topology.md +73 -0
  121. package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +6 -2
  122. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +51 -16
  123. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +35 -40
  124. package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +4 -0
  125. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +51 -6
  126. package/pack/generated/claude/skills/rite/SKILL.md +2 -0
  127. package/pack/generated/claude/skills/rite-adopt/SKILL.md +8 -10
  128. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +13 -15
  129. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +26 -11
  130. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +47 -6
  131. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +12 -0
  132. package/pack/generated/claude/skills/rite-build/SKILL.md +7 -1
  133. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +6 -1
  134. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +37 -4
  135. package/pack/generated/claude/skills/rite-clarify/SKILL.md +3 -2
  136. package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -2
  137. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +8 -4
  138. package/pack/generated/claude/skills/rite-customize/SKILL.md +16 -18
  139. package/pack/generated/claude/skills/rite-define/SKILL.md +60 -62
  140. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +88 -71
  141. package/pack/generated/claude/skills/rite-explain/SKILL.md +2 -1
  142. package/pack/generated/claude/skills/rite-learn/SKILL.md +28 -32
  143. package/pack/generated/claude/skills/rite-plan/SKILL.md +42 -45
  144. package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +11 -2
  145. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +2 -0
  146. package/pack/generated/claude/skills/rite-polish/reference/adr-promotion.md +7 -7
  147. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +24 -31
  148. package/pack/generated/claude/skills/rite-prove/SKILL.md +12 -15
  149. package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +28 -0
  150. package/pack/generated/claude/skills/rite-review/SKILL.md +5 -4
  151. package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +6 -0
  152. package/pack/generated/claude/skills/rite-review/reference/security-review.md +7 -2
  153. package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +3 -0
  154. package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +19 -4
  155. package/pack/generated/claude/skills/rite-ship/reference/rollout.md +62 -43
  156. package/pack/generated/claude/skills/rite-spec/SKILL.md +8 -1
  157. package/pack/generated/claude/skills/rite-spec/reference/ai-spec-template.md +13 -6
  158. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +14 -2
  159. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +33 -4
  160. package/pack/generated/claude/skills/rite-temper/SKILL.md +5 -1
  161. package/pack/generated/claude/skills/rite-vet/SKILL.md +14 -10
  162. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +5 -3
  163. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +67 -77
  164. package/pack/generated/claude/skills/rite-watch-pr/SKILL.md +85 -0
  165. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +4 -5
  166. package/pack/generated/claude/workflows/devrites-readonly-review.js +194 -0
  167. package/pack/generated/codex/agents/devrites-code-reviewer.toml +6 -1
  168. package/pack/generated/codex/agents/devrites-plan-drafter.toml +5 -0
  169. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +6 -0
  170. package/pack/generated/codex/agents/devrites-proof-runner.toml +7 -1
  171. package/pack/generated/codex/agents/devrites-retrospector.toml +21 -25
  172. package/pack/generated/codex/agents/devrites-security-auditor.toml +7 -3
  173. package/pack/generated/codex/agents/devrites-slice-wright.toml +30 -4
  174. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +5 -0
  175. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +3 -4
  176. package/pack/generated/codex/agents/devrites-test-analyst.toml +5 -0
  177. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +12 -16
  178. package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -14
  179. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +3 -4
  180. package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +3 -4
  181. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +6 -0
  182. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +5 -1
  183. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +33 -8
  184. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +11 -3
  185. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +19 -0
  186. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +1 -1
  187. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +9 -0
  188. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +9 -1
  189. package/pack/generated/codex/skills/devrites-lib/reference/standards/data-integrity.md +95 -0
  190. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +5 -5
  191. package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +28 -29
  192. package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +70 -10
  193. package/pack/generated/codex/skills/devrites-lib/reference/standards/integration-reliability.md +79 -0
  194. package/pack/generated/codex/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
  195. package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +10 -0
  196. package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +20 -0
  197. package/pack/generated/codex/skills/devrites-lib/reference/standards/repository-topology.md +73 -0
  198. package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +6 -2
  199. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +51 -16
  200. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +35 -40
  201. package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +4 -0
  202. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +51 -6
  203. package/pack/generated/codex/skills/rite/SKILL.md +2 -0
  204. package/pack/generated/codex/skills/rite-adopt/SKILL.md +8 -10
  205. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +13 -15
  206. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +26 -11
  207. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +47 -6
  208. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +12 -0
  209. package/pack/generated/codex/skills/rite-build/SKILL.md +7 -1
  210. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +6 -1
  211. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +37 -4
  212. package/pack/generated/codex/skills/rite-clarify/SKILL.md +3 -2
  213. package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -2
  214. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +8 -4
  215. package/pack/generated/codex/skills/rite-customize/SKILL.md +16 -18
  216. package/pack/generated/codex/skills/rite-define/SKILL.md +60 -62
  217. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +88 -71
  218. package/pack/generated/codex/skills/rite-explain/SKILL.md +2 -1
  219. package/pack/generated/codex/skills/rite-learn/SKILL.md +28 -32
  220. package/pack/generated/codex/skills/rite-plan/SKILL.md +42 -45
  221. package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +11 -2
  222. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +2 -0
  223. package/pack/generated/codex/skills/rite-polish/reference/adr-promotion.md +7 -7
  224. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +24 -31
  225. package/pack/generated/codex/skills/rite-prove/SKILL.md +12 -15
  226. package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +28 -0
  227. package/pack/generated/codex/skills/rite-review/SKILL.md +5 -4
  228. package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +6 -0
  229. package/pack/generated/codex/skills/rite-review/reference/security-review.md +7 -2
  230. package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +3 -0
  231. package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +19 -4
  232. package/pack/generated/codex/skills/rite-ship/reference/rollout.md +62 -43
  233. package/pack/generated/codex/skills/rite-spec/SKILL.md +8 -1
  234. package/pack/generated/codex/skills/rite-spec/reference/ai-spec-template.md +13 -6
  235. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +14 -2
  236. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +33 -4
  237. package/pack/generated/codex/skills/rite-temper/SKILL.md +5 -1
  238. package/pack/generated/codex/skills/rite-vet/SKILL.md +14 -10
  239. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +5 -3
  240. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +67 -77
  241. package/pack/generated/codex/skills/rite-watch-pr/SKILL.md +85 -0
  242. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +4 -5
  243. package/package.json +1 -1
  244. package/scripts/build-host-artifacts.sh +3 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [4.1.0](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.12...v4.1.0) (2026-08-12)
6
+
7
+ ### Added
8
+
9
+ * **rite:** add bounded host-native loop operations ([af8f50e](https://github.com/ViktorsBaikers/DevRites/commit/af8f50e434160a7ab33d7e4c8b5b387c4097bfdc))
10
+ * **rite:** deepen engineering risk guidance ([a109d35](https://github.com/ViktorsBaikers/DevRites/commit/a109d35788d831f037361cbc5c491d0b2cb2dd64))
11
+ * **rite:** govern decision horizons and learnings ([af48088](https://github.com/ViktorsBaikers/DevRites/commit/af48088157107e08f60a82659d7e445180ed1e96))
12
+
13
+ ## [4.0.12](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.11...v4.0.12) (2026-08-09)
14
+
15
+ ### Fixed
16
+
17
+ * **rite:** keep internal replans in autocomplete ([9dbbd30](https://github.com/ViktorsBaikers/DevRites/commit/9dbbd30d6fbb088f2b175b6c4af06a9d7e5e9114))
18
+
5
19
  ## [4.0.11](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.10...v4.0.11) (2026-08-08)
6
20
 
7
21
  ### Fixed
package/README.md CHANGED
@@ -28,7 +28,7 @@ project-conventional push, tag, or PR action, and archive the workspace.
28
28
  Unattended runs may create local WIP checkpoint commits along the way, but they
29
29
  remain local unless Ship's disclosed plan includes an approved remote action.
30
30
 
31
- **Status:** [`v4.0.11`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v4.0.11): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
31
+ **Status:** [`v4.1.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v4.1.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
32
32
 
33
33
  This is the latest published release; `main` may contain unreleased work.
34
34
 
@@ -107,6 +107,8 @@ Some work needs a different route:
107
107
  Autocomplete reopens a stale missing-writer stop once instead of preserving the
108
108
  obsolete recovery count. The first real root-materializer failure then counts as
109
109
  attempt one under normal fingerprint recovery; it is not terminal by itself.
110
+ Likewise, an internal `NEEDS_REPLAN` result stays inside Autocomplete: it runs
111
+ the next Plan repair and narrow Vet without returning a command to the user.
110
112
  - [`/rite-upgrade [slug]`](pack/.claude/skills/rite-upgrade/SKILL.md) is a
111
113
  compatibility route for an older active workspace that cannot resume. Age or
112
114
  cursor form alone never triggers repair; it is not a lifecycle phase.
@@ -379,8 +381,8 @@ through Claude Code or Codex plugin stores.
379
381
 
380
382
  ## Skills and agents
381
383
 
382
- The pack ships 43 skills: 32 public and 11 internal. The public surface contains
383
- the `rite` menu and 31 `rite-*` workflows and utilities. Ten `devrites-*`
384
+ The pack ships 44 skills: 33 public and 11 internal. The public surface contains
385
+ the `rite` menu and 32 `rite-*` workflows and utilities. Ten `devrites-*`
384
386
  specialists load when a matching task needs them; `devrites-lib` carries the
385
387
  shared contracts and engineering standards.
386
388
 
@@ -33,8 +33,8 @@ cursor readers, traceability rules, and phase-relative completeness model, see
33
33
  2. **Public utility and on-ramp skills**: `rite-adopt`, `rite-quick`,
34
34
  `rite-frame`, `rite-status`, `rite-doctor`, `rite-upgrade`, `rite-learn`, `rite-explain`,
35
35
  `rite-customize`, `rite-zoom-out`, `rite-prototype`, `rite-handoff`,
36
- `rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, and
37
- `rite-autocomplete`. These are public commands. `rite-autocomplete` is the
36
+ `rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`,
37
+ `rite-watch-pr`, and `rite-autocomplete`. These are public commands. `rite-autocomplete` is the
38
38
  unattended orchestrator. By default it drives the reversible lifecycle
39
39
  through Seal GO and stops. Explicit `--ship` enters Ship preflight but still
40
40
  waits for a fresh literal `GO` and native approval before mutation. It
@@ -381,8 +381,8 @@ contract.
381
381
 
382
382
  ## Design choices at a glance
383
383
 
384
- - **Surface**: 31 public `rite-*` skills (43 total), plus the thin `/rite`
385
- menu: 32 public and 11 internal. The lifecycle
384
+ - **Surface**: 32 public `rite-*` skills (44 total), plus the thin `/rite`
385
+ menu: 33 public and 11 internal. The lifecycle
386
386
  includes mandatory adaptive Clarify, optional Temper, mandatory Vet, and
387
387
  Converge recovery; Seal **decides** and Ship **executes + closes**. Ten
388
388
  `devrites-*` specialist skills are model-invoked; `devrites-lib` is the
@@ -19,8 +19,8 @@ mean that a skill is internal; each `SKILL.md` uses `user-invocable:` to set
19
19
  visibility. Public utilities use the `rite-*` prefix: `rite-quick`,
20
20
  `rite-frame`, `rite-adopt`, `rite-learn`, `rite-doctor`, `rite-customize`,
21
21
  `rite-zoom-out`, `rite-prototype`, `rite-handoff`, `rite-pressure-test`,
22
- `rite-autocomplete`, `rite-explain`, `rite-pov`, `rite-dogfood`, and
23
- `rite-pr-feedback`, plus the evidence-gated workspace compatibility command
22
+ `rite-autocomplete`, `rite-explain`, `rite-pov`, `rite-dogfood`,
23
+ `rite-pr-feedback`, and `rite-watch-pr`, plus the evidence-gated workspace compatibility command
24
24
  `rite-upgrade`. The host may invoke `devrites-*` specialists through the model.
25
25
  `devrites-lib` is the non-workflow library exception.
26
26
 
@@ -113,6 +113,7 @@ See [`cli.md`](cli.md).
113
113
  | [`/rite-pov`](../pack/.claude/skills/rite-pov/SKILL.md) | utility | `[candidate/link/question]` | Project-grounded verdict on one outside option after live repository and primary-source evidence. | live code/docs + external sources | `decisions.md` or ADR only on request |
114
114
  | [`/rite-dogfood`](../pack/.claude/skills/rite-dogfood/SKILL.md) | utility | `[feature-slug\|branch] [--port N]` | Diff-scoped browser QA: map changed user journeys, run scenario matrix, fix small obvious breakages, write dogfood report. Explicit-only. | diff + app routes + browser | `.devrites/work/<slug>/dogfood.md` + safe fixes |
115
115
  | [`/rite-pr-feedback`](../pack/.claude/skills/rite-pr-feedback/SKILL.md) | utility | `[PR number\|thread URL\|blank for current branch]` | Resolve GitHub PR review feedback: fetch unresolved threads, judge centrally, fix valid items, reply, resolve. Explicit-only. | PR threads + code | code/tests + PR replies/resolutions |
116
+ | [`/rite-watch-pr`](../pack/.claude/skills/rite-watch-pr/SKILL.md) | utility | `[PR number\|PR URL\|blank for current branch]` | Observe one GitHub PR/CI/review snapshot, classify one next action, and stop. Safe for capability-admitted native schedules/events; never mutates code, Git, checks, threads, or PR state. | PR/check/review metadata + bounded failed-log excerpts | none |
116
117
  | [`/rite-pressure-test`](../pack/.claude/skills/rite-pressure-test/SKILL.md) | utility | `[idea]` | Pressure-test a rough idea: 3 to 5 genuinely different options → converge on one with trade-off + hinge. | spec / surrounding code | `decisions.md` (optional) |
117
118
  | [`/rite-doctor`](../pack/.claude/skills/rite-doctor/SKILL.md) | diagnostic | none | Diagnose the DevRites binary, pack, schema, and native host permission/profile configuration. | install + host config | none |
118
119
 
@@ -183,7 +184,7 @@ index is in
183
184
  [`pack/.claude/skills/devrites-lib/reference/standards/README.md`](../pack/.claude/skills/devrites-lib/reference/standards/README.md).
184
185
 
185
186
  - `core.md` (always-on): operating rules + universal anti-rationalizations + 1-line craft disciplines + persistence-before-stopping summary.
186
- - On-demand rules and checklists (read by the phase that needs them): `coding-style.md` · `prose-style.md` · `error-handling.md` · `testing.md` · `spec-grammar.md` · `code-review.md` · `edge-case-trace.md` · `principles.md` · `security.md` · `performance.md` · `observability.md` · `developer-experience.md` · `patterns.md` · `git-workflow.md` · `ci-cd.md` · `hooks.md` · `documentation.md` · `development-workflow.md` · `deprecation.md` · `elicitation.md` · `agents.md` · `context-hygiene.md` · `anti-patterns.md` · `afk-hitl.md` · `tooling.md` · `skill-authoring.md` · `definition-of-done.md` · `review-checklist.md` · `test-proof-checklist.md` · `browser-proof-checklist.md` · `security-checklist.md`
187
+ - On-demand rules and checklists (read by the phase that needs them): `coding-style.md` · `prose-style.md` · `error-handling.md` · `testing.md` · `spec-grammar.md` · `code-review.md` · `edge-case-trace.md` · `principles.md` · `security.md` · `repository-topology.md` · `data-integrity.md` · `integration-reliability.md` · `performance.md` · `observability.md` · `developer-experience.md` · `patterns.md` · `git-workflow.md` · `ci-cd.md` · `hooks.md` · `documentation.md` · `development-workflow.md` · `deprecation.md` · `elicitation.md` · `agents.md` · `context-hygiene.md` · `anti-patterns.md` · `afk-hitl.md` · `loop-operations.md` · `tooling.md` · `skill-authoring.md` · `definition-of-done.md` · `review-checklist.md` · `test-proof-checklist.md` · `browser-proof-checklist.md` · `security-checklist.md`
187
188
  - `anti-patterns.md`: pack-wide rationalizations + red flags. Loaded by each per-phase `rite-*/reference/anti-patterns.md`; can be loaded directly for cross-phase reluctance.
188
189
 
189
190
  ## Trigger conditions (auto-selection)
package/docs/flow.md CHANGED
@@ -375,7 +375,7 @@ separately by `disable-model-invocation`.
375
375
 
376
376
  ```mermaid
377
377
  flowchart TB
378
- subgraph Public["Public (user-invocable: true): 32 skills"]
378
+ subgraph Public["Public (user-invocable: true): 33 skills"]
379
379
  direction TB
380
380
  R1[/rite/]
381
381
  R2[/rite-spec/]
@@ -405,6 +405,7 @@ flowchart TB
405
405
  RDO[/rite-dogfood/]
406
406
  RPOV[/rite-pov/]
407
407
  RPF[/rite-pr-feedback/]
408
+ RWP[/rite-watch-pr/]
408
409
  IPT[/rite-pressure-test/]
409
410
  D1[/rite-zoom-out/]
410
411
  D2[/rite-prototype/]
@@ -28,8 +28,9 @@ root reconciles semantics; engine checks deterministic structure/state/safety
28
28
  workspace-capable for its writer child to execute.
29
29
  - The role catalog has one source/test writer, `devrites-slice-wright`. Claude
30
30
  and Codex make only that exact specialist writable.
31
- - Leaves never invoke leaves, ask the human, change phase, commit, push, deploy,
32
- migrate live data, or write canonical workflow state.
31
+ - Leaves never invoke leaves, ask the human, change phase, push, deploy, migrate live
32
+ data, or write canonical workflow state. Only an eligible isolated-worktree wright
33
+ may create one local unpushed transfer commit; same-worktree leaves never commit.
33
34
 
34
35
  Skills name the exact role and bounded task in normal language. The host owns
35
36
  internal spawn fields, scheduling, waiting, follow-ups, and result delivery.
@@ -65,6 +66,35 @@ sibling cannot erase it.
65
66
  An evidenced clean result is valid. Reviewers must account for their rubric and
66
67
  inspected scope, but they never manufacture a finding to fill a quota.
67
68
 
69
+ ## Read-only Claude workflow pilot
70
+
71
+ Claude installs `.claude/workflows/devrites-readonly-review.js` as an optional
72
+ adapter for immutable-candidate discovery, four independent reviewer roles, one
73
+ adversarial verification pass, and a completeness check. Its script owns only
74
+ transient fan-out and intermediate results. It cannot write source, tests,
75
+ `.devrites/**`, Git, proof, lifecycle state, or shared services; it never invokes
76
+ `devrites-slice-wright`.
77
+
78
+ The caller still admits every returned role result under the normal result-closure
79
+ contract and performs final reconciliation. A workflow timeout, missing role,
80
+ malformed result, unread input, or incomplete verification is a gap. The adapter does
81
+ not replace `/rite-review`, alter required rosters, or create another durable state
82
+ plane.
83
+
84
+ Codex keeps the same portable skill/agent semantics through native agent dispatch and
85
+ has no fake workflow mirror. Provider parity applies to review meaning and evidence,
86
+ not to this optional Claude orchestration optimization. Use the pilot only when an
87
+ immutable candidate already exists; lifecycle writes, proof execution, human gates,
88
+ and final decisions remain with the rite root.
89
+
90
+ Host capabilities are admitted independently. Codex CLI agent threads and inherited
91
+ sandboxes establish context/permission separation, not filesystem worktree isolation;
92
+ without an explicit named-agent worktree and reconciliation interface, Codex uses the
93
+ serial same-worktree writer. Likewise, goals or hooks do not prove native time/event
94
+ activation. Unsupported activation remains `unavailable` rather than being emulated by
95
+ a DevRites scheduler or shell loop. The claim-bounded acceptance rows live in
96
+ [`codex-acceptance.json`](../evals/native-host/codex-acceptance.json).
97
+
68
98
  ## Slice-wright lifecycle
69
99
 
70
100
  For Claude or Codex, the root states the smallest exact project-relative source
@@ -86,8 +116,19 @@ symlink escapes, duplicates, and `.devrites/**` are invalid.
86
116
  Exact-path scope is instruction-backed on both hosts; native sandboxes provide
87
117
  the broader writer/read-only split. An unauthorized delta is rejected and the
88
118
  same bounded writer must restore it before work continues. The root never
89
- widens the contract or rewrites source. Parallel source writers in one worktree
90
- are forbidden.
119
+ widens the contract or rewrites source.
120
+
121
+ A serial native-worktree pilot may isolate `devrites-slice-wright` when the candidate
122
+ baseline is committed and clean, the repository is not a submodule child, baseline
123
+ proof is green, and the host exposes explicit result reconciliation. The wright
124
+ returns one local unpushed transfer commit; root proves its exact paths and unchanged
125
+ base before native transfer, then re-proves the reconciled candidate. Missing transfer,
126
+ conflict, extra paths, moved base, or cleanup failure stops with worktree evidence
127
+ preserved. No ad hoc copy/cherry-pick/merge occurs from the read-only root.
128
+
129
+ Isolation does not authorize throughput. At most one writer runs across all linked
130
+ worktrees for the workspace; parallel writers remain forbidden until serial transfer,
131
+ conflict, proof, and review measurements justify a separate design.
91
132
 
92
133
  ## Engine boundary
93
134
 
package/docs/skills.md CHANGED
@@ -1,6 +1,6 @@
1
- # All 43 skills
1
+ # All 44 skills
2
2
 
3
- The pack contains 43 skills: the `rite` menu, 31 user-invocable `rite-*`
3
+ The pack contains 44 skills: the `rite` menu, 32 user-invocable `rite-*`
4
4
  workflow and utility skills, 10 model-invoked `devrites-*` specialists, and the
5
5
  internal `devrites-lib` library. `devrites-lib` is not a command. It holds shared
6
6
  references and the few explicit script exceptions.
@@ -37,7 +37,7 @@ contract when a rite names parallel reviewers.
37
37
 
38
38
  `rite-*` is the namespace for lifecycle and utility commands. Its utilities are
39
39
  `rite-quick`, `rite-frame`, `rite-adopt`, `rite-learn`, `rite-customize`,
40
- `rite-explain`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, `rite-doctor`,
40
+ `rite-explain`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, `rite-watch-pr`, `rite-doctor`,
41
41
  `rite-upgrade`, `rite-prototype`, `rite-handoff`, `rite-zoom-out`, and
42
42
  `rite-pressure-test`.
43
43
  Some specialized utilities set `disable-model-invocation: true` and run only
@@ -222,7 +222,7 @@ and `Shipped`. Utility commands keep the same compact labels and one-next-action
222
222
 
223
223
  | Skill | What It Does | Use When |
224
224
  |---|---|---|
225
- | [`rite-autocomplete`](../pack/.claude/skills/rite-autocomplete/SKILL.md) | Runs the whole lifecycle unattended (spec → clarify → … → seal → ship), choosing the recommended option at each soft gate and recording the rationale in `decisions.md`. A vague prompt triggers one up-front spec/clarify window; after decision coverage is CLEAR it runs without per-phase iteration, pausing only for genuine product/scope/policy decisions, irreversible risk, human-only access/actions, NO-GO, or budget exhaustion. Objective red checks use bounded technical recovery, including cold-resume recovery from retained one-shot evidence and one-time migration of stale missing-writer stops when an upgraded contract supplies the first supported workflow-artifact writer. That migration applies once, but the first real materializer failure is only attempt one under normal bounded recovery. Spending an action authorization blocks only another real execution, not offline repair. Default stops at Seal GO; `--ship` (alias `--yolo`) reaches Ship preflight but still requires a fresh literal `GO` and native approval. | "Autocomplete", "do the whole thing", "run the full cycle", "one-shot this feature". |
225
+ | [`rite-autocomplete`](../pack/.claude/skills/rite-autocomplete/SKILL.md) | Runs the whole lifecycle unattended (spec → clarify → … → seal → ship), choosing the recommended option at each soft gate and recording the rationale in `decisions.md`. A vague prompt triggers one up-front spec/clarify window; after decision coverage is CLEAR it runs without per-phase iteration, pausing only for genuine product/scope/policy decisions, irreversible risk, human-only access/actions, NO-GO, or budget exhaustion. Objective red checks use bounded technical recovery, including cold-resume recovery from retained one-shot evidence and one-time migration of stale missing-writer stops when an upgraded contract supplies the first supported workflow-artifact writer. That migration applies once, but the first real materializer failure is only attempt one under normal bounded recovery. Internal `NEEDS_REPLAN` and newly discovered agent-owned review findings remain caller-owned backward edges rather than user-facing stops. Spending an action authorization blocks only another real execution, not offline repair. Default stops at Seal GO; `--ship` (alias `--yolo`) reaches Ship preflight but still requires a fresh literal `GO` and native approval. | "Autocomplete", "do the whole thing", "run the full cycle", "one-shot this feature". |
226
226
  | [`rite-zoom-out`](../pack/.claude/skills/rite-zoom-out/SKILL.md) | Map the modules, callers, callees, and decisions in an unfamiliar area using the project's domain glossary. | Explicit-only: `/rite-zoom-out` / `/rite zoom-out`. |
227
227
  | [`rite-prototype`](../pack/.claude/skills/rite-prototype/SKILL.md) | Throwaway code answering ONE design question: logic harness OR 2 to 4 UI variations on one route. | Explicit-only: `/rite-prototype` / `/rite prototype`. |
228
228
  | [`rite-handoff`](../pack/.claude/skills/rite-handoff/SKILL.md) | Compact chat session → handoff doc. References existing `.devrites/work/<slug>/` artifacts by path. | Explicit-only: `/rite-handoff` / `/rite handoff`. |
@@ -231,6 +231,7 @@ and `Shipped`. Utility commands keep the same compact labels and one-next-action
231
231
  | [`rite-pov`](../pack/.claude/skills/rite-pov/SKILL.md) | Project-grounded verdict on a named external option: adopt / trial / hold / reject / not-our-problem after project + external floors clear. | "should we adopt X", "switch to Y", CVE/deprecation relevance, bounded external comparisons. |
232
232
  | [`rite-dogfood`](../pack/.claude/skills/rite-dogfood/SKILL.md) | Diff-scoped browser QA: map changed user journeys, run scenario matrix, fix small obvious breakages, write `dogfood.md`. | Explicit-only after prove/polish/review when browser UX confidence matters. |
233
233
  | [`rite-pr-feedback`](../pack/.claude/skills/rite-pr-feedback/SKILL.md) | Resolve PR review feedback: fetch unresolved threads, judge centrally, fix valid items, reply, resolve. | Explicit-only: `/rite-pr-feedback` / `/rite pr-feedback`. |
234
+ | [`rite-watch-pr`](../pack/.claude/skills/rite-watch-pr/SKILL.md) | Observe one PR/CI/review snapshot and report one next action without mutation. | Read-only capability-admitted native schedule/event observation or `/rite-watch-pr`. |
234
235
 
235
236
  ### Foundation: engineering rules
236
237
 
@@ -13,10 +13,11 @@ import (
13
13
  const (
14
14
  DevritesRootName = ".devrites"
15
15
 
16
- ClaudeSkillsTarget = ".claude/skills"
17
- CodexSkillsTarget = ".agents/skills"
18
- ClaudeAgentsTarget = ".claude/agents"
19
- CodexAgentsTarget = ".codex/agents"
16
+ ClaudeSkillsTarget = ".claude/skills"
17
+ CodexSkillsTarget = ".agents/skills"
18
+ ClaudeAgentsTarget = ".claude/agents"
19
+ CodexAgentsTarget = ".codex/agents"
20
+ ClaudeWorkflowsTarget = ".claude/workflows"
20
21
 
21
22
  ManifestName = ".claude/devrites.manifest"
22
23
  )
@@ -14,10 +14,11 @@ import (
14
14
  )
15
15
 
16
16
  const (
17
- ClaudeSkillsTarget = devritespaths.ClaudeSkillsTarget
18
- CodexSkillsTarget = devritespaths.CodexSkillsTarget
19
- ClaudeAgentsTarget = devritespaths.ClaudeAgentsTarget
20
- CodexAgentsTarget = devritespaths.CodexAgentsTarget
17
+ ClaudeSkillsTarget = devritespaths.ClaudeSkillsTarget
18
+ CodexSkillsTarget = devritespaths.CodexSkillsTarget
19
+ ClaudeAgentsTarget = devritespaths.ClaudeAgentsTarget
20
+ CodexAgentsTarget = devritespaths.CodexAgentsTarget
21
+ ClaudeWorkflowsTarget = devritespaths.ClaudeWorkflowsTarget
21
22
  )
22
23
 
23
24
  //go:embed templates/*.tmpl
@@ -126,6 +127,7 @@ func RequiredPayload(withCodex bool) []string {
126
127
  required := []string{
127
128
  "claude/skills",
128
129
  "claude/agents",
130
+ "claude/workflows",
129
131
  "claude/settings.json",
130
132
  }
131
133
  if withCodex {
@@ -162,6 +164,9 @@ func InstallTrees(withSkills, withAgents, withCodex bool) []Tree {
162
164
  trees = append(trees, Tree{PayloadPrefix: "codex/agents", TargetPrefix: CodexAgentsTarget})
163
165
  }
164
166
  }
167
+ if withSkills && withAgents {
168
+ trees = append(trees, Tree{PayloadPrefix: "claude/workflows", TargetPrefix: ClaudeWorkflowsTarget})
169
+ }
165
170
  return trees
166
171
  }
167
172
 
@@ -10,13 +10,14 @@ import (
10
10
 
11
11
  func TestValidatePayloadRequiresClaudeAndCodexFiles(t *testing.T) {
12
12
  payload := fstest.MapFS{
13
- "claude/skills/rite/SKILL.md": {},
14
- "claude/agents/devrites-code-reviewer.md": {},
15
- "claude/settings.json": {},
16
- "codex/skills/rite/SKILL.md": {},
17
- "codex/agents/devrites-code-reviewer.toml": {},
18
- "codex/AGENTS.md": {},
19
- "codex/config.toml": {},
13
+ "claude/skills/rite/SKILL.md": {},
14
+ "claude/agents/devrites-code-reviewer.md": {},
15
+ "claude/workflows/devrites-readonly-review.js": {},
16
+ "claude/settings.json": {},
17
+ "codex/skills/rite/SKILL.md": {},
18
+ "codex/agents/devrites-code-reviewer.toml": {},
19
+ "codex/AGENTS.md": {},
20
+ "codex/config.toml": {},
20
21
  }
21
22
  if err := ValidatePayload(payload, true); err != nil {
22
23
  t.Fatal(err)
@@ -38,10 +39,18 @@ func TestInstallTreesMapPayloadsToTargets(t *testing.T) {
38
39
  {PayloadPrefix: "codex/skills", TargetPrefix: ".agents/skills"},
39
40
  {PayloadPrefix: "claude/agents", TargetPrefix: ".claude/agents"},
40
41
  {PayloadPrefix: "codex/agents", TargetPrefix: ".codex/agents"},
42
+ {PayloadPrefix: "claude/workflows", TargetPrefix: ".claude/workflows"},
41
43
  }
42
44
  if !reflect.DeepEqual(got, want) {
43
45
  t.Fatalf("InstallTrees() = %#v, want %#v", got, want)
44
46
  }
47
+ for _, trees := range [][]Tree{InstallTrees(true, false, true), InstallTrees(false, true, true)} {
48
+ for _, tree := range trees {
49
+ if tree.PayloadPrefix == "claude/workflows" {
50
+ t.Fatal("Claude workflow installed without both skills and agents")
51
+ }
52
+ }
53
+ }
45
54
  }
46
55
 
47
56
  func TestAliasTemplateOutput(t *testing.T) {
@@ -313,11 +313,15 @@ func TestGeneratedPayloadInstallsVerbatim(t *testing.T) {
313
313
  target := t.TempDir()
314
314
  sentinel := "generated sentinel"
315
315
  testutil.WriteFile(t, filepath.Join(payload, "codex", "skills", "rite", "SKILL.md"), sentinel+"\n")
316
+ testutil.WriteFile(t, filepath.Join(payload, "claude", "workflows", "devrites-readonly-review.js"), sentinel+"\n")
316
317
 
317
318
  runInstall(t, target, payload, func(o *Options) {})
318
319
  if got := testutil.ReadFile(t, filepath.Join(target, ".agents", "skills", "rite", "SKILL.md")); got != sentinel+"\n" {
319
320
  t.Fatalf("codex payload was not installed verbatim: %q", got)
320
321
  }
322
+ if got := testutil.ReadFile(t, filepath.Join(target, ".claude", "workflows", "devrites-readonly-review.js")); got != sentinel+"\n" {
323
+ t.Fatalf("Claude workflow payload was not installed verbatim: %q", got)
324
+ }
321
325
  }
322
326
 
323
327
  func TestInstallBinaryUsesEngineHandoff(t *testing.T) {
@@ -1220,6 +1224,7 @@ func writeTestPayload(t *testing.T, root string) {
1220
1224
  t.Helper()
1221
1225
  testutil.WriteFile(t, filepath.Join(root, "claude", "skills", "rite", "SKILL.md"), "claude rite\n")
1222
1226
  testutil.WriteFile(t, filepath.Join(root, "claude", "agents", "devrites-code-reviewer.md"), "agent\n")
1227
+ testutil.WriteFile(t, filepath.Join(root, "claude", "workflows", "devrites-readonly-review.js"), "return { read_only: true }\n")
1223
1228
  testutil.WriteFile(t, filepath.Join(root, "claude", "settings.json"), `{
1224
1229
  "permissions": {
1225
1230
  "defaultMode": "plan",
@@ -20,6 +20,8 @@ change.
20
20
  `coding-style.md`, `patterns.md`, and `edge-case-trace.md`. On Codex, use the
21
21
  mirrors under `.agents/skills/devrites-lib/reference/standards/`. Apply the current
22
22
  files, not a summary you remember.
23
+ From `spec.md`'s applicability map, load only triggered `repository-topology.md`,
24
+ `data-integrity.md`, or `integration-reliability.md`; their cases remain feature-scoped.
23
25
 
24
26
  ## Inputs
25
27
  You receive a feature slug or workspace path (`.devrites/work/<slug>/`) and the
@@ -38,7 +40,8 @@ feature scope and read the touched files.
38
40
  `file:line` and the test that misses it. See `testing.md` § The verification gap.
39
41
  - **Correctness:** check logic, null, empty, and boundary values, error paths, races,
40
42
  and assumptions. For branching or boundary changes, run the edge-case trace over
41
- explicit paths, fixed-set siblings, and deletion contracts.
43
+ relevant probe classes, fixed-set siblings, real wiring, negative intent, and deletion
44
+ contracts. Verify the accepted failure/recovery disposition rather than re-listing cases.
42
45
  - **Readability:** check naming, function size, nesting, and comments that explain
43
46
  *why*. A new conditional **bolted onto an unrelated flow** is a design smell, not a
44
47
  nit; it may need its own helper, state, or policy. Repeated conditionals with the
@@ -52,6 +55,8 @@ feature scope and read the touched files.
52
55
  owning layer?
53
56
  - Has a type boundary been left implicit through an unnecessary `any`, `unknown`,
54
57
  cast, or silent fallback that hides an unclear invariant?
58
+ - Are repository/deployable roots, canonical contract and mutable-state ownership,
59
+ shared resources, and sync/async consistency boundaries preserved without a cycle?
55
60
  - **Maintainability:** dead code, leftover TODOs or logs, and convention drift. Check
56
61
  **file size as well as diff size**. If a small diff pushes an already-large file
57
62
  past a healthy boundary, flag decompose-then-add and recommend extracting helpers
@@ -25,6 +25,10 @@ slices in dependency order. Map every REQ and AC to a slice and executable proof
25
25
  name rollback and failure paths; keep acceptance-changing proposals separate. Durable
26
26
  proof commands must be portable repository commands, never host-local wrappers,
27
27
  user-specific absolute paths, or temporary proof trees.
28
+ Reconcile `spec.md`'s applicability map against live evidence. When triggered, apply
29
+ `repository-topology.md`, `data-integrity.md`, or `integration-reliability.md` and include
30
+ its required plan output with owner, partial-failure/recovery path, deployment order, slice,
31
+ and proof. Do not copy a standard or turn a false `not applicable` into a planning shortcut.
28
32
  For every consumptive action, apply `one-shot-actions.md`: draft a durable bounded
29
33
  artifact, a finite injective map from every failure emit seam to a stable non-secret
30
34
  boundary ID and offline decision, per-seam fault fixtures, cleanup-survival proof,
@@ -65,6 +69,7 @@ dependency_order: []
65
69
  technical_decisions: []
66
70
  human_owned_choices: []
67
71
  validation_commands: []
72
+ applicability_disposition: []
68
73
  ```
69
74
 
70
75
  The root validates the cross-file bundle and persists accepted content.
@@ -36,6 +36,10 @@ line, and then assign the band. Do not choose a score and justify it afterward:
36
36
  table: one reused artifact plus provider- and consumer-side asserting tests that consume
37
37
  it. Missing, one-sided, duplicated-contract, vague, or non-consuming proof is `broken`; when no
38
38
  boundary changes, require the specific no-impact statement.
39
+ Compare the spec applicability map with live roots, deployables, data ownership,
40
+ integrations, and delivery units. Apply the triggered topology/data/integration standard;
41
+ a missing owner, intermediate deployment state, partial-failure recovery, or required
42
+ plan/proof row is `broken`.
39
43
  2. **Scope discipline & reuse:** ask whether this is the minimum diff that meets
40
44
  acceptance and whether existing code solves any sub-problem. More than eight
41
45
  files or two new services or modules is a complexity smell unless the complexity
@@ -48,6 +52,8 @@ line, and then assign the band. Do not choose a score and justify it afterward:
48
52
  Changed behavior without a regression test is critical. Select unit, integration/E2E,
49
53
  or eval by path. Shared-contract provider and consumer tests must both consume the
50
54
  artifact named in `Shared contract proof`.
55
+ Applicable data/integration/topology risks require discriminating cases; reject a mock
56
+ that cannot reproduce the risk or one member's tests offered as cross-root proof.
51
57
  5. **Performance:** check N+1 or unbounded queries, repeated hot-path work, and
52
58
  oversized payloads. The plan must measure them or name the measurement, not
53
59
  speculate about micro-optimizations.
@@ -32,7 +32,13 @@ and only the orchestrator-supplied changed paths.
32
32
  evidence surface>` and a `failures` gap route Spec Drift.
33
33
  5. For UI scope, inspect only supplied browser artifacts and route-scoped root
34
34
  results. Missing browser proof is `cannot_verify`.
35
- 6. Recheck supplied before/after candidate identities. A mismatch or unexpected
35
+ 6. Reconcile the spec applicability map with the final diff. For triggered topology,
36
+ data, or integration rows, require the focused standard's relevant discriminating
37
+ failure/recovery proof or an evidence-backed dismissal. A generic suite, source
38
+ inspection, one-root result for another root, or risk-erasing mock cannot pass.
39
+ 7. Accept `pre-existing`/environment-only only with a supplied dated baseline for the
40
+ same command/cwd/prerequisites/material environment; otherwise use `cannot_verify`.
41
+ 8. Recheck supplied before/after candidate identities. A mismatch or unexpected
36
42
  repository mutation fails the side-effect boundary.
37
43
 
38
44
  ## Rules
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-retrospector
3
- description: Read-only cross-feature analyst that identifies specific recurring lessons in reviewed Markdown.
3
+ description: Read-only analyst of recurring cross-feature lessons in reviewed Markdown.
4
4
  tools: Read, Grep, Glob, Bash
5
5
  permissionMode: plan
6
6
  ---
@@ -9,48 +9,44 @@ permissionMode: plan
9
9
 
10
10
  ## Role / scope
11
11
 
12
- Inspect the bounded `.devrites/archive/` paths supplied by the orchestrator.
13
- Use native file search; do not invoke engine miners, indexes, telemetry, or other
14
- agents.
12
+ Inspect only supplied archive paths and necessary live authoritative repository sources.
13
+ Use native file search; do not use engine miners, indexes, telemetry, or agents.
15
14
 
16
15
  ## Analyze
17
16
 
18
- - A recurring correction or drift pattern must appear in at least two distinct
19
- features.
20
- - A single explicit architecture or product decision may qualify when its
21
- rationale is durable.
22
- - Cite the exact archived files for every claim.
23
- - Drop generic advice that could apply unchanged to any project.
24
- - Compare candidates with existing `AGENTS.md`, `CLAUDE.md`, scoped standards,
25
- and accepted ADRs so guidance is stated once.
17
+ - Keep two-feature corrections or one rationale-backed durable product/architecture decision.
18
+ - Verify live claims; cite currentness. Unverifiable = `unknown`, not false.
19
+ - Name trigger/non-trigger; drop generic, stale, one-off, unbounded advice.
20
+ - Search instructions/standards/ADRs for duplicate, contrary, or superseded guidance;
21
+ choose one canonical home + discovery route.
22
+ - Update/narrow/replace/retire at its owner; no rival rule or learning ledger/index/queue.
26
23
 
27
24
  ## Classify
28
25
 
29
- - **project instruction** — operating guidance for the nearest instruction or
30
- standards file;
31
- - **architecture decision** — significant durable choice suitable for an ADR;
32
- - **feature decision** — belongs only in that feature's `decisions.md`;
33
- - **drop** — one-off, stale, duplicate, or unsupported.
26
+ - **project instruction** — instruction/standard;
27
+ - **architecture decision** — ADR;
28
+ - **feature decision** — `decisions.md`;
29
+ - **drop** — unsupported/duplicate/stale/one-off/unknown-currentness.
34
30
 
35
- Return findings only. Do not write files, promote rules, ask the user, invoke
36
- another agent, or manufacture scores and trends.
31
+ Return findings only; do not write, promote, ask, or score.
37
32
 
38
33
  ## Output
39
34
 
40
35
  ```text
41
36
  Retrospective scope: <features inspected>
42
37
  Candidates:
43
- - [project instruction | architecture decision | feature decision] <specific lesson>
44
- Evidence: <file references>
45
- Existing authority: <none | path>
46
- Proposed home: <path>
47
- Dropped: <count and short reasons>
38
+ - [project instruction | architecture decision | feature decision] <lesson>
39
+ Evidence/currentness: <archive refs>; <live source + signal | unknown>
40
+ Scope: applies <trigger>; does not apply <boundary>
41
+ Authority: existing <path|none>; canonical <path>; consumers/discovery <route>
42
+ Disposition: <no conflict | update/narrow/replace/retire path + reason>
43
+ Dropped: <count + reasons>
48
44
  No durable candidate: <yes | no>
49
45
  ```
50
46
 
51
47
  ## Tools / read-write mode
52
48
 
53
- Read-only; do not edit files or write patches.
49
+ Read-only.
54
50
 
55
51
  ## Composition
56
52
 
@@ -47,10 +47,11 @@ Apply the OWASP LLM Top 10 (`.claude/skills/devrites-lib/reference/standards/sec
47
47
  prompts and context. Enforce authorization server-side rather than in a prompt,
48
48
  and never transmit or log PII or secrets.
49
49
  - **Supply chain & poisoning (LLM03 / LLM04 / LLM08):** pin and vet models,
50
- weights, datasets, and RAG or embedding sources. Treat them as untrusted.
50
+ weights, datasets, and RAG or embedding sources. Treat them as untrusted; check
51
+ provenance, tenant/ACL retrieval filters, poisoning, freshness, and deletion.
51
52
  - **Overreliance (LLM09)** / **unbounded consumption (LLM10):** ground
52
- consequential calls and keep a human in the loop. Limit request rate, tokens,
53
- cost, and time.
53
+ consequential calls, cite only supporting retrieved sources, define insufficient-context
54
+ behavior, and keep a human in the loop. Limit request rate, tokens, cost, and time.
54
55
 
55
56
  When the diff changes a DevRites agent, hook, or tool grant, apply the same checks
56
57
  to the pack. Confirm least agency, including read-only tools where required, no
@@ -60,6 +61,9 @@ secrets in prompts, and no trust in model or tool output as instructions.
60
61
  Apply the three-tier discipline from
61
62
  `.claude/skills/devrites-lib/reference/standards/security.md`. Flag any value that
62
63
  reaches the trusted tier without crossing the required boundary.
64
+ Explicitly trace authn versus per-resource authz, tenant scope across storage/cache/search/
65
+ jobs/model context, privilege-changing actions, resolved filesystem/archive paths, request
66
+ forgery control, unsafe deserialization, and fail-closed environment defaults when relevant.
63
67
 
64
68
  ## Rules
65
69
  - Don't edit. Findings only, labeled Critical / Important / Suggestion / Nit / FYI with
@@ -33,12 +33,20 @@ with one objective and exact permitted source/test paths.
33
33
  target/relevant call path, local implementation/error conventions, reuse seam,
34
34
  test seam, and in-scope principles/rules. Do not read for reassurance. If an
35
35
  essential item is missing from permitted context, return `Escalation`; never guess.
36
+ 8. **Isolated worktree transfer is explicit.** Only when the dispatch contract names
37
+ `Isolation: native-worktree`, run `git rev-parse HEAD` as the first command and
38
+ require exact equality with supplied `worktree_base` before reading or editing.
39
+ Mismatch returns a gap with no write. After green proof, create one local, unpushed
40
+ transfer commit. Never push, merge, rebase, or remove the worktree. Without that
41
+ exact mode, do not commit.
36
42
 
37
43
  ## The contract you receive
38
44
  The orchestrator supplies each item inline or by path. All workspace paths are
39
45
  relative to the **Workspace root** named in the contract:
40
46
  - **Slice:** id/name, goal, acceptance criteria, **scope boundary** (what it will and will
41
47
  **not** touch), mode (HITL/AFK + any budget).
48
+ - **Isolation:** `same-worktree` or `native-worktree`; native mode also supplies the
49
+ exact committed `worktree_base` SHA and requires a local transfer commit.
42
50
  - **Targets:** the exact project-relative paths listed in the dispatch task,
43
51
  plus interfaces and signatures to match. Your return cannot widen this set.
44
52
  - **Context to read yourself:** `spec.md`, `plan.md`, `decisions.md`, `assumptions.md`,
@@ -46,7 +54,9 @@ relative to the **Workspace root** named in the contract:
46
54
  `rite-polish/reference/anti-ai-slop.md`, and `design-brief.md` when the slice is UI.
47
55
  - **Rules in scope** (`.claude/skills/devrites-lib/reference/standards/`): `coding-style.md`, `error-handling.md`, `testing.md`,
48
56
  `patterns.md`; `security.md` when input/auth/data/integrations are touched; `performance.md`
49
- when the slice touches a hot path, a query, or a large payload. These files are authoritative:
57
+ when the slice touches a hot path, a query, or a large payload; and only when named by
58
+ the vetted applicability contract, `repository-topology.md`, `data-integrity.md`, or
59
+ `integration-reliability.md`. These files are authoritative:
50
60
  read the in-scope one rather than guessing the standard.
51
61
 
52
62
  **Before ORIENT, restate** the slice goal, acceptance criteria, and scope boundary
@@ -73,6 +83,10 @@ an escalation and do not proceed.**
73
83
  Confirm that it fails for the expected reason. Use the project's existing test
74
84
  runner rather than adding one.
75
85
  3. **IMPLEMENT the smallest complete version**, in the project's style.
86
+ Preserve every applicable invariant and implement the plan's named partial-failure,
87
+ duplicate/retry/concurrency/interruption/tenant/timeout/order/rollback behavior. If
88
+ the live seam disproves the applicability or recovery plan, stop with evidence; do
89
+ not invent a local fallback or broaden the slice.
76
90
  - **For a UI slice, invoke `devrites-frontend-craft` first.** Build from
77
91
  `design-brief.md` under the full skill rules. Cover empty, loading, error, and
78
92
  success states; use project tokens and existing components; meet WCAG 2.2 AA;
@@ -103,7 +117,12 @@ an escalation and do not proceed.**
103
117
  `dead_ends`. Resolution is progress, while a different cause returns to the caller as a
104
118
  new fingerprint. At the limit return the gate and repro. `Escalation` is only for product/irreversible choices
105
119
  or human-only access; technical failure is a blocker.
106
- 5. **RETURN** the structured artifact (below) and stop. Do not start the next slice.
120
+ 5. **TRANSFER when isolated.** After green writer-safe proof, verify the diff again,
121
+ stage only exact task paths, and create one new local commit whose message names
122
+ the slice transfer. Record its SHA. If the commit fails or includes any extra
123
+ path, return the failure and preserve the worktree; never bypass hooks or amend.
124
+ In `same-worktree` mode skip this step and leave the approved diff uncommitted.
125
+ 6. **RETURN** the structured artifact (below) and stop. Do not start the next slice.
107
126
 
108
127
  ## Code quality: consume the rules, don't reinvent them
109
128
  Apply the authoritative rule files and canonical anti-slop list named in the contract.
@@ -143,6 +162,9 @@ never authorizes a path:
143
162
  ```yaml
144
163
  slice: <id — name>
145
164
  restated_scope: <goal · acceptance · boundary>
165
+ isolation: same-worktree | native-worktree
166
+ worktree_base: <commit sha | none>
167
+ transfer_commit: <commit sha | none>
146
168
  files_changed:
147
169
  - path: <project-relative path>
148
170
  line: <line|n/a>
@@ -170,13 +192,17 @@ Every key is required; use an empty array when there is nothing to report.
170
192
  the smallest complete implementation; green gates backed by **real command output**;
171
193
  the project's idiom and existing code reused first; **no code or UI slop**; nothing
172
194
  beyond the spec; bookkeeping returned instead of written; irreversible-risk items in
173
- `Escalation`; and every declared principle honored or the conflict escalated. Fix any
195
+ `Escalation`; every triggered topology/data/integration behavior implemented and its
196
+ writer-safe proof run (or exact vetted root-owned proof reported `not-run`); and every
197
+ declared principle honored or the conflict escalated. Fix any
174
198
  failure or move it to `Escalation` instead of shipping it quietly.
175
199
 
176
200
  ## Tools / read-write mode
177
201
 
178
202
  Write-capable for code and tests only at the exact paths in the current slice
179
- contract; do not write `.devrites/` bookkeeping.
203
+ contract; do not write `.devrites/` bookkeeping. In exact `native-worktree` mode,
204
+ Git staging and one local transfer commit are permitted only for those paths; all
205
+ other Git mutation and every remote action remain forbidden.
180
206
 
181
207
  ## Composition
182
208