devrites 3.2.28 → 4.0.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 (897) hide show
  1. package/CHANGELOG.md +16 -144
  2. package/NOTICE.md +6 -5
  3. package/README.md +187 -95
  4. package/SECURITY.md +103 -79
  5. package/bin/devrites.mjs +140 -24
  6. package/docs/adr/0003-gate-model-hitl-pause.md +1 -1
  7. package/docs/adr/0013-native-codex-agent-orchestration.md +74 -0
  8. package/docs/adr/0014-native-host-hook-boundary.md +64 -0
  9. package/docs/adr/0015-read-only-root-native-orchestration.md +96 -0
  10. package/docs/adr/0016-codex-writer-fail-closed.md +53 -0
  11. package/docs/adr/0017-native-codex-writer-agent.md +63 -0
  12. package/docs/adr/0018-native-sandbox-instruction-writer-boundary.md +66 -0
  13. package/docs/adr/0019-native-boundary-with-deterministic-gates.md +48 -0
  14. package/docs/adr/0020-thin-engine-native-orchestration-boundary.md +54 -0
  15. package/docs/adr/0021-observable-workspace-compatibility.md +49 -0
  16. package/docs/adr/0022-native-orchestration-thin-engine.md +90 -0
  17. package/docs/adr/0023-native-workspace-reads-line-output.md +71 -0
  18. package/docs/adr/0024-native-policy-offline-installer-boundary.md +111 -0
  19. package/docs/adr/0025-evidence-gated-workspace-upgrades.md +64 -0
  20. package/docs/adr/0026-content-bound-proof-and-bounded-inputs.md +169 -0
  21. package/docs/adr/0027-content-bound-build-readiness.md +77 -0
  22. package/docs/adr/README.md +26 -11
  23. package/docs/agents/domain.md +2 -1
  24. package/docs/agents/issue-driven-rites.md +1 -1
  25. package/docs/architecture.md +191 -103
  26. package/docs/candidate-integrity.md +138 -0
  27. package/docs/capability-surface-selection.md +15 -5
  28. package/docs/cli.md +139 -92
  29. package/docs/command-map.md +88 -63
  30. package/docs/engine/commands.md +115 -507
  31. package/docs/engine/state-schema.md +94 -113
  32. package/docs/engine/workspace-schema.md +169 -229
  33. package/docs/flow.md +113 -68
  34. package/docs/harness-compliance.md +29 -56
  35. package/docs/markdown-instruction-upgrade-2026-08-02.md +302 -0
  36. package/docs/orchestration.md +136 -149
  37. package/docs/porting-to-a-new-harness.md +22 -7
  38. package/docs/quick-reference.md +21 -8
  39. package/docs/release.md +47 -4
  40. package/docs/skills.md +111 -72
  41. package/docs/templates/CRITIC_REVIEW_PACKET_TEMPLATE.md +2 -0
  42. package/docs/upstream-workflow-benchmark-2026-08-01.md +655 -0
  43. package/docs/usage.md +99 -65
  44. package/engine/Makefile +1 -2
  45. package/engine/cmd/releasepack/main.go +45 -25
  46. package/engine/cmd/releasepack/main_test.go +69 -0
  47. package/engine/commands.go +8 -258
  48. package/engine/harnessmatrix_test.go +28 -41
  49. package/engine/internal/devritespaths/paths.go +12 -28
  50. package/engine/internal/fsutil/copy.go +8 -0
  51. package/engine/internal/gate/gate.go +104 -105
  52. package/engine/internal/gate/gate_test.go +94 -84
  53. package/engine/internal/gate/readiness_binding.go +203 -0
  54. package/engine/internal/gate/readiness_binding_test.go +271 -0
  55. package/engine/internal/gitenv/env.go +46 -0
  56. package/engine/internal/gitenv/env_test.go +48 -0
  57. package/engine/internal/hostpack/hostpack.go +16 -20
  58. package/engine/internal/hostpack/hostpack_test.go +6 -6
  59. package/engine/internal/install/install.go +289 -511
  60. package/engine/internal/install/install_test.go +218 -306
  61. package/engine/internal/lib/candidate.go +475 -0
  62. package/engine/internal/lib/candidate_test.go +503 -0
  63. package/engine/internal/lib/closeout.go +17 -21
  64. package/engine/internal/lib/closeout_test.go +23 -0
  65. package/engine/internal/lib/cursor_compat_test.go +12 -75
  66. package/engine/internal/lib/evidencefresh.go +58 -47
  67. package/engine/internal/lib/evidencefresh_test.go +120 -0
  68. package/engine/internal/lib/resolve.go +13 -35
  69. package/engine/internal/lib/resolve_remediation_test.go +5 -17
  70. package/engine/internal/lib/secretscan.go +432 -0
  71. package/engine/internal/lib/secretscan_test.go +555 -0
  72. package/engine/internal/lib/util.go +24 -65
  73. package/engine/internal/lib/util_test.go +44 -0
  74. package/engine/internal/markdowntext/markdowntext.go +108 -0
  75. package/engine/internal/markdowntext/markdowntext_test.go +58 -0
  76. package/engine/internal/markdowntext/testdata/structural.json +27 -0
  77. package/engine/internal/reason/reason.go +2 -123
  78. package/engine/internal/reason/reason_test.go +4 -2
  79. package/engine/internal/rootfacts/facts.go +6 -8
  80. package/engine/internal/rootfacts/facts_test.go +20 -0
  81. package/engine/internal/state/cmd/workflowmanifest/main.go +10 -12
  82. package/engine/internal/state/cursor.go +53 -14
  83. package/engine/internal/state/cursor_test.go +57 -0
  84. package/engine/internal/state/feature.go +64 -154
  85. package/engine/internal/state/schema.go +24 -50
  86. package/engine/internal/state/state_test.go +151 -140
  87. package/engine/internal/state/status.go +4 -17
  88. package/engine/internal/state/workflow_manifest.json +9 -89
  89. package/engine/main.go +73 -502
  90. package/engine/root_routing_test.go +183 -212
  91. package/engine/testdata/fixtures/basic/devrites-root/{features/auth-tokens/feature.md → work/auth-tokens/README.md} +0 -1
  92. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/architecture.md +3 -0
  93. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/assumptions.md +3 -0
  94. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/brief.md +3 -0
  95. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decision-coverage.md +3 -0
  96. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/eng-review.md +3 -0
  97. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/questions.md +3 -0
  98. package/engine/testdata/fixtures/basic/devrites-root/{features/auth-tokens/status.md → work/auth-tokens/state.md} +3 -0
  99. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/test-plan.md +3 -0
  100. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/traceability.md +3 -0
  101. package/engine/testdata/fixtures/basic/devrites-root/{features/search-ranking/feature.md → work/search-ranking/README.md} +0 -1
  102. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/assumptions.md +3 -0
  103. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/brief.md +3 -0
  104. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/decisions.md +3 -0
  105. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/questions.md +3 -0
  106. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/state.md +2 -0
  107. package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +1 -1
  108. package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +1 -1
  109. package/engine/tests/adr_0003_gate_exit_code_test.go +2 -2
  110. package/engine/tests/adr_0011_define_plan_test.go +2 -2
  111. package/engine/tests/adr_0027_readiness_binding_test.go +106 -0
  112. package/engine/tests/cli_test.go +24 -107
  113. package/engine/tests/gate_test.go +177 -200
  114. package/engine/tests/meta_test.go +5 -35
  115. package/engine/tests/parity_closeout_test.go +12 -12
  116. package/engine/tests/parity_resolve_test.go +6 -16
  117. package/engine/tests/parity_test.go +8 -302
  118. package/install.sh +201 -34
  119. package/pack/.claude/agents/devrites-code-reviewer.md +9 -18
  120. package/pack/.claude/agents/devrites-devex-reviewer.md +10 -18
  121. package/pack/.claude/agents/devrites-doubt-reviewer.md +10 -20
  122. package/pack/.claude/agents/devrites-evidence-scout.md +14 -26
  123. package/pack/.claude/agents/devrites-frontend-reviewer.md +9 -15
  124. package/pack/.claude/agents/devrites-performance-reviewer.md +13 -21
  125. package/pack/.claude/agents/devrites-plan-drafter.md +24 -28
  126. package/pack/.claude/agents/devrites-plan-reviewer.md +30 -47
  127. package/pack/.claude/agents/devrites-proof-runner.md +41 -47
  128. package/pack/.claude/agents/devrites-retrospector.md +34 -79
  129. package/pack/.claude/agents/devrites-security-auditor.md +9 -17
  130. package/pack/.claude/agents/devrites-simplifier-reviewer.md +9 -18
  131. package/pack/.claude/agents/devrites-slice-wright.md +44 -62
  132. package/pack/.claude/agents/devrites-spec-reviewer.md +38 -50
  133. package/pack/.claude/agents/devrites-strategy-reviewer.md +10 -19
  134. package/pack/.claude/agents/devrites-test-analyst.md +22 -21
  135. package/pack/.claude/agents/devrites-upgrade-planner.md +52 -71
  136. package/pack/.claude/settings.json +12 -100
  137. package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -2
  138. package/pack/.claude/skills/devrites-audit/SKILL.md +6 -9
  139. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +0 -1
  140. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -27
  141. package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +22 -33
  142. package/pack/.claude/skills/devrites-doubt/SKILL.md +4 -6
  143. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +1 -2
  144. package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +2 -1
  145. package/pack/.claude/skills/devrites-interview/SKILL.md +31 -36
  146. package/pack/.claude/skills/devrites-lib/SKILL.md +37 -66
  147. package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +51 -0
  148. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +20 -12
  149. package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +22 -0
  150. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +35 -110
  151. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +26 -93
  152. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +6 -3
  153. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +43 -34
  154. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +90 -216
  155. package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +1 -1
  156. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +9 -28
  157. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +13 -11
  158. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +59 -54
  159. package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -5
  160. package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +29 -143
  161. package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +5 -6
  162. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +13 -31
  163. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +112 -82
  164. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +71 -45
  165. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +22 -11
  166. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +15 -24
  167. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +106 -37
  168. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +3 -4
  169. package/pack/.claude/skills/devrites-source-driven/SKILL.md +3 -4
  170. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +3 -3
  171. package/pack/.claude/skills/rite/SKILL.md +12 -13
  172. package/pack/.claude/skills/rite/reference/menu.md +11 -11
  173. package/pack/.claude/skills/rite-adopt/SKILL.md +29 -84
  174. package/pack/.claude/skills/rite-adopt/reference/adoption.md +16 -50
  175. package/pack/.claude/skills/rite-autocomplete/SKILL.md +65 -54
  176. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +24 -17
  177. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +18 -21
  178. package/pack/.claude/skills/rite-build/SKILL.md +28 -34
  179. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +36 -34
  180. package/pack/.claude/skills/rite-build/reference/anti-patterns.md +5 -19
  181. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +10 -9
  182. package/pack/.claude/skills/rite-build/reference/checkpoint.md +17 -17
  183. package/pack/.claude/skills/rite-build/reference/frontend-trigger.md +3 -3
  184. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +11 -14
  185. package/pack/.claude/skills/rite-build/reference/output.md +14 -24
  186. package/pack/.claude/skills/rite-build/reference/phase-contract.md +49 -188
  187. package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
  188. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +43 -133
  189. package/pack/.claude/skills/rite-clarify/SKILL.md +46 -40
  190. package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +4 -10
  191. package/pack/.claude/skills/rite-converge/SKILL.md +9 -33
  192. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +2 -2
  193. package/pack/.claude/skills/rite-customize/SKILL.md +34 -50
  194. package/pack/.claude/skills/rite-define/SKILL.md +34 -58
  195. package/pack/.claude/skills/rite-define/reference/plan-template.md +15 -0
  196. package/pack/.claude/skills/rite-doctor/SKILL.md +52 -64
  197. package/pack/.claude/skills/rite-dogfood/SKILL.md +1 -2
  198. package/pack/.claude/skills/rite-explain/SKILL.md +1 -20
  199. package/pack/.claude/skills/rite-frame/SKILL.md +1 -7
  200. package/pack/.claude/skills/rite-frame/reference/failure-modes.md +1 -1
  201. package/pack/.claude/skills/rite-handoff/SKILL.md +1 -2
  202. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +1 -1
  203. package/pack/.claude/skills/rite-learn/SKILL.md +44 -104
  204. package/pack/.claude/skills/rite-plan/SKILL.md +14 -26
  205. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +4 -1
  206. package/pack/.claude/skills/rite-polish/SKILL.md +20 -28
  207. package/pack/.claude/skills/rite-polish/reference/adr-promotion.md +11 -0
  208. package/pack/{generated/claude/skills/rite-ship → .claude/skills/rite-polish}/reference/design-memory.md +23 -21
  209. package/pack/.claude/skills/rite-polish/reference/ledger.md +62 -0
  210. package/pack/.claude/skills/rite-pov/SKILL.md +28 -32
  211. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +0 -1
  212. package/pack/.claude/skills/rite-pressure-test/SKILL.md +6 -13
  213. package/pack/.claude/skills/rite-prototype/SKILL.md +0 -6
  214. package/pack/.claude/skills/rite-prove/SKILL.md +73 -68
  215. package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +34 -30
  216. package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +15 -14
  217. package/pack/.claude/skills/rite-quick/SKILL.md +5 -19
  218. package/pack/.claude/skills/rite-resolve/SKILL.md +4 -21
  219. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
  220. package/pack/.claude/skills/rite-review/SKILL.md +34 -57
  221. package/pack/.claude/skills/rite-seal/SKILL.md +54 -87
  222. package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +2 -2
  223. package/pack/.claude/skills/rite-seal/reference/final-evidence.md +31 -56
  224. package/pack/.claude/skills/rite-seal/reference/go-no-go.md +27 -51
  225. package/pack/.claude/skills/rite-seal/reference/output.md +2 -4
  226. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +42 -140
  227. package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +2 -2
  228. package/pack/.claude/skills/rite-seal/reference/seal-template.md +17 -28
  229. package/pack/.claude/skills/rite-ship/SKILL.md +65 -93
  230. package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +4 -1
  231. package/pack/.claude/skills/rite-ship/reference/close-out.md +4 -12
  232. package/pack/.claude/skills/rite-ship/reference/git-ship.md +86 -48
  233. package/pack/.claude/skills/rite-ship/reference/ship-template.md +22 -16
  234. package/pack/.claude/skills/rite-spec/SKILL.md +62 -95
  235. package/pack/.claude/skills/rite-spec/reference/investigation.md +1 -4
  236. package/pack/.claude/skills/rite-spec/reference/question-protocol.md +21 -20
  237. package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +16 -17
  238. package/pack/.claude/skills/rite-spec/reference/spec-template.md +47 -49
  239. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +28 -13
  240. package/pack/.claude/skills/rite-status/SKILL.md +30 -88
  241. package/pack/.claude/skills/rite-temper/SKILL.md +12 -31
  242. package/pack/.claude/skills/rite-upgrade/SKILL.md +86 -101
  243. package/pack/.claude/skills/rite-vet/SKILL.md +88 -117
  244. package/pack/.claude/skills/rite-vet/reference/artifacts.md +56 -50
  245. package/pack/.claude/skills/rite-vet/reference/cross-model.md +15 -39
  246. package/pack/.claude/skills/rite-vet/reference/depth.md +2 -2
  247. package/pack/.claude/skills/rite-vet/reference/review-axes.md +3 -6
  248. package/pack/.claude/skills/rite-zoom-out/SKILL.md +0 -6
  249. package/pack/generated/README.md +2 -2
  250. package/pack/generated/claude/agents/devrites-code-reviewer.md +9 -18
  251. package/pack/generated/claude/agents/devrites-devex-reviewer.md +10 -18
  252. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +10 -20
  253. package/pack/generated/claude/agents/devrites-evidence-scout.md +14 -26
  254. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +9 -15
  255. package/pack/generated/claude/agents/devrites-performance-reviewer.md +13 -21
  256. package/pack/generated/claude/agents/devrites-plan-drafter.md +24 -28
  257. package/pack/generated/claude/agents/devrites-plan-reviewer.md +30 -47
  258. package/pack/generated/claude/agents/devrites-proof-runner.md +41 -47
  259. package/pack/generated/claude/agents/devrites-retrospector.md +34 -79
  260. package/pack/generated/claude/agents/devrites-security-auditor.md +9 -17
  261. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +9 -18
  262. package/pack/generated/claude/agents/devrites-slice-wright.md +44 -62
  263. package/pack/generated/claude/agents/devrites-spec-reviewer.md +38 -50
  264. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +10 -19
  265. package/pack/generated/claude/agents/devrites-test-analyst.md +22 -21
  266. package/pack/generated/claude/agents/devrites-upgrade-planner.md +52 -71
  267. package/pack/generated/claude/settings.json +12 -100
  268. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -2
  269. package/pack/generated/claude/skills/devrites-audit/SKILL.md +6 -9
  270. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +0 -1
  271. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +21 -27
  272. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +22 -33
  273. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +4 -6
  274. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +1 -2
  275. package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +2 -1
  276. package/pack/generated/claude/skills/devrites-interview/SKILL.md +31 -36
  277. package/pack/generated/claude/skills/devrites-lib/SKILL.md +37 -66
  278. package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +51 -0
  279. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +20 -12
  280. package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +22 -0
  281. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +35 -110
  282. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +26 -93
  283. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +6 -3
  284. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +43 -34
  285. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +90 -216
  286. package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +1 -1
  287. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +9 -28
  288. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +13 -11
  289. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +59 -54
  290. package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -5
  291. package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +29 -143
  292. package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +5 -6
  293. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +13 -31
  294. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +112 -82
  295. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +71 -45
  296. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +22 -11
  297. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +15 -24
  298. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +106 -37
  299. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +3 -4
  300. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +3 -4
  301. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +3 -3
  302. package/pack/generated/claude/skills/rite/SKILL.md +12 -13
  303. package/pack/generated/claude/skills/rite/reference/menu.md +11 -11
  304. package/pack/generated/claude/skills/rite-adopt/SKILL.md +29 -84
  305. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +16 -50
  306. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +65 -54
  307. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +24 -17
  308. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +18 -21
  309. package/pack/generated/claude/skills/rite-build/SKILL.md +28 -34
  310. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +36 -34
  311. package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +5 -19
  312. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +10 -9
  313. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +17 -17
  314. package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +3 -3
  315. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +11 -14
  316. package/pack/generated/claude/skills/rite-build/reference/output.md +14 -24
  317. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +49 -188
  318. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
  319. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +43 -133
  320. package/pack/generated/claude/skills/rite-clarify/SKILL.md +46 -40
  321. package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +4 -10
  322. package/pack/generated/claude/skills/rite-converge/SKILL.md +9 -33
  323. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +2 -2
  324. package/pack/generated/claude/skills/rite-customize/SKILL.md +34 -50
  325. package/pack/generated/claude/skills/rite-define/SKILL.md +34 -58
  326. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +15 -0
  327. package/pack/generated/claude/skills/rite-doctor/SKILL.md +52 -64
  328. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +1 -2
  329. package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -20
  330. package/pack/generated/claude/skills/rite-frame/SKILL.md +1 -7
  331. package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +1 -1
  332. package/pack/generated/claude/skills/rite-handoff/SKILL.md +1 -2
  333. package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +1 -1
  334. package/pack/generated/claude/skills/rite-learn/SKILL.md +44 -104
  335. package/pack/generated/claude/skills/rite-plan/SKILL.md +14 -26
  336. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +4 -1
  337. package/pack/generated/claude/skills/rite-polish/SKILL.md +20 -28
  338. package/pack/generated/claude/skills/rite-polish/reference/adr-promotion.md +11 -0
  339. package/pack/generated/{codex/skills/rite-ship → claude/skills/rite-polish}/reference/design-memory.md +23 -21
  340. package/pack/generated/claude/skills/rite-polish/reference/ledger.md +62 -0
  341. package/pack/generated/claude/skills/rite-pov/SKILL.md +28 -32
  342. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +0 -1
  343. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +6 -13
  344. package/pack/generated/claude/skills/rite-prototype/SKILL.md +0 -6
  345. package/pack/generated/claude/skills/rite-prove/SKILL.md +73 -68
  346. package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +34 -30
  347. package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +15 -14
  348. package/pack/generated/claude/skills/rite-quick/SKILL.md +5 -19
  349. package/pack/generated/claude/skills/rite-resolve/SKILL.md +4 -21
  350. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
  351. package/pack/generated/claude/skills/rite-review/SKILL.md +34 -57
  352. package/pack/generated/claude/skills/rite-seal/SKILL.md +54 -87
  353. package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +2 -2
  354. package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +31 -56
  355. package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +27 -51
  356. package/pack/generated/claude/skills/rite-seal/reference/output.md +2 -4
  357. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +42 -140
  358. package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +2 -2
  359. package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +17 -28
  360. package/pack/generated/claude/skills/rite-ship/SKILL.md +65 -93
  361. package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +4 -1
  362. package/pack/generated/claude/skills/rite-ship/reference/close-out.md +4 -12
  363. package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +86 -48
  364. package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +22 -16
  365. package/pack/generated/claude/skills/rite-spec/SKILL.md +62 -95
  366. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +1 -4
  367. package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +21 -20
  368. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +16 -17
  369. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +47 -49
  370. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +28 -13
  371. package/pack/generated/claude/skills/rite-status/SKILL.md +30 -88
  372. package/pack/generated/claude/skills/rite-temper/SKILL.md +12 -31
  373. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +86 -101
  374. package/pack/generated/claude/skills/rite-vet/SKILL.md +88 -117
  375. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +56 -50
  376. package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +15 -39
  377. package/pack/generated/claude/skills/rite-vet/reference/depth.md +2 -2
  378. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +3 -6
  379. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +0 -6
  380. package/pack/generated/codex/AGENTS.md +5 -4
  381. package/pack/generated/codex/agents/devrites-code-reviewer.toml +8 -27
  382. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +9 -27
  383. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +9 -29
  384. package/pack/generated/codex/agents/devrites-evidence-scout.toml +14 -36
  385. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +8 -24
  386. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +12 -30
  387. package/pack/generated/codex/agents/devrites-plan-drafter.toml +24 -38
  388. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +30 -57
  389. package/pack/generated/codex/agents/devrites-proof-runner.toml +41 -57
  390. package/pack/generated/codex/agents/devrites-retrospector.toml +34 -89
  391. package/pack/generated/codex/agents/devrites-security-auditor.toml +8 -26
  392. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +8 -27
  393. package/pack/generated/codex/agents/devrites-slice-wright.toml +44 -71
  394. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +38 -60
  395. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +9 -28
  396. package/pack/generated/codex/agents/devrites-test-analyst.toml +21 -30
  397. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +52 -81
  398. package/pack/generated/codex/config.toml +7 -0
  399. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -21
  400. package/pack/generated/codex/skills/devrites-audit/SKILL.md +6 -28
  401. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +1 -21
  402. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +21 -46
  403. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +22 -33
  404. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +4 -25
  405. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +1 -21
  406. package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +2 -1
  407. package/pack/generated/codex/skills/devrites-interview/SKILL.md +32 -56
  408. package/pack/generated/codex/skills/devrites-lib/SKILL.md +38 -86
  409. package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +51 -0
  410. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +20 -12
  411. package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +22 -0
  412. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +35 -110
  413. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +26 -93
  414. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +6 -3
  415. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +43 -34
  416. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +90 -216
  417. package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +1 -1
  418. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +9 -28
  419. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +13 -11
  420. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +59 -54
  421. package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -5
  422. package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +29 -143
  423. package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +5 -6
  424. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +13 -31
  425. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +112 -82
  426. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +71 -45
  427. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +22 -11
  428. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +15 -24
  429. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +106 -37
  430. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +3 -23
  431. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +3 -23
  432. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +3 -22
  433. package/pack/generated/codex/skills/rite/SKILL.md +12 -32
  434. package/pack/generated/codex/skills/rite/reference/menu.md +11 -11
  435. package/pack/generated/codex/skills/rite-adopt/SKILL.md +29 -103
  436. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +16 -50
  437. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +65 -73
  438. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +24 -17
  439. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +18 -21
  440. package/pack/generated/codex/skills/rite-build/SKILL.md +28 -53
  441. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +36 -34
  442. package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +5 -19
  443. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +10 -9
  444. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +17 -17
  445. package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +3 -3
  446. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +11 -14
  447. package/pack/generated/codex/skills/rite-build/reference/output.md +14 -24
  448. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +49 -188
  449. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +1 -1
  450. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +43 -133
  451. package/pack/generated/codex/skills/rite-clarify/SKILL.md +46 -59
  452. package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +4 -10
  453. package/pack/generated/codex/skills/rite-converge/SKILL.md +9 -52
  454. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +2 -2
  455. package/pack/generated/codex/skills/rite-customize/SKILL.md +32 -67
  456. package/pack/generated/codex/skills/rite-define/SKILL.md +34 -77
  457. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +15 -0
  458. package/pack/generated/codex/skills/rite-doctor/SKILL.md +52 -83
  459. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +1 -21
  460. package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -39
  461. package/pack/generated/codex/skills/rite-frame/SKILL.md +1 -26
  462. package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +1 -1
  463. package/pack/generated/codex/skills/rite-handoff/SKILL.md +1 -21
  464. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +1 -1
  465. package/pack/generated/codex/skills/rite-learn/SKILL.md +44 -123
  466. package/pack/generated/codex/skills/rite-plan/SKILL.md +14 -45
  467. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +4 -1
  468. package/pack/generated/codex/skills/rite-polish/SKILL.md +20 -47
  469. package/pack/generated/codex/skills/rite-polish/reference/adr-promotion.md +11 -0
  470. package/pack/{.claude/skills/rite-ship → generated/codex/skills/rite-polish}/reference/design-memory.md +23 -21
  471. package/pack/generated/codex/skills/rite-polish/reference/ledger.md +62 -0
  472. package/pack/generated/codex/skills/rite-pov/SKILL.md +28 -51
  473. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +0 -20
  474. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +6 -32
  475. package/pack/generated/codex/skills/rite-prototype/SKILL.md +0 -25
  476. package/pack/generated/codex/skills/rite-prove/SKILL.md +73 -87
  477. package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +34 -30
  478. package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +15 -14
  479. package/pack/generated/codex/skills/rite-quick/SKILL.md +5 -38
  480. package/pack/generated/codex/skills/rite-resolve/SKILL.md +4 -40
  481. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +2 -2
  482. package/pack/generated/codex/skills/rite-review/SKILL.md +34 -76
  483. package/pack/generated/codex/skills/rite-seal/SKILL.md +51 -103
  484. package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +2 -2
  485. package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +31 -56
  486. package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +27 -51
  487. package/pack/generated/codex/skills/rite-seal/reference/output.md +2 -4
  488. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +42 -140
  489. package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +2 -2
  490. package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +17 -28
  491. package/pack/generated/codex/skills/rite-ship/SKILL.md +65 -112
  492. package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +4 -1
  493. package/pack/generated/codex/skills/rite-ship/reference/close-out.md +4 -12
  494. package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +86 -48
  495. package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +22 -16
  496. package/pack/generated/codex/skills/rite-spec/SKILL.md +62 -114
  497. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +1 -4
  498. package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +21 -20
  499. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +16 -17
  500. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +47 -49
  501. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +28 -13
  502. package/pack/generated/codex/skills/rite-status/SKILL.md +30 -107
  503. package/pack/generated/codex/skills/rite-temper/SKILL.md +12 -50
  504. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +86 -120
  505. package/pack/generated/codex/skills/rite-vet/SKILL.md +88 -136
  506. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +56 -50
  507. package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +15 -39
  508. package/pack/generated/codex/skills/rite-vet/reference/depth.md +2 -2
  509. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +3 -6
  510. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +0 -25
  511. package/package.json +6 -5
  512. package/scripts/build-host-artifacts.sh +5 -9
  513. package/scripts/codex-generate.sh +18 -278
  514. package/scripts/install-lib.sh +121 -34
  515. package/uninstall.sh +19 -17
  516. package/update.sh +26 -18
  517. package/docs/engine/agent-contract.md +0 -172
  518. package/docs/extensions.md +0 -178
  519. package/engine/git_guard.go +0 -187
  520. package/engine/git_guard_test.go +0 -283
  521. package/engine/harnessmatrix.go +0 -60
  522. package/engine/hookpolicy.go +0 -113
  523. package/engine/hookpolicy_test.go +0 -160
  524. package/engine/hooks.go +0 -677
  525. package/engine/hooks_agent_dispatch.go +0 -1726
  526. package/engine/hooks_events_test.go +0 -431
  527. package/engine/hooks_workspace.go +0 -1196
  528. package/engine/internal/doctor/doctor.go +0 -306
  529. package/engine/internal/doctor/doctor_test.go +0 -252
  530. package/engine/internal/forge/forge.go +0 -938
  531. package/engine/internal/forge/forge_test.go +0 -576
  532. package/engine/internal/forge/git.go +0 -245
  533. package/engine/internal/forge/liveness_unix.go +0 -48
  534. package/engine/internal/forge/liveness_windows.go +0 -67
  535. package/engine/internal/forge/manifest.go +0 -402
  536. package/engine/internal/harness/compliance.go +0 -96
  537. package/engine/internal/harness/harness.go +0 -301
  538. package/engine/internal/harness/harness_test.go +0 -124
  539. package/engine/internal/iohooks/detach_other.go +0 -11
  540. package/engine/internal/iohooks/detach_unix.go +0 -11
  541. package/engine/internal/iohooks/iohooks.go +0 -839
  542. package/engine/internal/iohooks/iohooks_test.go +0 -561
  543. package/engine/internal/lib/adoption.go +0 -659
  544. package/engine/internal/lib/adoption_test.go +0 -121
  545. package/engine/internal/lib/analyze.go +0 -232
  546. package/engine/internal/lib/archivesearch.go +0 -125
  547. package/engine/internal/lib/archivesearch_test.go +0 -138
  548. package/engine/internal/lib/budget.go +0 -172
  549. package/engine/internal/lib/buildreadiness.go +0 -111
  550. package/engine/internal/lib/checkacceptance.go +0 -176
  551. package/engine/internal/lib/clarifyreturn.go +0 -91
  552. package/engine/internal/lib/clarifyreturn_test.go +0 -123
  553. package/engine/internal/lib/command_other.go +0 -7
  554. package/engine/internal/lib/command_unix.go +0 -24
  555. package/engine/internal/lib/context.go +0 -280
  556. package/engine/internal/lib/conventions.go +0 -449
  557. package/engine/internal/lib/coverage.go +0 -145
  558. package/engine/internal/lib/dispatchwaive.go +0 -31
  559. package/engine/internal/lib/dispatchwaive_test.go +0 -23
  560. package/engine/internal/lib/doubtcoverage.go +0 -78
  561. package/engine/internal/lib/extensions.go +0 -622
  562. package/engine/internal/lib/extensions_test.go +0 -305
  563. package/engine/internal/lib/footprint.go +0 -239
  564. package/engine/internal/lib/gitauthority.go +0 -601
  565. package/engine/internal/lib/gitauthority_test.go +0 -346
  566. package/engine/internal/lib/jsonout.go +0 -129
  567. package/engine/internal/lib/jsonout_test.go +0 -73
  568. package/engine/internal/lib/lanes.go +0 -112
  569. package/engine/internal/lib/learnings.go +0 -397
  570. package/engine/internal/lib/learnings_inject_test.go +0 -77
  571. package/engine/internal/lib/learnings_remediation_test.go +0 -24
  572. package/engine/internal/lib/ledger.go +0 -311
  573. package/engine/internal/lib/ledger_test.go +0 -186
  574. package/engine/internal/lib/mutationgate.go +0 -89
  575. package/engine/internal/lib/observability_test.go +0 -358
  576. package/engine/internal/lib/overrides.go +0 -164
  577. package/engine/internal/lib/overrides_test.go +0 -112
  578. package/engine/internal/lib/preamble.go +0 -159
  579. package/engine/internal/lib/preamble_questions_test.go +0 -10
  580. package/engine/internal/lib/progress.go +0 -210
  581. package/engine/internal/lib/provenance.go +0 -462
  582. package/engine/internal/lib/provenance_test.go +0 -154
  583. package/engine/internal/lib/readiness_contract.json +0 -118
  584. package/engine/internal/lib/readinessartifact.go +0 -533
  585. package/engine/internal/lib/readinessartifact_test.go +0 -422
  586. package/engine/internal/lib/reconcile.go +0 -1496
  587. package/engine/internal/lib/reconcile_test.go +0 -1071
  588. package/engine/internal/lib/recoveryattempts.go +0 -298
  589. package/engine/internal/lib/recoveryattempts_test.go +0 -215
  590. package/engine/internal/lib/reviewers.go +0 -143
  591. package/engine/internal/lib/reviewers_test.go +0 -45
  592. package/engine/internal/lib/reviewerstats.go +0 -199
  593. package/engine/internal/lib/reviewerstats_test.go +0 -104
  594. package/engine/internal/lib/reviewintegrity.go +0 -143
  595. package/engine/internal/lib/reviewintegrity_test.go +0 -103
  596. package/engine/internal/lib/runbook.go +0 -295
  597. package/engine/internal/lib/runbook_context_test.go +0 -182
  598. package/engine/internal/lib/session.go +0 -1020
  599. package/engine/internal/lib/session_test.go +0 -177
  600. package/engine/internal/lib/specparse.go +0 -125
  601. package/engine/internal/lib/specskeleton.go +0 -79
  602. package/engine/internal/lib/specvalidate.go +0 -391
  603. package/engine/internal/lib/specvalidate_test.go +0 -185
  604. package/engine/internal/lib/stuck.go +0 -206
  605. package/engine/internal/lib/templates/conventions_drift.tmpl +0 -6
  606. package/engine/internal/lib/templates/conventions_ledger_header.md +0 -6
  607. package/engine/internal/lib/templates/conventions_orient_header.txt +0 -1
  608. package/engine/internal/lib/testintegrity.go +0 -199
  609. package/engine/internal/lib/testintegrity_test.go +0 -149
  610. package/engine/internal/lib/tickafk.go +0 -86
  611. package/engine/internal/migrate/migrate.go +0 -279
  612. package/engine/internal/migrate/migrate_test.go +0 -157
  613. package/engine/internal/orient/firstrun.go +0 -50
  614. package/engine/internal/orient/firstrun_test.go +0 -72
  615. package/engine/internal/orient/orient.go +0 -69
  616. package/engine/internal/orient/orient_test.go +0 -25
  617. package/engine/internal/profile/profile.go +0 -284
  618. package/engine/internal/profile/profile_test.go +0 -13
  619. package/engine/internal/state/clarify_transition.go +0 -165
  620. package/engine/internal/state/clarify_transition_test.go +0 -130
  621. package/engine/internal/state/snapshot.go +0 -457
  622. package/engine/internal/toolpolicy/classifier.go +0 -533
  623. package/engine/internal/toolpolicy/classifier_test.go +0 -424
  624. package/engine/internal/toolpolicy/git.go +0 -616
  625. package/engine/internal/toolpolicy/scanner.go +0 -382
  626. package/engine/observability_cli_test.go +0 -52
  627. package/engine/profile_test.go +0 -76
  628. package/engine/subagent_orient_context.txt +0 -8
  629. package/engine/testdata/golden/TestParityA1Guard/devrites-edit-allowed.golden +0 -1
  630. package/engine/testdata/golden/TestParityA1Guard/no-window-silent.golden +0 -1
  631. package/engine/testdata/golden/TestParityA1Guard/non-edit-tool.golden +0 -1
  632. package/engine/testdata/golden/TestParityA1Guard/observe-mode-silent.golden +0 -1
  633. package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +0 -2
  634. package/engine/testdata/golden/TestParityA1Guard/subagent-allowed.golden +0 -1
  635. package/engine/testdata/golden/TestParityAnalyze/noactive.golden +0 -1
  636. package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +0 -15
  637. package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +0 -16
  638. package/engine/testdata/golden/TestParityAnalyze/slug=ghost.golden +0 -1
  639. package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +0 -15
  640. package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +0 -17
  641. package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +0 -16
  642. package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +0 -16
  643. package/engine/testdata/golden/TestParityBudget/default-active.golden +0 -4
  644. package/engine/testdata/golden/TestParityBudget/extra-md.golden +0 -5
  645. package/engine/testdata/golden/TestParityBudget/no-active.golden +0 -1
  646. package/engine/testdata/golden/TestParityBudget/no-feature.golden +0 -1
  647. package/engine/testdata/golden/TestParityBudget/over-advisory.golden +0 -6
  648. package/engine/testdata/golden/TestParityBudget/over-strict.golden +0 -6
  649. package/engine/testdata/golden/TestParityBudget/within.golden +0 -6
  650. package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +0 -2
  651. package/engine/testdata/golden/TestParityBuildReadiness/arg=approvenone.golden +0 -1
  652. package/engine/testdata/golden/TestParityBuildReadiness/arg=await.golden +0 -1
  653. package/engine/testdata/golden/TestParityBuildReadiness/arg=blocked.golden +0 -1
  654. package/engine/testdata/golden/TestParityBuildReadiness/arg=clarifyopen.golden +0 -1
  655. package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +0 -2
  656. package/engine/testdata/golden/TestParityBuildReadiness/arg=ghost.golden +0 -1
  657. package/engine/testdata/golden/TestParityBuildReadiness/arg=legacycontract.golden +0 -1
  658. package/engine/testdata/golden/TestParityBuildReadiness/arg=noapprove.golden +0 -1
  659. package/engine/testdata/golden/TestParityBuildReadiness/arg=noclarify.golden +0 -1
  660. package/engine/testdata/golden/TestParityBuildReadiness/arg=novet.golden +0 -1
  661. package/engine/testdata/golden/TestParityBuildReadiness/arg=stalevet.golden +0 -1
  662. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +0 -2
  663. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +0 -2
  664. package/engine/testdata/golden/TestParityBuildReadiness/arg=vetnotready.golden +0 -1
  665. package/engine/testdata/golden/TestParityCheckAcceptance/arg=blank-section.golden +0 -1
  666. package/engine/testdata/golden/TestParityCheckAcceptance/arg=empty.golden +0 -1
  667. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-dropped.golden +0 -1
  668. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +0 -2
  669. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-unchecked.golden +0 -1
  670. package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-gap.golden +0 -1
  671. package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +0 -2
  672. package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-seal.golden +0 -1
  673. package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-section.golden +0 -1
  674. package/engine/testdata/golden/TestParityCheckAcceptance/arg=nonexistent.golden +0 -1
  675. package/engine/testdata/golden/TestParityCheckAcceptance.golden +0 -1
  676. package/engine/testdata/golden/TestParityCoverage/arg=flat.golden +0 -7
  677. package/engine/testdata/golden/TestParityCoverage/arg=full.golden +0 -10
  678. package/engine/testdata/golden/TestParityCoverage/arg=nonexistent.golden +0 -1
  679. package/engine/testdata/golden/TestParityCoverage/arg=nospec.golden +0 -1
  680. package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +0 -9
  681. package/engine/testdata/golden/TestParityCoverage.golden +0 -1
  682. package/engine/testdata/golden/TestParityCursor/bare.golden +0 -3
  683. package/engine/testdata/golden/TestParityCursor/full-afk.golden +0 -6
  684. package/engine/testdata/golden/TestParityCursor/full-hitl.golden +0 -5
  685. package/engine/testdata/golden/TestParityCursor/no-active.golden +0 -1
  686. package/engine/testdata/golden/TestParityCursor/red.golden +0 -5
  687. package/engine/testdata/golden/TestParityCursor/zerogates.golden +0 -5
  688. package/engine/testdata/golden/TestParityDoubtCoverage/arg=doubted.golden +0 -2
  689. package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +0 -2
  690. package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +0 -3
  691. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +0 -4
  692. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +0 -2
  693. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nowright.golden +0 -2
  694. package/engine/testdata/golden/TestParityDoubtCoverage.golden +0 -1
  695. package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +0 -3
  696. package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +0 -3
  697. package/engine/testdata/golden/TestParityMutationGate/ghost.golden +0 -1
  698. package/engine/testdata/golden/TestParityOrientSilentPath.golden +0 -1
  699. package/engine/testdata/golden/TestParityReconcile/bad-mode.golden +0 -1
  700. package/engine/testdata/golden/TestParityReconcile/check-clean/snapshot.golden +0 -2
  701. package/engine/testdata/golden/TestParityReconcile/check-clean.golden +0 -2
  702. package/engine/testdata/golden/TestParityReconcile/check-no-base.golden +0 -1
  703. package/engine/testdata/golden/TestParityReconcile/check-no-claimed/snapshot.golden +0 -2
  704. package/engine/testdata/golden/TestParityReconcile/check-violation/snapshot.golden +0 -2
  705. package/engine/testdata/golden/TestParityReconcile/check-violation.golden +0 -1
  706. package/engine/testdata/golden/TestParityReconcile/close-window/snapshot.golden +0 -2
  707. package/engine/testdata/golden/TestParityReconcile/close-window.golden +0 -3
  708. package/engine/testdata/golden/TestParityReconcile/not-git.golden +0 -1
  709. package/engine/testdata/golden/TestParityReconcile/snapshot/snapshot.golden +0 -2
  710. package/engine/testdata/golden/TestParityReconcile/snapshot-no-allowlist.golden +0 -1
  711. package/engine/testdata/golden/TestParityReconcile/snapshot.golden +0 -2
  712. package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +0 -2
  713. package/engine/testdata/golden/TestParityRedwatch/non-bash-tool.golden +0 -1
  714. package/engine/testdata/golden/TestParityRedwatch/non-test-command.golden +0 -1
  715. package/engine/testdata/golden/TestParityRedwatch/pass-clears-red.golden +0 -1
  716. package/engine/testdata/golden/TestParityResolve/next-qid.golden +0 -2
  717. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +0 -2
  718. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-non-devrites-allows.golden +0 -1
  719. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-subagent-type-only-allows.golden +0 -1
  720. package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +0 -2
  721. package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +0 -2
  722. package/engine/testdata/golden/TestParityReviewerReadonly/non-bash-tool.golden +0 -1
  723. package/engine/testdata/golden/TestParityReviewerReadonly/non-tool-input.golden +0 -1
  724. package/engine/testdata/golden/TestParityReviewerReadonly/observe-mutating-silent.golden +0 -1
  725. package/engine/testdata/golden/TestParityReviewerReadonly/safe-bash-command.golden +0 -1
  726. package/engine/testdata/golden/TestParitySpecValidate/arg=dup.golden +0 -1
  727. package/engine/testdata/golden/TestParitySpecValidate/arg=empty.golden +0 -1
  728. package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +0 -2
  729. package/engine/testdata/golden/TestParitySpecValidate/arg=nonexistent.golden +0 -1
  730. package/engine/testdata/golden/TestParitySpecValidate/arg=noscenario.golden +0 -1
  731. package/engine/testdata/golden/TestParitySpecValidate/arg=noshall.golden +0 -1
  732. package/engine/testdata/golden/TestParitySpecValidate/arg=nothen.golden +0 -1
  733. package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +0 -2
  734. package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +0 -2
  735. package/engine/testdata/golden/TestParitySpecValidate.golden +0 -1
  736. package/engine/testdata/golden/TestParityStatusline/full-afk.golden +0 -2
  737. package/engine/testdata/golden/TestParityStatusline/full-hitl.golden +0 -2
  738. package/engine/testdata/golden/TestParityStatusline/no-active.golden +0 -1
  739. package/engine/testdata/golden/TestParityStatusline/nophase.golden +0 -2
  740. package/engine/testdata/golden/TestParityStatusline/red.golden +0 -2
  741. package/engine/testdata/golden/TestParityStuckCheck/bad-cmd.golden +0 -1
  742. package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +0 -2
  743. package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +0 -2
  744. package/engine/testdata/golden/TestParityStuckCheck/few.golden +0 -2
  745. package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +0 -2
  746. package/engine/testdata/golden/TestParityStuckCheck/identical.golden +0 -2
  747. package/engine/testdata/golden/TestParityStuckCheck/no-cmd.golden +0 -1
  748. package/engine/testdata/golden/TestParityStuckCheck/no-slug.golden +0 -1
  749. package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +0 -2
  750. package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +0 -2
  751. package/engine/testdata/golden/TestParityStuckCheck/varied.golden +0 -2
  752. package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +0 -2
  753. package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +0 -2
  754. package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +0 -2
  755. package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +0 -2
  756. package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +0 -2
  757. package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +0 -2
  758. package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +0 -2
  759. package/engine/testdata/golden/TestParitySubagentOrient/garbage-input.golden +0 -1
  760. package/engine/testdata/golden/TestParitySubagentOrient/non-devrites-agent.golden +0 -1
  761. package/engine/testdata/golden/TestParityTestIntegrity/assertion-dropped.golden +0 -1
  762. package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +0 -2
  763. package/engine/testdata/golden/TestParityTestIntegrity/deleted.golden +0 -1
  764. package/engine/testdata/golden/TestParityTestIntegrity/ghost-workspace.golden +0 -1
  765. package/engine/testdata/golden/TestParityTestIntegrity/not-git.golden +0 -1
  766. package/engine/testdata/golden/TestParityTestIntegrity/skip-added.golden +0 -1
  767. package/engine/testdata/golden/TestParityTickAfk/budget1/state.md.golden +0 -1
  768. package/engine/testdata/golden/TestParityTickAfk/budget1.golden +0 -2
  769. package/engine/testdata/golden/TestParityTickAfk/budget3/state.md.golden +0 -5
  770. package/engine/testdata/golden/TestParityTickAfk/budget3.golden +0 -2
  771. package/engine/testdata/golden/TestParityTickAfk/bulletPipe/state.md.golden +0 -1
  772. package/engine/testdata/golden/TestParityTickAfk/bulletPipe.golden +0 -2
  773. package/engine/testdata/golden/TestParityTickAfk/missingField/state.md.golden +0 -3
  774. package/engine/testdata/golden/TestParityTickAfk/missingField.golden +0 -2
  775. package/engine/testdata/golden/TestParityTickAfk/missingFile.golden +0 -1
  776. package/engine/testdata/golden/TestParityTickAfk/nonNumeric/state.md.golden +0 -1
  777. package/engine/testdata/golden/TestParityTickAfk/nonNumeric.golden +0 -1
  778. package/engine/testdata/golden/TestParityTickAfk/none/state.md.golden +0 -1
  779. package/engine/testdata/golden/TestParityTickAfk/none.golden +0 -2
  780. package/engine/testdata/golden/TestParityWrightScope/agent-required-non-wright.golden +0 -1
  781. package/engine/testdata/golden/TestParityWrightScope/devrites-edit-denied.golden +0 -2
  782. package/engine/testdata/golden/TestParityWrightScope/in-scope-allowed.golden +0 -1
  783. package/engine/testdata/golden/TestParityWrightScope/non-edit-tool.golden +0 -1
  784. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +0 -2
  785. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-observe-silent.golden +0 -1
  786. package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +0 -2
  787. package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +0 -2
  788. package/engine/testdata/golden/TestStuckLogHashParity.golden +0 -1
  789. package/engine/tests/adr_0006_clock_seam_test.go +0 -36
  790. package/engine/tests/budget_test.go +0 -88
  791. package/engine/tests/canonical_ac_ids_test.go +0 -44
  792. package/engine/tests/concurrency_cli_test.go +0 -131
  793. package/engine/tests/conventions_test.go +0 -106
  794. package/engine/tests/doctor_cli_test.go +0 -223
  795. package/engine/tests/forge_cli_test.go +0 -463
  796. package/engine/tests/hook_test.go +0 -2778
  797. package/engine/tests/hooks_io_test.go +0 -309
  798. package/engine/tests/json_contract_test.go +0 -224
  799. package/engine/tests/lib_parity_test.go +0 -930
  800. package/engine/tests/migrate_cli_test.go +0 -195
  801. package/engine/tests/parity_analyze_test.go +0 -55
  802. package/engine/tests/parity_buildreadiness_test.go +0 -199
  803. package/engine/tests/parity_learnings_test.go +0 -89
  804. package/engine/tests/parity_mutationgate_test.go +0 -36
  805. package/engine/tests/parity_reconcile_test.go +0 -94
  806. package/engine/tests/parity_testintegrity_test.go +0 -65
  807. package/engine/tests/parity_tickafk_test.go +0 -83
  808. package/engine/validatepack.go +0 -192
  809. package/engine/validatepack_test.go +0 -79
  810. package/engine/validatepackskills.go +0 -181
  811. package/engine/validatepackskills_test.go +0 -171
  812. package/pack/.claude/agents/devrites-forge-judge.md +0 -118
  813. package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +0 -44
  814. package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +0 -52
  815. package/pack/.claude/skills/rite-build/reference/evidence-standard.md +0 -45
  816. package/pack/.claude/skills/rite-build/reference/forge.md +0 -210
  817. package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +0 -60
  818. package/pack/.claude/skills/rite-ship/reference/adr-promotion.md +0 -9
  819. package/pack/.claude/skills/rite-ship/reference/ledger.md +0 -56
  820. package/pack/generated/claude/agents/devrites-forge-judge.md +0 -118
  821. package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +0 -44
  822. package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +0 -52
  823. package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +0 -45
  824. package/pack/generated/claude/skills/rite-build/reference/forge.md +0 -210
  825. package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +0 -60
  826. package/pack/generated/claude/skills/rite-ship/reference/adr-promotion.md +0 -9
  827. package/pack/generated/claude/skills/rite-ship/reference/ledger.md +0 -56
  828. package/pack/generated/codex/agents/devrites-forge-judge.toml +0 -128
  829. package/pack/generated/codex/hooks.json +0 -185
  830. package/pack/generated/codex/skills/devrites-api-interface/agents/openai.yaml +0 -2
  831. package/pack/generated/codex/skills/devrites-audit/agents/openai.yaml +0 -2
  832. package/pack/generated/codex/skills/devrites-browser-proof/agents/openai.yaml +0 -2
  833. package/pack/generated/codex/skills/devrites-debug-recovery/agents/openai.yaml +0 -2
  834. package/pack/generated/codex/skills/devrites-doubt/agents/openai.yaml +0 -2
  835. package/pack/generated/codex/skills/devrites-frontend-craft/agents/openai.yaml +0 -2
  836. package/pack/generated/codex/skills/devrites-interview/agents/openai.yaml +0 -2
  837. package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +0 -44
  838. package/pack/generated/codex/skills/devrites-prose-craft/agents/openai.yaml +0 -2
  839. package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +0 -71
  840. package/pack/generated/codex/skills/devrites-refresh-indexes/agents/openai.yaml +0 -2
  841. package/pack/generated/codex/skills/devrites-source-driven/agents/openai.yaml +0 -2
  842. package/pack/generated/codex/skills/devrites-ux-shape/agents/openai.yaml +0 -2
  843. package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +0 -45
  844. package/pack/generated/codex/skills/rite-build/reference/forge.md +0 -210
  845. package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +0 -60
  846. package/pack/generated/codex/skills/rite-ship/reference/adr-promotion.md +0 -9
  847. package/pack/generated/codex/skills/rite-ship/reference/ledger.md +0 -56
  848. package/scripts/build-binaries.sh +0 -75
  849. package/scripts/build-release-tarball.sh +0 -105
  850. package/scripts/check-authority-drift.py +0 -125
  851. package/scripts/check-cross-refs.py +0 -139
  852. package/scripts/check-generated-skill-budget.mjs +0 -42
  853. package/scripts/check-instruction-size-baseline.mjs +0 -88
  854. package/scripts/check-invocation-integrity.py +0 -115
  855. package/scripts/check-no-global-writes.sh +0 -66
  856. package/scripts/check-no-personal-paths.py +0 -50
  857. package/scripts/check-npm-audit.mjs +0 -110
  858. package/scripts/check-reference-governance.mjs +0 -83
  859. package/scripts/check-reply-contract.sh +0 -64
  860. package/scripts/check-rule-uniqueness.sh +0 -45
  861. package/scripts/devrites-detect.sh +0 -176
  862. package/scripts/grade-feature.sh +0 -204
  863. package/scripts/live-hosts/agent-result.schema.json +0 -231
  864. package/scripts/live-hosts/claude.sh +0 -87
  865. package/scripts/live-hosts/codex.sh +0 -85
  866. package/scripts/live-hosts/common.sh +0 -113
  867. package/scripts/live-hosts/fake-host.py +0 -257
  868. package/scripts/live-hosts/host-transport.py +0 -286
  869. package/scripts/npm-audit-exceptions.json +0 -26
  870. package/scripts/pin.sh +0 -249
  871. package/scripts/release-check.sh +0 -75
  872. package/scripts/run-agent-contract-evals.py +0 -1380
  873. package/scripts/run-behavioral-evals.sh +0 -196
  874. package/scripts/run-evals.sh +0 -132
  875. package/scripts/run-live-behavioral-evals.py +0 -1310
  876. package/scripts/run-outcome-evals.sh +0 -454
  877. package/scripts/run-routing-evals.py +0 -342
  878. package/scripts/run-tests.mjs +0 -232
  879. package/scripts/scan-pack-security.py +0 -209
  880. package/scripts/scan-supply-chain-iocs.py +0 -127
  881. package/scripts/skill-pruning-audit.mjs +0 -121
  882. package/scripts/skills-inventory.mjs +0 -125
  883. package/scripts/supply-chain-iocs.json +0 -11
  884. package/scripts/sync-version.sh +0 -54
  885. package/scripts/validate-agent-composition.py +0 -57
  886. package/scripts/validate-command-parity.py +0 -70
  887. package/scripts/validate-frontmatter.py +0 -218
  888. package/scripts/validate-skill-anatomy.py +0 -139
  889. package/scripts/validate-workflow-security.py +0 -184
  890. package/scripts/validate-workspace-schema.py +0 -800
  891. package/scripts/validate.sh +0 -354
  892. package/scripts/workflow_schema.py +0 -69
  893. /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/decisions.md +0 -0
  894. /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/plan.md +0 -0
  895. /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/spec.md +0 -0
  896. /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/tasks.md +0 -0
  897. /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/search-ranking/spec.md +0 -0
@@ -3,12 +3,14 @@
3
3
  DevRites combines project-local Claude Code and Codex skills with one Go control
4
4
  plane. It gives AI coding agents a defined engineering process: frame → spec →
5
5
  mandatory adaptive clarify → optional temper → define → mandatory vet → build
6
- one verified slice → prove with evidence → polish → review → seal → ship.
6
+ bounded verified slices → prove with evidence → polish → review → seal → ship.
7
7
  `converge` is the recovery state for bringing live code and recorded intent
8
8
  back into agreement.
9
+ `frame` is a machine state/checkpoint and an optional, non-gating preflight
10
+ lens; Spec begins the required feature-definition path.
9
11
 
10
- For the `.devrites/` load order, file budgets, artifact schema, aliases,
11
- traceability rules, and phase-relative completeness model, see
12
+ For the `.devrites/` load order, file budgets, artifact schema, supported
13
+ cursor readers, traceability rules, and phase-relative completeness model, see
12
14
  [`engine/workspace-schema.md`](engine/workspace-schema.md).
13
15
 
14
16
  ## Layers
@@ -20,8 +22,8 @@ traceability rules, and phase-relative completeness model, see
20
22
  `rite-polish`, `rite-review`, `rite-seal`, and `rite-ship`. `rite-plan`
21
23
  repairs or reslices an active plan. The resume verb `rite-resolve` answers a
22
24
  HITL gate and clears `Awaiting human`. `rite-upgrade` is a conditional
23
- maintenance route for semantically stale active workspaces, not a lifecycle
24
- phase. The thin `/rite` menu and read-only `rite-status` live in the public
25
+ evidence-gated compatibility route for older active workspaces, not a phase.
26
+ The thin `/rite` menu and read-only `rite-status` live in the public
25
27
  utility layer below.
26
28
  `/rite-seal` **decides** GO/NO-GO and writes the verdict to `seal.md`;
27
29
  `/rite-ship` is the final core lifecycle rite that **executes** the
@@ -33,9 +35,11 @@ traceability rules, and phase-relative completeness model, see
33
35
  `rite-customize`, `rite-zoom-out`, `rite-prototype`, `rite-handoff`,
34
36
  `rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, and
35
37
  `rite-autocomplete`. These are public commands. `rite-autocomplete` is the
36
- unattended orchestrator. It drives the whole lifecycle (spec → … → seal →
37
- ship), chooses the recommended option at each soft gate, and pauses only for
38
- hard irreversible-risk, blocking, or escalating gates, or a NO-GO. The
38
+ unattended orchestrator. By default it drives the reversible lifecycle
39
+ through Seal GO and stops. Explicit `--ship` enters Ship preflight but still
40
+ waits for a fresh literal `GO` and native approval before mutation. It
41
+ chooses the recommended option at each soft gate and pauses for hard
42
+ irreversible-risk, blocking, or escalating gates, or a NO-GO. The
39
43
  `devrites-` prefix prevents collisions with bundled Claude Code skill names
40
44
  such as `prototype`, `handoff`, `triage`, and `diagnose`; it does not mark
41
45
  visibility. `rite-pressure-test` needs no prefix because it does not collide.
@@ -44,8 +48,7 @@ traceability rules, and phase-relative completeness model, see
44
48
  `-doubt`, `-ux-shape` (plans UX/UI into `design-brief.md` at `/rite-spec`),
45
49
  `-frontend-craft`, `-browser-proof`, `-debug-recovery`,
46
50
  `-api-interface`, `-audit` (dispatches the security / perf / simplify
47
- fresh-context reviewer on an axis argument), `-prose-craft`, and
48
- `-refresh-indexes`. Public skills or host auto-selection invoke these 11
51
+ fresh-context reviewer on an axis argument), and `-prose-craft`. Public skills invoke these
49
52
  specialists. They do not appear in the menu. The `user-invocable:` flag,
50
53
  rather than the name prefix, determines whether a skill is public.
51
54
 
@@ -58,16 +61,16 @@ traceability rules, and phase-relative completeness model, see
58
61
  4. **Supporting references**: `reference/*.md` inside each skill. Long checklists,
59
62
  templates, and anti-rationalization tables loaded on demand (progressive
60
63
  disclosure) so `SKILL.md` bodies stay small.
61
- 5. **Agents**: `.claude/agents/devrites-*` contains **18 flat depth-one roles**:
62
- 17 read-only leaves and the sole source/test writer,
63
- `devrites-slice-wright`. The read-only set includes three bounded work
64
- leaves (`devrites-evidence-scout`, `devrites-plan-drafter`, and
65
- `devrites-proof-runner`), the fresh `devrites-upgrade-planner`, plus the
66
- existing reviewers, auditors, judge, and retrospector. Public rites remain
67
- authoritative: leaves return typed
68
- evidence, never ask the human, change phase, or write canonical
69
- `.devrites/**` state. See [`orchestration.md`](orchestration.md) for the
70
- dispatch, fallback, identity, and reconciliation contract.
64
+ 5. **Agents**: `.claude/agents/devrites-*` contains **17 flat depth-one roles**:
65
+ 16 read-only leaves and `devrites-slice-wright`, the sole source/test writer
66
+ role. Claude and Codex make only that role writable; Codex generates the
67
+ other 16 profiles read-only. The read-only set includes three
68
+ bounded work leaves (`devrites-evidence-scout`, `devrites-plan-drafter`, and
69
+ `devrites-proof-runner`), the fresh upgrade assessor, plus the
70
+ reviewers, auditors, and retrospector. Public rites remain
71
+ authoritative: leaves return bounded evidence, never ask the human, change
72
+ phase, or write canonical `.devrites/**` state. See
73
+ [`orchestration.md`](orchestration.md) for the host boundary.
71
74
  6. **Engineering rules**: DevRites' own stack-agnostic rules installed to
72
75
  `.claude/skills/devrites-lib/reference/standards/`. Workspace-operating lifecycle
73
76
  skills read `core.md` in step 0; compact utilities load only their local or conditional
@@ -92,38 +95,85 @@ per-skill catalog with triggers and I/O, and
92
95
  [`capability-surface-selection.md`](capability-surface-selection.md) for where future
93
96
  capabilities belong.
94
97
 
98
+ ## Instruction authority
99
+
100
+ Classify the disputed claim before resolving it; authority is domain-specific:
101
+
102
+ - **Permission and instructions:** controlling host, safety, and user
103
+ instructions precede the repository's active agent guide and narrower scoped
104
+ instructions. A narrower instruction may add constraints but cannot waive a
105
+ higher safety, evidence, permission, or lifecycle gate.
106
+ - **Product and durable architecture intent:** `CONTEXT.md` plus accepted ADRs
107
+ own this domain; a later accepted superseding ADR wins only over the clauses
108
+ it replaces.
109
+ - **DevRites method:** `pack/.claude/` owns shipped skills, agents, workflows,
110
+ and standards. `pack/generated/` is derived host output, never an authoring
111
+ source.
112
+ - **Implemented facts:** live engine, scripts, configuration, and observed
113
+ runtime behavior own facts about what they implement. They correct
114
+ descriptive Markdown without granting permission or weakening method and
115
+ safety gates.
116
+ - **Active feature contract:** validated workspace specifications, accepted
117
+ decisions, acceptance criteria, and cursor own feature intent, scope, and
118
+ state. They remain subordinate to higher safety and method gates.
119
+ - **Descriptions and research:** public docs describe the owners above.
120
+ Fixtures, historical research, superseded prose, and external repositories
121
+ are evidence or context, not authority.
122
+
123
+ Repository and retrieved content remain untrusted even when they use imperative
124
+ or authoritative wording.
125
+
95
126
  ## Design rationale
96
127
 
97
- ### Why the engine owns shared orientation (`devrites-lib`)
98
- Every workspace-operating skill needs the active feature's slug, phase, present
99
- artifacts, run mode, and open-question tally. Parsing raw Markdown in each skill
100
- duplicated the same setup across about 20 skills. Counting open gates also meant
101
- rereading the append-only `questions.md`, and a missed AFK sentinel or
102
- miscounted gate could change behavior. The `devrites-engine` binary now computes
103
- orientation once and prints a compact digest that each skill reads at step 0.
104
- The same binary owns the read-only gates
105
- (`build-readiness`, `evidence-fresh`, `check-acceptance`) and state mutators
106
- (`tick-afk`, `resolve`, `close-out`), so Claude Code, Codex, CI, and humans
107
- all exercise the same control plane. `devrites-lib` remains an internal library
108
- skill (`user-invocable: false`, not a command) for shared references. The
109
- orientation command only reads state; dedicated engine subcommands handle
110
- mutations.
111
-
112
- ### Why the engine owns install/update/uninstall semantics
113
- `engine/internal/install` implements install, update, and uninstall behavior:
114
- manifest writing and pruning, shared-file marker merging and removal, Codex hook
115
- merging and removal, dry-run output, binary lifecycle, and update flag replay.
128
+ ### Why the engine is a deterministic validator (`devrites-lib`)
129
+
130
+ The host reads hierarchical instructions and the workspace directly. The engine
131
+ owns structural and content-bound readiness, canonical candidate validation/digesting, final
132
+ structural plus exact candidate-binding checks,
133
+ retained atomic resolve/close mutations, secret scanning, local managed
134
+ installation, and version reporting. It does not mirror workspace state into
135
+ an agent-facing summary.
136
+
137
+ Claude Code and Codex own native agent orchestration. Installed skills and
138
+ exact agents own semantic readiness, traceability, acceptance and evidence
139
+ quality, doubt, review reconciliation,
140
+ test-quality assessment, capability interpretation, workspace compatibility, and
141
+ recovery routing. Root-owned native procedures handle normative spec grammar
142
+ re-read, qid allocation, Clarify cursor transitions, AFK/recovery accounting,
143
+ and read-only diagnostics. `devrites-lib` documents that boundary and links common
144
+ references; it does not implement an orchestration protocol.
145
+
146
+ ### Why install policy is local and acquisition stays at the edge
147
+ `engine/internal/install` validates the pre-generated host payload and implements
148
+ install, update, and uninstall behavior: manifest writing and pruning,
149
+ shared-file marker merging and removal, legacy Codex hook removal, dry-run
150
+ output, binary lifecycle, rollback, and install-flag replay. These operations
151
+ consume only caller-supplied local source, payload, and binary candidates; the
152
+ engine does not select releases or perform network I/O. `update --check`
153
+ compares the installed manifest version with that local candidate. Engine
154
+ `--to` and `--pre` selectors do not exist.
116
155
  The shell entrypoints
117
156
  (`install.sh`, `uninstall.sh`, `update.sh`) and npm entrypoint
118
- (`bin/devrites.mjs`) remain bootstrap shims. They acquire a release bundle or
119
- engine binary, then pass arguments through.
157
+ (`bin/devrites.mjs`) are acquisition adapters. They acquire and verify the
158
+ exact-release bundle or binary, then pass local paths and user flags through to
159
+ the deterministic engine operation. Network paths require exact SemVer,
160
+ HTTPS-only redirects, exact-filename SHA-256 sidecars, private temporary
161
+ directories, bounded transfers, and full archive preflight. They provide no
162
+ unchecked raw, source-archive, tag, or default-branch fallback.
163
+
164
+ Package and release builds populate `pack/generated/{claude,codex}`, so normal
165
+ installs consume a pre-generated payload. In a source checkout, the shell
166
+ install and update shims may regenerate missing payload components before
167
+ handing the local payload to the engine. The engine itself only validates and
168
+ copies that payload; it never generates host artifacts, and invalid payloads
169
+ fail closed.
120
170
 
121
171
  Directly managed manifest entries carry SHA-256 ownership records. Before the
122
172
  first refresh, prune, or uninstall mutation, the engine classifies every
123
173
  affected path. It preserves customized or legacy entries without hashes unless
124
174
  `--force` is explicit, and it checks each path again immediately before a
125
- destructive action. Marker-owned shared files retain their block or hook merge
126
- policy. The engine rejects existing symlinks, junctions, and resolved target
175
+ destructive action. Marker-owned shared files retain their block merge policy.
176
+ The engine rejects existing symlinks, junctions, and resolved target
127
177
  escapes even under force.
128
178
 
129
179
  Binary replacement is a separate transaction. Before replacement, the binary
@@ -133,31 +183,36 @@ same check in a new process. On failure, the engine atomically restores the old
133
183
  bytes and mode or removes a bad first install. It does not use `PATH` to
134
184
  establish binary identity.
135
185
 
186
+ Production Git call sites use one isolation policy in Go and one parity helper
187
+ in shell. They remove environment variables that can retarget the repository,
188
+ worktree, index, objects, refs, config, or pathspec while preserving unrelated
189
+ Git variables; callers do not maintain independent deny lists.
190
+
136
191
  Some duplication is intentionally preserved at host boundaries. Raw `curl | bash`
137
192
  install/uninstall must be self-contained enough to fetch the bundle before any sibling
138
193
  files exist. Claude assets are authored under `pack/.claude/**`; Codex assets are
139
194
  generated into `pack/generated/**` and installed to `.agents/skills`, `.codex/agents`,
140
- `.codex/hooks.json`, and `AGENTS.md` because Codex and Claude use
195
+ `.codex/config.toml`, and `AGENTS.md` because Codex and Claude use
141
196
  different project-local conventions. Those generated host artifacts are delivered by the
142
197
  npm installer; Claude/Codex plugin packaging is intentionally not a distribution path.
143
198
 
144
- ### Why semantic upgrade is separate from update and migration
199
+ ### Why semantic upgrade is evidence-gated, not a migration
145
200
 
146
- Three operations solve different problems. `devrites-engine update` refreshes
147
- the installed binary and pack. `devrites-engine migrate` normalizes workspace
148
- layout and structural state schema. Neither one can claim that an active plan
149
- still follows the current planning rules.
201
+ The shell/npm update entrypoint acquires a candidate and uses the local engine
202
+ update operation to refresh the installed binary and pack. An active
203
+ unfinished workspace may still fail a current contract. `/rite-upgrade [slug]`
204
+ first asks the exact read-only `devrites-upgrade-planner` for a typed, cited
205
+ assessment. Age and cursor encoding do not prove staleness. A repair must name
206
+ the current rule, workspace evidence, affected gate, owner, paths, and minimum
207
+ delta; Clarify, Plan repair, Converge, Vet, Prove, Polish, Review, or Seal then
208
+ performs it under normal gates. Candidate repair runs current real proof and
209
+ never synthesizes a historical pass; ambiguous legacy candidate scope is a gap.
150
210
 
151
- `/rite-upgrade [slug]` owns that semantic reconciliation. Build readiness uses
152
- the `devrites.readiness-artifacts.v2` contract declared by
153
- `decision-coverage.md`, `eng-review.md`, and `test-plan.md`; it returns code `8`
154
- when those existing artifacts are stale. The rite then asks a fresh read-only
155
- `devrites-upgrade-planner` to classify the gap before the root changes anything.
156
- It preserves completed source, slice bodies, decisions, and evidence, repairs
157
- only active unfinished planning, removes obsolete proof recipes and local
158
- wrappers, and reruns the current readiness gates. Already-current workspaces
159
- that pass readiness, completed workspaces, and archives remain untouched. See
160
- [ADR-0012](adr/0012-semantic-workspace-upgrades.md).
211
+ The engine has no structural migration command or compatibility telemetry. It
212
+ directly reads the official v1/v2 bullet and v3 table `state.md` cursors without
213
+ rewriting them. Wider pre-release compatibility experiments are not runtime
214
+ contracts. See [ADR-0025](adr/0025-evidence-gated-workspace-upgrades.md) and
215
+ [ADR-0022](adr/0022-native-orchestration-thin-engine.md).
161
216
 
162
217
  ### Why `/engine` was rejected
163
218
  A single `/engine` (or `/devrites`) command would load every phase's
@@ -171,13 +226,11 @@ The team chose `rite-` because it is short, easy to remember, and matches the
171
226
  product's use of "rites" for disciplined steps. The prefix also avoids
172
227
  collisions. Built-in or bundled Claude Code commands include `/plan`, `/review`,
173
228
  `/run`, `/verify`, `/code-review`, `/simplify`, `/security-review`, `/init`,
174
- `/compact`, and `/debug`. (Collision audit:
175
- `research/claude-code-skills-notes.md`.)
229
+ `/compact`, and `/debug`.
176
230
 
177
231
  ### Why a thin menu skill, not a mega-router
178
- `/rite` is an entrypoint. It shows a compact phase-grouped menu, prints
179
- recommended-start guidance from `devrites-engine first-task`, and dispatches a
180
- named verb to its owning skill. Menu mode does not read raw workspace state;
232
+ `/rite` is an entrypoint. It shows a compact phase-grouped menu and dispatches a
233
+ named verb to its owning skill. Menu mode does not infer workspace state;
181
234
  `/rite-status` owns detailed status. `/rite` does not duplicate workflow logic,
182
235
  which keeps selection small and leaves each phase in control of its context.
183
236
 
@@ -197,19 +250,29 @@ slice. Each concern therefore has its own artifact and gate. `/rite-spec`
197
250
  investigates the request and codebase in depth, then writes `spec.md` with the
198
251
  product what and why, requirements, acceptance criteria, non-goals, and
199
252
  measurable success. The spec
200
- must pass its readiness gate. `/rite-clarify` then audits the full actor,
253
+ must pass native semantic review. `/rite-clarify` then audits the full actor,
201
254
  journey, data, interface, and operations topology and writes
202
255
  `decision-coverage.md`. A complete spec needs no questions.
203
256
  `/rite-define` turns that **approved, clarified spec** into `architecture.md`
204
257
  (technical map), `plan.md` (approach), `tasks.md` (vertical `SLICE-###` work), and
205
- `traceability.md` (AC/REQ → slice → proof → evidence → files). `/rite-vet` then records
206
- `Implementation readiness: READY` before build. Both verdict artifacts are
207
- semantically validated and bound to their canonical inputs by SHA-256 digest;
208
- marker text alone or a stale digest cannot pass. This checks the full spec
209
- before Build without turning `spec.md` into a long technical document.
258
+ `traceability.md` (AC/REQ → slice → proof → evidence → files). `/rite-vet` uses
259
+ the exact plan reviewer and records `Implementation readiness: READY` before
260
+ build. The active skills and reviewers verify those claims against all relevant
261
+ artifacts; the engine checks required-file structure and binds the stable Build
262
+ inputs to that review without interpreting their prose. This checks the full
263
+ spec before Build without turning `spec.md` into a long technical document.
210
264
  `/rite-plan` separately repairs, reslices, or reorders an active plan when it
211
265
  goes stale or drifts.
212
266
 
267
+ New or materially revised specs declare one `Capability impact:`. MODIFIED
268
+ capability deltas preserve every prior scenario and normative/source-grounded
269
+ claim unless an accepted `DEC-###` explicitly authorizes replacement. A changed
270
+ API, event, schema, or other provider/consumer boundary gets one canonical
271
+ `Shared contract proof` artifact plus provider- and consumer-side asserting
272
+ tests that both consume it; no boundary change uses one justified no-impact
273
+ statement. These contracts stay in `spec.md`, `plan.md`, and the existing
274
+ traceability/proof artifacts rather than creating another registry.
275
+
213
276
  ### Why `/rite-polish` is one skill with two progressive-disclosure halves
214
277
  Polish has two natural halves: **code** (simplify, dead code, naming, plus
215
278
  backend if BE was touched) and **UI** (normalize to the design system, then
@@ -230,17 +293,31 @@ Normalization remains the entry gate for UI polish. The UI reference refuses
230
293
  to run Phase 4 before Phase 3 because detail work would otherwise reinforce
231
294
  patterns that do not match the project's design system.
232
295
 
296
+ Polish also owns every candidate-affecting capability-ledger fold, optional
297
+ `DESIGN.md` update, and durable ADR promotion. It refreshes affected proof and
298
+ closes the manifest before Review; Ship does none of these writes.
299
+
233
300
  ### Why seal and ship are separate phases (`/rite-seal`, `/rite-ship`)
234
301
  Deciding whether a change is safe to ship has a smaller blast radius than
235
- shipping it. `/rite-seal` checks acceptance against evidence, dispatches the
236
- fresh-context reviewers, writes the GO or NO-GO verdict to `seal.md`, and runs
237
- no git commands. On GO, it sets `state.md` to `Next step: /rite-ship` and stops.
238
- `/rite-ship` refuses to run without a GO in `seal.md`. It renders the type-`GO`
239
- prompt, runs the irreversible git ladder (commit → push → tag/PR under the
240
- project's convention), and writes `ship.md`. It then sets phase `done`, moves
302
+ shipping it. `/rite-seal` asks exact fresh-context agents to judge acceptance,
303
+ evidence quality, tests, doubt, and the applicable review axes; the root
304
+ reconciles their results, requires positive discriminating proof, binds the
305
+ review and verdict to the closed candidate, runs the structural-plus-binding
306
+ engine check,
307
+ writes the GO or NO-GO verdict to `seal.md`, and runs no git commands. On GO,
308
+ it sets `state.md` to `Next step: /rite-ship` and stops.
309
+ `/rite-ship` refuses to run without a GO in `seal.md` and remains
310
+ candidate-read-only. Before type-`GO`, it performs only read-only candidate,
311
+ history, existing-index, and plan checks, then discloses the exact one-use Git
312
+ attempt. After a fresh literal `GO`, it optionally collapses eligible
313
+ checkpoints, stages exact manifest paths, validates staged scope, bytes,
314
+ bindings, and secrets, commits, and reverifies the committed candidate. It runs
315
+ push, tag, or PR actions only when the disclosed project convention requires
316
+ them and they are approved, then writes `ship.md`. It sets phase `done` and
317
+ moves
241
318
  `.devrites/work/<slug>/` to `.devrites/archive/<slug>/` with every `.md` file
242
- preserved, and clears `.devrites/ACTIVE`. The GO verdict does not authorize a
243
- push; the separate Ship step does.
319
+ preserved, and clears `.devrites/ACTIVE`. The Seal GO verdict authorizes no Git
320
+ mutation; only Ship's freshly approved disclosed attempt does.
244
321
 
245
322
  ### Why `/rite-autocomplete` exists (the unattended orchestrator)
246
323
  Some features are routine enough to run without human input at every phase.
@@ -255,18 +332,19 @@ in `decisions.md`. It does **not** weaken the safety gates: genuine
255
332
  product/scope/policy decisions, irreversible risk, human-only access/actions,
256
333
  an open human-owned gate, a NO-GO, exhausted `max_slices`, or low confidence
257
334
  still pause. Agents use bounded recovery for red tests, runtime failures, and
258
- missing technical coverage. By default the workflow stops at the final
259
- type-`GO`; the `--ship` flag (alias `--yolo`) confirms it and pushes without
260
- another prompt.
335
+ missing technical coverage. By default the workflow stops at Seal GO with `/rite-ship` as the next step.
336
+ The `--ship` flag (alias `--yolo`) continues through Ship preflight, discloses
337
+ the exact Git plan, and still stops for a fresh literal `GO` plus native host
338
+ approval.
261
339
 
262
340
  ### Why persistent `.devrites/` state
263
341
  Long features outlive a single context window. Durable Markdown for the spec,
264
342
  plan, tasks, state, evidence, drift, and decisions lets any phase reload the
265
343
  current position in any session, even after compaction. Later-phase
266
- clarification stores `return_phase` and `return_next_action` in `state.md`;
267
- technical recovery stores a fingerprinted three-attempt budget in
268
- `recovery-attempts.jsonl`. Session-scoped workflows cannot provide the same
269
- resume behavior because they do not persist feature state.
344
+ clarification stores `return_phase` and `return_next_action` in `state.md` and
345
+ the root restores them only when the contract remains neutral. Recovery counts
346
+ the caller and recovery loop's failed attempts from current context plus
347
+ durable Dead ends/evidence, with no separate counter artifact.
270
348
 
271
349
  ### Run modes: HITL & AFK
272
350
 
@@ -299,13 +377,13 @@ contract.
299
377
 
300
378
  ## Design choices at a glance
301
379
 
302
- - **Surface**: 31 public `rite-*` skills (44 total), plus the thin `/rite`
303
- menu: 32 public and 12 internal. The lifecycle
380
+ - **Surface**: 31 public `rite-*` skills (43 total), plus the thin `/rite`
381
+ menu: 32 public and 11 internal. The lifecycle
304
382
  includes mandatory adaptive Clarify, optional Temper, mandatory Vet, and
305
- Converge recovery; Seal **decides** and Ship **executes + closes**. Eleven
306
- `devrites-*` specialists are model-invoked and `devrites-lib` is the shared
307
- non-command library. Visibility comes from `user-invocable:`, not the
308
- namespace prefix.
383
+ Converge recovery; Seal **decides** and Ship **executes + closes**. Ten
384
+ `devrites-*` specialist skills are model-invoked; `devrites-lib` is the
385
+ eleventh internal skill and the shared non-command library. Visibility comes
386
+ from `user-invocable:`, not the namespace prefix.
309
387
  - **Selection**: the `/rite` menu skill carries the routing table; every
310
388
  workflow skill enforces a "right skill, right time" rule in its body.
311
389
  - **State**: durable `.devrites/` Markdown that survives compaction and new sessions.
@@ -314,29 +392,39 @@ contract.
314
392
  - **Run modes**: same lifecycle runs HITL (default; pause at typed gate) or AFK
315
393
  (drop `.devrites/AFK`; loop continues, discretionary pauses downgrade to
316
394
  advisory log, irreversible risk always pauses).
317
- - **Slice rule**: build **one vertical slice, then stop**. There is no automatic continuation.
395
+ - **Slice rule**: in HITL, a direct `/rite-build` builds **one vertical slice,
396
+ then stops**. An explicit `.devrites/AFK` sentinel is the bounded low-risk
397
+ exception that may chain slices under its cap and pause rules.
398
+ `/rite-autocomplete` owns full-lifecycle repetition.
318
399
  - **Drift**: an explicit **Spec Drift Guard** in build/prove/polish/review/seal.
319
400
  - **Design**: `devrites-frontend-craft` + a four-phase `/rite-polish` orchestrator (code + backend always; UI normalize + polish when UI is in scope).
320
- - **Agents**: 18 fresh-context roles at flat depth one: 17 read-only leaves and
321
- one wright. Dispatch order is named, then guarded generic; if neither can
322
- spawn, the workflow stops for HITL.
401
+ - **Agents**: 17 fresh-context roles at flat depth one: 16 read-only leaves and
402
+ one wright. Dispatch uses the exact named project role; if it cannot spawn,
403
+ the workflow stops for HITL.
323
404
  - **Review**: **feature-scoped** multi-axis review with severity labels and
324
405
  fresh-context agents at the seal.
325
- - **Scope**: clarify → seal (decide) → ship (commitpush tag or PR,
326
- following the project's convention) → close. The CI
406
+ - **Scope**: clarify → seal (decide) → ship (read-only preflight type-GO
407
+ commit optional approved push/tag/PR by project convention) → close. The CI
327
408
  pipeline stays with the project.
328
- - **Install**: project-local, manifest-managed host artifacts; the optional
409
+ - **Install**: project-local, manifest-managed host artifacts; shell/npm owns
410
+ acquisition, the engine performs offline local mutation, and the optional
329
411
  shared engine binary is the only allowed global artifact.
330
412
 
413
+ Candidate identity and bounded-input rationale are recorded in
414
+ [ADR-0026](adr/0026-content-bound-proof-and-bounded-inputs.md). The
415
+ [nine-source benchmark and adoption matrix](upstream-workflow-benchmark-2026-08-01.md)
416
+ is a dated 2026-08-01 research snapshot: it records the commits and conclusions
417
+ audited then, but it is not current authority. DevRites keeps its lifecycle and
418
+ canonical owners rather than adopting another project's runtime or terminology.
419
+
331
420
  ## Deviations from the original build brief (and why)
332
421
 
333
422
  1. **Invocation semantics are explicit in frontmatter.** `user-invocable`
334
423
  controls whether a skill is a public command; `disable-model-invocation`
335
424
  independently marks explicit-only public utilities and the internal
336
- `devrites-lib` library. `required-agent-roles` is the canonical list of
337
- unconditional fresh-agent roles for one invocation (`none` is explicit);
338
- Codex derives its fail-closed dispatch receipt from the installed mirror.
339
- Model-invocable phases can still hand off and route;
425
+ `devrites-lib` library. Required and conditional agent dispatch stays in the
426
+ skill body, where the workflow step is already defined. Model-invocable
427
+ phases can still hand off and route;
340
428
  per-phase side-effect discipline (for example, "stop after one slice") is
341
429
  enforced in the skill **body**, because invocation flags cannot express it.
342
430
  2. **`context: fork` used selectively.** Verified it is a real field (isolated
@@ -356,6 +444,6 @@ acceptance criteria.
356
444
 
357
445
  See the top-level tree in `README.md` and the installed-target tree in `usage.md`.
358
446
  The canonical source pack lives under `pack/.claude/` (skills, agents, rules,
359
- and Claude hook wiring). The build renders `pack/generated/` host artifacts;
447
+ and Claude permission wiring). The build renders `pack/generated/` host artifacts;
360
448
  the installer writes Claude assets under project `.claude/` and Codex assets
361
449
  under `.agents/`, `.codex/`, and the managed `AGENTS.md` block.
@@ -0,0 +1,138 @@
1
+ # Candidate integrity
2
+
3
+ DevRites proves one explicit project candidate rather than an ambient Git diff.
4
+ The candidate is the strict manifest in
5
+ `.devrites/work/<slug>/touched-files.md`; its content-bound identity is computed
6
+ only by `devrites-engine`.
7
+
8
+ The canonical grammar and artifact budgets live in
9
+ [`workspace-artifact-schema.md`](../pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md).
10
+ The architectural rationale is [ADR-0026](adr/0026-content-bound-proof-and-bounded-inputs.md).
11
+
12
+ ## Manifest
13
+
14
+ `touched-files.md` contains exactly one `## Touched files` heading and exactly
15
+ one authoritative `## Candidate manifest` heading. `## Touched files` describes
16
+ the scope without repeating candidate paths; the manifest alone owns candidate
17
+ scope. Its body is either the exact line `No project files.` or a table whose
18
+ rows are sorted by `File`:
19
+
20
+ ```markdown
21
+ | State | File | Slice | Reason |
22
+ | --- | --- | --- | --- |
23
+ | present | `path/to/file` | SLICE-001 | Observable reason |
24
+ ```
25
+
26
+ `State` is `present` or `deleted`. Paths are project-relative UTF-8, already
27
+ strictly sorted by normalized `File`, unique both exactly and under case
28
+ folding, portable, and wrapped in one backtick pair. Components reject
29
+ Windows-reserved characters and device names even when followed by an
30
+ extension, plus a trailing dot or space. The optional `## Review trail` can
31
+ point a human to `path:line` stops, but it cannot add to or redefine candidate
32
+ scope.
33
+
34
+ Repository-internal paths are never candidates. Under `.devrites`, only the
35
+ exact durable owners `.devrites/principles.md` and `.devrites/specs/**` are
36
+ admitted; all other siblings fail closed, including:
37
+
38
+ - `.devrites/work/**`
39
+ - `.devrites/ACTIVE`
40
+ - `.devrites/AFK`
41
+ - `.devrites/CHECKPOINT`
42
+ - `.devrites/archive/**`
43
+ - `.git/**`
44
+
45
+ Other durable project files are candidates when the feature changes them,
46
+ including `DESIGN.md` and `docs/adr/**`.
47
+
48
+ ## Check and bindings
49
+
50
+ Run:
51
+
52
+ ```bash
53
+ devrites-engine check candidate <slug>
54
+ ```
55
+
56
+ A pass exits `0` and prints exactly two line-oriented fields:
57
+
58
+ ```text
59
+ candidate-sha256: <64 lowercase hex>
60
+ candidate-files: <manifest row count>
61
+ ```
62
+
63
+ Invalid usage or root selection exits `2`. An invalid slug/workspace, malformed
64
+ manifest, unsafe path, missing `present` file, existing `deleted` file, rejected
65
+ file type, or size breach exits `3` with `candidate: BLOCKED: <reason>` on
66
+ stderr. Fix the reported workspace or candidate; phases do not reinterpret a
67
+ rejected manifest.
68
+
69
+ The digest is recorded exactly once, as an unindented standalone line, in
70
+ `evidence.md`, `review.md`, and `seal.md`, plus `browser-evidence.md` when that
71
+ file exists:
72
+
73
+ ```text
74
+ Candidate SHA-256: <64 lowercase hex>
75
+ ```
76
+
77
+ The digest binds its domain and version plus every row's state, normalized path, regular/absent type,
78
+ executable bit, byte length, and content. Content drift therefore blocks even
79
+ when modification times are restored; a harmless touch with unchanged content
80
+ does not.
81
+
82
+ This worktree digest is not an atomic filesystem snapshot against a malicious
83
+ concurrent same-size rewrite. It detects ordinary drift and bounded type/size
84
+ changes; Ship's exact Git-index scope, byte, binding, and secret checks own the
85
+ final freeze immediately before commit.
86
+
87
+ ## Lifecycle ownership
88
+
89
+ | Phase | Candidate responsibility |
90
+ |---|---|
91
+ | Build | Maintain the manifest from each green slice's actual scoped diff. |
92
+ | Prove | Check before and after approved commands, require the same digest, and bind real evidence (plus browser evidence when present). |
93
+ | Polish | Apply every code/UI correction, capability-ledger fold, design-memory update, and durable ADR promotion; update the manifest and rerun affected proof before closing the candidate. |
94
+ | Review | Review the closed bytes and bind `review.md` to their digest. A correction returns through affected Prove and a fresh Review. |
95
+ | Seal | Bind `seal.md`, recheck every binding, and run `check seal`. A correction returns through Prove and Review. |
96
+ | Ship | Remain candidate-read-only. Only ship/state/archive bookkeeping may change; candidate or manifest changes return through Prove, Review, and Seal. |
97
+
98
+ Capability-ledger, `DESIGN.md`, and ADR rollups happen in Polish before Review,
99
+ not in Ship.
100
+
101
+ ## Git scope at Ship
102
+
103
+ Before type-`GO`, Ship is read-only: it protects existing staged work, verifies
104
+ the candidate, Seal, bindings, and worktree, analyzes checkpoint history, and
105
+ discloses the exact optional collapse and stage commands. Only literal `GO`
106
+ permits those disclosed index/history mutations. Ship then compares the
107
+ NUL-delimited `git diff --cached --name-status --no-renames -z` set with the
108
+ manifest: `present` maps only to `A` or `M`, and `deleted` only to `D`. Missing,
109
+ extra, renamed, duplicated, differently classified, or unstaged candidate
110
+ changes block. Candidate, Seal bindings, staged bytes, and the staged secret
111
+ scan all rerun immediately before commit; drift invalidates the one-use approval.
112
+
113
+ Immediately after the authorized commit and before push or tag, Ship compares
114
+ the commit's exact state/path set and bytes with the same manifest, then reruns
115
+ Candidate and Seal. A mismatch stops; it is never reinterpreted as equivalent.
116
+ Fresh literal `GO` and native host approval remain required for each disclosed
117
+ Git attempt.
118
+
119
+ ## Older workspaces
120
+
121
+ Released v1/v2/v3 unfinished workspaces use read-only `/rite-upgrade`. A missing
122
+ or malformed manifest or binding is a current-contract defect, not permission to
123
+ guess historical bytes. When legacy scope, the live diff, tasks, and traceability
124
+ agree unambiguously, Upgrade routes current owners through Prove, Polish, Review,
125
+ and Seal as applicable. They run fresh real proof and never synthesize an old
126
+ pass. Ambiguous legacy scope remains a `gap` and stops without mutation.
127
+
128
+ ## Limits
129
+
130
+ The engine accepts a manifest of at most 1 MiB and 4,096 rows. A path may be at
131
+ most 4,096 bytes, each present regular file at most 64 MiB, and all present
132
+ files together at most 256 MiB. Directories, symlinks, special files, traversal,
133
+ absolute paths, duplicates, case-fold collisions, reserved components, and
134
+ control characters fail closed. The engine proves deterministic identity and
135
+ exact bindings, not the semantic quality of a specification, test, review, or
136
+ release decision. See the
137
+ [canonical schema](../pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md)
138
+ for current limits and [`SECURITY.md`](../SECURITY.md) for trust boundaries.
@@ -4,17 +4,27 @@ Pick the smallest surface that keeps the behavior deterministic:
4
4
 
5
5
  | Need | Put it in |
6
6
  |---|---|
7
- | Deterministic gate or state mutation | `devrites-engine` command |
8
- | Workflow judgment inside the current context | skill |
7
+ | Cross-host structural check, atomic state mutation, install, or secret safety | an existing documented `devrites-engine` primitive |
8
+ | Repository build/lint/schema/release validation | repository script or CI |
9
+ | Semantic readiness, traceability, acceptance, capability, or recovery judgment | skill |
9
10
  | Fresh-context judgment or adversarial review | agent |
11
+ | Agent discovery, dispatch, scheduling, waiting, or follow-up | native host |
10
12
  | Optional repeated structured external tool | MCP |
11
- | One-shot local deterministic action | script or engine subcommand |
13
+ | One-shot repository-local deterministic action | script |
12
14
 
13
15
  Rules:
14
16
 
15
17
  - npm (`npx devrites ...`) is the canonical distribution path. The supported
16
18
  `curl | bash` bootstrap exists for environments without Node; neither path is
17
19
  a Claude/Codex plugin or marketplace install.
18
- - Prefer the engine for gates; prompts may call gates, not reimplement them.
20
+ - The engine surface is closed around the inventory in [`cli.md`](cli.md).
21
+ Add a command only when both hosts need the same deterministic runtime
22
+ primitive and no existing command, standard library, native host feature, or
23
+ repository script owns it; semantic judgment is not such a primitive.
24
+ - Never build an engine broker around native agents. Skills name the exact role;
25
+ Claude or Codex owns spawn fields, scheduling, waiting, and result delivery.
19
26
  - Prefer scripts for repo-local release/build glue that is not part of the user contract.
20
- - Do not add a dependency for what the Go engine or shell can do in a few lines.
27
+ - Persisted schemas may carry versions; native agent orchestration does not get
28
+ a DevRites API version, tier protocol, receipt, polling loop, or fallback.
29
+ - Prefer deletion and the standard library; do not add a dependency for a few
30
+ deterministic lines.