devrites 7.1.2 → 7.2.1

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 (297) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +9 -4
  3. package/docs/dsh.md +85 -0
  4. package/engine/internal/devritespaths/paths.go +2 -0
  5. package/engine/internal/hostpack/hostpack.go +29 -5
  6. package/engine/internal/install/apply.go +14 -2
  7. package/engine/internal/install/install.go +7 -3
  8. package/engine/internal/install/merge.go +1 -0
  9. package/engine/internal/install/preflight.go +9 -2
  10. package/engine/internal/install/update.go +1 -1
  11. package/engine/internal/lib/dispatch_packet.go +1 -1
  12. package/pack/generated/README.md +3 -1
  13. package/pack/generated/dsh/AGENTS.md +27 -0
  14. package/pack/generated/dsh/agents/devrites-code-reviewer.md +180 -0
  15. package/pack/generated/dsh/agents/devrites-devex-reviewer.md +137 -0
  16. package/pack/generated/dsh/agents/devrites-doubt-reviewer.md +100 -0
  17. package/pack/generated/dsh/agents/devrites-evidence-scout.md +93 -0
  18. package/pack/generated/dsh/agents/devrites-frontend-reviewer.md +139 -0
  19. package/pack/generated/dsh/agents/devrites-performance-reviewer.md +142 -0
  20. package/pack/generated/dsh/agents/devrites-plan-drafter.md +113 -0
  21. package/pack/generated/dsh/agents/devrites-plan-reviewer.md +167 -0
  22. package/pack/generated/dsh/agents/devrites-proof-runner.md +101 -0
  23. package/pack/generated/dsh/agents/devrites-retrospector.md +82 -0
  24. package/pack/generated/dsh/agents/devrites-security-auditor.md +146 -0
  25. package/pack/generated/dsh/agents/devrites-simplifier-reviewer.md +113 -0
  26. package/pack/generated/dsh/agents/devrites-slice-wright.md +240 -0
  27. package/pack/generated/dsh/agents/devrites-spec-reviewer.md +105 -0
  28. package/pack/generated/dsh/agents/devrites-strategy-reviewer.md +109 -0
  29. package/pack/generated/dsh/agents/devrites-test-analyst.md +110 -0
  30. package/pack/generated/dsh/agents/devrites-upgrade-planner.md +107 -0
  31. package/pack/generated/dsh/agents/fast-builder.md +92 -0
  32. package/pack/generated/dsh/agents/fast-checker.md +61 -0
  33. package/pack/generated/dsh/agents/fast-critic.md +71 -0
  34. package/pack/generated/dsh/agents/fast-planner.md +95 -0
  35. package/pack/generated/dsh/agents/overhaul-backend-engineer.md +70 -0
  36. package/pack/generated/dsh/agents/overhaul-boundary.md +64 -0
  37. package/pack/generated/dsh/agents/overhaul-craft.md +85 -0
  38. package/pack/generated/dsh/agents/overhaul-frontend-engineer.md +73 -0
  39. package/pack/generated/dsh/agents/overhaul-implementer.md +72 -0
  40. package/pack/generated/dsh/agents/overhaul-recon.md +77 -0
  41. package/pack/generated/dsh/agents/overhaul-specialist.md +67 -0
  42. package/pack/generated/dsh/agents/overhaul-verifier.md +73 -0
  43. package/pack/generated/dsh/runtime/codebase-memory.patch.yml +16 -0
  44. package/pack/generated/dsh/runtime/cordis.patch.yml +1762 -0
  45. package/pack/generated/dsh/runtime/specialist.mjs +85 -0
  46. package/pack/generated/dsh/skills/devrites-api-interface/SKILL.md +65 -0
  47. package/pack/generated/dsh/skills/devrites-audit/SKILL.md +60 -0
  48. package/pack/generated/dsh/skills/devrites-browser-proof/SKILL.md +109 -0
  49. package/pack/generated/dsh/skills/devrites-browser-proof/reference/browser-performance.md +19 -0
  50. package/pack/generated/dsh/skills/devrites-browser-proof/reference/visual-verdict.md +38 -0
  51. package/pack/generated/dsh/skills/devrites-debug-recovery/SKILL.md +119 -0
  52. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  53. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +41 -0
  54. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/hypotheses.md +23 -0
  55. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  56. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/regression-test.md +33 -0
  57. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/trace.md +25 -0
  58. package/pack/generated/dsh/skills/devrites-doubt/SKILL.md +83 -0
  59. package/pack/generated/dsh/skills/devrites-frontend-craft/SKILL.md +89 -0
  60. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/craft.md +63 -0
  61. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/design-references.md +120 -0
  62. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
  63. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/quality-standards.md +286 -0
  64. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
  65. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/shape.md +61 -0
  66. package/pack/generated/dsh/skills/devrites-interview/SKILL.md +107 -0
  67. package/pack/generated/dsh/skills/devrites-lib/SKILL.md +98 -0
  68. package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +59 -0
  69. package/pack/generated/dsh/skills/devrites-lib/reference/intent-map.md +86 -0
  70. package/pack/generated/dsh/skills/devrites-lib/reference/orchestration-profiles.md +48 -0
  71. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +184 -0
  72. package/pack/generated/dsh/skills/devrites-lib/reference/reply-contract.md +123 -0
  73. package/pack/generated/dsh/skills/devrites-lib/reference/standards/README.md +70 -0
  74. package/pack/generated/dsh/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +32 -0
  75. package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +467 -0
  76. package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +231 -0
  77. package/pack/generated/dsh/skills/devrites-lib/reference/standards/anti-patterns.md +50 -0
  78. package/pack/generated/dsh/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  79. package/pack/generated/dsh/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  80. package/pack/generated/dsh/skills/devrites-lib/reference/standards/audit-coverage.md +107 -0
  81. package/pack/generated/dsh/skills/devrites-lib/reference/standards/browser-proof-checklist.md +37 -0
  82. package/pack/generated/dsh/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  83. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-index.md +111 -0
  84. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-navigation.md +69 -0
  85. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-review.md +178 -0
  86. package/pack/generated/dsh/skills/devrites-lib/reference/standards/coding-style.md +53 -0
  87. package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +136 -0
  88. package/pack/generated/dsh/skills/devrites-lib/reference/standards/core.md +202 -0
  89. package/pack/generated/dsh/skills/devrites-lib/reference/standards/data-integrity.md +144 -0
  90. package/pack/generated/dsh/skills/devrites-lib/reference/standards/debug-recovery.md +42 -0
  91. package/pack/generated/dsh/skills/devrites-lib/reference/standards/definition-of-done.md +25 -0
  92. package/pack/generated/dsh/skills/devrites-lib/reference/standards/deprecation.md +49 -0
  93. package/pack/generated/dsh/skills/devrites-lib/reference/standards/developer-experience.md +128 -0
  94. package/pack/generated/dsh/skills/devrites-lib/reference/standards/development-workflow.md +31 -0
  95. package/pack/generated/dsh/skills/devrites-lib/reference/standards/documentation.md +55 -0
  96. package/pack/generated/dsh/skills/devrites-lib/reference/standards/duplicate-code.md +129 -0
  97. package/pack/generated/dsh/skills/devrites-lib/reference/standards/edge-case-trace.md +94 -0
  98. package/pack/generated/dsh/skills/devrites-lib/reference/standards/elicitation.md +114 -0
  99. package/pack/generated/dsh/skills/devrites-lib/reference/standards/error-handling.md +49 -0
  100. package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +159 -0
  101. package/pack/generated/dsh/skills/devrites-lib/reference/standards/git-workflow.md +51 -0
  102. package/pack/generated/dsh/skills/devrites-lib/reference/standards/glossary.md +40 -0
  103. package/pack/generated/dsh/skills/devrites-lib/reference/standards/hooks.md +41 -0
  104. package/pack/generated/dsh/skills/devrites-lib/reference/standards/integration-reliability.md +121 -0
  105. package/pack/generated/dsh/skills/devrites-lib/reference/standards/loop-operations.md +123 -0
  106. package/pack/generated/dsh/skills/devrites-lib/reference/standards/observability.md +90 -0
  107. package/pack/generated/dsh/skills/devrites-lib/reference/standards/one-shot-actions.md +105 -0
  108. package/pack/generated/dsh/skills/devrites-lib/reference/standards/patterns.md +70 -0
  109. package/pack/generated/dsh/skills/devrites-lib/reference/standards/performance.md +88 -0
  110. package/pack/generated/dsh/skills/devrites-lib/reference/standards/principles.md +56 -0
  111. package/pack/generated/dsh/skills/devrites-lib/reference/standards/prose-style.md +127 -0
  112. package/pack/generated/dsh/skills/devrites-lib/reference/standards/release/ship-checklist.md +12 -0
  113. package/pack/generated/dsh/skills/devrites-lib/reference/standards/repository-topology.md +82 -0
  114. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/README.md +28 -0
  115. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  116. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/default.md +42 -0
  117. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/go.md +47 -0
  118. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/python.md +46 -0
  119. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/react.md +55 -0
  120. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  121. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  122. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ts-js.md +74 -0
  123. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review-checklist.md +14 -0
  124. package/pack/generated/dsh/skills/devrites-lib/reference/standards/security-checklist.md +30 -0
  125. package/pack/generated/dsh/skills/devrites-lib/reference/standards/security.md +283 -0
  126. package/pack/generated/dsh/skills/devrites-lib/reference/standards/skill-authoring.md +269 -0
  127. package/pack/generated/dsh/skills/devrites-lib/reference/standards/spec-grammar.md +214 -0
  128. package/pack/generated/dsh/skills/devrites-lib/reference/standards/test-proof-checklist.md +18 -0
  129. package/pack/generated/dsh/skills/devrites-lib/reference/standards/testing.md +295 -0
  130. package/pack/generated/dsh/skills/devrites-lib/reference/standards/tooling.md +125 -0
  131. package/pack/generated/dsh/skills/devrites-lib/reference/standards/verification-methods.md +143 -0
  132. package/pack/generated/dsh/skills/devrites-lib/reference/standards/windows.md +60 -0
  133. package/pack/generated/dsh/skills/devrites-lib/reference/standards/workflow-artifacts.md +435 -0
  134. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
  135. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
  136. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
  137. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
  138. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
  139. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
  140. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
  141. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
  142. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
  143. package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +312 -0
  144. package/pack/generated/dsh/skills/devrites-prose-craft/SKILL.md +81 -0
  145. package/pack/generated/dsh/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
  146. package/pack/generated/dsh/skills/devrites-prose-craft/reference/examples.md +136 -0
  147. package/pack/generated/dsh/skills/devrites-prose-craft/reference/structures.md +196 -0
  148. package/pack/generated/dsh/skills/devrites-source-driven/SKILL.md +54 -0
  149. package/pack/generated/dsh/skills/devrites-ux-shape/SKILL.md +135 -0
  150. package/pack/generated/dsh/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  151. package/pack/generated/dsh/skills/devrites-ux-shape/reference/visual-direction-probe.md +50 -0
  152. package/pack/generated/dsh/skills/overhaul/SKILL.md +221 -0
  153. package/pack/generated/dsh/skills/overhaul/references/audit-domains.md +390 -0
  154. package/pack/generated/dsh/skills/overhaul/references/lifecycle.md +314 -0
  155. package/pack/generated/dsh/skills/overhaul/references/orchestration.md +291 -0
  156. package/pack/generated/dsh/skills/overhaul/references/records.md +203 -0
  157. package/pack/generated/dsh/skills/overhaul/references/repair-and-measurement.md +310 -0
  158. package/pack/generated/dsh/skills/overhaul/references/review-and-report.md +139 -0
  159. package/pack/generated/dsh/skills/overhaul/references/scope-and-safety.md +233 -0
  160. package/pack/generated/dsh/skills/overhaul/references/scoring.md +261 -0
  161. package/pack/generated/dsh/skills/overhaul/references/stack-profiles.md +316 -0
  162. package/pack/generated/dsh/skills/rite/SKILL.md +157 -0
  163. package/pack/generated/dsh/skills/rite/reference/menu.md +49 -0
  164. package/pack/generated/dsh/skills/rite-adopt/SKILL.md +64 -0
  165. package/pack/generated/dsh/skills/rite-adopt/reference/adoption.md +25 -0
  166. package/pack/generated/dsh/skills/rite-adopt/reference/anti-patterns.md +19 -0
  167. package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +167 -0
  168. package/pack/generated/dsh/skills/rite-autocomplete/reference/decision-policy.md +44 -0
  169. package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +50 -0
  170. package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +164 -0
  171. package/pack/generated/dsh/skills/rite-autocomplete/reference/stop-conditions.md +118 -0
  172. package/pack/generated/dsh/skills/rite-build/SKILL.md +126 -0
  173. package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +153 -0
  174. package/pack/generated/dsh/skills/rite-build/reference/anti-patterns.md +27 -0
  175. package/pack/generated/dsh/skills/rite-build/reference/checkpoint-protocol.md +115 -0
  176. package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +79 -0
  177. package/pack/generated/dsh/skills/rite-build/reference/frontend-trigger.md +39 -0
  178. package/pack/generated/dsh/skills/rite-build/reference/one-slice-cycle.md +57 -0
  179. package/pack/generated/dsh/skills/rite-build/reference/output.md +29 -0
  180. package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +260 -0
  181. package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +130 -0
  182. package/pack/generated/dsh/skills/rite-build/reference/spec-drift-guard.md +91 -0
  183. package/pack/generated/dsh/skills/rite-build/reference/tdd.md +27 -0
  184. package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +198 -0
  185. package/pack/generated/dsh/skills/rite-clarify/SKILL.md +104 -0
  186. package/pack/generated/dsh/skills/rite-clarify/reference/anti-patterns.md +24 -0
  187. package/pack/generated/dsh/skills/rite-clarify/reference/decision-coverage.md +56 -0
  188. package/pack/generated/dsh/skills/rite-converge/SKILL.md +167 -0
  189. package/pack/generated/dsh/skills/rite-converge/reference/anti-patterns.md +35 -0
  190. package/pack/generated/dsh/skills/rite-converge/reference/convergence-assessment.md +70 -0
  191. package/pack/generated/dsh/skills/rite-customize/SKILL.md +64 -0
  192. package/pack/generated/dsh/skills/rite-define/SKILL.md +203 -0
  193. package/pack/generated/dsh/skills/rite-define/reference/anti-patterns.md +26 -0
  194. package/pack/generated/dsh/skills/rite-define/reference/gates.md +160 -0
  195. package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +153 -0
  196. package/pack/generated/dsh/skills/rite-doctor/SKILL.md +107 -0
  197. package/pack/generated/dsh/skills/rite-dogfood/SKILL.md +57 -0
  198. package/pack/generated/dsh/skills/rite-explain/SKILL.md +154 -0
  199. package/pack/generated/dsh/skills/rite-explain/reference/intake.md +89 -0
  200. package/pack/generated/dsh/skills/rite-fast/SKILL.md +185 -0
  201. package/pack/generated/dsh/skills/rite-fast/reference/artifacts.md +107 -0
  202. package/pack/generated/dsh/skills/rite-fast/reference/check-and-triage.md +51 -0
  203. package/pack/generated/dsh/skills/rite-frame/SKILL.md +119 -0
  204. package/pack/generated/dsh/skills/rite-frame/reference/failure-modes.md +66 -0
  205. package/pack/generated/dsh/skills/rite-handoff/SKILL.md +117 -0
  206. package/pack/generated/dsh/skills/rite-handoff/reference/handoff-template.md +56 -0
  207. package/pack/generated/dsh/skills/rite-harness/SKILL.md +76 -0
  208. package/pack/generated/dsh/skills/rite-harness/reference/feature-map.md +60 -0
  209. package/pack/generated/dsh/skills/rite-learn/SKILL.md +107 -0
  210. package/pack/generated/dsh/skills/rite-plan/SKILL.md +215 -0
  211. package/pack/generated/dsh/skills/rite-plan/reference/anti-patterns.md +34 -0
  212. package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +48 -0
  213. package/pack/generated/dsh/skills/rite-plan/reference/replan-and-repair.md +114 -0
  214. package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +187 -0
  215. package/pack/generated/dsh/skills/rite-plan/reference/task-breakdown.md +50 -0
  216. package/pack/generated/dsh/skills/rite-polish/SKILL.md +128 -0
  217. package/pack/generated/dsh/skills/rite-polish/reference/adr-promotion.md +11 -0
  218. package/pack/generated/dsh/skills/rite-polish/reference/anti-ai-slop.md +210 -0
  219. package/pack/generated/dsh/skills/rite-polish/reference/anti-patterns.md +30 -0
  220. package/pack/generated/dsh/skills/rite-polish/reference/backend-polish.md +80 -0
  221. package/pack/generated/dsh/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
  222. package/pack/generated/dsh/skills/rite-polish/reference/code.md +87 -0
  223. package/pack/generated/dsh/skills/rite-polish/reference/design-memory.md +117 -0
  224. package/pack/generated/dsh/skills/rite-polish/reference/design-system-discovery.md +8 -0
  225. package/pack/generated/dsh/skills/rite-polish/reference/harden-checklist.md +110 -0
  226. package/pack/generated/dsh/skills/rite-polish/reference/ledger.md +67 -0
  227. package/pack/generated/dsh/skills/rite-polish/reference/ui.md +146 -0
  228. package/pack/generated/dsh/skills/rite-pov/SKILL.md +71 -0
  229. package/pack/generated/dsh/skills/rite-pr-feedback/SKILL.md +61 -0
  230. package/pack/generated/dsh/skills/rite-pressure-test/SKILL.md +76 -0
  231. package/pack/generated/dsh/skills/rite-prototype/SKILL.md +106 -0
  232. package/pack/generated/dsh/skills/rite-prove/SKILL.md +151 -0
  233. package/pack/generated/dsh/skills/rite-prove/reference/acceptance-proof.md +88 -0
  234. package/pack/generated/dsh/skills/rite-prove/reference/anti-patterns.md +25 -0
  235. package/pack/generated/dsh/skills/rite-prove/reference/browser-proof.md +51 -0
  236. package/pack/generated/dsh/skills/rite-prove/reference/failure-triage.md +53 -0
  237. package/pack/generated/dsh/skills/rite-prove/reference/proof-ladder.md +39 -0
  238. package/pack/generated/dsh/skills/rite-prove/reference/test-command-discovery.md +36 -0
  239. package/pack/generated/dsh/skills/rite-quick/SKILL.md +97 -0
  240. package/pack/generated/dsh/skills/rite-resolve/SKILL.md +113 -0
  241. package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +129 -0
  242. package/pack/generated/dsh/skills/rite-review/SKILL.md +190 -0
  243. package/pack/generated/dsh/skills/rite-review/reference/anti-patterns.md +32 -0
  244. package/pack/generated/dsh/skills/rite-review/reference/cognitive-load.md +90 -0
  245. package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +26 -0
  246. package/pack/generated/dsh/skills/rite-review/reference/five-axis-review.md +66 -0
  247. package/pack/generated/dsh/skills/rite-review/reference/nielsen-heuristics.md +126 -0
  248. package/pack/generated/dsh/skills/rite-review/reference/performance-checklist.md +99 -0
  249. package/pack/generated/dsh/skills/rite-review/reference/performance-review.md +14 -0
  250. package/pack/generated/dsh/skills/rite-review/reference/security-review.md +44 -0
  251. package/pack/generated/dsh/skills/rite-seal/SKILL.md +99 -0
  252. package/pack/generated/dsh/skills/rite-seal/reference/anti-patterns.md +29 -0
  253. package/pack/generated/dsh/skills/rite-seal/reference/final-evidence.md +41 -0
  254. package/pack/generated/dsh/skills/rite-seal/reference/go-no-go.md +32 -0
  255. package/pack/generated/dsh/skills/rite-seal/reference/output.md +5 -0
  256. package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +56 -0
  257. package/pack/generated/dsh/skills/rite-seal/reference/risk-and-rollback.md +56 -0
  258. package/pack/generated/dsh/skills/rite-seal/reference/seal-template.md +32 -0
  259. package/pack/generated/dsh/skills/rite-ship/SKILL.md +101 -0
  260. package/pack/generated/dsh/skills/rite-ship/reference/anti-patterns.md +28 -0
  261. package/pack/generated/dsh/skills/rite-ship/reference/close-out.md +69 -0
  262. package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +128 -0
  263. package/pack/generated/dsh/skills/rite-ship/reference/rollout.md +62 -0
  264. package/pack/generated/dsh/skills/rite-ship/reference/ship-template.md +40 -0
  265. package/pack/generated/dsh/skills/rite-spec/SKILL.md +169 -0
  266. package/pack/generated/dsh/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  267. package/pack/generated/dsh/skills/rite-spec/reference/ai-spec-template.md +40 -0
  268. package/pack/generated/dsh/skills/rite-spec/reference/anti-patterns.md +27 -0
  269. package/pack/generated/dsh/skills/rite-spec/reference/interview-patterns.md +56 -0
  270. package/pack/generated/dsh/skills/rite-spec/reference/investigation.md +83 -0
  271. package/pack/generated/dsh/skills/rite-spec/reference/question-protocol.md +36 -0
  272. package/pack/generated/dsh/skills/rite-spec/reference/references-intake.md +62 -0
  273. package/pack/generated/dsh/skills/rite-spec/reference/spec-checklists.md +89 -0
  274. package/pack/generated/dsh/skills/rite-spec/reference/spec-template.md +160 -0
  275. package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +240 -0
  276. package/pack/generated/dsh/skills/rite-status/SKILL.md +74 -0
  277. package/pack/generated/dsh/skills/rite-temper/SKILL.md +137 -0
  278. package/pack/generated/dsh/skills/rite-temper/reference/anti-patterns.md +30 -0
  279. package/pack/generated/dsh/skills/rite-temper/reference/review-dimensions.md +66 -0
  280. package/pack/generated/dsh/skills/rite-temper/reference/scope-modes.md +52 -0
  281. package/pack/generated/dsh/skills/rite-temper/reference/significance.md +55 -0
  282. package/pack/generated/dsh/skills/rite-temper/reference/strategy-template.md +101 -0
  283. package/pack/generated/dsh/skills/rite-upgrade/SKILL.md +142 -0
  284. package/pack/generated/dsh/skills/rite-vet/SKILL.md +242 -0
  285. package/pack/generated/dsh/skills/rite-vet/reference/anti-patterns.md +43 -0
  286. package/pack/generated/dsh/skills/rite-vet/reference/artifacts.md +248 -0
  287. package/pack/generated/dsh/skills/rite-vet/reference/cross-model.md +19 -0
  288. package/pack/generated/dsh/skills/rite-vet/reference/depth.md +59 -0
  289. package/pack/generated/dsh/skills/rite-vet/reference/eng-lenses.md +48 -0
  290. package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +210 -0
  291. package/pack/generated/dsh/skills/rite-watch-pr/SKILL.md +87 -0
  292. package/pack/generated/dsh/skills/rite-zoom-out/SKILL.md +76 -0
  293. package/package.json +3 -1
  294. package/scripts/build-host-artifacts.sh +6 -2
  295. package/scripts/dsh-generate.py +165 -0
  296. package/scripts/dsh-specialist.mjs +85 -0
  297. package/scripts/install-lib.sh +3 -1
@@ -0,0 +1,231 @@
1
+ # Agent orchestration
2
+
3
+ > Applies when: dispatching or admitting any devrites-* role; the source-writing boundary.
4
+
5
+ Follow DevRites policy and [`depth profiles`](../orchestration-profiles.md).
6
+
7
+ ## Authority
8
+
9
+ <!-- root-only -->
10
+ - Root owns scope, questions/decisions/results, `.devrites/**`, phase transitions — not product source/tests; vetted executable workflow artifacts follow [`workflow-artifacts.md`](workflow-artifacts.md).
11
+ - Every named role runs; unavailable → HITL, never skip/substitute.
12
+ <!-- /root-only -->
13
+ - Among lifecycle `devrites-*` specialists, only bounded wright writes product
14
+ source/tests; others inspect an immutable candidate. The independent `/rite-fast`
15
+ lane instead uses only its existing `fast-builder` as writer under its own roster;
16
+ never substitute a lifecycle role. Root remains source/test nonwriter.
17
+ - Leaves never invoke agents, ask humans, change phase, push, install/deploy, migrate live data, or act irreversibly; they return evidence/proposals for root acceptance. Sole exception: one local unpushed transfer commit by an eligible native-worktree `devrites-slice-wright` — transport, not shipping authority or a checkpoint.
18
+
19
+ <!-- root-only -->
20
+ ## Agents
21
+
22
+ | Agent |
23
+ | --- |
24
+ | `devrites-evidence-scout` |
25
+ | `devrites-plan-drafter` |
26
+ | `devrites-upgrade-planner` |
27
+ | `devrites-proof-runner` |
28
+ | `devrites-strategy-reviewer` |
29
+ | `devrites-plan-reviewer` |
30
+ | `devrites-doubt-reviewer` |
31
+ | `devrites-spec-reviewer` |
32
+ | `devrites-code-reviewer` |
33
+ | `devrites-test-analyst` |
34
+ | `devrites-frontend-reviewer` |
35
+ | `devrites-security-auditor` |
36
+ | `devrites-performance-reviewer` |
37
+ | `devrites-devex-reviewer` |
38
+ | `devrites-simplifier-reviewer` |
39
+ | `devrites-retrospector` |
40
+ | `devrites-slice-wright` |
41
+
42
+ Files own briefs; [`parallel-dispatch.md`](../parallel-dispatch.md) owns rosters.
43
+ <!-- /root-only -->
44
+
45
+ <!-- root-only -->
46
+ ## Native invocation
47
+
48
+ Skills name exact fresh roles, omit native fields;
49
+ hosts spawn/wait/deliver. Root MUST NOT advance/claim completion before admitting required results;
50
+ running/orphaned/unavailable = `gap` — no root/generic substitute.
51
+ Where a feature workspace exists, every fresh dispatch to a named `devrites-*`
52
+ role — wave or solo — builds its read-set with `devrites-engine context --skills-root .dsh/skills <slug>
53
+ --phase <p> --role <role>` and tracks the launch through `devrites-engine
54
+ dispatch <slug> open|start|seal|return` (a solo dispatch is a wave of one;
55
+ start/return auto-record metrics). Without a workspace the plain host dispatch
56
+ contract above applies and no engine tracking is required.
57
+ Workflow-named skills (e.g. devrites-source-driven) are invoked inline in the root context, never dispatched as agents.
58
+ <!-- /root-only -->
59
+
60
+ ## Source-writing boundary
61
+
62
+ Among lifecycle `devrites-*` specialists only (independent Fast exception below):
63
+ Claude grants only wright `acceptEdits`; Codex root is workspace-capable (children cannot elevate). Wright alone `:workspace`; others `:read-only`. Wright gets the smallest exact project-relative source/test list — no directories/globs, traversal, or `.devrites/**`; no scope widening; root rejects `git diff --name-only` extras. Never patch product source/tests in root, bypass/substitute wright, accept drift, or recreate a dispatch bridge.
64
+
65
+ Independent Fast exception: `/rite-fast` uses its existing `fast-builder` write-capable
66
+ profile, not a `devrites-*` substitute, under the exact Fast roster and lane contract.
67
+ Only that bounded writer may edit its exact project-relative source/test paths; no
68
+ workspace writes, scope widening, or second writer. Root remains source/test nonwriter.
69
+ This exception grants no additional tools, permissions, phase, agent-launch, or Git authority.
70
+
71
+ Isolated-worktree pilot only under [`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#isolated-writer-worktree-pilot): one writer, committed/clean baseline, non-submodule parent, exact transfer commit, candidate reconciliation — never parallel writers nor weaker exact-path admission. Root may materialize only exact Vet-ready workflow-artifact paths per [`workflow-artifacts.md`](workflow-artifacts.md) — not a writer dispatch or candidate mutation.
72
+
73
+ Each job gets objective/exclusions, exact paths/immutable candidate, rubric/result shape, a **stop condition** (when to return), and the exact result shape; a dispatch missing them is malformed and re-issued. Briefs MUST NOT seed verdict/severity cap/conclusion/suppression. Results state status/scope, outcome, commands/escalation; wright adds paths, changed files, gates, stood decisions; results never widen scope.
74
+
75
+ **Same-tree concurrent sessions claim first.** Worktree dispatch isolates
76
+ parallel batch siblings, but two agent *sessions* (two hosts, two features, or
77
+ a human plus an agent) can share one working tree. Before a same-tree writer
78
+ starts, its `dispatch open` records an advisory claim with `--claim-session <id>
79
+ --claim <path>...` and fails, creating no wave, while a live foreign session holds
80
+ a path (without a wave: `claim add --session <id> <paths>`, keep its `<claim-id>`,
81
+ then `claim check`); a held claim from a
82
+ live foreign session is never merged later or overridden. Unattended, skip only
83
+ work that needs those paths, run independent work, and re-check `claim list`
84
+ before stopping; stop and report the holder only when nothing independent remains.
85
+ On every host-confirmed terminal path after `add` or a claimed `dispatch open` ([unknown outcomes keep it](../parallel-dispatch.md#cancellation-and-terminal-reconciliation)),
86
+ the wave's completing `return` releases its claim, `dispatch abandon --release`
87
+ releases it on any other (a stop or a refused launch), and a `claim add` claim runs
88
+ `devrites-engine claim release --session <id> --id <claim-id>`. Claims expire
89
+ by TTL only as crash recovery; `claim list` shows who holds what. Claims are
90
+ advisory coordination, never a substitute for the one-writer-per-worktree rule.
91
+ Claims cover product paths only; root-authored `.devrites/**` files use
92
+ [`workflow-artifacts.md`](workflow-artifacts.md) admission instead.
93
+ Expiry is not proof the holder stopped: size `--claim-ttl` or `claim add --ttl <minutes>` to the
94
+ expected write (engine max 240) and re-add before it lapses; before writing, also
95
+ read `claim list` — a foreign `expired` claim on overlapping paths whose
96
+ session is not proven terminal counts as held (stop and report). `dead` (engine-proven
97
+ exited holder) or `released` is terminal: reconcile per
98
+ [§ Cancellation](../parallel-dispatch.md#cancellation-and-terminal-reconciliation). **Failing case:**
99
+ session B's `claim check` passes at minute 35 over session A's still-running wright.
100
+
101
+ ## Independence
102
+
103
+ - A fresh result sees scope/paths-diff/rubric only — never another result's or the root's conclusions, severities, expected verdicts, chosen verification methods, or edited context; seeding voids the packet. Canonical workspace artifacts in the engine-generated `--role` read-set (state cursor, decisions, `strategy.md` scores, prior review records) are inputs, not seeding: a verdict they record is a historical claim the reviewer re-verifies, never this pass's conclusion. The same holds for status, readiness-checklist, or gate lines inside a read-set artifact (e.g. a `spec.md` `Status:`/`Spec gate:` line from an older workspace). Never hand-edit installed read-sets or swap them for excerpts to strip that history.
104
+ - Never message a running read-only leaf: a mid-run note voids it like a seeded packet.
105
+ Root proof that lands after dispatch is weighed at reconciliation, not forwarded; a
106
+ leaf gap it would close (e.g. "no independent runtime run") closes there.
107
+ - A recheck packet lists only fingerprints that same role raised, plus the correction
108
+ diff. Another role's finding goes to that role's recheck, never a sibling's packet.
109
+ - **Verify the packet is clean before admitting the account.** Confirm the returned packet/trace carries no host-injected context: an automatic memory/summary banner naming an earlier phase verdict (e.g. `past Temper PASS … next is /rite-define`) or harness reminder text seeds the pass and voids it. Cancel that account — never admit it — name the lost coverage, and re-dispatch with the host's context injection disabled for that child. Tool config changes that do not stop native child auto-injection are not a fix; verify on the next spawn instead of assuming.
110
+ - A parent-context pass contributes attributed evidence but is not independent: exclude it from independent accounting and name the lost coverage.
111
+ - Final severity is set at reconciliation after re-verifying the claimed consequence at the cited site (reviewer severity advisory); dismissals record a reason, and true facts about neighboring code route elsewhere instead of being dismissed.
112
+ - Conflicting required results are arbitrated by re-verifying evidence at the site; the deciding evidence is recorded, truly unresolved conflicts stay open blockers. Two results describing the same defect merge only when both defect and fix path match; otherwise the more conservative classification stands, and severity never widens without new site evidence — an overridden or demoted finding stays visible with the reason, never silently merged away.
113
+
114
+ ## Result admission
115
+
116
+ Each required reviewer/analyst/auditor starts with exactly one:
117
+ `Outcome: findings`, `Outcome: no-findings`, or `Outcome: gap`.
118
+
119
+ **Canonical finding shape (C2 — all `devrites-*-reviewer` / auditor agents):**
120
+
121
+ ```text
122
+ Outcome: <findings | no-findings | gap>
123
+ Counts: critical=<n> important=<n> suggestion=<n> nit=<n> fyi=<n> gap=<n>
124
+ Finding: <severity> conf <n> | <file:line or artifact section> | `<quoted cited line>` <observed result> | when <input/state/sequence> → <effect> | breaks <ID or standard §> "<quoted line>" | <minimum fix>
125
+ Basis: <files read · commands run to reach this finding>
126
+ ```
127
+
128
+ - **`findings`:** each row uses the shape above; confidence 1–10 on Critical/Important.
129
+ Critical/Important requires 7+, exact evidence, concrete impact, and a non-empty
130
+ `Basis` — a correct verdict reached by an unrecorded inspection path is unproven.
131
+ A Critical/Important row carries `conf <n>` in its severity cell, opens its observed
132
+ cell with the cited line's quote in backticks, and writes impact
133
+ as `when <input/state/sequence> → <effect>`; missing conf or trigger, root admits it as
134
+ `Unverified: <claim> — missing trigger` (stays `gap`).
135
+ - **Proportionality:** a Critical/Important row's `breaks` quotes the line it violates:
136
+ a spec ID (`AC`/`REQ`/`INV`/`PROH`/`DEC`/`EDGE`) or a shipped standard rule
137
+ (`<standard>.md § <section>`: security, regression, principles). Root anchors the
138
+ quote like the `file:line` quote. A repair contract, recheck packet, earlier
139
+ finding or plan item (`plan.md`, `tasks.md`, `architecture.md`, `test-plan.md`)
140
+ only restates root's own claim and is never an anchor; quote the spec ID or
141
+ standard rule it traces to. No anchor, or one
142
+ the defect does not break,
143
+ admits the row as Suggestion logged `Deferred: <claim> — no spec anchor` for an
144
+ optional follow-up slice; it never drives a repair round. Hardening no spec line
145
+ asks for is a Suggestion, however plausible. The `when` must also be reachable:
146
+ a hostile actor enters only through a trust boundary the feature really has
147
+ (users, network, external systems, untrusted files). A trigger that needs one it
148
+ never faces — the code under test forging its own evidence, a tampering second
149
+ user on a single-owner dev host, a swapped remote daemon under a local dev tool —
150
+ is a Suggestion too. So is an environment state the feature's declared
151
+ environment does not have (a mount option, kernel setting or daemon location
152
+ absent from the target host): guard against it only when the spec names it.
153
+ A finding never pulls a deferred slice's scope forward.
154
+ - **`no-findings`:** `No-findings:` names checks and inspected evidence. Bare
155
+ pass, empty list, or “looks good” is malformed.
156
+ - **`gap`:** names missing/unreadable/stale input; skipped/failed required check;
157
+ tool/reviewer failure; or another limit. Required gaps block. A reviewer gap
158
+ that asks for more evidence without showing a defect is required only when it
159
+ quotes the anchor that demands that evidence, as Proportionality does: a spec ID,
160
+ an owner decision, or a shipped standard rule. Without one, root logs it
161
+ `Deferred: <claim> — no anchor`. Advisory gaps follow
162
+ [security.md § Reachability sets severity](security.md#reachability-sets-severity).
163
+ - **Transport failure is not a finding.** A read-only leaf aborted, timed out, lost,
164
+ or with host-rejected output is `gap` quoting the host error. Re-dispatch one fresh
165
+ child with the same brief and read-set — never a resume of the failed child. The
166
+ retry spends any user-granted budget; ask only if it would exceed it. A second
167
+ transport failure of the same role is a host defect: stop for HITL with both errors
168
+ and `/rite-doctor`. Never design capture or retention machinery around it.
169
+
170
+ Root treats results as claims; verifies proposed Critical/Important blockers
171
+ against candidate, first running `devrites-engine check anchors --skills-root .dsh/skills <slug> <return-file>`,
172
+ which anchors each row's quote at its cited `file:line` on the live candidate and its
173
+ `breaks` quote, and prints the digest root confirms equals the reviewed packet's: exact → admit; found at exactly one other location → relocate,
174
+ keeping both locations; not found or found at several → `Unverified: <claim> —
175
+ anchor lost|ambiguous`, a gap that is never a finding, a dismissal or a repair-round
176
+ input (exit 3). A leaf result
177
+ produced by spawning a nested agent is `gap`, and each hidden child counts toward
178
+ the concurrent pool and `max_agents`. Missing fields become
179
+ `Unverified: <claim> — missing <proof>` and stay `gap` until verified/rejected
180
+ with evidence—never silently dropped/demoted. Null/timeout/failure/malformed
181
+ output is `gap`, never `no-findings`. Conditional `Not-applicable` must name the
182
+ inspected scope and why its trigger did not fire. **Failing case:** parent admits a
183
+ wright "done" with no `git diff --name-only` ⊆ path-contract (allowlist) observation.
184
+
185
+ ### Return budget
186
+
187
+ Every read-only leaf returns rows, not prose, so the root keeps its context for
188
+ decisions and nothing is lost in a retelling. Exempt: `devrites-plan-drafter` (its
189
+ return is the bundle the root writes) and the wright's change evidence.
190
+
191
+ - Lead with the result line (`Outcome:` for reviewers, the role's own status line
192
+ otherwise), then `Counts:` with the number of rows per severity or kind.
193
+ - A reviewer, auditor or test-analyst head is strict: line 1 is
194
+ `Outcome: findings|no-findings|gap` (no title line above it), line 2 is
195
+ `Counts: key=N ...` with keys from the role's closed vocabulary:
196
+ `critical important suggestion nit fyi gap`, plus `contract mechanism` for
197
+ `devrites-plan-reviewer`, only `suggestion nit fyi gap` for
198
+ `devrites-simplifier-reviewer`. `findings` needs a non-`gap` count above 0;
199
+ `no-findings` needs every count at 0. `dispatch return --result <file>` stores
200
+ the return and records a malformed or inconsistent head as `gap`, never
201
+ `no-findings`.
202
+ - No restated task, preamble, approach narrative or closing summary. An optional
203
+ `Notes:` block carries at most five lines that no row can hold.
204
+ - Your last message is your return; the host delivers only that message. If a
205
+ hook, rule judge or system reminder arrives after your report, reply with the
206
+ complete report again, head first, with any correction inside it. Never end on a
207
+ reply that only answers the reminder. **Failing case:** a rule judge flagged a
208
+ simplifier's finished report; it answered the flag, and the host delivered that
209
+ answer instead of its rows.
210
+ - Point, don't paste: cite `file:line` with at most one quoted line (160
211
+ characters); for a command, give the exact command, its exit code and the one
212
+ decisive output line. Never paste whole files, diffs, logs or test output.
213
+ - Each row stands alone: a reader of that row alone can re-check it from its pointer.
214
+ - The root records admitted rows verbatim, adds its own verification beside them, and
215
+ never rewrites, merges or summarizes a row; deduplication references rows by
216
+ position or ID instead of rewording them.
217
+
218
+ <!-- root-only -->
219
+ ## Reconciliation
220
+
221
+ Root rejects stale/out-of-scope work, dedupes by root cause, records
222
+ accepted conclusions, and reruns only affected proof/review. Reconciliation runs
223
+ only after every dispatch reaches a terminal classification
224
+ ([parallel-dispatch.md](../parallel-dispatch.md)); findings that do not survive stay
225
+ visible as `withdrawn: <n> (<reason>)` in the account rather than being silently
226
+ dropped, so a later reader can audit what was discarded and why.
227
+ Route defects before correction: product/acceptance → Spec Drift Guard/Clarify;
228
+ architecture/slicing/proof → Plan/Vet; source/test → wright;
229
+ external/pre-existing → blocker/defer. Never patch downstream to hide an upstream
230
+ defect.
231
+ <!-- /root-only -->
@@ -0,0 +1,50 @@
1
+ # DevRites: universal anti-patterns
2
+
3
+ > Applies when: universal rationalizations; load when tempted to shortcut any standard.
4
+
5
+ The pack-wide rationalizations the agent reaches for when discipline gets in
6
+ the way. Apply at every phase. Each `rite-*/reference/anti-patterns.md`
7
+ extends this with phase-specific items.
8
+
9
+ This file is the **single source** of the universal anti-rationalization table.
10
+ `core.md` points here when an excuse appears.
11
+
12
+ ## Universal rationalizations
13
+
14
+ | Excuse | Rebuttal |
15
+ |---|---|
16
+ | "I'll add the tests later." | Tests written after the fact don't drive design and miss the boundary cases the act of writing exposes. Test now or the tests you eventually write are worse. |
17
+ | "Lint and build pass, that proves quality." | Automation proves syntax and style, not design or correctness. Never cite clean automation as evidence of good design. |
18
+ | "It's only a small refactor while I'm in here." | Feature scope only: drive-by cleanup balloons the diff, hides intent, and gets rejected at seal. Record as an FYI follow-up. |
19
+ | "This is a special case, the pattern doesn't apply." | Special cases multiply silently. Either they really are special (record *why* in `decisions.md`) or they're not (and the pattern wins). |
20
+ | "The user will tell me if something is wrong." | Drift detection is the workflow's job, not the user's QA. Surface assumptions; route material questions through the Spec Drift Guard. |
21
+ | "Generic name (`processData`, `handleItem`) is fine: the code is self-evident." | Generic AI naming is slop. Match the project's idiom; one concept gets one word across the codebase. |
22
+ | "Better safe than sorry: add the defensive null/length check." | Over-defensive guarding is slop. Validate at boundaries; trust the core. A check inside trusted code hides bugs in the boundary. |
23
+ | "It's faster to skip the small step." | Process shortcuts pay back later as drift, missed criteria, or unrecorded decisions. The step is the point. |
24
+ | "I observed it pass; recording is bureaucracy." | Un-recorded pass = unproven. The next phase reads `evidence.md`, not your memory. |
25
+ | "User clearly wants this, so I'll bypass the gate." | Gates exist for the failure modes asks miss. Honor the gate; the gate exists *because* of the ask. |
26
+ | "The test is failing. I'll just skip it / loosen the assertion to get green." | Faking green is reward-hacking, not progress. Never delete / skip / `xfail` / `.only` / loosen a failing test: a red test means fix the code or agree the change. Diff review and dedicated test analysis treat weakening as Critical. |
27
+ | "This project principle doesn't really apply to my case." | A declared invariant (`.devrites/principles.md`) is not advisory. Either it genuinely needs relaxing (record a scoped, dated exception a human approves) or it applies and the change is wrong. Silently routing around a principle is the defect the gate exists to catch (`principles.md`). |
28
+
29
+ ## Pack-wide red flags
30
+
31
+ These show up at any phase and are equally damning regardless:
32
+
33
+ - Touching files that aren't in `touched-files.md` "while I'm here".
34
+ - A finding / decision / assumption recorded only in chat, not in the workspace files (it dies on `/clear`).
35
+ - Catching the broadest possible error and continuing past it.
36
+ - A test that asserts the implementation, not the behavior.
37
+ - A failing test deleted, skipped, `xfail`-ed, `.only`-narrowed, or loosened to make the suite pass.
38
+ - Commenting out code instead of deleting it.
39
+ - A `// TODO` left in shipped code.
40
+ - Adding a dependency or a second design system without rationale in `decisions.md`.
41
+ - A change that violates a declared project principle (`.devrites/principles.md`) with no recorded, human-approved exception.
42
+ - "I'll fix it in a follow-up PR" with no follow-up opened.
43
+
44
+ ## Where this gets loaded
45
+
46
+ Phase-specific `rite-*/reference/anti-patterns.md` files extend this table with only their local cases. Load this file when the rationalization is broader than one phase.
47
+
48
+ ## Behavioral coverage
49
+
50
+ A new behavior-shaping rebuttal needs a matching behavioral eval; prose alone does not prove the guard holds under pressure.
@@ -0,0 +1,64 @@
1
+ # Architecture health
2
+
3
+ > Applies when: an audit, vet, or seal needs a structural read on the whole
4
+ > codebase — not the diff — and a dependency index is available.
5
+
6
+ A health score compresses six structural signals into one 0–100 number with a
7
+ letter grade. It is an *audit instrument*, not a gate: it ranks surfaces for
8
+ attention and tracks drift between milestones. It never proves a change safe
9
+ and never substitutes for review.
10
+
11
+ ## When to measure
12
+
13
+ Compute a score only when a code index covers the repo (see
14
+ [`code-index.md`](code-index.md) § Preflight). With no index,
15
+ report `unmeasured` — a placeholder number presented as a measurement is a
16
+ false pass. **Failing case:** an audit reports "health: 100/100" on a repo the
17
+ instrument could not parse.
18
+
19
+ ## Dimensions
20
+
21
+ Weight the dimensions exactly once; do not invent extra dimensions ad hoc —
22
+ record repo-specific signals as findings instead.
23
+
24
+ | Dimension | Weight | What it measures | Healthy | Warning |
25
+ | --- | --- | --- | --- | --- |
26
+ | Coupling | 25% | Cross-file edges per file; penalize god-file outliers (max ≫ 3× mean) and >70% cross-directory share | avg ≤3 connections | avg >10 |
27
+ | Cohesion | 20% | Share of a directory's edges that stay inside it | ≥70% internal | <30% |
28
+ | Circular deps | 20% | File-level dependency cycles per 100 files | 0 cycles | >5 per 100 |
29
+ | God files | 15% | Files with >3× mean connections | none | >6% of files |
30
+ | Orphans & dead exports | 10% | Unreferenced files; exported symbols with zero dependents (60/40 blend) | 0% orphans | >10% orphans or >5% dead exports |
31
+ | Depth | 10% | Longest dependency chain, cycles collapsed to one hop each (SCC-condensed DAG) | ≤4 levels | >8 |
32
+
33
+ Grade bands: ≥90 A · ≥80 B · ≥70 C · ≥60 D · below F.
34
+
35
+ ## Rules
36
+
37
+ - **Measure before and after.** A score's value is the delta: record
38
+ before/after for structural work in `evidence.md`; a drop >3 points needs a
39
+ named cause, not a shrug.
40
+ - **Count runtime edges, not type-only edges.** `import type`-style
41
+ relationships inform dead-code analysis but do not execute; including them
42
+ overstates coupling.
43
+ - **Exclude fixtures and generated files** from orphan/dead counts — a
44
+ directory of test fixtures is not dead code.
45
+ - **Depth is computed on the condensed graph.** Collapse each cycle (strongly
46
+ connected component) to one node first; an exact longest-path search on a
47
+ cyclic graph is unbounded and returns no honest number.
48
+ - **Every recommendation names the dimension it moves.** "Improve the
49
+ architecture" is not an action; "extract `x/` → `y/` edge to cut cross-dir
50
+ coupling (Coupling, est. +8)" is.
51
+ - **Trend over snapshots.** Keep the score per milestone in `evidence.md` or
52
+ the feature's audit artifact; a single reading without a baseline is a
53
+ weather report, not a climate signal.
54
+
55
+ ## Orphan and dead-export semantics
56
+
57
+ An orphan file has zero cross-file runtime edges. A dead export is an exported
58
+ top-level symbol (function/class/interface/type/enum/constant) with zero
59
+ incoming edges — member-level symbols (methods, properties) are excluded:
60
+ they are not meaningful architecture-level candidates and produce false
61
+ positives. Both counts feed only this dimension; the *removal decision* for a
62
+ dead export follows [`deprecation.md`](deprecation.md), including its
63
+ confidence rubric — a low-confidence dead lead is a watch item, never an
64
+ automatic deletion.
@@ -0,0 +1,42 @@
1
+ # Assumption-delta checkpoints
2
+
3
+ > Applies when: planning or vetting a slice whose scope generalizes an existing
4
+ > boundary — the seam where a quiet assumption loses its monopoly.
5
+
6
+ Most quietly imported architectural debt comes from the seam: a later change adds a
7
+ *second case* — platform, auth method, tenant, region, source of truth — and nobody
8
+ re-asks whether the original abstraction still names the right thing. The change that
9
+ adds the second case is the cheap moment to ask.
10
+
11
+ ## The detector
12
+
13
+ Scan the phase scope, spec delta, or task list for transition signals:
14
+
15
+ | Signal | Shape | The question it raises |
16
+ |---|---|---|
17
+ | `pluralization` | A second X where exactly one existed (platform, provider, tenant, region, source of truth) | Does the identity model still name the right noun? |
18
+ | `optionality` | A required or `only`-assumed field becomes optional | Is that field still the right anchor, or did the anchor move? |
19
+ | `choice` | A derived value becomes chosen; a constant becomes a parameter | Has a config decision silently become a modeling decision? |
20
+
21
+ Code blocks, comments, and prose that merely *mention* a trigger word do not count.
22
+
23
+ ## Firing the checkpoint
24
+
25
+ A firing signal surfaces **one** question before the plan is finalized — not a
26
+ redesign, one question: *does the name/model chosen when N=1 still hold at N=2?*
27
+
28
+ - `detected:false` — skip the checkpoint; do not raise it.
29
+ - `skipped` — the scope was never examined. A skipped check asserts *nothing*: never
30
+ record "no assumption changed" from a skipped result; skipped ≠ negative.
31
+ - `detected:true` — ask the one question and record the answer in `decisions.md` or
32
+ `assumptions.md`; an answered checkpoint that leaves no trace re-fires next round.
33
+
34
+ ## Promote, don't add alongside
35
+
36
+ When a generalization is real, the default-correct move is to **promote** the general
37
+ representation to primary and demote the old specific one to a detail of one variant —
38
+ not to add the new shape alongside the still-required old one, which silently
39
+ contradicts the generalized intent.
40
+
41
+ **Failing case:** `region` added as an optional column beside `primaryRegion`; every
42
+ write now guesses which is authoritative.
@@ -0,0 +1,107 @@
1
+ # Coverage-led auditing
2
+
3
+ > Applies when: auditing a surface larger than one feature diff — a repo, subsystem,
4
+ > or trust boundary — where "I looked at it" must become countable coverage.
5
+
6
+ A surface audit must answer *what the run covered and what it never examined* — with
7
+ a coverage ledger, not a summary paragraph.
8
+
9
+ ## Coverage ledger
10
+
11
+ The coordinator alone maintains the ledger; a unit is one auditable cell — surface
12
+ (path/endpoint/command) × trust boundary × check class.
13
+
14
+ States: `planned` → `assigned` → `candidate` (produced a finding candidate) →
15
+ `covered` (evidence recorded); plus `deferred` (postponed, reason recorded),
16
+ `blocked` (exact blocker recorded), and `out_of_scope` (declared-scope exclusion —
17
+ never written as `covered`). `deferred` and `blocked` are honest states; a unit
18
+ silently dropped is a lie.
19
+
20
+ Instruments obey the same honesty rule: a scanner or metric that could not read
21
+ its target reports `unmeasured`/`no_data`, never a placeholder presented as a
22
+ measurement. A health score computed over zero parseable files is not a 100.
23
+ When the audit covers whole-repo structure, score it per
24
+ [`architecture-health.md`](architecture-health.md) and record before/after
25
+ deltas as ledger evidence.
26
+
27
+ ## Findings carry three verdicts, not two
28
+
29
+ - **`confirmed`** — complete source trace plus a bounded observed or owner-observable
30
+ result; names the lower-trust principal, crossed boundary, affected
31
+ principal/resource, and concrete effect.
32
+ - **`needs_validation`** — a real lead blocked on one exact unresolved fact, which is
33
+ named. Carries **no severity**: severity without established impact is theater.
34
+ - **`rejected`** — a disproved candidate kept with its disproof; it suppresses
35
+ re-raising the same unchanged claim, never coverage of its unit.
36
+
37
+ Hardening notes are not findings: if one layer already prevents the attack, the
38
+ absent second layer is a depth observation, not a vulnerability.
39
+
40
+ ## Finder never verifies its own find
41
+
42
+ Every surviving candidate goes to a fresh verifier that did not produce it and tries
43
+ to **disprove** it, per [`agents.md`](agents.md) § Independence — a seeded packet
44
+ voids the verification. Promotions to `confirmed` and material changes to root
45
+ cause, trace, reproduction, impact, or severity require fresh independent
46
+ verification. Without that independent evidence, keep the candidate unresolved;
47
+ a rewritten explanation is not verification.
48
+
49
+ ## Critics between waves
50
+
51
+ After each hunting wave, a **coverage critic** — a fresh agent comparing the ledger
52
+ with targeted source and entry-point evidence — looks for holes: unseeded surfaces,
53
+ boundaries with no check class,
54
+ units stuck `assigned`, `rejected` patterns suggesting a hunter fires blanks.
55
+ Accepted discoveries become `planned` units. Coverage is `complete` only after a
56
+ critic returns no accepted missing or reassigned unit and no unit is `planned`;
57
+ otherwise the run is partial, and a wave or agent cap is never evidence of
58
+ completeness. A reassigned unit gets a fresh owner; the old attempt's evidence stays
59
+ attributed to it and is never merged into the new attempt. Reserve critic and verifier capacity
60
+ **before** spending on hunters; a wave launched with no verification reserve hunts
61
+ for findings nobody may claim.
62
+
63
+ ## Re-runs are additive, never assumed
64
+
65
+ A prior ledger must be re-checked against current source — a prior commit ref is not
66
+ evidence a path is unchanged. Prior `confirmed` carries forward only when its source
67
+ is unchanged **and** it re-passes current verification; prior `needs_validation` /
68
+ `blocked` / `deferred` become current work and never suppress a unit. A partial prior
69
+ run contributes recorded evidence and gaps, never an implied "the rest is fine"; no
70
+ prior ledger → the report says so.
71
+
72
+ ## Profiles scale breadth, never the bar
73
+
74
+ `quick` (one hunter wave + one critic pass, coarser units), `standard` (waves to
75
+ critic-clean, per-candidate fresh verifier), `deep` (units split per
76
+ subsystem/lifecycle; carried records re-verified). Profiles change granularity and
77
+ redundancy, never the evidence bar: boundary-plus-result, independent verification,
78
+ three verdicts, and honest `deferred`/`blocked` survive every profile. A scoped run
79
+ presents itself as partial coverage.
80
+
81
+ ## Budget discipline
82
+
83
+ A budget counts agent invocations, not effort. Reserve critic and verifier capacity
84
+ before spending on hunters; a budget that cannot fund reconnaissance plus required
85
+ reserves funds nothing — narrow scope or profile instead of silently thinning
86
+ evidence. A run exhausted mid-verification ends `incomplete` with unvalidated
87
+ candidates still linked to `candidate` units — never relabeled, never reported
88
+ complete.
89
+
90
+ ## Target execution is sandboxed
91
+
92
+ When a unit requires *running* the target — a build, a test, a probe — execute
93
+ it under containment, never in the operator's ambient environment:
94
+
95
+ - No external network and no live-service probing from the audit run.
96
+ - No credentials, tokens, or secrets visible to target-controlled processes.
97
+ - Only commands the repository or CI itself sanctions run verbatim; invented
98
+ commands are findings to propose, not actions to take.
99
+ - Output captured through the harness, not through target-written files the
100
+ run then trusts.
101
+
102
+ An audit that executed unaudited code with ambient privileges has crossed the
103
+ boundary it was measuring; that run's `confirmed` rows name the execution
104
+ context so reviewers can judge contamination.
105
+
106
+ **Failing case:** "no critical findings" reported while 40% of units sit `planned` —
107
+ the honest sentence was "60% of the surface was examined."
@@ -0,0 +1,37 @@
1
+ # Browser proof checklist
2
+
3
+ > Applies when: UI proof: compact sweep before claiming a rendered/browser pass.
4
+
5
+ Compact sweep only. Numbers and failing cases live in
6
+ [`quality-standards.md`](../../../devrites-frontend-craft/reference/quality-standards.md)
7
+ § Focus & states, § Responsive, and § Browser chrome — do not restate a shorter
8
+ viewport set here.
9
+
10
+ - Open the real UI (never screenshot-only); check console and network for errors.
11
+ - Before reading the builder's verdict, inventory the raw captures against the
12
+ required routes/states/viewports and candidate identity. Open each capture: a
13
+ wrong route, blank render, unexpected login wall, inconsistent dimensions, or
14
+ stale candidate is missing evidence. Recapture; until resolved, record
15
+ `cannot_verify` and block visual approval. A convincing narrative cannot repair it.
16
+ - **Evidence matrix.** Layout-bearing states (default, long content, and every
17
+ role-applicable surface state from [`quality-standards.md`](../../../devrites-frontend-craft/reference/quality-standards.md) § Focus & states) × every
18
+ canonical viewport; interaction states at ≥1 small and ≥1 large viewport (hover
19
+ only with a hover-capable pointer); one keyboard traversal; a `reduce` capture when
20
+ motion changed; every shipped theme. Each cell holds a capture, `cannot_verify`, or
21
+ `not-needed (<reason>)`; an empty cell is `cannot_verify`. States must exist in source
22
+ — an unreachable state's capture proves nothing.
23
+ - A capture counts only with fonts loaded, animations settled, the real route (a harness
24
+ or story capture is labelled and never fills a route cell) and matching candidate
25
+ identity. Hover, touch, iOS zoom or safe-area behaviour seen only in emulation is
26
+ `unverified (device)`, never a pass.
27
+ - A finding closes only with a capture of the same route, state and viewport class on the
28
+ corrected candidate; a failed or incomplete capture run never counts as gone.
29
+ **Failing case:** a 320 px overflow closed by a clean 1440 px screenshot.
30
+ - Browser-default chrome is judged by § Browser chrome; reflow, zoom and bounded
31
+ two-dimensional exceptions by § Responsive. Compare to `design-brief.md` → Visual Verdict.
32
+ - Tooling unavailable ⇒ record fallback + limitation. Backend-only changes record
33
+ that disposition instead of capturing quietly; UI copy follows
34
+ `devrites-frontend-craft`, long-form prose follows `devrites-prose-craft`
35
+ ([`prose-style.md`](prose-style.md)).
36
+
37
+ Detailed skill: `devrites-browser-proof`.
@@ -0,0 +1,62 @@
1
+ # CI/CD & automation
2
+
3
+ > Applies when: creating or changing a build/deploy pipeline or CI config.
4
+
5
+ Read this only when creating or changing a build/deploy pipeline. [`hooks.md`](hooks.md) owns local checks, [`development-workflow.md`](development-workflow.md) owns trunk health, and [`deprecation.md`](deprecation.md) owns migrations.
6
+
7
+ ## Pipeline gates
8
+
9
+ - Put each check at the earliest affordable stage: editor → pre-commit → pre-push → CI.
10
+ - Keep batches small so failures are attributable and releases remain reversible.
11
+ - Run lint → type-check → unit → build → integration → audit → E2E as applicable. A red gate stops the line; fix the defect rather than disabling the rule, weakening the test, or skipping the gate. CI is the source of truth for green.
12
+
13
+ ## Failure loop and ownership
14
+
15
+ Read the specific failure, fix its root cause, verify locally, then push again. Do not blind-rerun a flaky pipeline. Use `devrites-debug-recovery` when a test or build failure needs reproduction.
16
+
17
+ A designated Build Cop (a human/team role, not a pack agent) owns restoring a broken trunk by fixing or reverting, whichever is faster. Restoring trunk outranks feature work.
18
+
19
+ ## Verification economy
20
+
21
+ Paid or remote validation runs once per prepared state, not per attempt: batch repairs,
22
+ verify locally first, and never blind-retry an infra operation that already reported
23
+ failure (deploy, migrate, seed) — read the failure output, fix the cause, then re-run.
24
+ A green check the diff cannot affect is not re-run; an expected run that is deliberately
25
+ skipped is named in the report, not omitted. Capture failure output as an artifact so the
26
+ next attempt starts from evidence, not memory.
27
+
28
+ ## Deploy versus release
29
+
30
+ Keep incomplete or risky behavior disabled behind a flag so deploy and release remain separate and rollback does not require a redeploy. Every flag has an owner and a removal trigger; remove it through the [`deprecation.md`](deprecation.md) expand/contract path.
31
+
32
+ ## Deployment order and configuration
33
+
34
+ - Derive an explicit order for schema, application, worker, contract, config, and flag
35
+ changes. Prove the system remains safe at every intermediate old/new combination;
36
+ "deploy together" is not an atomicity guarantee across units.
37
+ - Validate required configuration at startup or the earliest safe boundary. Record names,
38
+ owners, environments, safe defaults, and rollback values without recording secrets.
39
+ A staging value copied by memory is not production evidence; a configuration mismatch
40
+ blocks exposure until the exact target value/owner is verified.
41
+ - Documentation drift in commands, configuration, migration order, or rollback steps is a
42
+ delivery defect: update the canonical doc and execute the documented path before exposure.
43
+ - Migration and destructive steps apply [`data-integrity.md`](data-integrity.md); service,
44
+ queue, webhook, and cache changes apply
45
+ [`integration-reliability.md`](integration-reliability.md). Their recovery/observability
46
+ gates precede exposure.
47
+ - Feature flags separate exposure only when both states are tested, the off path preserves
48
+ current behavior, and disabling the flag stops the risky effect. A flag cannot undo an
49
+ already destructive schema or data change. Each flag names its removal trigger (full
50
+ rollout or kill); a flag past its trigger is dead code ([`deprecation.md`](deprecation.md)).
51
+
52
+ ## Secrets
53
+
54
+ Commit `.env.example` without values; never commit real `.env` files. Inject CI secrets from the platform store and scope them to the job. Build runners do not receive production credentials.
55
+
56
+ ## Slow pipelines
57
+
58
+ When wall time exceeds roughly ten minutes, measure before and after. Improve in order: cache dependencies, parallelize independent jobs, path-filter, shard the slow suite, re-tier genuinely slow tests, then consider larger runners.
59
+
60
+ ## Scope
61
+
62
+ Change only the pipeline surface in scope; record wider CI redesign as follow-up work.