devrites 2.6.1 → 3.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 (1078) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +85 -50
  3. package/SECURITY.md +65 -39
  4. package/bin/devrites.mjs +135 -51
  5. package/docs/agents/domain.md +58 -0
  6. package/docs/agents/issue-driven-rites.md +11 -0
  7. package/docs/agents/issue-tracker.md +29 -0
  8. package/docs/agents/triage-labels.md +15 -0
  9. package/docs/architecture.md +60 -35
  10. package/docs/capability-surface-selection.md +18 -0
  11. package/docs/cli.md +53 -0
  12. package/docs/command-map.md +59 -22
  13. package/docs/engine/agent-contract.md +92 -0
  14. package/docs/engine/commands.md +323 -0
  15. package/docs/engine/state-schema.md +134 -0
  16. package/docs/engine/workspace-schema.md +150 -0
  17. package/docs/extensions.md +178 -0
  18. package/docs/flow.md +19 -16
  19. package/docs/harness-compliance.md +45 -0
  20. package/docs/orchestration.md +6 -4
  21. package/docs/porting-to-a-new-harness.md +27 -0
  22. package/docs/quick-reference.md +22 -0
  23. package/docs/release.md +3 -3
  24. package/docs/skills.md +42 -48
  25. package/docs/usage.md +21 -8
  26. package/engine/.gosec.json +5 -0
  27. package/engine/Makefile +64 -0
  28. package/engine/commands.go +195 -0
  29. package/engine/go.mod +5 -0
  30. package/engine/harnessmatrix.go +60 -0
  31. package/engine/harnessmatrix_test.go +59 -0
  32. package/engine/hookpolicy.go +114 -0
  33. package/engine/hookpolicy_test.go +64 -0
  34. package/engine/hooks.go +336 -0
  35. package/engine/hooks_events_test.go +106 -0
  36. package/engine/hooks_workspace.go +603 -0
  37. package/engine/internal/devritespaths/paths.go +76 -0
  38. package/engine/internal/doctor/doctor.go +178 -0
  39. package/engine/internal/doctor/doctor_test.go +150 -0
  40. package/engine/internal/fsutil/copy.go +101 -0
  41. package/engine/internal/fsutil/replace_other.go +7 -0
  42. package/engine/internal/fsutil/replace_windows.go +31 -0
  43. package/engine/internal/gate/gate.go +243 -0
  44. package/engine/internal/gate/gate_test.go +145 -0
  45. package/engine/internal/harness/compliance.go +102 -0
  46. package/engine/internal/harness/harness.go +304 -0
  47. package/engine/internal/harness/harness_test.go +104 -0
  48. package/engine/internal/hostpack/hostpack.go +259 -0
  49. package/engine/internal/hostpack/hostpack_test.go +111 -0
  50. package/engine/internal/hostpack/templates/alias_skill.md.tmpl +11 -0
  51. package/engine/internal/hostpack/templates/devrites_readme.md.tmpl +14 -0
  52. package/engine/internal/install/install.go +1560 -0
  53. package/engine/internal/install/install_test.go +564 -0
  54. package/engine/internal/iohooks/detach_other.go +11 -0
  55. package/engine/internal/iohooks/detach_unix.go +11 -0
  56. package/engine/internal/iohooks/iohooks.go +546 -0
  57. package/engine/internal/iohooks/iohooks_test.go +130 -0
  58. package/engine/internal/lib/adoption.go +634 -0
  59. package/engine/internal/lib/adoption_test.go +91 -0
  60. package/engine/internal/lib/analyze.go +225 -0
  61. package/engine/internal/lib/archivesearch.go +93 -0
  62. package/engine/internal/lib/archivesearch_test.go +110 -0
  63. package/engine/internal/lib/budget.go +172 -0
  64. package/engine/internal/lib/buildreadiness.go +88 -0
  65. package/engine/internal/lib/checkacceptance.go +176 -0
  66. package/engine/internal/lib/closeout.go +69 -0
  67. package/engine/internal/lib/command_other.go +7 -0
  68. package/engine/internal/lib/command_unix.go +24 -0
  69. package/engine/internal/lib/context.go +236 -0
  70. package/engine/internal/lib/conventions.go +449 -0
  71. package/engine/internal/lib/coverage.go +147 -0
  72. package/engine/internal/lib/doubtcoverage.go +88 -0
  73. package/engine/internal/lib/evidencefresh.go +85 -0
  74. package/engine/internal/lib/extensions.go +619 -0
  75. package/engine/internal/lib/extensions_test.go +305 -0
  76. package/engine/internal/lib/footprint.go +239 -0
  77. package/engine/internal/lib/jsonout.go +115 -0
  78. package/engine/internal/lib/jsonout_test.go +57 -0
  79. package/engine/internal/lib/lanes.go +106 -0
  80. package/engine/internal/lib/learnings.go +391 -0
  81. package/engine/internal/lib/learnings_inject_test.go +77 -0
  82. package/engine/internal/lib/learnings_remediation_test.go +24 -0
  83. package/engine/internal/lib/ledger.go +298 -0
  84. package/engine/internal/lib/ledger_test.go +162 -0
  85. package/engine/internal/lib/mutationgate.go +85 -0
  86. package/engine/internal/lib/overrides.go +164 -0
  87. package/engine/internal/lib/overrides_test.go +112 -0
  88. package/engine/internal/lib/packageexistence.go +175 -0
  89. package/engine/internal/lib/preamble.go +159 -0
  90. package/engine/internal/lib/progress.go +168 -0
  91. package/engine/internal/lib/reconcile.go +173 -0
  92. package/engine/internal/lib/reconcile_test.go +197 -0
  93. package/engine/internal/lib/resolve.go +376 -0
  94. package/engine/internal/lib/resolve_remediation_test.go +49 -0
  95. package/engine/internal/lib/reviewers.go +143 -0
  96. package/engine/internal/lib/reviewers_test.go +45 -0
  97. package/engine/internal/lib/reviewerstats.go +199 -0
  98. package/engine/internal/lib/reviewerstats_test.go +104 -0
  99. package/engine/internal/lib/reviewintegrity.go +143 -0
  100. package/engine/internal/lib/reviewintegrity_test.go +103 -0
  101. package/engine/internal/lib/runbook.go +292 -0
  102. package/engine/internal/lib/runbook_context_test.go +119 -0
  103. package/engine/internal/lib/session.go +328 -0
  104. package/engine/internal/lib/session_test.go +110 -0
  105. package/engine/internal/lib/specparse.go +125 -0
  106. package/engine/internal/lib/specskeleton.go +79 -0
  107. package/engine/internal/lib/specvalidate.go +391 -0
  108. package/engine/internal/lib/specvalidate_test.go +185 -0
  109. package/engine/internal/lib/stuck.go +206 -0
  110. package/engine/internal/lib/templates/conventions_drift.tmpl +6 -0
  111. package/engine/internal/lib/templates/conventions_ledger_header.md +6 -0
  112. package/engine/internal/lib/templates/conventions_orient_header.txt +1 -0
  113. package/engine/internal/lib/testintegrity.go +203 -0
  114. package/engine/internal/lib/testintegrity_test.go +72 -0
  115. package/engine/internal/lib/tickafk.go +99 -0
  116. package/engine/internal/lib/util.go +68 -0
  117. package/engine/internal/migrate/migrate.go +213 -0
  118. package/engine/internal/migrate/migrate_test.go +105 -0
  119. package/engine/internal/orient/firstrun.go +50 -0
  120. package/engine/internal/orient/firstrun_test.go +72 -0
  121. package/engine/internal/orient/orient.go +69 -0
  122. package/engine/internal/orient/orient_test.go +25 -0
  123. package/engine/internal/profile/profile.go +270 -0
  124. package/engine/internal/state/concurrency_test.go +184 -0
  125. package/engine/internal/state/feature.go +309 -0
  126. package/engine/internal/state/lock_other.go +24 -0
  127. package/engine/internal/state/lock_unix.go +35 -0
  128. package/engine/internal/state/lock_windows.go +56 -0
  129. package/engine/internal/state/schema.go +102 -0
  130. package/engine/internal/state/snapshot.go +384 -0
  131. package/engine/internal/state/state_test.go +260 -0
  132. package/engine/internal/state/status.go +90 -0
  133. package/engine/internal/state/write.go +59 -0
  134. package/engine/internal/testutil/testutil.go +66 -0
  135. package/engine/internal/version/version.go +57 -0
  136. package/engine/internal/workflow/commands.go +64 -0
  137. package/engine/main.go +530 -0
  138. package/engine/profile_test.go +76 -0
  139. package/engine/subagent_orient_context.txt +6 -0
  140. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/decisions.md +4 -0
  141. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/feature.md +8 -0
  142. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/plan.md +5 -0
  143. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/spec.md +6 -0
  144. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/status.md +4 -0
  145. package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/tasks.md +1 -0
  146. package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/feature.md +8 -0
  147. package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/spec.md +6 -0
  148. package/engine/testdata/golden/TestParityA1Guard/devrites-edit-allowed.golden +1 -0
  149. package/engine/testdata/golden/TestParityA1Guard/inline-fallback-silent.golden +1 -0
  150. package/engine/testdata/golden/TestParityA1Guard/no-window-silent.golden +1 -0
  151. package/engine/testdata/golden/TestParityA1Guard/non-edit-tool.golden +1 -0
  152. package/engine/testdata/golden/TestParityA1Guard/observe-mode-silent.golden +1 -0
  153. package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +2 -0
  154. package/engine/testdata/golden/TestParityA1Guard/subagent-allowed.golden +1 -0
  155. package/engine/testdata/golden/TestParityAnalyze/noactive.golden +1 -0
  156. package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +15 -0
  157. package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +16 -0
  158. package/engine/testdata/golden/TestParityAnalyze/slug=ghost.golden +1 -0
  159. package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +15 -0
  160. package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +17 -0
  161. package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +16 -0
  162. package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +16 -0
  163. package/engine/testdata/golden/TestParityBudget/default-active.golden +4 -0
  164. package/engine/testdata/golden/TestParityBudget/extra-md.golden +5 -0
  165. package/engine/testdata/golden/TestParityBudget/no-active.golden +1 -0
  166. package/engine/testdata/golden/TestParityBudget/no-feature.golden +1 -0
  167. package/engine/testdata/golden/TestParityBudget/over-advisory.golden +6 -0
  168. package/engine/testdata/golden/TestParityBudget/over-strict.golden +6 -0
  169. package/engine/testdata/golden/TestParityBudget/within.golden +6 -0
  170. package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +2 -0
  171. package/engine/testdata/golden/TestParityBuildReadiness/arg=approvenone.golden +1 -0
  172. package/engine/testdata/golden/TestParityBuildReadiness/arg=await.golden +1 -0
  173. package/engine/testdata/golden/TestParityBuildReadiness/arg=blocked.golden +1 -0
  174. package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +2 -0
  175. package/engine/testdata/golden/TestParityBuildReadiness/arg=ghost.golden +1 -0
  176. package/engine/testdata/golden/TestParityBuildReadiness/arg=noapprove.golden +1 -0
  177. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +2 -0
  178. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +2 -0
  179. package/engine/testdata/golden/TestParityCheckAcceptance/arg=blank-section.golden +1 -0
  180. package/engine/testdata/golden/TestParityCheckAcceptance/arg=empty.golden +1 -0
  181. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-dropped.golden +1 -0
  182. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +2 -0
  183. package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-unchecked.golden +1 -0
  184. package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-gap.golden +1 -0
  185. package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +2 -0
  186. package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-seal.golden +1 -0
  187. package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-section.golden +1 -0
  188. package/engine/testdata/golden/TestParityCheckAcceptance/arg=nonexistent.golden +1 -0
  189. package/engine/testdata/golden/TestParityCheckAcceptance.golden +1 -0
  190. package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +2 -0
  191. package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +2 -0
  192. package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +1 -0
  193. package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +1 -0
  194. package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +1 -0
  195. package/engine/testdata/golden/TestParityCoverage/arg=flat.golden +7 -0
  196. package/engine/testdata/golden/TestParityCoverage/arg=full.golden +10 -0
  197. package/engine/testdata/golden/TestParityCoverage/arg=nonexistent.golden +1 -0
  198. package/engine/testdata/golden/TestParityCoverage/arg=nospec.golden +1 -0
  199. package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +9 -0
  200. package/engine/testdata/golden/TestParityCoverage.golden +1 -0
  201. package/engine/testdata/golden/TestParityCursor/bare.golden +3 -0
  202. package/engine/testdata/golden/TestParityCursor/full-afk.golden +6 -0
  203. package/engine/testdata/golden/TestParityCursor/full-hitl.golden +5 -0
  204. package/engine/testdata/golden/TestParityCursor/no-active.golden +1 -0
  205. package/engine/testdata/golden/TestParityCursor/red.golden +5 -0
  206. package/engine/testdata/golden/TestParityCursor/zerogates.golden +5 -0
  207. package/engine/testdata/golden/TestParityDoubtCoverage/arg=doubted.golden +2 -0
  208. package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +2 -0
  209. package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +3 -0
  210. package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +3 -0
  211. package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +3 -0
  212. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +4 -0
  213. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +2 -0
  214. package/engine/testdata/golden/TestParityDoubtCoverage/arg=nowright.golden +2 -0
  215. package/engine/testdata/golden/TestParityDoubtCoverage.golden +1 -0
  216. package/engine/testdata/golden/TestParityLearnings/add.golden +2 -0
  217. package/engine/testdata/golden/TestParityLearnings/list.golden +5 -0
  218. package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +2 -0
  219. package/engine/testdata/golden/TestParityLearnings/mine.golden +5 -0
  220. package/engine/testdata/golden/TestParityLearnings/nudge.golden +2 -0
  221. package/engine/testdata/golden/TestParityLearnings/unknown.golden +1 -0
  222. package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +3 -0
  223. package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +3 -0
  224. package/engine/testdata/golden/TestParityMutationGate/ghost.golden +1 -0
  225. package/engine/testdata/golden/TestParityOrientSilentPath.golden +1 -0
  226. package/engine/testdata/golden/TestParityPackageExistence/declared.golden +2 -0
  227. package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +2 -0
  228. package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +1 -0
  229. package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +1 -0
  230. package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +1 -0
  231. package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +1 -0
  232. package/engine/testdata/golden/TestParityPreamble/afk/a.golden +14 -0
  233. package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +18 -0
  234. package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +10 -0
  235. package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +18 -0
  236. package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +2 -0
  237. package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +11 -0
  238. package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +13 -0
  239. package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +4 -0
  240. package/engine/testdata/golden/TestParityProgress/arg=done.golden +3 -0
  241. package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +1 -0
  242. package/engine/testdata/golden/TestParityProgress/arg=mid.golden +4 -0
  243. package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +3 -0
  244. package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +3 -0
  245. package/engine/testdata/golden/TestParityProgress/arg=plan.golden +4 -0
  246. package/engine/testdata/golden/TestParityProgress/arg=seal.golden +3 -0
  247. package/engine/testdata/golden/TestParityReconcile/bad-mode.golden +1 -0
  248. package/engine/testdata/golden/TestParityReconcile/check-clean/snapshot.golden +2 -0
  249. package/engine/testdata/golden/TestParityReconcile/check-clean.golden +2 -0
  250. package/engine/testdata/golden/TestParityReconcile/check-no-base.golden +1 -0
  251. package/engine/testdata/golden/TestParityReconcile/check-no-claimed/snapshot.golden +2 -0
  252. package/engine/testdata/golden/TestParityReconcile/check-no-claimed.golden +1 -0
  253. package/engine/testdata/golden/TestParityReconcile/check-violation/snapshot.golden +2 -0
  254. package/engine/testdata/golden/TestParityReconcile/check-violation.golden +1 -0
  255. package/engine/testdata/golden/TestParityReconcile/inline-fallback/snapshot.golden +2 -0
  256. package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
  257. package/engine/testdata/golden/TestParityReconcile/not-git.golden +1 -0
  258. package/engine/testdata/golden/TestParityReconcile/snapshot/snapshot.golden +2 -0
  259. package/engine/testdata/golden/TestParityReconcile/snapshot.golden +2 -0
  260. package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +2 -0
  261. package/engine/testdata/golden/TestParityRedwatch/non-bash-tool.golden +1 -0
  262. package/engine/testdata/golden/TestParityRedwatch/non-test-command.golden +1 -0
  263. package/engine/testdata/golden/TestParityRedwatch/pass-clears-red.golden +1 -0
  264. package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +9 -0
  265. package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +6 -0
  266. package/engine/testdata/golden/TestParityResolve/answer.golden +4 -0
  267. package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +9 -0
  268. package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +9 -0
  269. package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +2 -0
  270. package/engine/testdata/golden/TestParityResolve/batch.golden +3 -0
  271. package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +9 -0
  272. package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +8 -0
  273. package/engine/testdata/golden/TestParityResolve/drop.golden +4 -0
  274. package/engine/testdata/golden/TestParityResolve/missing-answer.golden +1 -0
  275. package/engine/testdata/golden/TestParityResolve/next-qid.golden +2 -0
  276. package/engine/testdata/golden/TestParityResolve/no-workspace.golden +1 -0
  277. package/engine/testdata/golden/TestParityResolve/not-found.golden +1 -0
  278. package/engine/testdata/golden/TestParityResolve/not-open.golden +1 -0
  279. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +2 -0
  280. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-non-devrites-allows.golden +1 -0
  281. package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-subagent-type-only-allows.golden +1 -0
  282. package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +2 -0
  283. package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +2 -0
  284. package/engine/testdata/golden/TestParityReviewerReadonly/non-bash-tool.golden +1 -0
  285. package/engine/testdata/golden/TestParityReviewerReadonly/non-tool-input.golden +1 -0
  286. package/engine/testdata/golden/TestParityReviewerReadonly/observe-mutating-silent.golden +1 -0
  287. package/engine/testdata/golden/TestParityReviewerReadonly/safe-bash-command.golden +1 -0
  288. package/engine/testdata/golden/TestParitySpecValidate/arg=dup.golden +1 -0
  289. package/engine/testdata/golden/TestParitySpecValidate/arg=empty.golden +1 -0
  290. package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +2 -0
  291. package/engine/testdata/golden/TestParitySpecValidate/arg=nonexistent.golden +1 -0
  292. package/engine/testdata/golden/TestParitySpecValidate/arg=noscenario.golden +1 -0
  293. package/engine/testdata/golden/TestParitySpecValidate/arg=noshall.golden +1 -0
  294. package/engine/testdata/golden/TestParitySpecValidate/arg=nothen.golden +1 -0
  295. package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +2 -0
  296. package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +2 -0
  297. package/engine/testdata/golden/TestParitySpecValidate.golden +1 -0
  298. package/engine/testdata/golden/TestParityStatusline/full-afk.golden +2 -0
  299. package/engine/testdata/golden/TestParityStatusline/full-hitl.golden +2 -0
  300. package/engine/testdata/golden/TestParityStatusline/no-active.golden +1 -0
  301. package/engine/testdata/golden/TestParityStatusline/nophase.golden +2 -0
  302. package/engine/testdata/golden/TestParityStatusline/red.golden +2 -0
  303. package/engine/testdata/golden/TestParityStuckCheck/bad-cmd.golden +1 -0
  304. package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +2 -0
  305. package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +2 -0
  306. package/engine/testdata/golden/TestParityStuckCheck/few.golden +2 -0
  307. package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +2 -0
  308. package/engine/testdata/golden/TestParityStuckCheck/identical.golden +2 -0
  309. package/engine/testdata/golden/TestParityStuckCheck/no-cmd.golden +1 -0
  310. package/engine/testdata/golden/TestParityStuckCheck/no-slug.golden +1 -0
  311. package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +2 -0
  312. package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +2 -0
  313. package/engine/testdata/golden/TestParityStuckCheck/varied.golden +2 -0
  314. package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +2 -0
  315. package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +2 -0
  316. package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +2 -0
  317. package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +2 -0
  318. package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +2 -0
  319. package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +2 -0
  320. package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +2 -0
  321. package/engine/testdata/golden/TestParitySubagentOrient/garbage-input.golden +1 -0
  322. package/engine/testdata/golden/TestParitySubagentOrient/non-devrites-agent.golden +1 -0
  323. package/engine/testdata/golden/TestParityTestIntegrity/assertion-dropped.golden +1 -0
  324. package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +2 -0
  325. package/engine/testdata/golden/TestParityTestIntegrity/deleted.golden +1 -0
  326. package/engine/testdata/golden/TestParityTestIntegrity/ghost-workspace.golden +1 -0
  327. package/engine/testdata/golden/TestParityTestIntegrity/not-git.golden +1 -0
  328. package/engine/testdata/golden/TestParityTestIntegrity/skip-added.golden +1 -0
  329. package/engine/testdata/golden/TestParityTickAfk/budget1/state.md.golden +1 -0
  330. package/engine/testdata/golden/TestParityTickAfk/budget1.golden +2 -0
  331. package/engine/testdata/golden/TestParityTickAfk/budget3/state.md.golden +5 -0
  332. package/engine/testdata/golden/TestParityTickAfk/budget3.golden +2 -0
  333. package/engine/testdata/golden/TestParityTickAfk/bulletPipe/state.md.golden +1 -0
  334. package/engine/testdata/golden/TestParityTickAfk/bulletPipe.golden +2 -0
  335. package/engine/testdata/golden/TestParityTickAfk/missingField/state.md.golden +3 -0
  336. package/engine/testdata/golden/TestParityTickAfk/missingField.golden +2 -0
  337. package/engine/testdata/golden/TestParityTickAfk/missingFile.golden +1 -0
  338. package/engine/testdata/golden/TestParityTickAfk/nonNumeric/state.md.golden +1 -0
  339. package/engine/testdata/golden/TestParityTickAfk/nonNumeric.golden +1 -0
  340. package/engine/testdata/golden/TestParityTickAfk/none/state.md.golden +1 -0
  341. package/engine/testdata/golden/TestParityTickAfk/none.golden +2 -0
  342. package/engine/testdata/golden/TestParityWrightScope/agent-required-non-wright.golden +1 -0
  343. package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +1 -0
  344. package/engine/testdata/golden/TestParityWrightScope/in-scope-allowed.golden +1 -0
  345. package/engine/testdata/golden/TestParityWrightScope/non-edit-tool.golden +1 -0
  346. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +2 -0
  347. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-observe-silent.golden +1 -0
  348. package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +2 -0
  349. package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +2 -0
  350. package/engine/testdata/golden/TestStatusLiveWorkspace.golden +10 -0
  351. package/engine/testdata/golden/TestStuckLogHashParity.golden +1 -0
  352. package/engine/testdata/golden/status/auth-tokens.txt +9 -0
  353. package/engine/testdata/golden/status/search-ranking.txt +9 -0
  354. package/engine/tests/adr_0003_gate_exit_code_test.go +32 -0
  355. package/engine/tests/adr_0004_required_by_phase_test.go +62 -0
  356. package/engine/tests/adr_0006_clock_seam_test.go +36 -0
  357. package/engine/tests/budget_test.go +77 -0
  358. package/engine/tests/cli_test.go +209 -0
  359. package/engine/tests/concurrency_cli_test.go +125 -0
  360. package/engine/tests/conventions_test.go +106 -0
  361. package/engine/tests/doctor_cli_test.go +62 -0
  362. package/engine/tests/gate_test.go +235 -0
  363. package/engine/tests/hook_test.go +390 -0
  364. package/engine/tests/hooks_io_test.go +218 -0
  365. package/engine/tests/json_contract_test.go +99 -0
  366. package/engine/tests/lib_parity_test.go +942 -0
  367. package/engine/tests/meta_test.go +67 -0
  368. package/engine/tests/migrate_cli_test.go +193 -0
  369. package/engine/tests/parity_analyze_test.go +55 -0
  370. package/engine/tests/parity_buildreadiness_test.go +42 -0
  371. package/engine/tests/parity_closeout_test.go +102 -0
  372. package/engine/tests/parity_githelpers_test.go +41 -0
  373. package/engine/tests/parity_learnings_test.go +90 -0
  374. package/engine/tests/parity_mutationgate_test.go +36 -0
  375. package/engine/tests/parity_packageexistence_test.go +64 -0
  376. package/engine/tests/parity_reconcile_test.go +88 -0
  377. package/engine/tests/parity_resolve_test.go +144 -0
  378. package/engine/tests/parity_test.go +380 -0
  379. package/engine/tests/parity_testintegrity_test.go +65 -0
  380. package/engine/tests/parity_tickafk_test.go +83 -0
  381. package/engine/validatepack.go +192 -0
  382. package/engine/validatepack_test.go +79 -0
  383. package/engine/validatepackskills.go +181 -0
  384. package/engine/validatepackskills_test.go +171 -0
  385. package/install.sh +67 -912
  386. package/pack/.claude/agents/devrites-code-reviewer.md +20 -3
  387. package/pack/.claude/agents/devrites-devex-reviewer.md +13 -3
  388. package/pack/.claude/agents/devrites-doubt-reviewer.md +16 -3
  389. package/pack/.claude/agents/devrites-forge-judge.md +14 -4
  390. package/pack/.claude/agents/devrites-frontend-reviewer.md +27 -3
  391. package/pack/.claude/agents/devrites-performance-reviewer.md +18 -2
  392. package/pack/.claude/agents/devrites-plan-reviewer.md +13 -3
  393. package/pack/.claude/agents/devrites-retrospector.md +12 -7
  394. package/pack/.claude/agents/devrites-security-auditor.md +20 -4
  395. package/pack/.claude/agents/devrites-simplifier-reviewer.md +17 -2
  396. package/pack/.claude/agents/devrites-slice-wright.md +32 -16
  397. package/pack/.claude/agents/devrites-spec-reviewer.md +17 -2
  398. package/pack/.claude/agents/devrites-strategy-reviewer.md +12 -2
  399. package/pack/.claude/agents/devrites-test-analyst.md +20 -3
  400. package/pack/.claude/settings.json +58 -8
  401. package/pack/.claude/skills/devrites-api-interface/SKILL.md +22 -5
  402. package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
  403. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +26 -53
  404. package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  405. package/pack/.claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  406. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -6
  407. package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -0
  408. package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +2 -3
  409. package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
  410. package/pack/.claude/skills/devrites-doubt/SKILL.md +10 -3
  411. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +16 -13
  412. package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +15 -3
  413. package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +19 -0
  414. package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  415. package/pack/.claude/skills/devrites-interview/SKILL.md +30 -7
  416. package/pack/.claude/skills/devrites-lib/SKILL.md +35 -36
  417. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +16 -0
  418. package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +43 -0
  419. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +104 -20
  420. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +111 -0
  421. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/README.md +14 -6
  422. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/afk-hitl.md +10 -18
  423. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/agents.md +81 -16
  424. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/anti-patterns.md +3 -4
  425. package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
  426. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  427. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
  428. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/context-hygiene.md +17 -0
  429. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/core.md +9 -18
  430. package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
  431. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/deprecation.md +21 -0
  432. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/developer-experience.md +3 -3
  433. package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
  434. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/documentation.md +9 -1
  435. package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
  436. package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
  437. package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
  438. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/observability.md +13 -0
  439. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/performance.md +1 -1
  440. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/principles.md +3 -3
  441. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/prose-style.md +18 -2
  442. package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
  443. package/pack/.claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
  444. package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
  445. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/security.md +45 -4
  446. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
  447. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
  448. package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
  449. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +162 -0
  450. package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/tooling.md +29 -2
  451. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
  452. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +40 -76
  453. package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +19 -5
  454. package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +3 -6
  455. package/pack/.claude/skills/devrites-source-driven/SKILL.md +17 -1
  456. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +20 -7
  457. package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +25 -10
  458. package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +2 -2
  459. package/pack/.claude/skills/rite/SKILL.md +67 -42
  460. package/pack/.claude/skills/rite/reference/menu.md +4 -1
  461. package/pack/.claude/skills/rite-adopt/SKILL.md +31 -22
  462. package/pack/.claude/skills/rite-adopt/reference/adoption.md +6 -9
  463. package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
  464. package/pack/.claude/skills/rite-autocomplete/SKILL.md +25 -25
  465. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +2 -2
  466. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +1 -1
  467. package/pack/.claude/skills/rite-build/SKILL.md +24 -256
  468. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -3
  469. package/pack/.claude/skills/rite-build/reference/anti-patterns.md +1 -1
  470. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  471. package/pack/.claude/skills/rite-build/reference/checkpoint.md +44 -0
  472. package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -7
  473. package/pack/.claude/skills/rite-build/reference/forge.md +17 -7
  474. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +2 -0
  475. package/pack/.claude/skills/rite-build/reference/output.md +41 -0
  476. package/pack/.claude/skills/rite-build/reference/phase-contract.md +258 -0
  477. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +11 -10
  478. package/pack/.claude/skills/rite-converge/SKILL.md +131 -0
  479. package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +35 -0
  480. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
  481. package/pack/.claude/skills/rite-customize/SKILL.md +67 -0
  482. package/pack/.claude/skills/rite-define/SKILL.md +76 -93
  483. package/pack/.claude/skills/rite-define/reference/anti-patterns.md +2 -1
  484. package/pack/.claude/skills/rite-define/reference/gates.md +3 -3
  485. package/pack/.claude/skills/rite-define/reference/plan-template.md +35 -6
  486. package/pack/.claude/skills/rite-doctor/SKILL.md +41 -16
  487. package/pack/.claude/skills/rite-dogfood/SKILL.md +49 -0
  488. package/pack/.claude/skills/rite-explain/SKILL.md +148 -0
  489. package/pack/.claude/skills/rite-explain/reference/intake.md +79 -0
  490. package/pack/.claude/skills/rite-frame/SKILL.md +14 -15
  491. package/pack/.claude/skills/rite-frame/reference/failure-modes.md +1 -1
  492. package/pack/.claude/skills/rite-handoff/SKILL.md +19 -17
  493. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +16 -6
  494. package/pack/.claude/skills/rite-learn/SKILL.md +46 -24
  495. package/pack/.claude/skills/rite-plan/SKILL.md +35 -26
  496. package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +1 -1
  497. package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +3 -3
  498. package/pack/.claude/skills/rite-plan/reference/slicing.md +20 -7
  499. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +15 -16
  500. package/pack/.claude/skills/rite-polish/SKILL.md +18 -23
  501. package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +31 -2
  502. package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +4 -1
  503. package/pack/.claude/skills/rite-polish/reference/code.md +16 -5
  504. package/pack/.claude/skills/rite-polish/reference/design-system-discovery.md +5 -32
  505. package/pack/.claude/skills/rite-pov/SKILL.md +46 -0
  506. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +49 -0
  507. package/pack/.claude/skills/rite-pressure-test/SKILL.md +40 -10
  508. package/pack/.claude/skills/rite-prototype/SKILL.md +23 -2
  509. package/pack/.claude/skills/rite-prove/SKILL.md +41 -96
  510. package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
  511. package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  512. package/pack/.claude/skills/rite-prove/reference/browser-proof.md +36 -13
  513. package/pack/.claude/skills/rite-quick/SKILL.md +19 -12
  514. package/pack/.claude/skills/rite-resolve/SKILL.md +21 -25
  515. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
  516. package/pack/.claude/skills/rite-review/SKILL.md +43 -45
  517. package/pack/.claude/skills/rite-review/reference/anti-patterns.md +1 -1
  518. package/pack/.claude/skills/rite-review/reference/performance-checklist.md +1 -1
  519. package/pack/.claude/skills/rite-review/reference/performance-review.md +4 -22
  520. package/pack/.claude/skills/rite-review/reference/security-review.md +2 -2
  521. package/pack/.claude/skills/rite-seal/SKILL.md +40 -174
  522. package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +1 -1
  523. package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +6 -9
  524. package/pack/.claude/skills/rite-seal/reference/final-evidence.md +6 -14
  525. package/pack/.claude/skills/rite-seal/reference/go-no-go.md +3 -3
  526. package/pack/.claude/skills/rite-seal/reference/output.md +7 -0
  527. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +211 -0
  528. package/pack/.claude/skills/rite-seal/reference/seal-template.md +1 -1
  529. package/pack/.claude/skills/rite-ship/SKILL.md +45 -75
  530. package/pack/.claude/skills/rite-ship/reference/adr-promotion.md +9 -0
  531. package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +1 -1
  532. package/pack/.claude/skills/rite-ship/reference/close-out.md +12 -1
  533. package/pack/.claude/skills/rite-ship/reference/design-memory.md +2 -2
  534. package/pack/.claude/skills/rite-ship/reference/git-ship.md +32 -1
  535. package/pack/.claude/skills/rite-ship/reference/ledger.md +56 -0
  536. package/pack/.claude/skills/rite-ship/reference/rollout.md +43 -0
  537. package/pack/.claude/skills/rite-spec/SKILL.md +108 -60
  538. package/pack/.claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
  539. package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +4 -1
  540. package/pack/.claude/skills/rite-spec/reference/investigation.md +34 -14
  541. package/pack/.claude/skills/rite-spec/reference/question-protocol.md +7 -37
  542. package/pack/.claude/skills/rite-spec/reference/references-intake.md +23 -18
  543. package/pack/.claude/skills/rite-spec/reference/spec-template.md +94 -118
  544. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +128 -139
  545. package/pack/.claude/skills/rite-status/SKILL.md +26 -22
  546. package/pack/.claude/skills/rite-temper/SKILL.md +34 -27
  547. package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +1 -1
  548. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
  549. package/pack/.claude/skills/rite-temper/reference/significance.md +1 -1
  550. package/pack/.claude/skills/rite-vet/SKILL.md +58 -70
  551. package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +1 -1
  552. package/pack/.claude/skills/rite-vet/reference/cross-model.md +7 -5
  553. package/pack/.claude/skills/rite-vet/reference/depth.md +1 -1
  554. package/pack/.claude/skills/rite-vet/reference/review-axes.md +3 -3
  555. package/pack/.claude/skills/rite-zoom-out/SKILL.md +16 -17
  556. package/pack/generated/README.md +10 -0
  557. package/pack/generated/claude/agents/devrites-code-reviewer.md +103 -0
  558. package/pack/generated/claude/agents/devrites-devex-reviewer.md +104 -0
  559. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +68 -0
  560. package/pack/generated/claude/agents/devrites-forge-judge.md +102 -0
  561. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +84 -0
  562. package/pack/generated/claude/agents/devrites-performance-reviewer.md +111 -0
  563. package/pack/generated/claude/agents/devrites-plan-reviewer.md +89 -0
  564. package/pack/generated/claude/agents/devrites-retrospector.md +96 -0
  565. package/pack/generated/claude/agents/devrites-security-auditor.md +85 -0
  566. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +90 -0
  567. package/pack/generated/claude/agents/devrites-slice-wright.md +210 -0
  568. package/pack/generated/claude/agents/devrites-spec-reviewer.md +87 -0
  569. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +72 -0
  570. package/pack/generated/claude/agents/devrites-test-analyst.md +64 -0
  571. package/pack/generated/claude/settings.json +103 -0
  572. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +61 -0
  573. package/pack/generated/claude/skills/devrites-audit/SKILL.md +73 -0
  574. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +76 -0
  575. package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  576. package/pack/generated/claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  577. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +65 -0
  578. package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  579. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
  580. package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
  581. package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  582. package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
  583. package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
  584. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +82 -0
  585. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +99 -0
  586. package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +71 -0
  587. package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +116 -0
  588. package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
  589. package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
  590. package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
  591. package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +60 -0
  592. package/pack/generated/claude/skills/devrites-interview/SKILL.md +104 -0
  593. package/pack/generated/claude/skills/devrites-lib/SKILL.md +82 -0
  594. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +16 -0
  595. package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +43 -0
  596. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
  597. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +111 -0
  598. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +61 -0
  599. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
  600. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +192 -0
  601. package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
  602. package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
  603. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  604. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
  605. package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +55 -0
  606. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
  607. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +119 -0
  608. package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
  609. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +71 -0
  610. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
  611. package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
  612. package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +35 -0
  613. package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
  614. package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
  615. package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +33 -0
  616. package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
  617. package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +38 -0
  618. package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +73 -0
  619. package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +48 -0
  620. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +36 -0
  621. package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +158 -0
  622. package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +117 -0
  623. package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
  624. package/pack/generated/claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
  625. package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
  626. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +135 -0
  627. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
  628. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
  629. package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
  630. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +162 -0
  631. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +99 -0
  632. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
  633. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +69 -0
  634. package/pack/generated/claude/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
  635. package/pack/generated/claude/skills/devrites-prose-craft/reference/examples.md +102 -0
  636. package/pack/generated/claude/skills/devrites-prose-craft/reference/structures.md +134 -0
  637. package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +51 -0
  638. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +52 -0
  639. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +134 -0
  640. package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  641. package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
  642. package/pack/generated/claude/skills/rite/SKILL.md +142 -0
  643. package/pack/generated/claude/skills/rite/reference/menu.md +42 -0
  644. package/pack/generated/claude/skills/rite-adopt/SKILL.md +104 -0
  645. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +55 -0
  646. package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +19 -0
  647. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +98 -0
  648. package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +35 -0
  649. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +54 -0
  650. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
  651. package/pack/generated/claude/skills/rite-build/SKILL.md +84 -0
  652. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +145 -0
  653. package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +37 -0
  654. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +149 -0
  655. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +44 -0
  656. package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +35 -0
  657. package/pack/generated/claude/skills/rite-build/reference/forge.md +181 -0
  658. package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +39 -0
  659. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +42 -0
  660. package/pack/generated/claude/skills/rite-build/reference/output.md +41 -0
  661. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +258 -0
  662. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +43 -0
  663. package/pack/generated/claude/skills/rite-build/reference/tdd.md +26 -0
  664. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +140 -0
  665. package/pack/generated/claude/skills/rite-converge/SKILL.md +131 -0
  666. package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +35 -0
  667. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
  668. package/pack/generated/claude/skills/rite-customize/SKILL.md +67 -0
  669. package/pack/generated/claude/skills/rite-define/SKILL.md +153 -0
  670. package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +26 -0
  671. package/pack/generated/claude/skills/rite-define/reference/gates.md +152 -0
  672. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +94 -0
  673. package/pack/generated/claude/skills/rite-doctor/SKILL.md +76 -0
  674. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +49 -0
  675. package/pack/generated/claude/skills/rite-explain/SKILL.md +148 -0
  676. package/pack/generated/claude/skills/rite-explain/reference/intake.md +79 -0
  677. package/pack/generated/claude/skills/rite-frame/SKILL.md +120 -0
  678. package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +68 -0
  679. package/pack/generated/claude/skills/rite-handoff/SKILL.md +97 -0
  680. package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +44 -0
  681. package/pack/generated/claude/skills/rite-learn/SKILL.md +117 -0
  682. package/pack/generated/claude/skills/rite-plan/SKILL.md +95 -0
  683. package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +24 -0
  684. package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +33 -0
  685. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +42 -0
  686. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +65 -0
  687. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +33 -0
  688. package/pack/generated/claude/skills/rite-polish/SKILL.md +87 -0
  689. package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +206 -0
  690. package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +30 -0
  691. package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +80 -0
  692. package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
  693. package/pack/generated/claude/skills/rite-polish/reference/code.md +100 -0
  694. package/pack/generated/claude/skills/rite-polish/reference/design-system-discovery.md +8 -0
  695. package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +109 -0
  696. package/pack/generated/claude/skills/rite-polish/reference/ui.md +136 -0
  697. package/pack/generated/claude/skills/rite-pov/SKILL.md +46 -0
  698. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +49 -0
  699. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +74 -0
  700. package/pack/generated/claude/skills/rite-prototype/SKILL.md +110 -0
  701. package/pack/generated/claude/skills/rite-prove/SKILL.md +104 -0
  702. package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
  703. package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +25 -0
  704. package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +49 -0
  705. package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +25 -0
  706. package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +28 -0
  707. package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +30 -0
  708. package/pack/generated/claude/skills/rite-quick/SKILL.md +93 -0
  709. package/pack/generated/claude/skills/rite-resolve/SKILL.md +109 -0
  710. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +115 -0
  711. package/pack/generated/claude/skills/rite-review/SKILL.md +171 -0
  712. package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +32 -0
  713. package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +92 -0
  714. package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +26 -0
  715. package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +60 -0
  716. package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +130 -0
  717. package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +80 -0
  718. package/pack/generated/claude/skills/rite-review/reference/performance-review.md +14 -0
  719. package/pack/generated/claude/skills/rite-review/reference/security-review.md +37 -0
  720. package/pack/generated/claude/skills/rite-seal/SKILL.md +101 -0
  721. package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +29 -0
  722. package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +60 -0
  723. package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +64 -0
  724. package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +53 -0
  725. package/pack/generated/claude/skills/rite-seal/reference/output.md +7 -0
  726. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +211 -0
  727. package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +30 -0
  728. package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +36 -0
  729. package/pack/generated/claude/skills/rite-ship/SKILL.md +111 -0
  730. package/pack/generated/claude/skills/rite-ship/reference/adr-promotion.md +9 -0
  731. package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +25 -0
  732. package/pack/generated/claude/skills/rite-ship/reference/close-out.md +42 -0
  733. package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +120 -0
  734. package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +73 -0
  735. package/pack/generated/claude/skills/rite-ship/reference/ledger.md +56 -0
  736. package/pack/generated/claude/skills/rite-ship/reference/rollout.md +43 -0
  737. package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +33 -0
  738. package/pack/generated/claude/skills/rite-spec/SKILL.md +217 -0
  739. package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  740. package/pack/generated/claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
  741. package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +28 -0
  742. package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +56 -0
  743. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +84 -0
  744. package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +31 -0
  745. package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +62 -0
  746. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +73 -0
  747. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +110 -0
  748. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +156 -0
  749. package/pack/generated/claude/skills/rite-status/SKILL.md +107 -0
  750. package/pack/generated/claude/skills/rite-temper/SKILL.md +126 -0
  751. package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +29 -0
  752. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +65 -0
  753. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +53 -0
  754. package/pack/generated/claude/skills/rite-temper/reference/significance.md +46 -0
  755. package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +90 -0
  756. package/pack/generated/claude/skills/rite-vet/SKILL.md +175 -0
  757. package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +29 -0
  758. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +135 -0
  759. package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +43 -0
  760. package/pack/generated/claude/skills/rite-vet/reference/depth.md +53 -0
  761. package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +48 -0
  762. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +167 -0
  763. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +75 -0
  764. package/pack/generated/codex/AGENTS.md +23 -0
  765. package/pack/generated/codex/agents/devrites-code-reviewer.toml +101 -0
  766. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +102 -0
  767. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +66 -0
  768. package/pack/generated/codex/agents/devrites-forge-judge.toml +100 -0
  769. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +80 -0
  770. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +109 -0
  771. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +93 -0
  772. package/pack/generated/codex/agents/devrites-retrospector.toml +94 -0
  773. package/pack/generated/codex/agents/devrites-security-auditor.toml +83 -0
  774. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +88 -0
  775. package/pack/generated/codex/agents/devrites-slice-wright.toml +207 -0
  776. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +85 -0
  777. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +76 -0
  778. package/pack/generated/codex/agents/devrites-test-analyst.toml +62 -0
  779. package/pack/generated/codex/hooks.json +151 -0
  780. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +73 -0
  781. package/pack/generated/codex/skills/devrites-api-interface/agents/openai.yaml +2 -0
  782. package/pack/generated/codex/skills/devrites-audit/SKILL.md +85 -0
  783. package/pack/generated/codex/skills/devrites-audit/agents/openai.yaml +2 -0
  784. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +88 -0
  785. package/pack/generated/codex/skills/devrites-browser-proof/agents/openai.yaml +2 -0
  786. package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  787. package/pack/generated/codex/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  788. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +77 -0
  789. package/pack/generated/codex/skills/devrites-debug-recovery/agents/openai.yaml +2 -0
  790. package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  791. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
  792. package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
  793. package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  794. package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
  795. package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +25 -0
  796. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +94 -0
  797. package/pack/generated/codex/skills/devrites-doubt/agents/openai.yaml +2 -0
  798. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +111 -0
  799. package/pack/generated/codex/skills/devrites-frontend-craft/agents/openai.yaml +2 -0
  800. package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +71 -0
  801. package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +116 -0
  802. package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
  803. package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
  804. package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
  805. package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +60 -0
  806. package/pack/generated/codex/skills/devrites-interview/SKILL.md +116 -0
  807. package/pack/generated/codex/skills/devrites-interview/agents/openai.yaml +2 -0
  808. package/pack/generated/codex/skills/devrites-lib/SKILL.md +94 -0
  809. package/pack/generated/codex/skills/devrites-lib/agents/openai.yaml +2 -0
  810. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +16 -0
  811. package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +43 -0
  812. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
  813. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +111 -0
  814. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +61 -0
  815. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
  816. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +192 -0
  817. package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
  818. package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
  819. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  820. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +141 -0
  821. package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +55 -0
  822. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
  823. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +119 -0
  824. package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
  825. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +71 -0
  826. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
  827. package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
  828. package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +35 -0
  829. package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
  830. package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +80 -0
  831. package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +33 -0
  832. package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
  833. package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +38 -0
  834. package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +73 -0
  835. package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +48 -0
  836. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +36 -0
  837. package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +158 -0
  838. package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +117 -0
  839. package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
  840. package/pack/generated/codex/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
  841. package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
  842. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +135 -0
  843. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
  844. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
  845. package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
  846. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +162 -0
  847. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +99 -0
  848. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
  849. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +81 -0
  850. package/pack/generated/codex/skills/devrites-prose-craft/agents/openai.yaml +2 -0
  851. package/pack/generated/codex/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
  852. package/pack/generated/codex/skills/devrites-prose-craft/reference/examples.md +102 -0
  853. package/pack/generated/codex/skills/devrites-prose-craft/reference/structures.md +134 -0
  854. package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +63 -0
  855. package/pack/generated/codex/skills/devrites-refresh-indexes/agents/openai.yaml +2 -0
  856. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +64 -0
  857. package/pack/generated/codex/skills/devrites-source-driven/agents/openai.yaml +2 -0
  858. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +146 -0
  859. package/pack/generated/codex/skills/devrites-ux-shape/agents/openai.yaml +2 -0
  860. package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  861. package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
  862. package/pack/generated/codex/skills/rite/SKILL.md +154 -0
  863. package/pack/generated/codex/skills/rite/agents/openai.yaml +2 -0
  864. package/pack/generated/codex/skills/rite/reference/menu.md +42 -0
  865. package/pack/generated/codex/skills/rite-adopt/SKILL.md +116 -0
  866. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +55 -0
  867. package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +19 -0
  868. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +110 -0
  869. package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +35 -0
  870. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +54 -0
  871. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
  872. package/pack/generated/codex/skills/rite-build/SKILL.md +96 -0
  873. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +145 -0
  874. package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +37 -0
  875. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +149 -0
  876. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +44 -0
  877. package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +35 -0
  878. package/pack/generated/codex/skills/rite-build/reference/forge.md +181 -0
  879. package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +39 -0
  880. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +42 -0
  881. package/pack/generated/codex/skills/rite-build/reference/output.md +41 -0
  882. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +258 -0
  883. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +43 -0
  884. package/pack/generated/codex/skills/rite-build/reference/tdd.md +26 -0
  885. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +140 -0
  886. package/pack/generated/codex/skills/rite-converge/SKILL.md +143 -0
  887. package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +35 -0
  888. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +61 -0
  889. package/pack/generated/codex/skills/rite-customize/SKILL.md +79 -0
  890. package/pack/generated/codex/skills/rite-customize/agents/openai.yaml +2 -0
  891. package/pack/generated/codex/skills/rite-define/SKILL.md +165 -0
  892. package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +26 -0
  893. package/pack/generated/codex/skills/rite-define/reference/gates.md +152 -0
  894. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +94 -0
  895. package/pack/generated/codex/skills/rite-doctor/SKILL.md +88 -0
  896. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +61 -0
  897. package/pack/generated/codex/skills/rite-dogfood/agents/openai.yaml +2 -0
  898. package/pack/generated/codex/skills/rite-explain/SKILL.md +160 -0
  899. package/pack/generated/codex/skills/rite-explain/agents/openai.yaml +2 -0
  900. package/pack/generated/codex/skills/rite-explain/reference/intake.md +79 -0
  901. package/pack/generated/codex/skills/rite-frame/SKILL.md +132 -0
  902. package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +68 -0
  903. package/pack/generated/codex/skills/rite-handoff/SKILL.md +109 -0
  904. package/pack/generated/codex/skills/rite-handoff/agents/openai.yaml +2 -0
  905. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +44 -0
  906. package/pack/generated/codex/skills/rite-learn/SKILL.md +129 -0
  907. package/pack/generated/codex/skills/rite-learn/agents/openai.yaml +2 -0
  908. package/pack/generated/codex/skills/rite-plan/SKILL.md +107 -0
  909. package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +24 -0
  910. package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +33 -0
  911. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +42 -0
  912. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +65 -0
  913. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +33 -0
  914. package/pack/generated/codex/skills/rite-polish/SKILL.md +99 -0
  915. package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +206 -0
  916. package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +30 -0
  917. package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +80 -0
  918. package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
  919. package/pack/generated/codex/skills/rite-polish/reference/code.md +100 -0
  920. package/pack/generated/codex/skills/rite-polish/reference/design-system-discovery.md +8 -0
  921. package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +109 -0
  922. package/pack/generated/codex/skills/rite-polish/reference/ui.md +136 -0
  923. package/pack/generated/codex/skills/rite-pov/SKILL.md +58 -0
  924. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +61 -0
  925. package/pack/generated/codex/skills/rite-pr-feedback/agents/openai.yaml +2 -0
  926. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +86 -0
  927. package/pack/generated/codex/skills/rite-prototype/SKILL.md +122 -0
  928. package/pack/generated/codex/skills/rite-prototype/agents/openai.yaml +2 -0
  929. package/pack/generated/codex/skills/rite-prove/SKILL.md +116 -0
  930. package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +48 -0
  931. package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +25 -0
  932. package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +49 -0
  933. package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +25 -0
  934. package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +28 -0
  935. package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +30 -0
  936. package/pack/generated/codex/skills/rite-quick/SKILL.md +105 -0
  937. package/pack/generated/codex/skills/rite-resolve/SKILL.md +121 -0
  938. package/pack/generated/codex/skills/rite-resolve/agents/openai.yaml +2 -0
  939. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +115 -0
  940. package/pack/generated/codex/skills/rite-review/SKILL.md +183 -0
  941. package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +32 -0
  942. package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +92 -0
  943. package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +26 -0
  944. package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +60 -0
  945. package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +130 -0
  946. package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +80 -0
  947. package/pack/generated/codex/skills/rite-review/reference/performance-review.md +14 -0
  948. package/pack/generated/codex/skills/rite-review/reference/security-review.md +37 -0
  949. package/pack/generated/codex/skills/rite-seal/SKILL.md +113 -0
  950. package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +29 -0
  951. package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +60 -0
  952. package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +64 -0
  953. package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +53 -0
  954. package/pack/generated/codex/skills/rite-seal/reference/output.md +7 -0
  955. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +211 -0
  956. package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +30 -0
  957. package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +36 -0
  958. package/pack/generated/codex/skills/rite-ship/SKILL.md +123 -0
  959. package/pack/generated/codex/skills/rite-ship/reference/adr-promotion.md +9 -0
  960. package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +25 -0
  961. package/pack/generated/codex/skills/rite-ship/reference/close-out.md +42 -0
  962. package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +120 -0
  963. package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +73 -0
  964. package/pack/generated/codex/skills/rite-ship/reference/ledger.md +56 -0
  965. package/pack/generated/codex/skills/rite-ship/reference/rollout.md +43 -0
  966. package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +33 -0
  967. package/pack/generated/codex/skills/rite-spec/SKILL.md +229 -0
  968. package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  969. package/pack/generated/codex/skills/rite-spec/reference/ai-spec-template.md +33 -0
  970. package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +28 -0
  971. package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +56 -0
  972. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +84 -0
  973. package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +31 -0
  974. package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +62 -0
  975. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +73 -0
  976. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +110 -0
  977. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +156 -0
  978. package/pack/generated/codex/skills/rite-status/SKILL.md +119 -0
  979. package/pack/generated/codex/skills/rite-status/agents/openai.yaml +2 -0
  980. package/pack/generated/codex/skills/rite-temper/SKILL.md +138 -0
  981. package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +29 -0
  982. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +65 -0
  983. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +53 -0
  984. package/pack/generated/codex/skills/rite-temper/reference/significance.md +46 -0
  985. package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +90 -0
  986. package/pack/generated/codex/skills/rite-vet/SKILL.md +187 -0
  987. package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +29 -0
  988. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +135 -0
  989. package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +43 -0
  990. package/pack/generated/codex/skills/rite-vet/reference/depth.md +53 -0
  991. package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +48 -0
  992. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +167 -0
  993. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +87 -0
  994. package/pack/generated/codex/skills/rite-zoom-out/agents/openai.yaml +2 -0
  995. package/package.json +8 -4
  996. package/scripts/build-binaries.sh +75 -0
  997. package/scripts/build-host-artifacts.sh +100 -0
  998. package/scripts/build-release-tarball.sh +16 -2
  999. package/scripts/check-cross-refs.py +17 -3
  1000. package/scripts/check-generated-skill-budget.mjs +41 -0
  1001. package/scripts/check-instruction-size-baseline.mjs +79 -0
  1002. package/scripts/check-invocation-integrity.py +113 -0
  1003. package/scripts/check-no-global-writes.sh +22 -0
  1004. package/scripts/check-no-personal-paths.py +50 -0
  1005. package/scripts/check-reference-governance.mjs +82 -0
  1006. package/scripts/check-reply-contract.sh +64 -0
  1007. package/scripts/check-rule-uniqueness.sh +4 -32
  1008. package/scripts/codex-generate.sh +300 -0
  1009. package/scripts/devrites-detect.sh +2 -1
  1010. package/scripts/eval-runner.py +4 -2
  1011. package/scripts/eval-scorer.mjs +46 -0
  1012. package/scripts/grade-feature.sh +24 -7
  1013. package/scripts/install-lib.sh +112 -19
  1014. package/scripts/pin.sh +4 -4
  1015. package/scripts/release-check.sh +71 -0
  1016. package/scripts/run-behavioral-evals.sh +34 -2
  1017. package/scripts/run-evals.sh +45 -30
  1018. package/scripts/run-live-behavioral-evals.py +180 -0
  1019. package/scripts/run-outcome-evals.sh +27 -0
  1020. package/scripts/run-routing-evals.py +342 -0
  1021. package/scripts/run-tests.mjs +203 -0
  1022. package/scripts/skill-pruning-audit.mjs +120 -0
  1023. package/scripts/skills-inventory.mjs +107 -0
  1024. package/scripts/validate-agent-composition.py +57 -0
  1025. package/scripts/validate-command-parity.py +70 -0
  1026. package/scripts/validate-frontmatter.py +43 -7
  1027. package/scripts/validate-skill-anatomy.py +139 -0
  1028. package/scripts/validate-workflow-security.py +22 -3
  1029. package/scripts/validate-workspace-schema.py +512 -0
  1030. package/scripts/validate.sh +174 -34
  1031. package/uninstall.sh +22 -183
  1032. package/update.sh +29 -185
  1033. package/docs/cli-mcp.md +0 -62
  1034. package/mcp/devrites-mcp.mjs +0 -105
  1035. package/pack/.claude/hooks/devrites-a1-guard.sh +0 -99
  1036. package/pack/.claude/hooks/devrites-allow.sh +0 -44
  1037. package/pack/.claude/hooks/devrites-cursor.sh +0 -28
  1038. package/pack/.claude/hooks/devrites-orient.sh +0 -53
  1039. package/pack/.claude/hooks/devrites-redwatch.sh +0 -39
  1040. package/pack/.claude/hooks/devrites-refresh-indexes.sh +0 -127
  1041. package/pack/.claude/hooks/devrites-reviewer-readonly.sh +0 -37
  1042. package/pack/.claude/hooks/devrites-statusline.sh +0 -18
  1043. package/pack/.claude/hooks/devrites-stop-gate.sh +0 -45
  1044. package/pack/.claude/hooks/devrites-wright-scope.sh +0 -64
  1045. package/pack/.claude/hooks/hooks.json +0 -52
  1046. package/pack/.claude/rules/code-review.md +0 -48
  1047. package/pack/.claude/rules/development-workflow.md +0 -40
  1048. package/pack/.claude/rules/git-workflow.md +0 -35
  1049. package/pack/.claude/rules/spec-grammar.md +0 -106
  1050. package/pack/.claude/rules/testing.md +0 -88
  1051. package/pack/.claude/skills/devrites-lib/scripts/analyze.sh +0 -78
  1052. package/pack/.claude/skills/devrites-lib/scripts/check-acceptance.sh +0 -75
  1053. package/pack/.claude/skills/devrites-lib/scripts/close-out.sh +0 -47
  1054. package/pack/.claude/skills/devrites-lib/scripts/conventions.py +0 -273
  1055. package/pack/.claude/skills/devrites-lib/scripts/coverage.sh +0 -51
  1056. package/pack/.claude/skills/devrites-lib/scripts/devrites.sh +0 -77
  1057. package/pack/.claude/skills/devrites-lib/scripts/doctor.sh +0 -156
  1058. package/pack/.claude/skills/devrites-lib/scripts/doubt-coverage.sh +0 -59
  1059. package/pack/.claude/skills/devrites-lib/scripts/evidence-fresh.sh +0 -63
  1060. package/pack/.claude/skills/devrites-lib/scripts/footprint.sh +0 -45
  1061. package/pack/.claude/skills/devrites-lib/scripts/learnings.sh +0 -74
  1062. package/pack/.claude/skills/devrites-lib/scripts/mutation-gate.sh +0 -52
  1063. package/pack/.claude/skills/devrites-lib/scripts/package-existence.sh +0 -68
  1064. package/pack/.claude/skills/devrites-lib/scripts/preamble.sh +0 -76
  1065. package/pack/.claude/skills/devrites-lib/scripts/progress.sh +0 -103
  1066. package/pack/.claude/skills/devrites-lib/scripts/readiness.sh +0 -62
  1067. package/pack/.claude/skills/devrites-lib/scripts/reconcile.sh +0 -123
  1068. package/pack/.claude/skills/devrites-lib/scripts/resolve.sh +0 -279
  1069. package/pack/.claude/skills/devrites-lib/scripts/rites.sh +0 -41
  1070. package/pack/.claude/skills/devrites-lib/scripts/spec-validate.sh +0 -130
  1071. package/pack/.claude/skills/devrites-lib/scripts/stuck.sh +0 -67
  1072. package/pack/.claude/skills/devrites-lib/scripts/test-integrity.sh +0 -87
  1073. package/pack/.claude/skills/devrites-lib/scripts/tick-afk.sh +0 -52
  1074. package/scripts/merge-codex-hooks.mjs +0 -78
  1075. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/coding-style.md +0 -0
  1076. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/error-handling.md +0 -0
  1077. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/hooks.md +0 -0
  1078. /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/patterns.md +0 -0
@@ -0,0 +1,258 @@
1
+ # rite-build phase contract
2
+
3
+ See also [`one-slice-cycle.md`](one-slice-cycle.md).
4
+
5
+ ## Execution spine
6
+
7
+ Run the engine gates at these moments:
8
+
9
+ ```bash
10
+ devrites-engine preamble
11
+ devrites-engine snapshot
12
+ devrites-engine build-readiness; echo "readiness rc=$?"
13
+
14
+ devrites-engine reconcile snapshot
15
+ devrites-engine stuck log "$(cat .devrites/ACTIVE 2>/dev/null)" dispatch "<slice id>"
16
+
17
+ devrites-engine footprint log <slug> doubt "<decision id>"
18
+
19
+ devrites-engine reconcile check; echo "reconcile rc=$?"
20
+ devrites-engine test-integrity; echo "test-integrity rc=$?"
21
+ devrites-engine package-existence; echo "package-existence rc=$?"
22
+
23
+ devrites-engine conventions contradict --key <key> --slug <slug> \
24
+ --evidence "<what the live code does>" --drift-file .devrites/work/<slug>/drift.md
25
+ devrites-engine footprint log <slug> wright "<slice id>"
26
+ devrites-engine tick-afk <state.md path>
27
+
28
+ devrites-engine progress
29
+ ```
30
+
31
+ Conditional calls still obey the detailed rules below: doubt logging runs for
32
+ each stood decision; convention contradiction runs only when the wright reports
33
+ or exposes a contradiction; `tick-afk` runs only under AFK; forge follows
34
+ [`forge.md`](forge.md) and still returns to the same doubt, record, and stop
35
+ gates.
36
+
37
+ > **Running the gate helpers.** Each gated `bash` block calls the installed engine
38
+ > directly: `devrites-engine <command> [args]`. It **propagates its exit code**,
39
+ > so the `rc=$?` checks below still hold; host hooks fail open when the binary is absent,
40
+ > but phase gates should treat a missing engine as a setup problem.
41
+
42
+ 0. **Rules + AFK + readiness check.** Read `.claude/skills/devrites-lib/reference/standards/core.md` first. Then **run the
43
+ shared orientation preamble** — it prints `state.md`, the artifacts present, the run
44
+ mode (HITL/AFK), and the open-question tally by gate, deterministically:
45
+ ```bash
46
+ devrites-engine preamble
47
+ devrites-engine snapshot
48
+ ```
49
+ Treat the snapshot as the canonical machine-readable status; if you need to tell the
50
+ user the next command, use `nextCommands.claude` in Claude Code or `nextCommands.codex`
51
+ in Codex. Then **run the readiness gate** — it enforces the step-0 stop conditions by exit code,
52
+ not by memory:
53
+ ```bash
54
+ devrites-engine build-readiness; echo "readiness rc=$?"
55
+ ```
56
+ A non-zero `rc` is a hard STOP: `2` → `/rite-define` (plan not approved), `3` →
57
+ `/rite-resolve` (awaiting human), `4` → `/rite-plan` (blocked). The prose below is the
58
+ same gate for installs without the script.
59
+ Orient from its digest. If `Status == awaiting_human` → **STOP**, tell the user to run
60
+ `/rite-resolve <qid> "<answer>"`. If `state.md` has no `Plan approved: <iso>` field
61
+ → **STOP**, tell the user the plan isn't approved yet (`/rite-define` writes it when
62
+ the human confirms). If `.devrites/AFK` is present, re-derive the remaining AFK budget
63
+ from `state.md`'s `AFK slices remaining: <n>` field (initialized from `.devrites/AFK`
64
+ `max_slices` on the first AFK build); if it is `0` → **STOP** (forced HITL stop; raise
65
+ the count in `state.md` or remove the sentinel to continue). See
66
+ [`afk-discipline.md`](afk-discipline.md).
67
+ 1. Read `spec.md`, `plan.md`, `tasks.md`, `assumptions.md`, `drift.md`, and `test-plan.md`
68
+ if present (the vetted coverage target from `/rite-vet` — the slice's tests come from
69
+ here when it exists). `state.md` and the open-`questions.md` tally are already in the
70
+ preamble digest from step 0 — re-read `questions.md` only for the full text of a flagged
71
+ blocking question.
72
+ If a **blocking `[NEEDS CLARIFICATION]`** remains or the spec/plan readiness gates
73
+ don't pass, stop → `/rite-spec` (to resolve) or `/rite-plan` (to repair). Don't build
74
+ on an unresolved spec.
75
+ 2. Select the next pending slice (or the one in `$ARGUMENTS`). **Restate its goal,
76
+ acceptance criteria, and scope boundary** in one short block. Confirm it's still the
77
+ right next slice. Write the slice's `Mode` to `state.md` as `Slice mode: <HITL|AFK>` on
78
+ **every** selection (not only on the HITL pause path); `/rite-resolve` clears or updates
79
+ it on resume.
80
+ 2a. **HITL gate (pre-action pause).** Read the slice's `Mode`. If `HITL`, surface the
81
+ checkpoint as a ranked **option set** and resolve it **before** any code lands, per
82
+ [`checkpoint-protocol.md`](checkpoint-protocol.md). Branch on whether
83
+ a human is here:
84
+ - **Human present (interactive — no `.devrites/AFK`) → ask inline via `AskUserQuestion`.**
85
+ This is the default for an interactive build. Render 2-4 options, the recommended one
86
+ **first and labelled `(Recommended)`**, each with its dimension-tagged rationale + the
87
+ trade-off it accepts, plus the `Something else — I'll describe it` escape hatch. The
88
+ human picks; record the pick to `questions.md` (`answered`) + `decisions.md` (through the
89
+ `devrites-engine resolve` writer), clear the gate, and **continue to step 3 in place** — do **not**
90
+ STOP, do **not** route through `/rite-resolve`.
91
+ - **Human absent / AFK (`.devrites/AFK` present) → auto-pick or persist + STOP.** For a gate
92
+ in `allow_gates`, auto-pick the recommended option (option 1) and proceed; otherwise
93
+ append the `questions.md` entry, write the `Awaiting human` block to `state.md`, set
94
+ `Status: awaiting_human`, fire the `notify:` hook, then **STOP** — resume when the user
95
+ runs `/rite-resolve <qid> "<answer>"`. `blocking` / `escalating` / irreversible-risk gates
96
+ always take this stop path, never the AFK auto-pick.
97
+ 3. **Snapshot the tree, then dispatch the build core to `devrites-slice-wright`** — one `Task`
98
+ call, fresh context. **First**, capture the pre-dispatch tree so the reconcile gate (step 6)
99
+ can prove you never touched source — run this immediately before the `Task` call:
100
+ ```bash
101
+ devrites-engine reconcile snapshot
102
+ ```
103
+ Then log the dispatch so the stuck-loop detector can catch a slice that keeps being
104
+ re-dispatched without progress (it pauses the build even under AFK):
105
+ ```bash
106
+ devrites-engine stuck log "$(cat .devrites/ACTIVE 2>/dev/null)" dispatch "<slice id>"
107
+ ```
108
+ **Forge branch — only if the selected slice is `Forge: yes`.** Instead of the single dispatch
109
+ below, run the competitive build per [`forge.md`](forge.md): K=2-3 candidate
110
+ wrights, each in an **isolated git worktree** on the distinct strategy `/rite-vet` named, then a
111
+ fresh-context [`devrites-forge-judge`](../../../agents/devrites-forge-judge.md) scores them against
112
+ acceptance + `test-plan.md` + `.devrites/principles.md` + the anti-slop charter, and you land
113
+ exactly **one** winner's diff in the working tree, graft any cheap runner-up improvement by
114
+ continuing the winning wright once, and write `forge-report.md`. Forge returns the **same shape**
115
+ a single wright does (one structured artifact, for the winner), so steps 4-7 (doubt, fail-on-red,
116
+ reconcile against the winner's claimed set, record, stop) run **unchanged**. If you cannot give
117
+ the judge an objective scorecard (the slice lacks acceptance / `test-plan.md` coverage) or cannot
118
+ name two genuinely different strategies, the flag is stale — clear it and build single-path. The
119
+ single-writer invariant is intact: each candidate owns its own tree, exactly one author's diff
120
+ lands. Then **stop** here for this slice; the steps below are the default single-path dispatch.
121
+
122
+ Then assemble the slice contract and send it per
123
+ [`wright-dispatch.md`](wright-dispatch.md): the slice goal, acceptance
124
+ criteria, and **scope boundary**; the paths it may touch (`touched-files.md`); the context
125
+ paths to read (`spec.md`, `plan.md`, `decisions.md`, `assumptions.md`, `.devrites/principles.md`
126
+ when present — the binding invariants the slice must honor — plus `test-plan.md`
127
+ when present — its per-gap test requirements + regression-criticals for this slice are the
128
+ coverage the wright must write — and `design-brief.md`
129
+ when the slice touches UI per [`frontend-trigger.md`](frontend-trigger.md)); and the
130
+ `.claude/skills/devrites-lib/reference/standards/` files in scope. The wright **orients** on the project's idiom (using a
131
+ code-intelligence index **if available** — `codebase-memory-mcp` first, cross-checked with
132
+ `codegraph` (`.codegraph/` / `codegraph_*`) + `graphify` (`graphify-out/`), else standard
133
+ methods (LSP / `Read`/`Grep`/`Glob`); see `.claude/skills/devrites-lib/reference/standards/tooling.md` — for
134
+ placement/callers/impact), writes the **failing test first** when
135
+ behaviour changes ([`tdd.md`](tdd.md)), implements the **smallest complete** version in
136
+ the project's style (applying `devrites-frontend-craft` to `design-brief.md` for UI, and
137
+ `devrites-source-driven` — with context7 if available — for uncertain framework facts), runs the slice's **targeted tests**
138
+ (plus typecheck / lint / build where the project has them), and returns a structured artifact
139
+ — **code + tests only; it does not write the workspace files.** If the slice is UI but no `design-brief.md` exists (e.g. a spec written before
140
+ shaping), shape it via `devrites-ux-shape` before the wright codes. If the `Task` tool is
141
+ unavailable, run the wright's discipline **inline** as a flagged fallback (see the reference)
142
+ — same one-slice cycle, no isolation; in that case write
143
+ `.devrites/work/<slug>/.reconcile-inline` so the reconcile gate skips (you are legitimately
144
+ the writer in this fallback).
145
+ 4. **Doubt the decisions it stood up.** For each entry in the wright's `Decisions stood`
146
+ (branching, boundary crossing, data model, auth, public API, migration, user-flow change,
147
+ "this is safe/scales") apply `devrites-doubt` **before accepting the slice** — the writer
148
+ doesn't grade its own decisions. Each `devrites-doubt` invocation **dispatches the
149
+ `devrites-doubt-reviewer` subagent** (doing the adversarial pass inline is the writer grading
150
+ itself — the thing this step exists to forbid). **Completion criterion (checkable):** step 4
151
+ is done only when **every** `Decisions stood` entry carries a recorded `devrites-doubt`
152
+ verdict — `accept`, or `reject` + the required changes — in `decisions.md` (accepted
153
+ trade-offs) / `questions.md` (open gates). A `Decisions stood` entry with **no verdict on
154
+ record** means doubt did not run for it: **do not enter step 5 and do not mark the slice
155
+ `built`.** Log each dispatch so the seal can prove doubt ran (the footprint already counts a
156
+ `doubt` kind):
157
+ ```bash
158
+ devrites-engine footprint log <slug> doubt "<decision id>"
159
+ ```
160
+ The doubt loop honours `.devrites/AFK` (see its AFK exception): findings below the slice's gate ceiling become advisory entries in `questions.md`;
161
+ destructive / auth / public-API concerns always pause regardless. A non-empty `Escalation` in
162
+ the artifact is handled here too: irreversible-risk / blockers → blocking question + set
163
+ `Status: awaiting_human`; a scope-changing answer → `/rite-plan repair` (Spec Drift Guard),
164
+ never silently into the slice. **If an irreversible-risk item shows up under the wright's
165
+ `Decisions stood` rather than `Escalation`**, treat that misclassification as itself a
166
+ blocking protocol violation — pause and re-dispatch with the item flagged out-of-bounds, do
167
+ **not** doubt-and-accept it. (The wright's return is the not-yet-load-bearing moment — the
168
+ slice isn't `built` or merged yet — so this post-return doubt is still pre-commit.)
169
+ **Principle check (same standing):** a wright return that breaks a declared principle
170
+ (reported in its `Principles` field, or that you detect against `.devrites/principles.md`) is
171
+ handled here like an irreversible-risk item — block, route to a human-approved scoped
172
+ exception in the register or stop; never doubt-and-accept a principle violation into the slice.
173
+ 5. **Fail-on-red.** If the wright's `Gates` were red (targeted tests / types / lint) or it
174
+ couldn't verify: do **not** mark the slice `built`, and **do not fix the code yourself**.
175
+ First remedy — **continue the same wright once** (`SendMessage` to it, carrying the failing
176
+ gate + its real output) so it fixes in its own context. This retry is for **objective
177
+ failures only** — red gate / type / lint / missing test coverage / UI browser-proof fail —
178
+ never a contested decision (that routes to `/rite-plan repair`). **Still red after the one
179
+ retry** → escalate: AFK → append a blocking question to `questions.md` (gate=blocking,
180
+ slice's SLA) + set `Status: awaiting_human`; HITL → pause as a blocking gate. Either way,
181
+ `Next step: /rite-plan unblock` until resolved.
182
+ 6. **Record — you are the canonical writer.** **First, run the reconcile gate (A1):** write the
183
+ wright's reported `Files changed` paths (one per line) to
184
+ `.devrites/work/<slug>/.reconcile-claimed` (or the active legacy
185
+ `.devrites/features/<slug>/` workspace during migration), then:
186
+ ```bash
187
+ devrites-engine reconcile check; echo "reconcile rc=$?"
188
+ ```
189
+ **Exit 5 → hard STOP:** a source file changed outside the wright's claimed set — code was
190
+ edited by something other than the wright (A1 breach). Revert it and re-dispatch the wright;
191
+ do **not** mark the slice `built`.
192
+
193
+ **Then run the test-integrity gate (anti-reward-hacking)** — prove the slice didn't reach
194
+ green by weakening its tests:
195
+ ```bash
196
+ devrites-engine test-integrity; echo "test-integrity rc=$?"
197
+ ```
198
+ **Exit 3 → hard STOP:** a test was deleted, skipped, or de-asserted since the slice base — the
199
+ slice went green by weakening its tests, a Critical protocol violation. Revert the weakening and
200
+ re-dispatch the wright; do **not** mark the slice `built`.
201
+
202
+ **Then run the package-existence gate (anti-hallucination)** — every new third-party import must
203
+ be declared in a project manifest, not just imported:
204
+ ```bash
205
+ devrites-engine package-existence; echo "package-existence rc=$?"
206
+ ```
207
+ **Exit 3 → STOP:** an imported package is not declared in any manifest (`package.json`, `go.mod`,
208
+ `requirements.txt`, `pyproject.toml`, `Pipfile`, `Cargo.toml`) — the classic shape of a
209
+ hallucinated or typo-squatted dependency. Confirm the name on the registry and declare it via the
210
+ package manager, or remove the import; do **not** mark the slice `built`. The gate is deterministic
211
+ and fail-open (not a git repo / no manifest / stdlib-only import → rc 0).
212
+
213
+ Then, from the wright's artifact, update `state.md`,
214
+ `evidence.md`, `touched-files.md` (and `browser-evidence.md` for UI). Add a `## Review trail`
215
+ to `touched-files.md`: group the slice's important `path:line` stops by concern (design intent,
216
+ not file order), 1–5 concerns, each stop under 15 words. This is for a later human walkthrough;
217
+ keep it factual and skip invented rationale. **Persist every
218
+ `Decisions stood` entry from the wright's artifact to a `## Decisions stood` section in
219
+ `decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING>`** — the
220
+ verdict from step 4, or `MISSING` if step 4 was skipped for that entry. Write this ledger at
221
+ record-time **independent of the doubt step**, so a stood decision lands on disk even when it
222
+ was never doubted: `/rite-seal` cross-checks the ledger, and a `doubt: MISSING` entry is the
223
+ skipped-doubt finding that would otherwise leave no trace (the per-slice skip the footprint
224
+ count alone can't catch). If the wright stood no decisions, write `## Decisions stood` with
225
+ `- none` so the absence is recorded, not assumed. If the wright reported
226
+ an approach it tried and backed out of, record it under a `## Dead ends` section in
227
+ `decisions.md` so a retry or the next agent doesn't repeat it.
228
+ **If the wright's `Conventions` field reports a contradiction** (the live code now
229
+ disagrees with a held convention), record the drift — you own this bookkeeping:
230
+ ```bash
231
+ devrites-engine conventions contradict --key <key> --slug <slug> \
232
+ --evidence "<what the live code does>" --drift-file .devrites/work/<slug>/drift.md
233
+ ```
234
+ It lowers the convention's band (or retires it) and appends a `convention-drift` entry to
235
+ `drift.md`. The ledger is **promoted only at `/rite-seal` on GO** — build only records
236
+ contradictions, never new conventions. **Evidence is the
237
+ wright's real command output, not its say-so.** Capture per
238
+ [`evidence-standard.md`](evidence-standard.md). Append a footprint record for this
239
+ slice's wright dispatch (deterministic run-weight bookkeeping the seal reports):
240
+ ```bash
241
+ devrites-engine footprint log <slug> wright "<slice id>"
242
+ ```
243
+ If `.devrites/AFK` is present, decrement
244
+ the budget by running `devrites-engine tick-afk <state.md path>` —
245
+ it decrements `state.md`'s `AFK slices remaining` field, prints the new value, and exits `3`
246
+ when it hits 0. **Exit 3 → STOP** (forced HITL stop; the cap is exhausted). Never rewrite
247
+ `.devrites/AFK` `max_slices` in place — it is read-only initial budget.
248
+ 7. **STOP.** Render the progress footer, then report and recommend the next step. Run the
249
+ shared footer (mirror of the step-0 preamble) so the slice meter + flow ribbon are
250
+ deterministic, not model-typed:
251
+ ```bash
252
+ devrites-engine progress
253
+ ```
254
+ It reads `state.md` (already updated in step 6), so the meter reflects the slice you
255
+ just built. **When every slice is built** (`✅ ALL BUILT`) say so explicitly — the build
256
+ phase is complete, the next phase is `/rite-prove` — don't leave completion implicit.
257
+
258
+ > **Mid-flight discipline.** The wright (or you, in the inline fallback) must resist doing two slices, skipping TDD, adding a defensive check, or wandering outside `touched-files.md`; you must resist skipping the post-return `devrites-doubt` because the wright "seems confident" — see [`anti-patterns.md`](anti-patterns.md). Load it the moment you reach for the excuse.
@@ -0,0 +1,43 @@
1
+ # Spec Drift Guard (build phase)
2
+
3
+ Active throughout `/rite-build`. The spec is living, not sacred — but you may not
4
+ silently code against a plan you know is wrong. This is the canonical Spec Drift Guard;
5
+ other phases reference it here.
6
+
7
+ ## Drift has occurred when
8
+ - the spec says X but the code makes X impossible/wrong;
9
+ - the plan assumes a file/API/component/route/model/command that doesn't exist;
10
+ - tests show the acceptance criteria are incomplete or wrong;
11
+ - browser evidence shows the intended UX doesn't work as described;
12
+ - an official doc contradicts the planned approach;
13
+ - the design system / existing UX pattern contradicts the planned UI;
14
+ - a missing user decision that affects product behavior surfaces.
15
+
16
+ ## Workflow
17
+ ```
18
+ 1. STOP coding.
19
+ 2. Record in drift.md (assumed vs observed, when).
20
+ 3. Classify: requirement ambiguity | implementation-plan error | codebase reality
21
+ mismatch | design-system mismatch | test/evidence mismatch | external-doc mismatch
22
+ | user-decision required.
23
+ 4. Local repair that preserves behavior/scope/architecture/data/UX/security/migration?
24
+ YES → log in drift.md + decisions.md, /rite-plan repair, resume.
25
+ NO → ask the user (format below). Don't continue on the old plan.
26
+ 5. Run /rite-plan repair before resuming.
27
+ ```
28
+
29
+ ## User question format
30
+ ```
31
+ I hit spec drift:
32
+ - Spec/plan assumed: ...
33
+ - Code/evidence shows: ...
34
+ - Why it matters: ...
35
+
36
+ Which direction should DevRites take?
37
+ 1. Keep the requirement, change architecture by ...
38
+ 2. Adjust the requirement to match existing behavior ...
39
+ 3. Split into a follow-up feature ...
40
+ 4. Custom: describe the intended behavior
41
+ ```
42
+
43
+ Never continue coding on a known-wrong plan. Always re-plan before resuming.
@@ -0,0 +1,26 @@
1
+ # TDD / Prove-It pattern
2
+
3
+ When a slice changes behavior, prove the change with a test that fails first — so you
4
+ know the test can fail, and that your code is what makes it pass.
5
+
6
+ ## Red → Green → Refactor
7
+ 1. **Red** — write the smallest test that expresses the new behavior. Run it; watch it
8
+ fail for the *expected* reason (not a typo/import error).
9
+ 2. **Green** — write the minimum code to pass. Resist gold-plating.
10
+ 3. **Refactor** — clean up with the test as a safety net. Re-run; stay green.
11
+
12
+ ## Prove-It (when strict TDD doesn't fit)
13
+ For code where a test-first flow is awkward (exploratory glue, config, some UI), still
14
+ produce evidence:
15
+ - Capture the current (wrong/absent) behavior — a failing assertion, a screenshot, a
16
+ log line.
17
+ - Make the change.
18
+ - Capture the new behavior the same way. The before/after pair *is* the proof.
19
+
20
+ ## Rules
21
+ - Use the project's existing test framework and commands (discovered in `spec.md` →
22
+ "Commands discovered"). Don't introduce a new test runner to prove a slice.
23
+ - One behavior per test; name it for the behavior, not the function.
24
+ - A green test you never saw fail proves nothing — always see red first.
25
+ - Don't delete or weaken a failing test to "pass". If it's wrong, that may be drift.
26
+ - Record the test command + result in `evidence.md`.
@@ -0,0 +1,140 @@
1
+ # Slice-wright dispatch
2
+
3
+ How `/rite-build` hands the **build core** of one slice to `devrites-slice-wright` — the
4
+ fresh-context, **write-capable** executor under `.claude/agents/`. Loaded on demand by
5
+ `/rite-build`; not a skill itself. Sibling of
6
+ [`../../devrites-lib/reference/parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md)
7
+ (the read-only reviewer fan-out) — same isolation principle, opposite direction: this one
8
+ **writes**.
9
+
10
+ Pattern: the orchestrator owns the **gates and the workspace**; the wright owns the **writing**.
11
+ Brief it precisely, in a clean context, with only the slice contract — then doubt, record, and
12
+ gate its return.
13
+
14
+ ## Why a fresh context writes the slice
15
+ The orchestrator's window is full of spec investigation, planning, prior slices, and tool
16
+ output — the exact "lost-in-the-middle" load that degrades instruction-following and pulls the
17
+ model toward generic code. The wright starts clean and sees only the contract, so it holds the
18
+ slice boundary strictly and writes to the *project's* idiom instead of drifting. Single-threaded
19
+ by design: **one** wright per slice, never a parallel fan-out of writers *sharing a tree* —
20
+ concurrent writers on one working tree make conflicting implicit decisions and produce incoherent
21
+ code. The one sanctioned exception is a **forge** slice, which competes K candidates in *isolated*
22
+ worktrees and lands exactly one — no tree ever has two authors, so the invariant holds (see
23
+ [Forge](#forge--competing-candidates-the-deliberate-exception)).
24
+
25
+ ## The contract `/rite-build` sends
26
+ One `Task` call to `devrites-slice-wright` carrying everything the writer needs and nothing it
27
+ doesn't:
28
+
29
+ ```
30
+ Build one slice of the active DevRites feature. You have a clean context — this contract is
31
+ the whole job.
32
+
33
+ Workspace: .devrites/work/<slug>/
34
+ Slice: <id — name>
35
+ Goal: <one or two sentences>
36
+ Acceptance criteria: <the slice's criteria, verbatim>
37
+ UI visual acceptance: <if UI — state × viewport × input + target R-id/brief rule, verbatim from tasks.md>
38
+ Scope boundary: <what it WILL and will NOT touch>
39
+ Mode: <HITL | AFK> (+ AFK budget note if a cap is set)
40
+
41
+ Targets (stay inside these — from touched-files.md): <paths>
42
+ Interfaces / signatures to match: <if any>
43
+ Read yourself: spec.md, plan.md, decisions.md, assumptions.md, rite-polish/reference/anti-ai-slop.md<, design-brief.md if UI>
44
+ Rules in scope (.claude/skills/devrites-lib/reference/standards/): coding-style, error-handling, testing, patterns<, security if input/auth/data><, performance if hot path / query / large payload>
45
+ Test completeness: write ≥1 asserting test for EVERY interactive element + user flow in this
46
+ slice's test-plan.md interaction inventory, each at the right level (fields/elements →
47
+ unit/component; critical journeys → one E2E; never one-per-field). No element ships
48
+ unverified — testing.md "Completeness". If the slice has no test-plan inventory, derive the
49
+ element/flow list from the slice's own UI surface and cover it the same way.
50
+
51
+ Apply your documented discipline (orient → RED → implement smallest complete → verify →
52
+ return). Frontend slice → build to design-brief.md with devrites-frontend-craft and close
53
+ the slice's visual-acceptance deltas before returning. Uncertain
54
+ framework fact → verify at the source. Code + tests only — do NOT write the workspace
55
+ bookkeeping files; return that data. Return your structured artifact, not your transcript.
56
+ ```
57
+
58
+ Rules:
59
+ - **One `Task` call, one wright.** Never dispatch two writers on the same slice.
60
+ - **No author reasoning beyond the contract.** Give the slice spec, not your analysis of *how*
61
+ to code it — a clean, undirected read is the point.
62
+ - **Name the boundary explicitly.** The scope boundary is the single most load-bearing field; an
63
+ underspecified one is the main cause of drift.
64
+
65
+ ## On return — the orchestrator's job (don't delegate these)
66
+ **You never edit source here.** The wright is the only writer of code + tests; you write only
67
+ `.devrites/` bookkeeping. Every remedy below is **continue the same wright once** or **stop +
68
+ escalate** — never an inline patch. You snapshotted the tree before dispatch (`devrites-engine reconcile snapshot`); the reconcile check in step 4 proves no source changed outside the wright's claimed
69
+ set.
70
+
71
+ 1. **Doubt the surfaced decisions.** For each entry in the wright's `Decisions stood`, apply
72
+ `devrites-doubt` (→ `devrites-doubt-reviewer`) before accepting — the writer must not grade
73
+ its own decisions. The wright's return is the not-yet-load-bearing moment (slice not `built`,
74
+ not merged), so this post-return doubt is still pre-commit. Irreversible-risk items always
75
+ pause — and an irreversible item that the wright filed under `Decisions stood` instead of
76
+ `Escalation` is a protocol violation: pause and re-dispatch with it flagged out-of-bounds,
77
+ don't doubt-and-accept.
78
+ 2. **Honor escalations.** A non-empty `Escalation` → do **not** mark the slice built. Write the
79
+ `questions.md` entry + `state.md` `Awaiting human` (blocking gate), or route a scope change
80
+ through `/rite-plan repair` (Spec Drift Guard). You are the canonical writer of these files.
81
+ 3. **Fail-on-red.** If `Gates` show red (or the wright couldn't verify), the slice is **not
82
+ built** — and you do **not** fix the code. First remedy: **continue the same wright once**
83
+ (`SendMessage`, carrying the failing gate + real output) so it fixes in its own context —
84
+ objective failures only (red gate / type / lint / missing coverage / UI browser-proof fail),
85
+ never a contested decision. Still red after that one retry → blocking question (AFK) or
86
+ blocking gate (HITL); `Next: /rite-plan unblock`.
87
+ An interactive element or user flow in the slice's test-plan interaction inventory left with
88
+ **no asserting test** has the same standing as red: an unverified-element gap blocks the
89
+ slice (don't mark it built). Continue the same wright to cover it, or record a blocker.
90
+ 4. **Reconcile, then record.** First prove A1 held: write the wright's `Files changed` paths
91
+ (one per line) to `.devrites/work/<slug>/.reconcile-claimed` and run `devrites-engine reconcile check`.
92
+ **Exit 5 → STOP** — a source file changed outside the wright's claimed set (A1 breach); revert
93
+ it and re-dispatch, don't mark the slice built. Then persist the wright's artifact to
94
+ `state.md`, `evidence.md`, `touched-files.md` (and `browser-evidence.md` for UI) per
95
+ [`evidence-standard.md`](evidence-standard.md). Evidence is the wright's real command output,
96
+ not its say-so. Add a concern-ordered `## Review trail` to `touched-files.md` from the wright's changed paths and summary so a human can review by design intent instead of file order. **Persist every `Decisions stood` entry to a `## Decisions stood` section in
97
+ `decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING>`** —
98
+ independent of the doubt step (step 1 above), so a skipped decision still lands on record for
99
+ the seal's doubt-coverage cross-check (`- none` when the wright stood nothing). Then tick AFK if
100
+ `.devrites/AFK` is present (`devrites-engine tick-afk`; exit 3 → STOP).
101
+
102
+ ## Forge — competing candidates (the deliberate exception)
103
+
104
+ The single-writer rule forbids parallel writers **sharing one tree**. A `Forge: yes` slice
105
+ (flagged by `/rite-vet` as a genuine architecture fork at Complexity ≥4) is the one sanctioned
106
+ fan-out, and it keeps the rule intact by **isolation**: each candidate wright works in its own
107
+ `git worktree`, sees the identical slice contract plus one **distinct strategy**, and never
108
+ touches another candidate's tree. A read-only [`devrites-forge-judge`](../../../agents/devrites-forge-judge.md)
109
+ then scores the finished candidates against acceptance + `test-plan.md` + `.devrites/principles.md`
110
+ + the anti-slop charter, and the orchestrator lands **exactly one** winner's diff in the working
111
+ tree. No tree ever has two authors; exactly one author's work ships. Everything downstream (doubt,
112
+ fail-on-red, reconcile against the winner's claimed set, record) runs on the winner as if a single
113
+ wright had built it.
114
+
115
+ Full mechanics — strategy derivation, worktree setup, the judge contract, landing + grafting the
116
+ winner, `forge-report.md`, AFK budgeting, and the worktree-unavailable fallback — live in
117
+ [`forge.md`](forge.md).
118
+
119
+ ## Fallback
120
+ If the `Task` tool / sub-agent dispatch is unavailable, `/rite-build` runs the wright's
121
+ discipline **inline** in its own context and flags it as a fallback (no clean-context benefit).
122
+ The slice still gets the full one-slice cycle — orient → RED → implement → verify — under the
123
+ same anti-slop charter; it just doesn't get the isolation. In this path the orchestrator is
124
+ legitimately the writer, so write `.devrites/work/<slug>/.reconcile-inline` before editing — the
125
+ reconcile gate (step 4) skips when that sentinel is present. Mirrors the reviewer-dispatch
126
+ fallback in
127
+ [`../../devrites-lib/reference/parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
128
+
129
+ ## Optional pre-block hook (defense in depth)
130
+ `devrites-engine reconcile` is the **post-hoc** gate — it always runs and catches an A1 breach at record time.
131
+ A companion **pre-block** hook, `devrites-engine hook a1-guard` (a `PreToolUse` matcher on
132
+ `Edit|Write|MultiEdit`), stops the breach *before* the write lands. It is armed only inside the
133
+ mid-build window (between `devrites-engine reconcile snapshot` and a clean `check`, keyed on `.reconcile-base`),
134
+ allows the wright (subagent calls carry `agent_id`), the inline fallback (`.reconcile-inline`),
135
+ and any `.devrites/` write — so it never touches `/rite-polish`, `/rite-quick`, or ordinary
136
+ manual edits. It ships **observe-only** (logs would-be blocks to `.a1-guard.log`, never blocks);
137
+ flip to enforce with `DEVRITES_A1_HOOK=enforce` or a `.devrites/work/<slug>/.a1-enforce` file once
138
+ the log confirms it never flags the wright's own edits (older Claude Code builds may not populate
139
+ `agent_id` — the log is the proof before you enforce). The post-hoc gate stands on its own; the
140
+ hook is belt-and-suspenders.
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: rite-converge
3
+ description: Converge intent and live code. Use when resuming a half-built feature, after `/rite-adopt` drift, or the user asks "what's left to build". Not for initial planning.
4
+ argument-hint: "[feature-slug]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # /rite-converge — make the code and the intent converge
9
+
10
+ Read `spec.md` + `plan.md` + `tasks.md` as the **sole source of intent** (with
11
+ `.devrites/principles.md` as governing constraints), assess what the **live codebase**
12
+ actually implements, and **append every unmet piece as a new traceable `SLICE-###`** at the
13
+ bottom of `tasks.md` so `/rite-build` can finish it. The recovery bridge for work that fell
14
+ out of sync with its plan: a half-built feature picked up cold, a `/rite-adopt`'d codebase
15
+ that drifted from its derived spec, or a build that stalled mid-slice. **Read the active
16
+ workspace first**; if there's no `spec.md`/`plan.md`/`tasks.md`, tell the user which
17
+ prerequisite skill to run.
18
+
19
+ > **Not a diff tool.** `/rite-converge` assesses the **present state** of the code against
20
+ > intent — no git, no branch comparison, no history. "What does this codebase do *now* vs
21
+ > what the artifacts asked for" — not "what changed since commit X". For a change-scoped
22
+ > review use `/rite-review`; to prove a finished feature use `/rite-prove`.
23
+
24
+ ## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
25
+ Pull on demand:
26
+ - `principles.md` — the project invariants (`.devrites/principles.md`); code that violates a
27
+ MUST principle is the highest-severity gap and produces a remediation slice.
28
+ - `spec-grammar.md` — buildable acceptance criteria vs `## Success metrics` (outcome KPIs the
29
+ code can't make true and this pass never enqueues); structured `### Requirement:` /
30
+ `#### Scenario:` blocks, each scenario one behavior to check as built / partial / absent.
31
+ - `tooling.md` — prefer a code-intelligence index (codebase-memory-mcp → codegraph → graphify,
32
+ else LSP / Read/Grep/Glob) to read the live code, not assumptions.
33
+ - `testing.md` — a criterion with code but no covering test is *partial*, not done.
34
+
35
+ ## Operating rules
36
+ - **APPEND-ONLY, never rewrite.** The only write to `tasks.md` is **appending** new
37
+ `SLICE-###` entries. Never rewrite, renumber, reorder, or delete an existing slice
38
+ (including slices a prior convergence appended). Never edit `spec.md` or `plan.md`. Never
39
+ touch application code — completing the appended slices is `/rite-build`'s job, not this
40
+ skill's.
41
+ - **Clean means byte-for-byte unchanged.** When the code already satisfies everything, leave
42
+ `tasks.md` untouched — no empty convergence header — and report a clean result. Recommend
43
+ `/rite-prove`.
44
+ - **Intent is the artifacts, not your memory.** The spec/plan/tasks (+ principles) are the
45
+ contract. If assessing reveals the *spec* is wrong (the code is right and the requirement is
46
+ stale), that's **Spec Drift** — stop and route it through the Spec Drift Guard
47
+ (`rite-build/reference/spec-drift-guard.md`) + a recorded decision; never paper over a spec
48
+ bug by appending a task that "fixes" the code to a wrong requirement.
49
+ - **Partial is not done.** Code that exists but is untested, half-wired, or covers only the
50
+ happy path is an unmet gap — enqueue the remainder, don't round it up.
51
+ - **Principles are non-negotiable.** A live violation of a declared invariant with no recorded
52
+ exception is the top-severity gap, walked first. Absent/empty principles file → none declared
53
+ → skip the check gracefully, never block for its absence.
54
+
55
+ ## Workflow
56
+ 0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** first (the always-on
57
+ operating rules), then run `devrites-engine preamble` for deterministic workspace orientation.
58
+ 1. **Confirm the gate.** Require `spec.md` + `plan.md` + `tasks.md` in the active workspace. If
59
+ any is missing, **STOP** and name the prerequisite (`/rite-spec` for a missing spec,
60
+ `/rite-define` for a missing plan/tasks, `/rite-adopt` to onboard existing code). Do not
61
+ produce partial output.
62
+ 2. **Load intent** — [`reference/convergence-assessment.md`](reference/convergence-assessment.md).
63
+ From `spec.md`: buildable `AC-###` / `### Requirement:` scenarios (skip `## Success metrics`);
64
+ from `plan.md`: architecture decisions + named touch-points (files/components the plan says
65
+ get built); from `tasks.md`: existing slices + their `Satisfies:`; from
66
+ `.devrites/principles.md`: the invariants.
67
+ **Completion:** every buildable criterion, touch-point, slice output, and principle is in the assessment inventory.
68
+ 3. **Run the mechanical backbone**, then read the code. `devrites-engine analyze` gives coverage +
69
+ consistency; `devrites-engine coverage` gives the AC→slice→proven matrix. They catch *unmapped*
70
+ criteria; they do **not** see whether mapped code is actually built and correct — for that,
71
+ read the live code (code-intelligence index per `tooling.md`).
72
+ ```bash
73
+ S="$(cat .devrites/ACTIVE 2>/dev/null)"
74
+ devrites-engine analyze "$S"; echo "analyze rc=$?"
75
+ devrites-engine coverage "$S" > /dev/null; echo "coverage rc=$?"
76
+ ```
77
+ 4. **Assess each unit as built / partial / absent** against the live code (the rubric is in
78
+ [`reference/convergence-assessment.md`](reference/convergence-assessment.md)): every
79
+ acceptance criterion / scenario, every plan touch-point, and every existing slice's stated
80
+ Produces. A principle violated in the current code is its own top-severity gap.
81
+ **Completion:** every inventory unit is classified once with live-code evidence.
82
+ 5. **Enqueue the remainder as new slices.** For each *partial* or *absent* unit, append a
83
+ `## SLICE-###` (continue the numbering after the highest existing id) in the `rite-define`
84
+ slice grammar, each with a `Satisfies:` line tracing to the AC/REQ it closes and a
85
+ `Convergence: <iso>` marker line. Dependency-order them after the existing slices; a
86
+ principle-remediation slice sorts first. **If every unit is built → append nothing.**
87
+ **Completion:** every partial/absent unit has one traceable appended slice, or the file is byte-for-byte unchanged.
88
+ 6. **Write append-only + bookkeeping.** Append the slice batch to `tasks.md` (nothing else in
89
+ that file changes); refresh `traceability.md` (`devrites-engine coverage` → new rows for the
90
+ appended slices); update `state.md` (`Phase: converge`, `Next step: /rite-build`; or, when
91
+ nothing was unmet, `Next step: /rite-prove`). Append `decisions.md` for any material call.
92
+ 7. **STOP.** Report units assessed, built / partial / absent counts, slices appended, and any
93
+ principle violation found; recommend `/rite-build` (or `/rite-prove` if the code already
94
+ converged).
95
+
96
+ ## Appended slice format
97
+ Use the complete
98
+ [`canonical slice grammar`](../devrites-lib/reference/workspace-artifact-schema.md#canonical-slice-grammar)
99
+ with one added `Convergence:` field after `Satisfies:`:
100
+ ```markdown
101
+ <!-- Convergence 2026-07-07: slices below appended by /rite-converge — live code assessed against intent. -->
102
+ ## SLICE-014 <name of the unmet capability>
103
+ Satisfies: AC-007 # the criterion / scenario this closes
104
+ Convergence: 2026-07-07 # marks this as a convergence-appended slice, not an original
105
+ <all remaining canonical slice fields>
106
+ ```
107
+
108
+ > **Mid-flight discipline.** When tempted to rewrite an existing slice instead of appending, to
109
+ > edit the code directly "while you're in there", to mark a happy-path-only implementation as
110
+ > built, or to enqueue a task that bends the code to a spec you suspect is wrong — see
111
+ > [`reference/anti-patterns.md`](reference/anti-patterns.md). Load it the moment you reach for
112
+ > the excuse.
113
+
114
+ ## Output
115
+
116
+ **Progress first** — run `devrites-engine progress`, then use the shared completion reply contract
117
+ ([`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md)).
118
+ Default success shape:
119
+ ```
120
+ Done: convergence assessed for <slug>; <n> slices appended.
121
+ Changed: tasks.md <appended|unchanged>, traceability.md, state.md
122
+ Evidence: units <built>/<total> built · <partial> partial · <absent> absent · principle violations 0
123
+ Open: none
124
+ Next: /rite-build
125
+ Record: .devrites/work/<slug>/tasks.md
126
+ ↻ Hygiene: /clear before /rite-build
127
+ ```
128
+ When nothing was unmet, render the same green form with `Next: /rite-prove`.
129
+ If spec drift or another blocker remains, use the shared `Stopped / blocked` form
130
+ and route `Fix:` to `/rite-plan`; do not recommend `/rite-build`.
131
+ **DO NOT write application code, rewrite existing slices, or edit spec.md/plan.md here** — convergence assesses and enqueues; `/rite-build` implements.
@@ -0,0 +1,35 @@
1
+ # /rite-converge anti-patterns
2
+
3
+ Load the moment you reach for one of these excuses.
4
+
5
+ ## Common rationalizations
6
+
7
+ - *"I'll just fix this existing slice instead of appending a new one."* — No. The append-only
8
+ rule is what makes convergence **re-runnable** and its output **auditable**: a reader diffs
9
+ `tasks.md` and sees exactly what this pass added. Rewriting an existing slice destroys that
10
+ and can silently drop coverage. Append; never edit an existing `SLICE-###`.
11
+ - *"The gap is tiny — I'll just patch the code while I'm here."* — No. Convergence **assesses
12
+ and enqueues**; `/rite-build` implements. The moment you edit application code you've skipped
13
+ the build's slice discipline, tests, and reviewer. Enqueue it, however small.
14
+ - *"It's basically built — I'll call it done."* — Happy-path-only, untested, or half-wired is
15
+ **partial**, not built (`convergence-assessment.md`). Rounding partial up to built is how a
16
+ feature ships with the edge cases that were the whole reason for the scenario.
17
+ - *"The code does X, the spec says Y — I'll enqueue a slice to make the code match the spec."* —
18
+ Only if you're sure the **spec** is right. If the code is right and the requirement is stale,
19
+ that's **Spec Drift** — route it through the guard, don't launder a spec bug into a code task.
20
+ - *"The spec has no `AC-###` ids, so there's nothing to converge."* — Assess plan touch-points
21
+ and existing-slice Produces directly against the code; a coverage id is convenient, not
22
+ required. (And flag the untagged spec so `/rite-spec` can add ids.)
23
+ - *"I'll rewrite the whole tasks.md to be clean while I'm at it."* — That is a **reslice**, and
24
+ it belongs to `/rite-plan`, not here. Convergence only ever *appends*.
25
+
26
+ ## Red flags in your own output
27
+
28
+ - An edit to `tasks.md` that touches a line **above** the appended batch → you rewrote history.
29
+ Revert; append only.
30
+ - Any change to `spec.md`, `plan.md`, or a source file in this pass → out of scope.
31
+ - An appended slice with no `Satisfies:` line → it traces to nothing; either tie it to a
32
+ criterion/touch-point or it isn't convergence work.
33
+ - A "clean" report that still left a `## Convergence` header or marker in `tasks.md` → clean
34
+ must be **byte-for-byte unchanged**.
35
+ - Reusing or renumbering an existing `SLICE-###` id → ids are append-only and stable.