@getarbiter/cli 0.5.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 (989) hide show
  1. package/CHANGELOG.md +713 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +31 -0
  4. package/PRIVACY.md +111 -0
  5. package/README.md +237 -0
  6. package/THIRD_PARTY_LICENSES.md +472 -0
  7. package/dist/.src-manifest.json +1 -0
  8. package/dist/capabilities/host-probe.js +3 -0
  9. package/dist/cli.d.ts +2 -0
  10. package/dist/cli.js +87 -0
  11. package/dist/commands/adopt-policy.js +3 -0
  12. package/dist/commands/configure-interactive.js +3 -0
  13. package/dist/commands/configure.js +5 -0
  14. package/dist/commands/cross-model-review.js +3 -0
  15. package/dist/commands/diff.js +20 -0
  16. package/dist/commands/doc-set.js +3 -0
  17. package/dist/commands/doctor/clean.js +2 -0
  18. package/dist/commands/doctor/fail-open-census.js +12 -0
  19. package/dist/commands/doctor/health.js +11 -0
  20. package/dist/commands/doctor/prove-gates.js +13 -0
  21. package/dist/commands/doctor/recover-lock.js +12 -0
  22. package/dist/commands/doctor/repair-state.js +6 -0
  23. package/dist/commands/doctor/tool-pin-extract.js +4 -0
  24. package/dist/commands/doctor/tool-pins.js +9 -0
  25. package/dist/commands/doctor-interactive.js +2 -0
  26. package/dist/commands/doctor.js +2 -0
  27. package/dist/commands/explain.js +19 -0
  28. package/dist/commands/gate-exec.js +4 -0
  29. package/dist/commands/gold-audit.js +14 -0
  30. package/dist/commands/graph.js +5 -0
  31. package/dist/commands/init/build-arbiter-config.js +1 -0
  32. package/dist/commands/init/generate.js +42 -0
  33. package/dist/commands/init/github-setup.js +5 -0
  34. package/dist/commands/init/maturity-gates.js +10 -0
  35. package/dist/commands/init/resolve-config.js +3 -0
  36. package/dist/commands/init/toolchain.js +10 -0
  37. package/dist/commands/init/types.js +1 -0
  38. package/dist/commands/init.js +17 -0
  39. package/dist/commands/method-interactive.js +4 -0
  40. package/dist/commands/method.js +11 -0
  41. package/dist/commands/obsidian.js +2 -0
  42. package/dist/commands/plugin.js +8 -0
  43. package/dist/commands/pr-merged.js +2 -0
  44. package/dist/commands/retire-policy.js +3 -0
  45. package/dist/commands/review-diff.js +3 -0
  46. package/dist/commands/settings.js +7 -0
  47. package/dist/commands/ship-config.js +2 -0
  48. package/dist/commands/ship-profile.js +2 -0
  49. package/dist/commands/ship-review.js +1 -0
  50. package/dist/commands/ship-tier.js +2 -0
  51. package/dist/commands/ship-train.js +2 -0
  52. package/dist/commands/task-mark.js +2 -0
  53. package/dist/commands/task-note.js +3 -0
  54. package/dist/commands/task-record-red.js +2 -0
  55. package/dist/commands/task-record-tech-debt.js +4 -0
  56. package/dist/commands/task-ship.js +3 -0
  57. package/dist/commands/task-state.js +6 -0
  58. package/dist/commands/task.js +59 -0
  59. package/dist/commands/update.js +60 -0
  60. package/dist/commands/upgrade-level-interactive.js +2 -0
  61. package/dist/commands/upgrade-level.js +7 -0
  62. package/dist/commands/verify-plan.js +8 -0
  63. package/dist/commands/verify-tdd.js +2 -0
  64. package/dist/commands/verify.js +7 -0
  65. package/dist/commands/wizard/coherence.js +1 -0
  66. package/dist/commands/worktree-prune.js +4 -0
  67. package/dist/commands/worktree.js +39 -0
  68. package/dist/compatibility/cross-language-matrix.json +540 -0
  69. package/dist/compatibility/index.d.ts +4 -0
  70. package/dist/compatibility/index.js +2 -0
  71. package/dist/compatibility/matcher.js +1 -0
  72. package/dist/compatibility/matrix.json +27 -0
  73. package/dist/compatibility/parsers.d.ts +38 -0
  74. package/dist/compatibility/parsers.js +1 -0
  75. package/dist/compatibility/probe.d.ts +41 -0
  76. package/dist/compatibility/probe.js +4 -0
  77. package/dist/compatibility/report.js +2 -0
  78. package/dist/compatibility/schema.d.ts +80 -0
  79. package/dist/compatibility/schema.js +1 -0
  80. package/dist/compatibility/skills-matrix.json +98 -0
  81. package/dist/compatibility/skills-validator.d.ts +30 -0
  82. package/dist/compatibility/skills-validator.js +4 -0
  83. package/dist/compatibility/tooling-proposals.json +5 -0
  84. package/dist/config/arbiter-ignore.js +3 -0
  85. package/dist/config/collaboration-mode-defaults.js +1 -0
  86. package/dist/config/diff.js +1 -0
  87. package/dist/config/env-overrides.js +3 -0
  88. package/dist/config/env-registry.js +2 -0
  89. package/dist/config/levels.js +1 -0
  90. package/dist/config/migrations/index.js +2 -0
  91. package/dist/config/migrations/v0-to-v1.js +2 -0
  92. package/dist/config/migrations/v1-to-v2.js +2 -0
  93. package/dist/config/migrations/v2-to-v3.js +2 -0
  94. package/dist/config/migrations/v3-to-v4.js +2 -0
  95. package/dist/config/override-resolver.js +2 -0
  96. package/dist/config/resolve-project-config.js +2 -0
  97. package/dist/config/resolve-project-name.js +2 -0
  98. package/dist/config/schema.d.ts +480 -0
  99. package/dist/config/schema.js +1 -0
  100. package/dist/config/test-pyramid-profiles.js +1 -0
  101. package/dist/config/thresholds.js +2 -0
  102. package/dist/conformance/dimensions.js +3 -0
  103. package/dist/conformance/engine.js +7 -0
  104. package/dist/conformance/gate-proofs.js +4 -0
  105. package/dist/conformance/shared.js +2 -0
  106. package/dist/detectors/axis.js +1 -0
  107. package/dist/detectors/build.js +2 -0
  108. package/dist/detectors/existing.js +2 -0
  109. package/dist/detectors/external-model.js +2 -0
  110. package/dist/detectors/framework.js +2 -0
  111. package/dist/detectors/git.js +11 -0
  112. package/dist/detectors/github.js +2 -0
  113. package/dist/detectors/lanes.js +5 -0
  114. package/dist/detectors/language-hooks.js +117 -0
  115. package/dist/detectors/language.js +2 -0
  116. package/dist/detectors/package-manager.js +2 -0
  117. package/dist/detectors/package.js +2 -0
  118. package/dist/detectors/scaffold-wiring.js +2 -0
  119. package/dist/detectors/workflow-collision.js +4 -0
  120. package/dist/evidence/gate-binding.js +4 -0
  121. package/dist/evidence/git-checks.js +3 -0
  122. package/dist/evidence/load.js +2 -0
  123. package/dist/evidence/provenance.js +2 -0
  124. package/dist/evidence/summary.js +2 -0
  125. package/dist/evidence/tdd-reexecute.js +2 -0
  126. package/dist/evidence/tdd.js +4 -0
  127. package/dist/experimental/index.js +2 -0
  128. package/dist/experimental/parse-argv.js +2 -0
  129. package/dist/experimental/registry.js +2 -0
  130. package/dist/generators/agents-claude.js +2 -0
  131. package/dist/generators/agents-md.js +2 -0
  132. package/dist/generators/anti-drift-validators.js +3 -0
  133. package/dist/generators/anti-proforma.js +2 -0
  134. package/dist/generators/api-e2e.js +2 -0
  135. package/dist/generators/api-middleware.js +2 -0
  136. package/dist/generators/archunit.js +2 -0
  137. package/dist/generators/audit-toolchain.js +2 -0
  138. package/dist/generators/auth.js +2 -0
  139. package/dist/generators/behavioral-tests.js +2 -0
  140. package/dist/generators/boundaries.js +2 -0
  141. package/dist/generators/check-all.js +2 -0
  142. package/dist/generators/check-stack-conformity.js +2 -0
  143. package/dist/generators/ci-five-lane.js +2 -0
  144. package/dist/generators/ci-tier.js +2 -0
  145. package/dist/generators/claude.js +3 -0
  146. package/dist/generators/codex-hooks.js +2 -0
  147. package/dist/generators/codex-known-limitations.js +2 -0
  148. package/dist/generators/codex.js +15 -0
  149. package/dist/generators/commit-footer.js +2 -0
  150. package/dist/generators/compliance-menu.js +2 -0
  151. package/dist/generators/compliance.js +2 -0
  152. package/dist/generators/conformance.js +2 -0
  153. package/dist/generators/contract-testing.js +2 -0
  154. package/dist/generators/coverage.js +2 -0
  155. package/dist/generators/debt-gates.js +24 -0
  156. package/dist/generators/debt-ratchet.js +2 -0
  157. package/dist/generators/derived-class.js +2 -0
  158. package/dist/generators/doc-set.js +4 -0
  159. package/dist/generators/docs.js +2 -0
  160. package/dist/generators/duplication.js +2 -0
  161. package/dist/generators/e2e-constitution.js +2 -0
  162. package/dist/generators/env-template.js +2 -0
  163. package/dist/generators/evidence-retention.js +2 -0
  164. package/dist/generators/feature-matrix.js +2 -0
  165. package/dist/generators/frontend-governance.js +2 -0
  166. package/dist/generators/frontend-quality.js +2 -0
  167. package/dist/generators/gap.js +2 -0
  168. package/dist/generators/gdpr.js +2 -0
  169. package/dist/generators/githooks.js +2 -0
  170. package/dist/generators/github-setup.js +2 -0
  171. package/dist/generators/github.js +2 -0
  172. package/dist/generators/gitignore.js +2 -0
  173. package/dist/generators/global-invariants.js +3 -0
  174. package/dist/generators/go-boundaries.js +2 -0
  175. package/dist/generators/gold-kit.js +2 -0
  176. package/dist/generators/infra.js +2 -0
  177. package/dist/generators/integration-testing.js +7 -0
  178. package/dist/generators/iso27001.js +2 -0
  179. package/dist/generators/iso9001.js +2 -0
  180. package/dist/generators/labels.js +2 -0
  181. package/dist/generators/local-wrapper.js +2 -0
  182. package/dist/generators/modulith.js +2 -0
  183. package/dist/generators/mutation.js +2 -0
  184. package/dist/generators/observability.js +2 -0
  185. package/dist/generators/operations.js +2 -0
  186. package/dist/generators/perf-k6.js +2 -0
  187. package/dist/generators/pharma.js +2 -0
  188. package/dist/generators/playwright-python.js +2 -0
  189. package/dist/generators/playwright-ts.js +2 -0
  190. package/dist/generators/pr-tooling.js +2 -0
  191. package/dist/generators/python-boundaries.js +2 -0
  192. package/dist/generators/quality.js +2 -0
  193. package/dist/generators/registry.js +2 -0
  194. package/dist/generators/regulated.js +2 -0
  195. package/dist/generators/resilience.js +2 -0
  196. package/dist/generators/risk-register.js +2 -0
  197. package/dist/generators/root.js +2 -0
  198. package/dist/generators/rust-boundaries.js +2 -0
  199. package/dist/generators/safety-class.js +2 -0
  200. package/dist/generators/security.js +2 -0
  201. package/dist/generators/seed.js +2 -0
  202. package/dist/generators/self-validation.js +2 -0
  203. package/dist/generators/ship-driver.js +2 -0
  204. package/dist/generators/skill-names.json +17 -0
  205. package/dist/generators/skills.js +2 -0
  206. package/dist/generators/smoke-journeys.js +2 -0
  207. package/dist/generators/solo-exception.js +2 -0
  208. package/dist/generators/ssot.js +2 -0
  209. package/dist/generators/stride-enforcement.js +2 -0
  210. package/dist/generators/suppressions.js +2 -0
  211. package/dist/generators/test-pyramid-manifest.js +3 -0
  212. package/dist/generators/test-taxonomy.js +2 -0
  213. package/dist/generators/wiki.js +2 -0
  214. package/dist/github/branch-protection.js +2 -0
  215. package/dist/github/classify-gh-error.js +2 -0
  216. package/dist/github/labels.js +2 -0
  217. package/dist/github/project-board.js +2 -0
  218. package/dist/graph/builders/adr.js +4 -0
  219. package/dist/graph/builders/ast.js +3 -0
  220. package/dist/graph/builders/canon.js +2 -0
  221. package/dist/graph/builders/evidence.js +2 -0
  222. package/dist/graph/builders/inv.js +1 -0
  223. package/dist/graph/builders/req.js +3 -0
  224. package/dist/graph/builders/test-nodes.js +3 -0
  225. package/dist/graph/builders/utils.js +2 -0
  226. package/dist/graph/load.js +2 -0
  227. package/dist/graph/model.js +2 -0
  228. package/dist/graph/query.js +3 -0
  229. package/dist/graph/store.js +1 -0
  230. package/dist/i18n/en.json +293 -0
  231. package/dist/i18n/index.js +4 -0
  232. package/dist/i18n/types.js +2 -0
  233. package/dist/integrations/companions.js +2 -0
  234. package/dist/integrations/external-review.js +10 -0
  235. package/dist/integrations/plugin-schema.js +2 -0
  236. package/dist/integrations/skill-detector.js +7 -0
  237. package/dist/integrations/skills-matrix.js +2 -0
  238. package/dist/integrations/types.d.ts +23 -0
  239. package/dist/integrations/types.js +2 -0
  240. package/dist/internal/cli-deprecation-registry.js +2 -0
  241. package/dist/internal/deprecate.js +3 -0
  242. package/dist/internal/experimental-warn.js +3 -0
  243. package/dist/invariants/catalog.d.ts +2 -0
  244. package/dist/invariants/catalog.js +1 -0
  245. package/dist/invariants/filter.d.ts +28 -0
  246. package/dist/invariants/filter.js +1 -0
  247. package/dist/invariants/index.d.ts +4 -0
  248. package/dist/invariants/index.js +2 -0
  249. package/dist/invariants/tiers.js +1 -0
  250. package/dist/invariants/types.d.ts +1 -0
  251. package/dist/invariants/types.js +1 -0
  252. package/dist/kit/applicability.js +3 -0
  253. package/dist/kit/audit-report.js +3 -0
  254. package/dist/kit/brownfield-detect.js +4 -0
  255. package/dist/kit/canonical-mapping.json +1 -0
  256. package/dist/kit/catalog.js +2 -0
  257. package/dist/kit/catalog.json +1 -0
  258. package/dist/kit/derived.json +1 -0
  259. package/dist/kit/emit-issues.js +8 -0
  260. package/dist/kit/measure.js +5 -0
  261. package/dist/kit/redaction.js +3 -0
  262. package/dist/kit/schema.js +2 -0
  263. package/dist/kit/taxonomy.js +2 -0
  264. package/dist/kit/thresholds.d.ts +12 -0
  265. package/dist/kit/thresholds.js +2 -0
  266. package/dist/kit/wave-engine.js +1 -0
  267. package/dist/recipes/loader.js +6 -0
  268. package/dist/recipes/schema.js +2 -0
  269. package/dist/risk/classifier.js +2 -0
  270. package/dist/risk/sha-check.js +2 -0
  271. package/dist/state/backups.js +2 -0
  272. package/dist/state/envelope.js +2 -0
  273. package/dist/state/generated-manifest.js +3 -0
  274. package/dist/state/manifest-key.js +2 -0
  275. package/dist/state/migrations/index.js +1 -0
  276. package/dist/state/migrations/v0-to-v1.js +2 -0
  277. package/dist/state/retired-renders.js +2 -0
  278. package/dist/templates/.nvmrc.ejs +1 -0
  279. package/dist/templates/HANDOFF.template.md +45 -0
  280. package/dist/templates/__tests__/contract/error-shape.contract.test.ts.ejs +47 -0
  281. package/dist/templates/agents-md/AGENTS.md.ejs +517 -0
  282. package/dist/templates/api-e2e/README.md.ejs +33 -0
  283. package/dist/templates/api-e2e/go-httptest.go.ejs +43 -0
  284. package/dist/templates/api-e2e/java-restassured.java.ejs +28 -0
  285. package/dist/templates/api-e2e/kotlin-restassured.kt.ejs +30 -0
  286. package/dist/templates/api-e2e/manifest.json.ejs +8 -0
  287. package/dist/templates/api-e2e/postman.collection.json.ejs +30 -0
  288. package/dist/templates/api-e2e/python-httpx.py.ejs +17 -0
  289. package/dist/templates/api-e2e/run.sh.ejs +61 -0
  290. package/dist/templates/api-e2e/ts-supertest.test.ts.ejs +18 -0
  291. package/dist/templates/archunit/AntiCyclicTest.java.ejs +29 -0
  292. package/dist/templates/archunit/AntiProformaExempt.java.ejs +35 -0
  293. package/dist/templates/archunit/AntiProformaTest.java.ejs +104 -0
  294. package/dist/templates/archunit/ArchitectureTest.java.ejs +87 -0
  295. package/dist/templates/archunit/DependencyFlowTest.java.ejs +55 -0
  296. package/dist/templates/archunit/DomainPurityTest.java.ejs +47 -0
  297. package/dist/templates/archunit/NamingConventionsTest.java.ejs +54 -0
  298. package/dist/templates/archunit/NoH2ArchTest.java.ejs +30 -0
  299. package/dist/templates/archunit/NoMockMvcTest.java.ejs +71 -0
  300. package/dist/templates/archunit/PortsIndependenceTest.java.ejs +55 -0
  301. package/dist/templates/archunit/RestAssuredArchTest.java.ejs +32 -0
  302. package/dist/templates/archunit/RestAssuredBaseIT.java.ejs +66 -0
  303. package/dist/templates/archunit/TestCoverageArchTest.java.ejs +29 -0
  304. package/dist/templates/archunit/arch-test-deps-maven.md.ejs +42 -0
  305. package/dist/templates/archunit/arch-test-deps.gradle.ejs +14 -0
  306. package/dist/templates/audit/gdpr/check-gdpr-controls.mjs.ejs +102 -0
  307. package/dist/templates/audit/gdpr/controls-to-gates.md.ejs +42 -0
  308. package/dist/templates/audit/gdpr/data-flow-map.md.ejs +30 -0
  309. package/dist/templates/audit/gdpr/dpia.md.ejs +45 -0
  310. package/dist/templates/audit/generic/audit-gate-rules.md.ejs +24 -0
  311. package/dist/templates/audit/generic/audit-trail-policy.md.ejs +38 -0
  312. package/dist/templates/audit/iso27001/iso27001-controls-gate-map.md.ejs +60 -0
  313. package/dist/templates/auth/setup.md.ejs +661 -0
  314. package/dist/templates/behavioral-tests/ExampleBehavioralTest.java.ejs +67 -0
  315. package/dist/templates/behavioral-tests/TESTING_POLICY.md.ejs +116 -0
  316. package/dist/templates/behavioral-tests/bdd/ExampleBddIT.java.ejs +19 -0
  317. package/dist/templates/behavioral-tests/bdd/ExampleSteps.java.ejs +61 -0
  318. package/dist/templates/behavioral-tests/bdd/example.feature.ejs +14 -0
  319. package/dist/templates/behavioral-tests/bdd/example.steps.ts.ejs +37 -0
  320. package/dist/templates/behavioral-tests/bdd/example_bdd_test.rs.ejs +64 -0
  321. package/dist/templates/behavioral-tests/bdd/example_test.go.ejs +80 -0
  322. package/dist/templates/behavioral-tests/bdd/test_example_bdd.py.ejs +47 -0
  323. package/dist/templates/behavioral-tests/eslint-playwright.json.ejs +10 -0
  324. package/dist/templates/behavioral-tests/eslint.config.playwright.mjs.ejs +29 -0
  325. package/dist/templates/behavioral-tests/example.behavioral.test.ts.ejs +47 -0
  326. package/dist/templates/behavioral-tests/example_behavioral_test.go.ejs +51 -0
  327. package/dist/templates/behavioral-tests/example_behavioral_test.rs.ejs +47 -0
  328. package/dist/templates/behavioral-tests/test_example_behavioral.py.ejs +40 -0
  329. package/dist/templates/boundaries/.eslintrc-boundaries.cjs.ejs +81 -0
  330. package/dist/templates/boundaries/.eslintrc-frontend-spa.cjs.ejs +79 -0
  331. package/dist/templates/boundaries/.importlinter.ejs +48 -0
  332. package/dist/templates/boundaries/check-boundaries-go.mjs.ejs +94 -0
  333. package/dist/templates/boundaries/check-boundaries-python.mjs.ejs +118 -0
  334. package/dist/templates/boundaries/check-boundaries-rust.mjs.ejs +111 -0
  335. package/dist/templates/boundaries/check-boundaries.mjs.ejs +34 -0
  336. package/dist/templates/boundaries/clippy.toml.ejs +50 -0
  337. package/dist/templates/boundaries/deny.toml.ejs +56 -0
  338. package/dist/templates/boundaries/eslint.config.boundaries.mjs.ejs +112 -0
  339. package/dist/templates/boundaries/eslint.config.frontend-spa.mjs.ejs +93 -0
  340. package/dist/templates/boundaries/golangci-boundaries.yml.ejs +70 -0
  341. package/dist/templates/boundaries/ruff-boundaries.toml.ejs +32 -0
  342. package/dist/templates/claude/CLAUDE.md.ejs +78 -0
  343. package/dist/templates/claude/agents/agent-write-classes.json +30 -0
  344. package/dist/templates/claude/agents/bridge-reviewer.md.ejs +68 -0
  345. package/dist/templates/claude/agents/codebase-scanner.md.ejs +69 -0
  346. package/dist/templates/claude/agents/context-checker.md.ejs +73 -0
  347. package/dist/templates/claude/agents/red-team.md.ejs +134 -0
  348. package/dist/templates/claude/commands/close-gold-gap.md.ejs +43 -0
  349. package/dist/templates/claude/commands/drain.md.ejs +81 -0
  350. package/dist/templates/claude/commands/gold-audit.md.ejs +43 -0
  351. package/dist/templates/claude/commands/impact.md.ejs +39 -0
  352. package/dist/templates/claude/commands/levelup.md.ejs +61 -0
  353. package/dist/templates/claude/commands/ship.md.ejs +902 -0
  354. package/dist/templates/claude/commands/tabletop.md.ejs +46 -0
  355. package/dist/templates/claude/commands/task.md.ejs +87 -0
  356. package/dist/templates/claude/commands/wt-close.md.ejs +58 -0
  357. package/dist/templates/claude/commands/wt-list.md.ejs +48 -0
  358. package/dist/templates/claude/commands/wt-open.md.ejs +61 -0
  359. package/dist/templates/claude/commands/wt-prune.md.ejs +38 -0
  360. package/dist/templates/claude/hooks/check-circular-deps.mjs.ejs +56 -0
  361. package/dist/templates/claude/hooks/check-no-orphan-todo.mjs.ejs +45 -0
  362. package/dist/templates/claude/hooks/check-no-pii.mjs.ejs +121 -0
  363. package/dist/templates/claude/hooks/check-no-placeholders.mjs.ejs +71 -0
  364. package/dist/templates/claude/hooks/check-no-skipped-tests.mjs +80 -0
  365. package/dist/templates/claude/hooks/check-no-unused-exports.mjs +62 -0
  366. package/dist/templates/claude/hooks/closer-mode-guard.mjs.ejs +102 -0
  367. package/dist/templates/claude/hooks/debug-state-on-failure.mjs.ejs +98 -0
  368. package/dist/templates/claude/hooks/enforce-gate-before-pr.mjs +142 -0
  369. package/dist/templates/claude/hooks/enforce-read-only.mjs +28 -0
  370. package/dist/templates/claude/hooks/exitplanmode-banner.mjs.ejs +43 -0
  371. package/dist/templates/claude/hooks/guard-done-evidence.mjs.ejs +85 -0
  372. package/dist/templates/claude/hooks/guard-task-completion.mjs.ejs +56 -0
  373. package/dist/templates/claude/hooks/hooks.mjs.ejs +127 -0
  374. package/dist/templates/claude/hooks/lib.mjs.ejs +523 -0
  375. package/dist/templates/claude/hooks/post-brainstorm-stop.mjs +48 -0
  376. package/dist/templates/claude/hooks/post-commit-check.mjs.ejs +65 -0
  377. package/dist/templates/claude/hooks/post-commit-checklists/go/backend.ejs +4 -0
  378. package/dist/templates/claude/hooks/post-commit-checklists/go/docs.ejs +4 -0
  379. package/dist/templates/claude/hooks/post-commit-checklists/go/frontend.ejs +4 -0
  380. package/dist/templates/claude/hooks/post-commit-checklists/java/backend.ejs +4 -0
  381. package/dist/templates/claude/hooks/post-commit-checklists/java/docs.ejs +4 -0
  382. package/dist/templates/claude/hooks/post-commit-checklists/java/frontend.ejs +4 -0
  383. package/dist/templates/claude/hooks/post-commit-checklists/python/backend.ejs +4 -0
  384. package/dist/templates/claude/hooks/post-commit-checklists/python/docs.ejs +4 -0
  385. package/dist/templates/claude/hooks/post-commit-checklists/python/frontend.ejs +4 -0
  386. package/dist/templates/claude/hooks/post-commit-checklists/rust/backend.ejs +5 -0
  387. package/dist/templates/claude/hooks/post-commit-checklists/rust/docs.ejs +4 -0
  388. package/dist/templates/claude/hooks/post-commit-checklists/rust/frontend.ejs +4 -0
  389. package/dist/templates/claude/hooks/post-commit-checklists/ts/backend.ejs +4 -0
  390. package/dist/templates/claude/hooks/post-commit-checklists/ts/docs.ejs +4 -0
  391. package/dist/templates/claude/hooks/post-commit-checklists/ts/frontend.ejs +5 -0
  392. package/dist/templates/claude/hooks/post-edit-dispatch.mjs.ejs +73 -0
  393. package/dist/templates/claude/hooks/post-subagent-release.mjs +80 -0
  394. package/dist/templates/claude/hooks/pre-compact.mjs.ejs +79 -0
  395. package/dist/templates/claude/hooks/pre-edit-plan-anchor.mjs.ejs +225 -0
  396. package/dist/templates/claude/hooks/pre-edit-ssot-guard.mjs +204 -0
  397. package/dist/templates/claude/hooks/pre-spawn-worktree-guard.mjs +129 -0
  398. package/dist/templates/claude/hooks/skill-forced-eval.mjs.ejs +281 -0
  399. package/dist/templates/claude/hooks/stop-dangerous.mjs +86 -0
  400. package/dist/templates/claude/hooks/stop-evidence-guard.mjs.ejs +245 -0
  401. package/dist/templates/claude/hooks/stop-finding-loss.mjs.ejs +168 -0
  402. package/dist/templates/claude/hooks/wiki-on-commit.mjs.ejs +38 -0
  403. package/dist/templates/claude/knowledge-map.json.ejs +26 -0
  404. package/dist/templates/claude/rules/05-agent-lifecycle.md +7 -0
  405. package/dist/templates/claude/rules/25-todo-folder-policy.md +5 -0
  406. package/dist/templates/claude/rules/40-context-economy.md +32 -0
  407. package/dist/templates/claude/rules/45-mcp-fallback.md +25 -0
  408. package/dist/templates/claude/rules/50-batch-execution.md +75 -0
  409. package/dist/templates/claude/rules/55-brainstorm-terminal-state.md +44 -0
  410. package/dist/templates/claude/rules/60-incidental-capture.md +43 -0
  411. package/dist/templates/claude/rules/75-impact-vault-reading.md +43 -0
  412. package/dist/templates/claude/rules/90-exec-protocol.md.ejs +40 -0
  413. package/dist/templates/claude/rules/95-closer-mode.md +45 -0
  414. package/dist/templates/claude/settings.json.ejs +165 -0
  415. package/dist/templates/claude/skills/architect-review/SKILL.md.ejs +82 -0
  416. package/dist/templates/claude/skills/brainstorming/SKILL.md.ejs +86 -0
  417. package/dist/templates/claude/skills/clean-code/SKILL.md.ejs +39 -0
  418. package/dist/templates/claude/skills/close-gold-gap/SKILL.md.ejs +58 -0
  419. package/dist/templates/claude/skills/codebase-audit/SKILL.md.ejs +88 -0
  420. package/dist/templates/claude/skills/configure/SKILL.md.ejs +72 -0
  421. package/dist/templates/claude/skills/epic-decompose/SKILL.md.ejs +86 -0
  422. package/dist/templates/claude/skills/gold-audit/SKILL.md.ejs +91 -0
  423. package/dist/templates/claude/skills/impact/SKILL.md.ejs +104 -0
  424. package/dist/templates/claude/skills/levelup/SKILL.md.ejs +146 -0
  425. package/dist/templates/claude/skills/tabletop/SKILL.md.ejs +118 -0
  426. package/dist/templates/claude/skills/tdd/SKILL.md.ejs +157 -0
  427. package/dist/templates/claude/skills/understand-code/SKILL.md.ejs +93 -0
  428. package/dist/templates/claude/skills/verification/SKILL.md.ejs +68 -0
  429. package/dist/templates/claude/skills/wave-drain/SKILL.md.ejs +491 -0
  430. package/dist/templates/codex/CODEX.md.ejs +140 -0
  431. package/dist/templates/codex/codex-adapter.mjs +132 -0
  432. package/dist/templates/codex/config.toml.ejs +189 -0
  433. package/dist/templates/compliance/compliance-mapping.md.ejs +124 -0
  434. package/dist/templates/compliance/compliance-menu.md.ejs +89 -0
  435. package/dist/templates/contract-testing/CONTRACTS_POLICY.md.ejs +30 -0
  436. package/dist/templates/contract-testing/api-snapshots/config-keys-baseline.json.ejs +1 -0
  437. package/dist/templates/contract-testing/api-snapshots/config-response-baseline.json.ejs +1 -0
  438. package/dist/templates/contract-testing/api-snapshots/enum-values-baseline.json.ejs +1 -0
  439. package/dist/templates/contract-testing/api-snapshots/error-shape-baseline.json.ejs +6 -0
  440. package/dist/templates/contract-testing/api-snapshots/openapi-baseline.json.ejs +12 -0
  441. package/dist/templates/contract-testing/api-snapshots/openapi-content-types-baseline.json.ejs +3 -0
  442. package/dist/templates/contract-testing/api-snapshots/openapi-paths-baseline.json.ejs +1 -0
  443. package/dist/templates/contract-testing/api-snapshots/openapi-required-fields-baseline.json.ejs +1 -0
  444. package/dist/templates/contract-testing/api-snapshots/openapi-response-status-baseline.json.ejs +3 -0
  445. package/dist/templates/contract-testing/api-snapshots/test-snapshot.json.ejs +4 -0
  446. package/dist/templates/contract-testing/env/.env.pact.ejs +4 -0
  447. package/dist/templates/contract-testing/graphql/GraphqlSchemaTest.java.ejs +29 -0
  448. package/dist/templates/contract-testing/graphql/graphql-inspector.test.ts.ejs +20 -0
  449. package/dist/templates/contract-testing/graphql/graphql_schema_test.go.ejs +27 -0
  450. package/dist/templates/contract-testing/graphql/graphql_schema_test.rs.ejs +27 -0
  451. package/dist/templates/contract-testing/graphql/test_graphql_schema.py.ejs +21 -0
  452. package/dist/templates/contract-testing/grpc/GrpcContractTest.java.ejs +23 -0
  453. package/dist/templates/contract-testing/grpc/buf-breaking.yml.ejs +6 -0
  454. package/dist/templates/contract-testing/grpc/buf.yaml.ejs +11 -0
  455. package/dist/templates/contract-testing/grpc/grpc-contract.test.ts.ejs +16 -0
  456. package/dist/templates/contract-testing/grpc/grpc_contract_test.go.ejs +22 -0
  457. package/dist/templates/contract-testing/grpc/grpc_contract_test.rs.ejs +22 -0
  458. package/dist/templates/contract-testing/grpc/test_grpc_contract.py.ejs +18 -0
  459. package/dist/templates/contract-testing/message-queue/SchemaRegistryCheckIT.java.ejs +44 -0
  460. package/dist/templates/contract-testing/message-queue/schema-registry-check.ts.ejs +42 -0
  461. package/dist/templates/contract-testing/message-queue/schema_registry_test.go.ejs +71 -0
  462. package/dist/templates/contract-testing/message-queue/schema_registry_test.rs.ejs +61 -0
  463. package/dist/templates/contract-testing/message-queue/test_schema_registry.py.ejs +31 -0
  464. package/dist/templates/contract-testing/pact-samples/assignment-response.json.ejs +7 -0
  465. package/dist/templates/contract-testing/pact-samples/availability-response.json.ejs +13 -0
  466. package/dist/templates/contract-testing/pact-samples/availability-rule-response.json.ejs +8 -0
  467. package/dist/templates/contract-testing/pact-samples/capacity-response.json.ejs +11 -0
  468. package/dist/templates/contract-testing/pact-samples/fully-booked-response.json.ejs +6 -0
  469. package/dist/templates/contract-testing/pact-samples/schedule-override-response.json.ejs +7 -0
  470. package/dist/templates/contract-testing/rest-owned/PactVerificationIT.java.ejs +31 -0
  471. package/dist/templates/contract-testing/rest-owned/pact-consumer.test.ts.ejs +36 -0
  472. package/dist/templates/contract-testing/rest-owned/pact-deps.gradle.ejs +15 -0
  473. package/dist/templates/contract-testing/rest-owned/pact_consumer_test.go.ejs +48 -0
  474. package/dist/templates/contract-testing/rest-owned/pact_consumer_test.rs.ejs +23 -0
  475. package/dist/templates/contract-testing/rest-owned/test_pact_consumer.py.ejs +35 -0
  476. package/dist/templates/contract-testing/rest-public/OpenApiDiffIT.java.ejs +44 -0
  477. package/dist/templates/contract-testing/rest-public/export-openapi-java.gradle.ejs +13 -0
  478. package/dist/templates/contract-testing/rest-public/export-openapi.mjs.ejs +21 -0
  479. package/dist/templates/contract-testing/rest-public/export_openapi.go.ejs +30 -0
  480. package/dist/templates/contract-testing/rest-public/export_openapi.py.ejs +27 -0
  481. package/dist/templates/contract-testing/rest-public/export_openapi.rs.ejs +32 -0
  482. package/dist/templates/contract-testing/rest-public/openapi-diff.ts.ejs +42 -0
  483. package/dist/templates/contract-testing/rest-public/openapi_diff_test.go.ejs +35 -0
  484. package/dist/templates/contract-testing/rest-public/openapi_diff_test.rs.ejs +36 -0
  485. package/dist/templates/contract-testing/rest-public/test_openapi_diff.py.ejs +32 -0
  486. package/dist/templates/coverage/.coveragerc.ejs +26 -0
  487. package/dist/templates/coverage/.tarpaulin.toml.ejs +30 -0
  488. package/dist/templates/coverage/Cargo.toml.profile.release.ejs +24 -0
  489. package/dist/templates/coverage/jacoco-maven-setup.md.ejs +72 -0
  490. package/dist/templates/coverage/jacoco.gradle.ejs +49 -0
  491. package/dist/templates/coverage/kover.gradle.ejs +35 -0
  492. package/dist/templates/coverage/vitest.browser.config.ts.ejs +47 -0
  493. package/dist/templates/coverage/vitest.config.ts.ejs +47 -0
  494. package/dist/templates/docs/CODING_STANDARDS.md.ejs +81 -0
  495. package/dist/templates/docs/FEATURE_MATRIX.md.ejs +84 -0
  496. package/dist/templates/docs/GAP.md.ejs +58 -0
  497. package/dist/templates/docs/ISO27001_ANNEX_A.md.ejs +144 -0
  498. package/dist/templates/docs/MASTER_TEST_PLAN.md.ejs +52 -0
  499. package/dist/templates/docs/POST_MERGE_REVIEW_TEMPLATE.md.ejs +63 -0
  500. package/dist/templates/docs/SECURE_CODING_CHECKLIST.md.ejs +61 -0
  501. package/dist/templates/docs/adr/ADR-000_template.md.ejs +28 -0
  502. package/dist/templates/docs/bugs/bug-analysis.md.ejs +47 -0
  503. package/dist/templates/docs/bugs/bug-report.md.ejs +51 -0
  504. package/dist/templates/docs/bugs/bug-verification.md.ejs +42 -0
  505. package/dist/templates/docs/runbooks/deployment.md.ejs +119 -0
  506. package/dist/templates/docs/runbooks/prod-checklist.md.ejs +90 -0
  507. package/dist/templates/docs/runbooks/rollback.md.ejs +124 -0
  508. package/dist/templates/docs/runbooks/troubleshooting.md.ejs +130 -0
  509. package/dist/templates/docs/skeletons/arc42-canvas.md.ejs +46 -0
  510. package/dist/templates/docs/skeletons/arc42-full.md.ejs +59 -0
  511. package/dist/templates/docs/skeletons/decision-registry.md.ejs +38 -0
  512. package/dist/templates/docs/skeletons/er-model.md.ejs +19 -0
  513. package/dist/templates/docs/skeletons/glossary.md.ejs +8 -0
  514. package/dist/templates/docs/skeletons/governance.md.ejs +13 -0
  515. package/dist/templates/docs/skeletons/slo.md.ejs +21 -0
  516. package/dist/templates/docs/skeletons/technical-debt.md.ejs +8 -0
  517. package/dist/templates/docs/skeletons/test-strategy.md.ejs +14 -0
  518. package/dist/templates/docs/skeletons/threat-model-4q.md.ejs +20 -0
  519. package/dist/templates/docs/skeletons/threat-model-stride.md.ejs +22 -0
  520. package/dist/templates/docs/specs/atomic-task-list.md.ejs +57 -0
  521. package/dist/templates/docs/steering/product.md.ejs +44 -0
  522. package/dist/templates/docs/steering/structure.md.ejs +49 -0
  523. package/dist/templates/docs/steering/tech.md.ejs +53 -0
  524. package/dist/templates/documentation/cli-catalog.md.ejs +21 -0
  525. package/dist/templates/e2e/E2E_CONSTITUTION.md.ejs +77 -0
  526. package/dist/templates/e2e/playwright-python/conftest.py.ejs +22 -0
  527. package/dist/templates/e2e/playwright-python/run_axe.py.ejs +99 -0
  528. package/dist/templates/e2e/playwright-python/test_a11y.py.ejs +38 -0
  529. package/dist/templates/e2e/playwright-python/test_smoke.py.ejs +28 -0
  530. package/dist/templates/e2e/playwright-ts/a11y.spec.ts.ejs +20 -0
  531. package/dist/templates/e2e/playwright-ts/render-smoke.spec.ts.ejs +90 -0
  532. package/dist/templates/e2e/playwright-ts/run-axe.ts.ejs +74 -0
  533. package/dist/templates/e2e/smoke-journeys/journeys.spec.ts.ejs +53 -0
  534. package/dist/templates/evidence-files.json.ejs +13 -0
  535. package/dist/templates/frontend/FE_DESIGN_PRINCIPLES.md.ejs +115 -0
  536. package/dist/templates/frontend/FRONTEND_CONSTITUTION.md.ejs +170 -0
  537. package/dist/templates/frontend/design-tokens.json.ejs +107 -0
  538. package/dist/templates/frontend/vrt-setup.md.ejs +83 -0
  539. package/dist/templates/githooks/commit-msg.ejs +60 -0
  540. package/dist/templates/githooks/pre-commit.ejs +95 -0
  541. package/dist/templates/githooks/pre-push.ejs +251 -0
  542. package/dist/templates/githooks/setup-hooks.sh.ejs +8 -0
  543. package/dist/templates/github/PULL_REQUEST_TEMPLATE.md +37 -0
  544. package/dist/templates/github/PULL_REQUEST_TEMPLATE.md.ejs +52 -0
  545. package/dist/templates/github/actions/build-cache/action.yml.ejs +84 -0
  546. package/dist/templates/github/actions/nas-ssh/action.yml.ejs +53 -0
  547. package/dist/templates/github/actions/setup-java-maven/action.yml.ejs +53 -0
  548. package/dist/templates/github/actions/setup-node-pnpm/action.yml.ejs +39 -0
  549. package/dist/templates/github/actions/sign-and-attest/action.yml.ejs +53 -0
  550. package/dist/templates/github/dependabot.yml.ejs +66 -0
  551. package/dist/templates/github/extended-ci-paths.txt.ejs +38 -0
  552. package/dist/templates/github/issue-templates/bug-report.yml +72 -0
  553. package/dist/templates/github/issue-templates/compliance-item.yml.ejs +75 -0
  554. package/dist/templates/github/issue-templates/config.yml +2 -0
  555. package/dist/templates/github/issue-templates/epic.yml +66 -0
  556. package/dist/templates/github/issue-templates/feature-request.yml +24 -0
  557. package/dist/templates/github/issue-templates/task-brief.yml.ejs +125 -0
  558. package/dist/templates/github/labels.yml.ejs +161 -0
  559. package/dist/templates/github/scripts/sticky-failure-issue.sh.ejs +61 -0
  560. package/dist/templates/github/workflows/01-pr-fast.yml.ejs +1089 -0
  561. package/dist/templates/github/workflows/02-pr-extended.yml.ejs +512 -0
  562. package/dist/templates/github/workflows/03-human-approval.yml.ejs +76 -0
  563. package/dist/templates/github/workflows/04-deploy-test.yml.ejs +425 -0
  564. package/dist/templates/github/workflows/05-release.yml.ejs +813 -0
  565. package/dist/templates/github/workflows/06-nightly-lite.yml.ejs +125 -0
  566. package/dist/templates/github/workflows/06-nightly.yml.ejs +25 -0
  567. package/dist/templates/github/workflows/07-weekly-lite.yml.ejs +221 -0
  568. package/dist/templates/github/workflows/07-weekly.yml.ejs +23 -0
  569. package/dist/templates/github/workflows/08-monthly.yml.ejs +23 -0
  570. package/dist/templates/github/workflows/09-heartbeat.yml.ejs +268 -0
  571. package/dist/templates/github/workflows/10-deploy-prod.yml.ejs +144 -0
  572. package/dist/templates/github/workflows/11-k6-on-demand.yml.ejs +43 -0
  573. package/dist/templates/github/workflows/12-mutation-scheduled.yml.ejs +100 -0
  574. package/dist/templates/github/workflows/13-archunit-extended.yml.ejs +33 -0
  575. package/dist/templates/github/workflows/14-license-scan.yml.ejs +45 -0
  576. package/dist/templates/github/workflows/15-codeql.yml.ejs +117 -0
  577. package/dist/templates/github/workflows/16-frontend-quality.yml.ejs +154 -0
  578. package/dist/templates/github/workflows/17-ossf-scorecard.yml.ejs +46 -0
  579. package/dist/templates/github/workflows/18-frontend-lane.yml.ejs +50 -0
  580. package/dist/templates/github/workflows/_ai-draft-check.yml.ejs +44 -0
  581. package/dist/templates/github/workflows/_contract-postman.yml.ejs +93 -0
  582. package/dist/templates/github/workflows/_cosign-copy/aws-ecs.ejs +90 -0
  583. package/dist/templates/github/workflows/_cosign-copy/azure-container-app.ejs +97 -0
  584. package/dist/templates/github/workflows/_cosign-copy/gcp-cloud-run.ejs +102 -0
  585. package/dist/templates/github/workflows/_cosign-copy/ghcr.ejs +76 -0
  586. package/dist/templates/github/workflows/_cosign-copy/nas-compose.ejs +69 -0
  587. package/dist/templates/github/workflows/_deploy/aws-ecs.ejs +78 -0
  588. package/dist/templates/github/workflows/_deploy/azure-container-app.ejs +59 -0
  589. package/dist/templates/github/workflows/_deploy/gcp-cloud-run.ejs +71 -0
  590. package/dist/templates/github/workflows/_deploy/ghcr.ejs +19 -0
  591. package/dist/templates/github/workflows/_deploy/nas-compose.ejs +45 -0
  592. package/dist/templates/github/workflows/_k6-runner.yml.ejs +107 -0
  593. package/dist/templates/github/workflows/_label-on-approve.yml.ejs +44 -0
  594. package/dist/templates/github/workflows/_label-sync.yml.ejs +58 -0
  595. package/dist/templates/github/workflows/_monthly.yml.ejs +343 -0
  596. package/dist/templates/github/workflows/_nightly.yml.ejs +826 -0
  597. package/dist/templates/github/workflows/_notify.yml.ejs +96 -0
  598. package/dist/templates/github/workflows/_partials/macos-keychain-bypass.ejs +6 -0
  599. package/dist/templates/github/workflows/_partials/macos-keychain-restore.ejs +6 -0
  600. package/dist/templates/github/workflows/_partials/scheduled-heavy-jobs.ejs +117 -0
  601. package/dist/templates/github/workflows/_partials/sigstore-preflight.ejs +8 -0
  602. package/dist/templates/github/workflows/_partials/trivy-fs-java.ejs +27 -0
  603. package/dist/templates/github/workflows/_post-merge-notify.yml.ejs +228 -0
  604. package/dist/templates/github/workflows/_pr-staleness.yml.ejs +85 -0
  605. package/dist/templates/github/workflows/_shared-security.yml.ejs +132 -0
  606. package/dist/templates/github/workflows/_sigstore-retry-sign.yml.ejs +102 -0
  607. package/dist/templates/github/workflows/_weekly.yml.ejs +313 -0
  608. package/dist/templates/github/workflows/drift-shadow.yml.ejs +51 -0
  609. package/dist/templates/github/workflows/five-lane/ci.yml.ejs +54 -0
  610. package/dist/templates/github/workflows/five-lane/nightly.yml.ejs +70 -0
  611. package/dist/templates/github/workflows/five-lane/release.yml.ejs +53 -0
  612. package/dist/templates/github/workflows/five-lane/weekly.yml.ejs +72 -0
  613. package/dist/templates/github/workflows/issue-state.yml.ejs +93 -0
  614. package/dist/templates/global-invariants/GLOBAL_INVARIANTS.md.ejs +34 -0
  615. package/dist/templates/governance/RACI.md.ejs +21 -0
  616. package/dist/templates/governance/ci-mental-model.md.ejs +268 -0
  617. package/dist/templates/governance/contract-integrity-policy.md.ejs +116 -0
  618. package/dist/templates/governance/enterprise-compliance-baseline.md.ejs +111 -0
  619. package/dist/templates/governance/evidence-retention.md.ejs +43 -0
  620. package/dist/templates/governance/gdpr-erasure-runbook.md.ejs +165 -0
  621. package/dist/templates/governance/qa-audit-phases.md.ejs +129 -0
  622. package/dist/templates/governance/risk-assessment-template.md.ejs +105 -0
  623. package/dist/templates/governance/risk-register.md.ejs +76 -0
  624. package/dist/templates/governance/solo-dev-exception.md.ejs +96 -0
  625. package/dist/templates/governance/validation-evidence.md.ejs +131 -0
  626. package/dist/templates/infra/azure/containerapp.tpl.yaml.ejs +74 -0
  627. package/dist/templates/infra/nas-compose/deploy.sh.ejs +114 -0
  628. package/dist/templates/integration-testing/AbstractIntegrationTest.java.ejs +36 -0
  629. package/dist/templates/integration-testing/NoH2ArchTest.java.ejs +24 -0
  630. package/dist/templates/integration-testing/conftest.py.ejs +20 -0
  631. package/dist/templates/integration-testing/db_fixture.rs.ejs +48 -0
  632. package/dist/templates/integration-testing/eslint-no-fake-db.json.ejs +19 -0
  633. package/dist/templates/integration-testing/eslint.config.no-fake-db.mjs.ejs +46 -0
  634. package/dist/templates/integration-testing/main_test.go.ejs +53 -0
  635. package/dist/templates/integration-testing/main_test_sqlite.go.ejs +37 -0
  636. package/dist/templates/integration-testing/test-setup.ts.ejs +26 -0
  637. package/dist/templates/integration-testing/testcontainers-deps.gradle.ejs +9 -0
  638. package/dist/templates/java/DeprecationInterceptor.java.ejs +50 -0
  639. package/dist/templates/java/archunit-hexagonal.ejs +69 -0
  640. package/dist/templates/java/modulith/ApplicationModulesTest.java.ejs +21 -0
  641. package/dist/templates/java/modulith/modulith-deps.gradle.ejs +13 -0
  642. package/dist/templates/java/modulith/modulith-maven-setup.md.ejs +21 -0
  643. package/dist/templates/java/pharma/AuditEvent.java.ejs +138 -0
  644. package/dist/templates/java/pharma/AuditMapper.java.ejs +60 -0
  645. package/dist/templates/java/pharma/archunit-pharma.ejs +128 -0
  646. package/dist/templates/kit/GLOBAL_KIT.md.ejs +11 -0
  647. package/dist/templates/kit/dim.md.ejs +33 -0
  648. package/dist/templates/llms-txt.config.json.ejs +22 -0
  649. package/dist/templates/local-wrapper/.env.example.ejs +15 -0
  650. package/dist/templates/local-wrapper/Makefile.ejs +44 -0
  651. package/dist/templates/local-wrapper/run.sh.ejs +5 -0
  652. package/dist/templates/middleware/410-gone-handler.ts.ejs +41 -0
  653. package/dist/templates/middleware/correlation-id.ts.ejs +32 -0
  654. package/dist/templates/middleware/deprecation.ts.ejs +45 -0
  655. package/dist/templates/middleware/error-handler.ts.ejs +73 -0
  656. package/dist/templates/middleware/payload-size-limit.ts.ejs +51 -0
  657. package/dist/templates/mutation/README.md.ejs +67 -0
  658. package/dist/templates/mutation/cargo-mutants.toml.ejs +9 -0
  659. package/dist/templates/mutation/mutmut-config.toml.ejs +7 -0
  660. package/dist/templates/mutation/parse-mutants.mjs.ejs +44 -0
  661. package/dist/templates/mutation/parse-mutmut.py.ejs +44 -0
  662. package/dist/templates/mutation/pitest-l2-setup.md.ejs +66 -0
  663. package/dist/templates/mutation/pitest-maven-setup.md.ejs +64 -0
  664. package/dist/templates/mutation/pitest.gradle.ejs +23 -0
  665. package/dist/templates/mutation/stryker.conf.json.ejs +17 -0
  666. package/dist/templates/observability/setup.md.ejs +495 -0
  667. package/dist/templates/operations/handbook.md.ejs +217 -0
  668. package/dist/templates/perf/bundle-budget.json.ejs +29 -0
  669. package/dist/templates/perf/k6/reports/csv-report.py.ejs +91 -0
  670. package/dist/templates/perf/k6/reports/html-report.py.ejs +114 -0
  671. package/dist/templates/perf/k6/reports/json-report.py.ejs +74 -0
  672. package/dist/templates/perf/k6/scenarios/breakpoint.js.ejs +26 -0
  673. package/dist/templates/perf/k6/scenarios/burst.js.ejs +43 -0
  674. package/dist/templates/perf/k6/scenarios/endurance.js.ejs +36 -0
  675. package/dist/templates/perf/k6/scenarios/load.js.ejs +26 -0
  676. package/dist/templates/perf/k6/scenarios/ramp-down.js.ejs +29 -0
  677. package/dist/templates/perf/k6/scenarios/ramp-up.js.ejs +32 -0
  678. package/dist/templates/perf/k6/scenarios/smoke.js.ejs +23 -0
  679. package/dist/templates/perf/k6/scenarios/soak.js.ejs +26 -0
  680. package/dist/templates/perf/k6/scenarios/spike.js.ejs +29 -0
  681. package/dist/templates/perf/k6/scenarios/steady-state.js.ejs +31 -0
  682. package/dist/templates/perf/k6/scenarios/stress.js.ejs +29 -0
  683. package/dist/templates/perf/k6/scenarios/volume.js.ejs +36 -0
  684. package/dist/templates/perf/k6/seed/test-data.sql.ejs +59 -0
  685. package/dist/templates/perf/lighthouserc.json.ejs +41 -0
  686. package/dist/templates/quality/iso9001/CAPA_LOG.md.ejs +36 -0
  687. package/dist/templates/quality/iso9001/DOCUMENT_CONTROL.md.ejs +36 -0
  688. package/dist/templates/quality/iso9001/REQUIREMENTS_TRACEABILITY.md.ejs +61 -0
  689. package/dist/templates/regulated/overlay.json.ejs +26 -0
  690. package/dist/templates/regulated/regulated-overlay.md.ejs +40 -0
  691. package/dist/templates/resilience/RESILIENCE.md.ejs +310 -0
  692. package/dist/templates/root/.gitignore.ejs +85 -0
  693. package/dist/templates/root/CODEOWNERS.ejs +18 -0
  694. package/dist/templates/root/CONTRIBUTING.md.ejs +62 -0
  695. package/dist/templates/root/SECURITY.md.ejs +19 -0
  696. package/dist/templates/root/TEST_TAXONOMY.md.ejs +100 -0
  697. package/dist/templates/root/commitlint.config.js.ejs +4 -0
  698. package/dist/templates/root/docs/METHOD/CANONICAL_PATHS.md.ejs +24 -0
  699. package/dist/templates/root/docs/METHOD/ENGINEERING_DEFAULTS.md.ejs +136 -0
  700. package/dist/templates/root/docs/METHOD/KNOWLEDGE_MAP.md.ejs +90 -0
  701. package/dist/templates/root/docs/METHOD/PATTERNS_CATALOG.md.ejs +51 -0
  702. package/dist/templates/root/docs/METHOD/REUSE_REGISTRY.md.ejs +26 -0
  703. package/dist/templates/root/docs/METHOD/REUSE_REGISTRY_SPEC.md.ejs +80 -0
  704. package/dist/templates/root/docs/METHOD/SSOT_CORE_SET.md.ejs +62 -0
  705. package/dist/templates/root/docs/METHOD/TRACK_ROUTER.md.ejs +39 -0
  706. package/dist/templates/root/docs/SYSTEM/CANON.md.ejs +359 -0
  707. package/dist/templates/root/docs/SYSTEM/FAIL_CLOSED.md.ejs +171 -0
  708. package/dist/templates/root/editorconfig.ejs +39 -0
  709. package/dist/templates/root/tsconfig.json.ejs +21 -0
  710. package/dist/templates/rust/clippy.toml.ejs +14 -0
  711. package/dist/templates/schemas/milestone.schema.json.ejs +164 -0
  712. package/dist/templates/schemas/rtm-verdict.schema.json.ejs +52 -0
  713. package/dist/templates/schemas/source-record.schema.json.ejs +91 -0
  714. package/dist/templates/schemas/tabletop-evidence.schema.json.ejs +53 -0
  715. package/dist/templates/schemas/use-case.schema.json.ejs +59 -0
  716. package/dist/templates/scripts/apply-branch-protection.mjs.ejs +70 -0
  717. package/dist/templates/scripts/audit-toolchain.mjs.ejs +112 -0
  718. package/dist/templates/scripts/bg-run.sh.ejs +59 -0
  719. package/dist/templates/scripts/capacity-probe.mjs.ejs +147 -0
  720. package/dist/templates/scripts/capture-debt-baseline.mjs.ejs +99 -0
  721. package/dist/templates/scripts/check-acceptance.mjs.ejs +298 -0
  722. package/dist/templates/scripts/check-action-pins.mjs.ejs +215 -0
  723. package/dist/templates/scripts/check-agent-return.mjs.ejs +177 -0
  724. package/dist/templates/scripts/check-all.mjs.ejs +1746 -0
  725. package/dist/templates/scripts/check-anti-fake-green.mjs.ejs +80 -0
  726. package/dist/templates/scripts/check-anti-proforma.mjs.ejs +547 -0
  727. package/dist/templates/scripts/check-api-e2e.mjs.ejs +106 -0
  728. package/dist/templates/scripts/check-arc42-slots.mjs.ejs +25 -0
  729. package/dist/templates/scripts/check-assertion-delta.mjs.ejs +287 -0
  730. package/dist/templates/scripts/check-audit-dry-pass.mjs.ejs +176 -0
  731. package/dist/templates/scripts/check-bundle-size.mjs.ejs +151 -0
  732. package/dist/templates/scripts/check-canonical-paths.mjs.ejs +39 -0
  733. package/dist/templates/scripts/check-ci-tiers.mjs.ejs +111 -0
  734. package/dist/templates/scripts/check-claude-md-lint.mjs.ejs +142 -0
  735. package/dist/templates/scripts/check-collab-mode-wired.mjs.ejs +60 -0
  736. package/dist/templates/scripts/check-commit-footer-rationale.mjs.ejs +170 -0
  737. package/dist/templates/scripts/check-constraint-scan.mjs.ejs +681 -0
  738. package/dist/templates/scripts/check-consumer-audit.mjs.ejs +414 -0
  739. package/dist/templates/scripts/check-continue-on-error.mjs.ejs +227 -0
  740. package/dist/templates/scripts/check-cross-model-review.mjs.ejs +458 -0
  741. package/dist/templates/scripts/check-decision-registry.mjs.ejs +101 -0
  742. package/dist/templates/scripts/check-doc-freshness.mjs.ejs +17 -0
  743. package/dist/templates/scripts/check-doc-links.mjs.ejs +98 -0
  744. package/dist/templates/scripts/check-doc-set.mjs.ejs +18 -0
  745. package/dist/templates/scripts/check-docs.mjs.ejs +71 -0
  746. package/dist/templates/scripts/check-domain-api-surface.mjs.ejs +80 -0
  747. package/dist/templates/scripts/check-drift.mjs.ejs +167 -0
  748. package/dist/templates/scripts/check-duplication.mjs.ejs +45 -0
  749. package/dist/templates/scripts/check-e2e-escalation.mjs.ejs +199 -0
  750. package/dist/templates/scripts/check-e2e-quarantine.mjs.ejs +68 -0
  751. package/dist/templates/scripts/check-emission-parity.mjs.ejs +91 -0
  752. package/dist/templates/scripts/check-exit-code-contract.mjs.ejs +138 -0
  753. package/dist/templates/scripts/check-fail-closed-audit.mjs.ejs +389 -0
  754. package/dist/templates/scripts/check-fe-boundaries.mjs.ejs +184 -0
  755. package/dist/templates/scripts/check-feature-matrix.mjs.ejs +835 -0
  756. package/dist/templates/scripts/check-frontend-lane.mjs.ejs +73 -0
  757. package/dist/templates/scripts/check-grace-window.mjs.ejs +102 -0
  758. package/dist/templates/scripts/check-handoff-doc.mjs.ejs +192 -0
  759. package/dist/templates/scripts/check-hook-routing.mjs.ejs +224 -0
  760. package/dist/templates/scripts/check-image-pins.mjs.ejs +90 -0
  761. package/dist/templates/scripts/check-inline-suppressions.mjs.ejs +153 -0
  762. package/dist/templates/scripts/check-iso9001.mjs.ejs +146 -0
  763. package/dist/templates/scripts/check-knowledge-map.mjs.ejs +49 -0
  764. package/dist/templates/scripts/check-local-ci-parity.mjs.ejs +382 -0
  765. package/dist/templates/scripts/check-m16-handoff.mjs.ejs +112 -0
  766. package/dist/templates/scripts/check-merge-method.mjs.ejs +92 -0
  767. package/dist/templates/scripts/check-milestones.mjs.ejs +678 -0
  768. package/dist/templates/scripts/check-min-test-execution.mjs.ejs +225 -0
  769. package/dist/templates/scripts/check-muted-test.mjs.ejs +270 -0
  770. package/dist/templates/scripts/check-no-stub-redirects.mjs.ejs +154 -0
  771. package/dist/templates/scripts/check-no-tracked-artifacts.mjs.ejs +134 -0
  772. package/dist/templates/scripts/check-oracle-discrimination.mjs.ejs +244 -0
  773. package/dist/templates/scripts/check-pii-scan.mjs.ejs +67 -0
  774. package/dist/templates/scripts/check-pipe-tee-hazard.mjs.ejs +85 -0
  775. package/dist/templates/scripts/check-pr-size-gate.mjs.ejs +85 -0
  776. package/dist/templates/scripts/check-refutation-verdicts.mjs.ejs +256 -0
  777. package/dist/templates/scripts/check-regulated-overlay.mjs.ejs +158 -0
  778. package/dist/templates/scripts/check-render-smoke.mjs.ejs +100 -0
  779. package/dist/templates/scripts/check-reuse-registry.mjs.ejs +44 -0
  780. package/dist/templates/scripts/check-review-completion.mjs.ejs +708 -0
  781. package/dist/templates/scripts/check-safety-adopt-ratchet.mjs.ejs +142 -0
  782. package/dist/templates/scripts/check-secret-presence.mjs.ejs +191 -0
  783. package/dist/templates/scripts/check-secret-scan.mjs.ejs +82 -0
  784. package/dist/templates/scripts/check-skip-critical-e2e.mjs.ejs +142 -0
  785. package/dist/templates/scripts/check-smoke-journeys.mjs.ejs +272 -0
  786. package/dist/templates/scripts/check-solo-reactivation.mjs.ejs +102 -0
  787. package/dist/templates/scripts/check-sources.mjs.ejs +245 -0
  788. package/dist/templates/scripts/check-ssot-core.mjs.ejs +45 -0
  789. package/dist/templates/scripts/check-stack-conformity.mjs.ejs +160 -0
  790. package/dist/templates/scripts/check-stride-traceability.mjs.ejs +101 -0
  791. package/dist/templates/scripts/check-suppression-expiry.mjs.ejs +79 -0
  792. package/dist/templates/scripts/check-suppression-rationale.mjs.ejs +76 -0
  793. package/dist/templates/scripts/check-suppressions.mjs.ejs +150 -0
  794. package/dist/templates/scripts/check-tabletop-evidence.mjs.ejs +499 -0
  795. package/dist/templates/scripts/check-tdd-evidence.mjs.ejs +381 -0
  796. package/dist/templates/scripts/check-test-naming.mjs.ejs +151 -0
  797. package/dist/templates/scripts/check-test-pyramid.mjs.ejs +170 -0
  798. package/dist/templates/scripts/check-test-scope-tier.mjs.ejs +208 -0
  799. package/dist/templates/scripts/check-tier-coverage.mjs.ejs +71 -0
  800. package/dist/templates/scripts/check-todo-max-age.mjs.ejs +205 -0
  801. package/dist/templates/scripts/check-touched-vs-manifest.mjs.ejs +179 -0
  802. package/dist/templates/scripts/check-unwired-guards.mjs.ejs +367 -0
  803. package/dist/templates/scripts/check-use-cases.mjs.ejs +345 -0
  804. package/dist/templates/scripts/check-validator-helptext.mjs.ejs +80 -0
  805. package/dist/templates/scripts/check-wiki-lint.mjs.ejs +162 -0
  806. package/dist/templates/scripts/check-workflow-docs-sync.mjs.ejs +91 -0
  807. package/dist/templates/scripts/check-workflow-job-naming.mjs.ejs +102 -0
  808. package/dist/templates/scripts/check-workflow-perms.mjs.ejs +54 -0
  809. package/dist/templates/scripts/check-workflow-runners.mjs.ejs +87 -0
  810. package/dist/templates/scripts/check-workflow-sha-pinning.mjs.ejs +89 -0
  811. package/dist/templates/scripts/check-workflow-test-integrity.mjs.ejs +235 -0
  812. package/dist/templates/scripts/checks/check-rust-no-unsafe.mjs.ejs +58 -0
  813. package/dist/templates/scripts/checks/check-rust-no-unwrap.mjs.ejs +61 -0
  814. package/dist/templates/scripts/ci-classify-changes.mjs.ejs +119 -0
  815. package/dist/templates/scripts/conformance.mjs.ejs +37 -0
  816. package/dist/templates/scripts/constraint-map.json.ejs +25 -0
  817. package/dist/templates/scripts/debt-lib.mjs.ejs +1015 -0
  818. package/dist/templates/scripts/debt-report.mjs.ejs +199 -0
  819. package/dist/templates/scripts/domain-api-surface.json.ejs +23 -0
  820. package/dist/templates/scripts/done-evidence.mjs.ejs +359 -0
  821. package/dist/templates/scripts/evidence-collect.mjs.ejs +264 -0
  822. package/dist/templates/scripts/evidence-prune.mjs.ejs +96 -0
  823. package/dist/templates/scripts/evidence-rotate.mjs.ejs +53 -0
  824. package/dist/templates/scripts/evidence-writer.sh.ejs +220 -0
  825. package/dist/templates/scripts/gate-registry.yml.ejs +286 -0
  826. package/dist/templates/scripts/gen-doc-index.mjs.ejs +19 -0
  827. package/dist/templates/scripts/gen-gap.mjs.ejs +153 -0
  828. package/dist/templates/scripts/gen-llms-txt.mjs.ejs +18 -0
  829. package/dist/templates/scripts/gen-wiki.mjs.ejs +196 -0
  830. package/dist/templates/scripts/gh-cleanup-expired-artifacts.mjs.ejs +134 -0
  831. package/dist/templates/scripts/gold-audit.mjs.ejs +19 -0
  832. package/dist/templates/scripts/i18n-literal-scanner.mjs.ejs +175 -0
  833. package/dist/templates/scripts/ingest-zap-report.mjs.ejs +107 -0
  834. package/dist/templates/scripts/inject-pact-samples.sh.ejs +96 -0
  835. package/dist/templates/scripts/issue-readiness.mjs.ejs +84 -0
  836. package/dist/templates/scripts/knowledge-map-update.mjs.ejs +32 -0
  837. package/dist/templates/scripts/lib/acceptance-criteria.mjs.ejs +213 -0
  838. package/dist/templates/scripts/lib/agent-return-validate.mjs.ejs +481 -0
  839. package/dist/templates/scripts/lib/coverage-gate.mjs.ejs +54 -0
  840. package/dist/templates/scripts/lib/e2e-reliability.mjs.ejs +207 -0
  841. package/dist/templates/scripts/lib/ephemeral-server.mjs.ejs +148 -0
  842. package/dist/templates/scripts/lib/evidence-binding.mjs.ejs +140 -0
  843. package/dist/templates/scripts/lib/exact-sha-policy.mjs.ejs +233 -0
  844. package/dist/templates/scripts/lib/gate-args.mjs.ejs +20 -0
  845. package/dist/templates/scripts/lib/gate-evidence.mjs.ejs +622 -0
  846. package/dist/templates/scripts/lib/gate-mutex.mjs.ejs +340 -0
  847. package/dist/templates/scripts/lib/glob-walk.mjs.ejs +148 -0
  848. package/dist/templates/scripts/lib/run-helpers.mjs.ejs +416 -0
  849. package/dist/templates/scripts/lib/seed-common.sh.ejs +105 -0
  850. package/dist/templates/scripts/lib/waiter-count.mjs.ejs +62 -0
  851. package/dist/templates/scripts/muted-tests-baseline.json.ejs +4 -0
  852. package/dist/templates/scripts/optional-emissions.json.ejs +117 -0
  853. package/dist/templates/scripts/oracle-discrimination-baseline.json.ejs +6 -0
  854. package/dist/templates/scripts/pid-watch.sh.ejs +78 -0
  855. package/dist/templates/scripts/pii-scan.mjs.ejs +125 -0
  856. package/dist/templates/scripts/pr-merge-watch.mjs.ejs +445 -0
  857. package/dist/templates/scripts/record-agent-return.mjs.ejs +279 -0
  858. package/dist/templates/scripts/record-journey-evidence.mjs.ejs +69 -0
  859. package/dist/templates/scripts/rework-log.mjs.ejs +172 -0
  860. package/dist/templates/scripts/run-postman-tests.sh.ejs +112 -0
  861. package/dist/templates/scripts/schemas/agent-return-external.schema.json +74 -0
  862. package/dist/templates/scripts/schemas/agent-return.schema.json.ejs +181 -0
  863. package/dist/templates/scripts/schemas/cross-model-dispatch.schema.json +95 -0
  864. package/dist/templates/scripts/seed-test-data.sh.ejs +99 -0
  865. package/dist/templates/scripts/self-validation.mjs.ejs +126 -0
  866. package/dist/templates/scripts/setup-repo.sh.ejs +78 -0
  867. package/dist/templates/scripts/spotbugs-baseline.json.ejs +4 -0
  868. package/dist/templates/scripts/test-gate-layering.mjs.ejs +92 -0
  869. package/dist/templates/scripts/validate-api-snapshots.mjs.ejs +86 -0
  870. package/dist/templates/scripts/validate-k6-scenarios.mjs.ejs +96 -0
  871. package/dist/templates/scripts/validate-openapi-field-types.mjs.ejs +124 -0
  872. package/dist/templates/scripts/validate-postman-collection.mjs.ejs +159 -0
  873. package/dist/templates/scripts/verify-fe-coverage.mjs.ejs +138 -0
  874. package/dist/templates/scripts/verify-i18n-parity.mjs.ejs +114 -0
  875. package/dist/templates/scripts/verify-module-coverage.mjs.ejs +207 -0
  876. package/dist/templates/scripts/verify-mutation-baseline.mjs.ejs +209 -0
  877. package/dist/templates/scripts/verify-spotbugs.mjs.ejs +216 -0
  878. package/dist/templates/scripts/verify-tokens.mjs.ejs +177 -0
  879. package/dist/templates/security/RISK_ASSESSMENT.md.ejs +35 -0
  880. package/dist/templates/security/STRIDE.md.ejs +24 -0
  881. package/dist/templates/security/gitleaks.toml.ejs +21 -0
  882. package/dist/templates/security/zap/baseline-auth.context.ejs +58 -0
  883. package/dist/templates/security/zap/rules.tsv.ejs +100 -0
  884. package/dist/templates/ship/TICK_PROMPT.md.ejs +55 -0
  885. package/dist/templates/ship/supervisor.sh.ejs +46 -0
  886. package/dist/templates/smoke-journeys/manifest.json.ejs +1 -0
  887. package/dist/templates/sonar-project.properties.ejs +25 -0
  888. package/dist/templates/standards/doc-profile.ejs +27 -0
  889. package/dist/templates/standards/gold-doc-set.yml.ejs +528 -0
  890. package/dist/templates/standards/gold-registry.java.yml.ejs +266 -0
  891. package/dist/templates/standards/gold-registry.typescript.yml.ejs +104 -0
  892. package/dist/templates/standards/gold-registry.yml.ejs +119 -0
  893. package/dist/templates/standards/thresholds.yml.ejs +86 -0
  894. package/dist/templates/static-analysis/.dependency-cruiser.cjs.ejs +78 -0
  895. package/dist/templates/static-analysis/.golangci.yml.ejs +70 -0
  896. package/dist/templates/static-analysis/.shellcheckrc.ejs +13 -0
  897. package/dist/templates/static-analysis/.yamllint.yml.ejs +41 -0
  898. package/dist/templates/static-analysis/checkstyle.xml.ejs +83 -0
  899. package/dist/templates/static-analysis/detekt.yml.ejs +26 -0
  900. package/dist/templates/static-analysis/eslint.config.mjs.ejs +54 -0
  901. package/dist/templates/static-analysis/eslint.config.static.mjs.ejs +38 -0
  902. package/dist/templates/static-analysis/eslintrc-static.json.ejs +30 -0
  903. package/dist/templates/static-analysis/jscpd.json.ejs +25 -0
  904. package/dist/templates/static-analysis/knip.json.ejs +26 -0
  905. package/dist/templates/static-analysis/pmd-ruleset.xml.ejs +92 -0
  906. package/dist/templates/static-analysis/prettierignore.ejs +59 -0
  907. package/dist/templates/static-analysis/prettierrc.json.ejs +10 -0
  908. package/dist/templates/static-analysis/requirements-dev.txt.ejs +11 -0
  909. package/dist/templates/static-analysis/ruff.toml.ejs +40 -0
  910. package/dist/templates/static-analysis/rustfmt.toml.ejs +3 -0
  911. package/dist/templates/static-analysis/spotbugs-exclude.xml.ejs +120 -0
  912. package/dist/templates/static-analysis/spotbugs.gradle.ejs +18 -0
  913. package/dist/templates/static-analysis/spotless.gradle.ejs +38 -0
  914. package/dist/templates/static-analysis/stylelintrc.json.ejs +16 -0
  915. package/dist/templates/suppressions/archunit-baseline.json.ejs +1 -0
  916. package/dist/templates/suppressions/consumer-audit-allowlist.json.ejs +1 -0
  917. package/dist/templates/suppressions/gitleaksignore.ejs +20 -0
  918. package/dist/templates/suppressions/pii-allowlist.json.ejs +1 -0
  919. package/dist/templates/suppressions/suppressions-schema.json.ejs +39 -0
  920. package/dist/templates/suppressions/trivyignore.ejs +17 -0
  921. package/dist/templates/testing/test-taxonomy.md.ejs +120 -0
  922. package/dist/test/example.behavioral.test.js +2 -0
  923. package/dist/types/memory.d.ts +19 -0
  924. package/dist/types/memory.js +1 -0
  925. package/dist/types/plan.d.ts +102 -0
  926. package/dist/types/plan.js +2 -0
  927. package/dist/types/plugin.d.ts +45 -0
  928. package/dist/types/plugin.js +1 -0
  929. package/dist/utils/canon-loader.js +2 -0
  930. package/dist/utils/channel.js +1 -0
  931. package/dist/utils/config.d.ts +79 -0
  932. package/dist/utils/config.js +5 -0
  933. package/dist/utils/confirm-downgrade.js +5 -0
  934. package/dist/utils/env.js +2 -0
  935. package/dist/utils/error-catalog.js +2 -0
  936. package/dist/utils/errors.js +2 -0
  937. package/dist/utils/evidence-log.js +3 -0
  938. package/dist/utils/file-lock.js +2 -0
  939. package/dist/utils/first-run.js +8 -0
  940. package/dist/utils/fs.js +3 -0
  941. package/dist/utils/github-issue-helper.js +4 -0
  942. package/dist/utils/gradle.js +21 -0
  943. package/dist/utils/json-output.js +2 -0
  944. package/dist/utils/logger-config.js +4 -0
  945. package/dist/utils/logger.js +3 -0
  946. package/dist/utils/maturity-check.js +2 -0
  947. package/dist/utils/pkg.js +3 -0
  948. package/dist/utils/platform.js +2 -0
  949. package/dist/utils/plugin-loader.js +2 -0
  950. package/dist/utils/plugin-worker.js +2 -0
  951. package/dist/utils/prettier-format.js +2 -0
  952. package/dist/utils/profiler.js +2 -0
  953. package/dist/utils/render.js +2 -0
  954. package/dist/utils/replay.js +3 -0
  955. package/dist/utils/run-cli.js +6 -0
  956. package/dist/utils/run-id.js +3 -0
  957. package/dist/utils/safe-read.js +2 -0
  958. package/dist/utils/task-id.js +2 -0
  959. package/dist/utils/today.js +2 -0
  960. package/dist/utils/tty.js +2 -0
  961. package/dist/utils/walk-dir.js +2 -0
  962. package/dist/verify/rules/drive-by-scope.js +1 -0
  963. package/dist/verify/rules/orphan-todos.js +1 -0
  964. package/dist/verify/rules/registry.js +1 -0
  965. package/dist/verify/rules/skip-patterns.js +1 -0
  966. package/dist/verify/rules/types.d.ts +15 -0
  967. package/dist/verify/rules/types.js +1 -0
  968. package/dist/verify/rules/ui-language.js +1 -0
  969. package/dist/verify/run.js +3 -0
  970. package/dist/wizard/archetype-defaults.js +1 -0
  971. package/dist/wizard/presets.js +1 -0
  972. package/dist/wizard/prompts.js +44 -0
  973. package/dist/wizard/types.d.ts +637 -0
  974. package/dist/wizard/types.js +1 -0
  975. package/dist/worktree/harvest.js +2 -0
  976. package/dist/worktree/links.js +2 -0
  977. package/dist/worktree/paths.js +2 -0
  978. package/dist/worktree/validate.js +3 -0
  979. package/package.json +124 -0
  980. package/scripts/check-arc42-slots.mjs +738 -0
  981. package/scripts/check-doc-freshness.mjs +236 -0
  982. package/scripts/check-doc-set.mjs +243 -0
  983. package/scripts/check-doc-style.mjs +228 -0
  984. package/scripts/gold-audit.mjs +319 -0
  985. package/scripts/lib/doc-gate-allowlist.mjs +123 -0
  986. package/scripts/lib/doc-set-resolve.mjs +274 -0
  987. package/scripts/lib/glob-walk.mjs +148 -0
  988. package/scripts/lib/gold-audit-lib.mjs +1260 -0
  989. package/scripts/lib/run-helpers.mjs +413 -0
@@ -0,0 +1,637 @@
1
+ export type InvariantTier = 'architectural' | 'data' | 'security' | 'operational' | 'governance';
2
+ export type InvariantPreset = 'essential' | 'standard' | 'full';
3
+ type CrossModelReviewProvider = 'codex';
4
+ type CrossModelReviewUnavailablePolicy = 'degrade' | 'fail';
5
+ interface CrossModelReviewConfig {
6
+ enabled: boolean;
7
+ diffEgressConsent: boolean;
8
+ providers: CrossModelReviewProvider[];
9
+ slots: {
10
+ codeReview: number;
11
+ redTeamReview: number;
12
+ };
13
+ timeoutMs: number;
14
+ onUnavailable: CrossModelReviewUnavailablePolicy;
15
+ }
16
+ export type { CrossModelReviewProvider, CrossModelReviewUnavailablePolicy, CrossModelReviewConfig };
17
+ /**
18
+ * Meta-preset that bundles governance, compliance, observability, and auth config
19
+ * into a single opt-in. Providers remain 'none' — user fills them in separately.
20
+ */
21
+ export type ProjectPreset = 'none' | 'industrial-grade' | 'solo-homelab';
22
+ export type WizardFlow = 'greenfield' | 'brownfield';
23
+ /**
24
+ * #1291/#1261 (ADR-093 §4) — ship autonomy level, the Project Profile automation
25
+ * axis. L0 ask-each-step · L1 auto-advance/auto-merge · L2 + fix-on-red attempt ·
26
+ * L3 full-auto wave + autonomous fix push + sub-agent spawn.
27
+ * Lives here (not config/schema.ts) so WizardAnswers can use it without an
28
+ * import cycle; config/schema.ts re-exports it for its existing consumers.
29
+ */
30
+ export type AutonomyLevel = 'L0' | 'L1' | 'L2' | 'L3';
31
+ export interface WizardAnswers {
32
+ description: string;
33
+ tools: AiTool[];
34
+ language: Language;
35
+ governanceLevel: GovernanceLevel;
36
+ invariantPreset?: InvariantPreset;
37
+ archetype: Archetype;
38
+ architectureStyle: ArchitectureStyle;
39
+ hasDatabase: boolean;
40
+ hasPublicApi: boolean;
41
+ isMultiTenant: boolean;
42
+ decompositionBackend?: 'github' | 'markdown';
43
+ /** Phase 9.5 ML: set only when hasPublicApi=true. Absent = default "none". */
44
+ contractType?: ContractType;
45
+ /**
46
+ * ADR-051: collaboration mode axis. Drives branching strategy, CI shape, and merge method.
47
+ * When absent, defaults to 'peer-review' (safe default). Overrides soloDevMode when both present.
48
+ */
49
+ collaborationMode?: CollaborationMode;
50
+ /**
51
+ * ADR-051: branching strategy. When absent, derived from collaborationMode.
52
+ * Explicit value overrides the derived default.
53
+ */
54
+ branchingStrategy?: BranchingStrategy;
55
+ /**
56
+ * #470: solo-dev mode — skip PR CI, merge directly after local L2 gate passes. Default false.
57
+ * @deprecated Use collaborationMode: 'trunk-solo' instead. Deprecated in 0.2.0, removed in
58
+ * 1.0.0 — see the Active table in docs/DEPRECATIONS.md.
59
+ */
60
+ soloDevMode?: boolean;
61
+ /** #1005: container registry / cloud deploy target. Absent = 'none'. */
62
+ deployTarget?: DeployTarget;
63
+ /** Pipeline style: controls which GitHub Actions workflow set is emitted. Default 'standard'. */
64
+ pipelineStyle?: 'starter' | 'standard' | 'industrial';
65
+ /** Brownfield class: how mature the target repo is. Auto-detected; user can override. */
66
+ brownfieldClass?: 'gold' | 'light' | 'medium' | 'heavy';
67
+ /**
68
+ * #1254: industry compliance overlay axis surfaced in the wizard. Absent = 'none'.
69
+ * Drives the gdpr/iso27001/iso9001/pharma overlay generators and the
70
+ * (overlay × governanceLevel) coherence advisory.
71
+ */
72
+ industryOverlay?: 'pharma' | 'sox' | 'gdpr' | 'generic' | 'iso27001' | 'iso9001' | 'regulated' | 'none';
73
+ /**
74
+ * #1261: ship autonomy level chosen in the wizard. Absent = 'L0'
75
+ * (ask at each ship step — the safe default).
76
+ */
77
+ autonomy?: AutonomyLevel;
78
+ /**
79
+ * #1693 (ADR-101): runner profile axis. 'solo' moves the fuzz + soak-e2e
80
+ * heavy jobs from nightly to weekly cadence (single self-hosted runner).
81
+ * Default 'fleet' — current behavior, jobs stay nightly.
82
+ */
83
+ runnerProfile?: 'solo' | 'fleet';
84
+ /**
85
+ * #1835 (Task B, #1825): opt-in collapsed 5-lane CI doctrine, asked only when
86
+ * the decomposition backend is GitHub. Mirrors config.enableFiveLaneCi.
87
+ * Default false.
88
+ */
89
+ enableFiveLaneCi?: boolean;
90
+ /** #2356: optional, explicit consent for sending diffs to the external reviewer CLI. */
91
+ crossModelReview?: CrossModelReviewConfig;
92
+ }
93
+ export interface MigrationPlan {
94
+ preserved: string[];
95
+ merged: string[];
96
+ replaced: string[];
97
+ created: string[];
98
+ }
99
+ export type Language = 'typescript' | 'java' | 'kotlin' | 'rust' | 'python' | 'go' | 'multi' | 'unknown';
100
+ export type GovernanceLevel = 'L1' | 'L2' | 'L3' | 'L4';
101
+ export type AiTool = 'claude' | 'codex';
102
+ export declare const SUPPORTED_AI_TOOLS: readonly AiTool[];
103
+ export type Archetype = 'backend-web-db' | 'cli' | 'library' | 'data-pipeline' | 'frontend-spa' | 'embedded';
104
+ export type DeployTarget = 'ghcr' | 'azure-container-app' | 'aws-ecs' | 'gcp-cloud-run' | 'nas-compose' | 'none';
105
+ export type ArchitectureStyle = 'hexagonal' | 'layered' | 'modular-monolith' | 'none';
106
+ export type Lane = 'frontend' | 'backend' | 'docs';
107
+ /**
108
+ * Computed from (language, archetype, architectureStyle) at generation time.
109
+ * Not persisted on ProjectConfig — passed to EJS templates as `metricsProfile`.
110
+ */
111
+ export interface MetricsProfile {
112
+ /** frontend-spa + typescript only: include bundle size metric */
113
+ includeBundleSize: boolean;
114
+ /** library + typescript: include public-API surface count */
115
+ includePublicApiSurface: boolean;
116
+ /** backend-web-db or library: include branch coverage in addition to line */
117
+ includeBranchCoverage: boolean;
118
+ /** java only: emit SpotBugs config and collect spotbugsViolations */
119
+ spotbugsEnabled: boolean;
120
+ /** java + architectureStyle !== 'none': collect archunitFailingRules */
121
+ archunitEnabled: boolean;
122
+ }
123
+ export interface LanguageHook {
124
+ /** Name of the hook script to generate (e.g. "check-no-any.mjs") */
125
+ name: string;
126
+ /** What it enforces (for AGENTS.md invariant docs) */
127
+ description: string;
128
+ /** Hook body (Node.js ESM) */
129
+ body: string;
130
+ }
131
+ /**
132
+ * ADR-051: collaboration-mode axis — replaces soloDevMode/teamSize as the
133
+ * primary driver for branching, CI shape, and merge method.
134
+ * trunk-solo = one author; direct push or opt-in pr-ff.
135
+ * peer-review = 1+ reviewers, shared trust; mandatory PR with ff-only merge.
136
+ * gated-review = CODEOWNERS, merge queue, attestation chain.
137
+ */
138
+ export type CollaborationMode = 'trunk-solo' | 'peer-review' | 'gated-review';
139
+ /**
140
+ * ADR-051: branching strategy driven by collaborationMode.
141
+ * trunk-direct = push directly to main (no long-lived branches).
142
+ * github-flow = feature branches → main only.
143
+ * github-flow-with-develop = feature branches → develop → main.
144
+ */
145
+ export type BranchingStrategy = 'trunk-direct' | 'github-flow' | 'github-flow-with-develop';
146
+ /** ADR-051: merge method for trunk-solo mode. */
147
+ export type SoloMergeMode = 'direct' | 'pr-ff';
148
+ /** ADR-051: whether /task auto-opens a worktree. */
149
+ export type WorktreeAutoMode = 'always' | 'optional' | 'never';
150
+ type WorktreeLinkStrategy = 'symlink' | 'copy' | 'symlink-children';
151
+ export interface WorktreeLinkSpec {
152
+ /** Relative path inside the repo (e.g. ".env", ".claude/settings.local.json") */
153
+ path: string;
154
+ /** Throw if source is missing instead of silently skipping */
155
+ required?: boolean;
156
+ /** Fallback: copy from this template path if source is absent */
157
+ template?: string;
158
+ /** How to materialize the link (default: "symlink") */
159
+ strategy?: WorktreeLinkStrategy;
160
+ /** Whether this is a file or directory link (default: "file") */
161
+ type?: 'file' | 'directory';
162
+ }
163
+ export interface WorktreeConfig {
164
+ /** Absolute path to the directory that holds all worktrees.
165
+ * null → sibling of the repo: <parent>/<repoName>.worktrees */
166
+ base: string | null;
167
+ /** Files/dirs to symlink (or copy) from the main repo into each worktree */
168
+ links: WorktreeLinkSpec[];
169
+ /** Opt-in build-artifact links (target/, dist/, .next/) — activated via --with-build-links */
170
+ buildLinks?: WorktreeLinkSpec[];
171
+ /** Optional script to run before removing the worktree on close.
172
+ * Receives the worktree path as its first argument. */
173
+ closeHook: string | null;
174
+ }
175
+ /** Two-tier conformance scoring thresholds. Part of persisted arbiter.json config. */
176
+ export interface ConformanceThresholds {
177
+ tier1Members: string[];
178
+ familyWeights: {
179
+ discipline: number;
180
+ 'reality-contact': number;
181
+ 'docs-convention': number;
182
+ 'code-quality-gold': number;
183
+ };
184
+ goldTier2Gate: number;
185
+ }
186
+ export interface ProjectConfig {
187
+ /** Directory being initialized */
188
+ targetDir: string;
189
+ /** e.g. "my-app" */
190
+ projectName: string;
191
+ /** Short description (user-provided or inferred) */
192
+ description: string;
193
+ language: Language;
194
+ /** e.g. "express+react", "spring-boot", "tauri" */
195
+ framework: string | null;
196
+ /** Project archetype — shape of the runtime topology */
197
+ archetype: Archetype;
198
+ /** Internal module decomposition style. Default "none" = no architecture rules generated */
199
+ architectureStyle: ArchitectureStyle;
200
+ /** Whether the project handles multiple tenants sharing one deployment */
201
+ isMultiTenant: boolean;
202
+ /** Whether the project connects to a database */
203
+ hasDatabase: boolean;
204
+ /** Whether the project exposes a public API (REST, GraphQL, gRPC, etc.) */
205
+ hasPublicApi: boolean;
206
+ /** e.g. "npm", "gradle", "cargo" */
207
+ buildTool: string;
208
+ /** JavaScript package manager detected during project discovery. */
209
+ packageManager?: 'npm' | 'pnpm' | 'yarn' | 'bun';
210
+ buildCommand: string;
211
+ testCommand: string;
212
+ lintCommand: string;
213
+ formatCommand: string;
214
+ tools: AiTool[];
215
+ governanceLevel: GovernanceLevel;
216
+ /** #2356: explicit opt-in and diff-egress consent for external review slots. */
217
+ crossModelReview?: CrossModelReviewConfig;
218
+ useGitHub: boolean;
219
+ permitGitHub?: boolean;
220
+ decompositionBackend?: 'github' | 'markdown';
221
+ githubOwner: string | null;
222
+ githubRepo: string | null;
223
+ existing: {
224
+ agentsMd: boolean;
225
+ claudeDir: boolean;
226
+ agentsDir: boolean;
227
+ aiRulez: boolean;
228
+ settingsJson: boolean;
229
+ checkAllScript: boolean;
230
+ geminiDir: boolean;
231
+ windsurfRules: boolean;
232
+ aiderConf: boolean;
233
+ tests: boolean;
234
+ ciWorkflows: boolean;
235
+ lintConfig: boolean;
236
+ };
237
+ languageHooks: LanguageHook[];
238
+ /** Whether to generate tech debt prevention gates (coverage, complexity, dead code). Defaults to true for L2+. */
239
+ enableDebtGates: boolean;
240
+ /** Whether to generate suppression templates and the check-suppressions.mjs expiry gate. Defaults to true for all governance levels. */
241
+ enableSuppressions: boolean;
242
+ /**
243
+ * Which database engine the project uses. Set when hasDatabase=true. Still
244
+ * consumed by KIT applicability gating for dims N08/N73/N74/N75
245
+ * (src/kit/applicability.ts) — NOT dead. Auto-detection is not yet
246
+ * implemented (tracked by #1058); until then this is set manually or left unset
247
+ * (requiresDbEngine dims fail-closed to NA). #1157.
248
+ */
249
+ databaseEngine?: 'postgresql' | 'mysql' | 'mongodb' | 'sqlite' | 'other' | 'none';
250
+ /** Whether to generate security scanning gates (PII scan, gitleaks, dep audit). Defaults to true for L2+. */
251
+ enableSecurityScanning: boolean;
252
+ /** Which invariant tiers to include in generated AGENTS.md. Derived from InvariantPreset. */
253
+ invariantTiers: InvariantTier[];
254
+ /** Base Java package (e.g. "com.example.myapp"). Detected from pom.xml/build.gradle for Java projects. */
255
+ basePackage?: string;
256
+ /**
257
+ * #257/#1524/#1616: domain-specific test-taxonomy dimensions. Consumed by the
258
+ * test-taxonomy generator and round-tripped through arbiter.json so custom
259
+ * dimensions survive `arbiter update`. Structural-typed here (not imported from
260
+ * config/schema) to keep the wizard layer free of a config→wizard back-edge.
261
+ */
262
+ taxonomy?: {
263
+ domainDims?: string[];
264
+ };
265
+ /** Whether to generate mutation testing configuration. Default true for L2+. */
266
+ enableMutationTesting?: boolean;
267
+ /** Whether to generate contract testing configuration. Default from contractType. */
268
+ enableContractTesting?: boolean;
269
+ /** Whether to generate evidence retention configuration. Default true for L3. */
270
+ enableEvidenceHarness?: boolean;
271
+ /** Whether to generate the A/B/C self-validation drill harness. Default true. */
272
+ enableSelfValidationHarness?: boolean;
273
+ /**
274
+ * #1835: opt-in toolchain/workflow-inventory audit (`scripts/audit-toolchain.mjs`).
275
+ * Explicit opt-in (default false/undefined) — the script's required-file lists are
276
+ * a coarse fleet-wide inventory, not derived per-project, so it is wired ADVISORY
277
+ * (never blocks the gate) only when a project deliberately turns it on.
278
+ */
279
+ enableAuditToolchain?: boolean;
280
+ /**
281
+ * ADR-051: collaboration mode axis. Primary driver for branching, CI shape, merge method.
282
+ * Absent = legacy mode (falls back to enableSoloDevMode → peer-review).
283
+ */
284
+ collaborationMode?: CollaborationMode;
285
+ /**
286
+ * ADR-051: branching strategy. When absent, derived from collaborationMode defaults table.
287
+ * github-flow-with-develop gates `develop` branch references in CI templates.
288
+ */
289
+ branchingStrategy?: BranchingStrategy;
290
+ /**
291
+ * ADR-051: worktree auto-open behavior for /task command.
292
+ * Derived from collaborationMode when absent.
293
+ */
294
+ tasks?: {
295
+ worktree: WorktreeAutoMode;
296
+ };
297
+ /**
298
+ * ADR-051: trunk-solo merge method.
299
+ * 'direct' = git push --ff-only without PR.
300
+ * 'pr-ff' = gh pr create + ff-only merge (audit trail preserved).
301
+ * Only meaningful when collaborationMode = 'trunk-solo'.
302
+ */
303
+ solo?: {
304
+ mergeMode: SoloMergeMode;
305
+ };
306
+ /**
307
+ * #1291 — ship autonomy gating (ADR-093 §4). Absent ⇒ L0.
308
+ * #1306 (ADR-094 §Decision.4) — extended with two optional orchestration prefs;
309
+ * all derived per collaboration mode / governance level when the wizard builds the
310
+ * profile (see buildProfileAxes). Absent fields fall to their derived defaults.
311
+ */
312
+ automation?: {
313
+ autonomy: AutonomyLevel;
314
+ maxParallelWorktrees?: number;
315
+ defaultGateLevel?: 'L1' | 'L2';
316
+ };
317
+ /**
318
+ * Whether to enable solo-dev mode: skip PR CI ceremony, nightly drift shadow. Default false.
319
+ * @deprecated Use collaborationMode: 'trunk-solo' instead. Deprecated in 0.2.0, removed in
320
+ * 1.0.0 — see the Active table in docs/DEPRECATIONS.md.
321
+ */
322
+ enableSoloDevMode?: boolean;
323
+ /** Whether to generate the MCP fallback determinism rule (45-mcp-fallback.md). Default false (opt-in). */
324
+ enableMcpFallback?: boolean;
325
+ /** Whether to generate check-no-skipped-tests.mjs hook. Default true for all governance levels. */
326
+ enableNoSkippedTests?: boolean;
327
+ /** Whether to use the 25-dimension test taxonomy template instead of the base 17-dimension one. Default false. */
328
+ enableTaxonomy25d?: boolean;
329
+ /** Whether to generate the operations handbook (4-signal observability, RC checklist, runbooks). Default false. */
330
+ enableOperationsHandbook?: boolean;
331
+ /** Whether to generate the risk register + P×I assessment template (ISO 27001 §6.1.2). Default false. */
332
+ enableRiskRegister?: boolean;
333
+ /** Whether to include ISO 27001 Annex A gate-to-control mapping in the compliance document. Default false. */
334
+ enableIso27001Mapping?: boolean;
335
+ /** Whether to include NIS2 Art.21.2 gate-to-requirement mapping in the compliance document. Default false. */
336
+ enableNis2Mapping?: boolean;
337
+ /** Whether to include GDPR article gate-to-control mapping in the compliance document. Default false. */
338
+ enableGdprMapping?: boolean;
339
+ /** Observability provider configuration. Default: absent (no observability files generated). */
340
+ observability?: ObservabilityConfig;
341
+ /** Auth provider configuration. Default: absent (no auth setup files generated). */
342
+ auth?: AuthConfig;
343
+ /** Frontend framework + tooling configuration. Absent = no framework-specific governance text. */
344
+ frontend?: FrontendConfig;
345
+ /**
346
+ * User explicitly acknowledges that one or more beta tools will be used.
347
+ * Set by --accept-beta-tools on `arbiter init`. Persisted in arbiter.json for audit.
348
+ * Beta tools (maturity="beta") require this flag; unsafe tools are never allowed.
349
+ */
350
+ acceptBetaTools?: boolean;
351
+ /**
352
+ * Phase 9.5 MG: coverage/mutation threshold profile.
353
+ * "scaled" = LoC-based ramp (no coverage <1000 LoC, no mutation <5000 LoC, 60%→85%).
354
+ * "fixed" = flat 80% (L2) / 85% (L3) regardless of project size.
355
+ * Default: "scaled".
356
+ */
357
+ thresholdProfile?: ThresholdProfile;
358
+ /**
359
+ * Phase 9.5 MG: enforcement strictness tier.
360
+ * "practical" = standard rules for most teams.
361
+ * "pedantic" = additional rules: noUncheckedIndexedAccess (TS), clippy pedantic (Rust), etc.
362
+ * Default: "practical".
363
+ */
364
+ strictnessTier?: StrictnessTier;
365
+ /**
366
+ * Phase 9.5 MG: detected or estimated lines of code in the target project.
367
+ * Used by "scaled" threshold profile to compute coverage/mutation gates.
368
+ * 0 = unknown; treated same as <1000 LoC for scaled profile (coverage and mutation gates disabled).
369
+ */
370
+ linesOfCode?: number;
371
+ /**
372
+ * Phase 9.5 MJ: evidence harness retention policy.
373
+ * Controls how many evidence runs to keep and where to store them.
374
+ * Default: { mode: "local-last-N", count: 5 }
375
+ */
376
+ evidenceRetention?: EvidenceRetentionConfig;
377
+ /**
378
+ * Phase 9.5 ML: contract testing strategy — see ADR-028.
379
+ * Wizard asks only if hasPublicApi === true. Default: "none".
380
+ */
381
+ contractType: ContractType;
382
+ /**
383
+ * M25: path to k6 load test script (relative to project root).
384
+ * Used by the generated nightly.yml. L3-only. Default: "tests/load/default.js".
385
+ */
386
+ k6ScriptPath?: string;
387
+ thresholds?: ThresholdsV2;
388
+ /** Detected project lanes (FE/BE/docs). Empty array = single-lane / no lane awareness. */
389
+ lanes: Lane[];
390
+ /** Task-tier configuration (XS/S/Standard) — review agent count + plan depth (#237). */
391
+ taskTiers?: TaskTiers;
392
+ /** Active project preset, if any. Stored for audit/drift detection. */
393
+ preset?: ProjectPreset;
394
+ /** Include extended opt-in invariants (INV-62..INV-71). True when governance.invariants_catalog = 'extended'. */
395
+ includeExtendedInvariants?: boolean;
396
+ /** #2035: project-declared invariants (PROJ-NN), merged at getFilteredInvariants. */
397
+ projectInvariants?: Invariant[];
398
+ /** #2044: declared-live SSOT surfaces bound by check-drift --live-ssot. */
399
+ liveSsot?: LiveSsotConfig;
400
+ /**
401
+ * CI tier emission mode.
402
+ * @deprecated Use pipelineStyle instead. Deprecated in 0.2.0, removed in 1.0.0 —
403
+ * see the Active table in docs/DEPRECATIONS.md.
404
+ * 'baseline' = emit the 4-workflow baseline set (01/02/03/09) for self-CI migration.
405
+ * 'full' = emit all 8 standard CI tier workflows (default for target projects).
406
+ */
407
+ ciTierMode?: 'baseline' | 'full';
408
+ /**
409
+ * Container registry / cloud deploy target.
410
+ * 'ghcr' = default for backend-web-db (home scenario). All others = paid-cloud targets.
411
+ * 'none' = no deploy workflows emitted (default for all non-service archetypes).
412
+ * Absent field treated as 'none'. Sole gate for deploy-workflow and Azure
413
+ * Container Apps infra emission (#1145/#1146 removed the derived boolean flags).
414
+ */
415
+ deployTarget?: DeployTarget;
416
+ /**
417
+ * Pipeline style: controls which GitHub Actions workflow set is emitted.
418
+ * 'starter' = 3 workflows (pr-fast, main-build, heartbeat)
419
+ * 'standard' = 8 workflows: starter + pr-extended, nightly, release, dependabot-auto, sbom, gitleaks
420
+ * 'industrial' = full 18-workflow set (standard + perf, chaos, mutation, archunit-extended,
421
+ * cosign, attestation, rebuild-on-demand, trivy, license-scan, policy-eval)
422
+ * Default: 'standard'. Takes precedence over ciTierMode when both are present.
423
+ */
424
+ pipelineStyle?: 'starter' | 'standard' | 'industrial';
425
+ /**
426
+ * A1 (#1817): opt-in collapsed 5-lane CI doctrine — pre-commit (local, via
427
+ * `githooks`) + 4 workflows (`ci.yml` PR-blocking / `nightly.yml` /
428
+ * `weekly.yml` / `release.yml`), each tier-budget-commented (AGENTS.md
429
+ * INV-136). Mutually exclusive with the standard `github` + `ci-tier`
430
+ * generators (registry.ts disables both when this is true) so a fresh
431
+ * repo emits exactly 4 workflow files, never a union of both shapes.
432
+ * Default: false/undefined (standard `pipelineStyle` shape unaffected).
433
+ */
434
+ enableFiveLaneCi?: boolean;
435
+ /**
436
+ * Brownfield class: how mature the target repo is.
437
+ * Determines which threshold column to apply for existing code.
438
+ * Auto-detected by brownfield-detect.ts; user can override via wizard prompt.
439
+ * 'gold' = greenfield / already-mature (< 50 source files)
440
+ * 'light' = 50–500 files, coverage > 30 %
441
+ * 'medium' = 500–2 000 files, coverage 5–30 %
442
+ * 'heavy' = 2 000+ files, coverage < 5 %
443
+ */
444
+ brownfieldClass?: 'gold' | 'light' | 'medium' | 'heavy';
445
+ /**
446
+ * Whether to run the kit-install lifecycle (DETECT → MEASURE → SCAFFOLD → ASSESS → PLAN → VERIFY).
447
+ * Default: true when a supported stack is detected.
448
+ */
449
+ kitEnabled?: boolean;
450
+ /**
451
+ * Industry overlay — emits domain-specific audit-trail compliance scaffolding.
452
+ * 'pharma' → pharma audit-trail overlay (KIT dims 73-75, ArchUnit R-35..R-39). Java only.
453
+ * 'sox'|'gdpr'|'generic' → language-neutral L4 audit-trail docs + gate rules,
454
+ * decoupled from the pharma Java scaffolding (#1156).
455
+ * 'iso27001' → ISO 27001:2022 Annex-A controls→gate traceability
456
+ * overlay (security mgmt). Language-neutral (#1252).
457
+ * 'iso9001' → quality-process overlay (orthogonal to audit-trail):
458
+ * requirement→test RTM, document-control register, CAPA log
459
+ * + enforceable gate. Language-neutral (#1253).
460
+ * 'none' → no overlay (default).
461
+ * Absent field is treated as 'none'.
462
+ */
463
+ industryOverlay?: 'pharma' | 'sox' | 'gdpr' | 'generic' | 'iso27001' | 'iso9001' | 'regulated' | 'none';
464
+ /**
465
+ * F6: Emit k6 performance testing ecosystem.
466
+ * Includes 12+ named scenario templates, 3 Python report generators,
467
+ * seed SQL, validator script, and GitHub workflow.
468
+ * Off by default — opt in when load/performance testing is needed (#895).
469
+ */
470
+ enablePerfTesting?: boolean;
471
+ /**
472
+ * #943: emit _post-merge-notify.yml workflow that sends an email to CODEOWNERS
473
+ * after each merged PR (result + coverage + changed files). L2+ only.
474
+ * Off by default — requires MAIL_SERVER/MAIL_USERNAME/MAIL_PASSWORD secrets and
475
+ * a MAIL_DOMAIN_ALLOWLIST variable (set to `*` to allow all domains).
476
+ */
477
+ enableCodeownersNotify?: boolean;
478
+ /**
479
+ * #1693 (ADR-101): runner profile axis, orthogonal to collaborationMode/pipelineStyle.
480
+ * 'fleet' (default) = current behavior: fuzz + soak-e2e heavy jobs run at nightly
481
+ * cadence, hard-gated by nightly-required.
482
+ * 'solo' = fuzz + soak-e2e move to weekly cadence instead (single self-hosted
483
+ * runner that cannot absorb a nightly heavy sweep), while preserving the same
484
+ * hard-gate + issue-filing semantics at weekly cadence.
485
+ * Absent field treated as 'fleet'.
486
+ */
487
+ runnerProfile?: 'solo' | 'fleet';
488
+ }
489
+ type PlanDepth = 'minimal' | 'brief' | 'full';
490
+ interface TaskTierConfig {
491
+ planDepth: PlanDepth;
492
+ reviewAgentCount: number;
493
+ }
494
+ export interface TaskTiers {
495
+ XS: TaskTierConfig;
496
+ S: TaskTierConfig;
497
+ Standard: TaskTierConfig;
498
+ }
499
+ export interface ThresholdsV2 {
500
+ lineCoverage: number;
501
+ branchCoverage: number;
502
+ mutationScore: number;
503
+ cyclomaticComplexity: number;
504
+ methodLength: number;
505
+ maxParams: number;
506
+ }
507
+ export type ThresholdProfile = 'scaled' | 'fixed';
508
+ export type StrictnessTier = 'practical' | 'pedantic';
509
+ /**
510
+ * Phase 9.5 ML: contract testing strategy — see ADR-028.
511
+ * "rest-owned" → Pact consumer + provider (owned by your team).
512
+ * "rest-public" → OpenAPI diff (breaking-change detection for public API).
513
+ * "graphql" → Schema diff via graphql-inspector.
514
+ * "grpc" → buf breaking check.
515
+ * "message-queue" → Schema registry integration (Avro, Protobuf).
516
+ * "none" → No contract testing generated.
517
+ */
518
+ export type ContractType = 'rest-owned' | 'rest-public' | 'graphql' | 'grpc' | 'message-queue' | 'none';
519
+ export type ObservabilityProvider = 'none' | 'stdout-minimal' | 'victoria-vector-quickwit' | 'signoz' | 'openobserve' | 'prom-grafana-loki-jaeger' | 'saas-sentry' | 'saas-datadog' | 'saas-axiom' | 'saas-betterstack';
520
+ export interface ObservabilityConfig {
521
+ provider: ObservabilityProvider;
522
+ metrics?: boolean;
523
+ logs?: boolean;
524
+ traces?: boolean;
525
+ alerts?: boolean;
526
+ }
527
+ export type AuthProvider = 'none' | 'app-level-ts' | 'authelia' | 'authentik' | 'ory-stack' | 'zitadel' | 'keycloak' | 'saas-clerk' | 'saas-auth0' | 'saas-supabase-auth' | 'saas-cognito';
528
+ export interface AuthConfig {
529
+ provider: AuthProvider;
530
+ protocols?: Array<'oidc' | 'oauth2' | 'saml' | 'session'>;
531
+ tenantIsolation?: boolean;
532
+ themeSync?: boolean;
533
+ }
534
+ export interface FrontendConfig {
535
+ /** UI framework in use. Controls state-manager defaults in FE governance templates. */
536
+ framework?: 'vue' | 'react' | 'svelte';
537
+ /** State management library (e.g. 'pinia', 'zustand', 'svelte-store'). */
538
+ stateManager?: string;
539
+ /** Schema validation library (e.g. 'zod', 'yup', 'valibot'). */
540
+ validationLib?: string;
541
+ }
542
+ type EvidenceRetentionMode = 'local-last-N' | 'external-bucket' | 'none';
543
+ export interface EvidenceRetentionConfig {
544
+ mode: EvidenceRetentionMode;
545
+ /** For local-last-N: number of runs to keep. Default 5. */
546
+ count?: number;
547
+ /** For external-bucket: target URL (e.g. s3://bucket/path). */
548
+ bucketUrl?: string;
549
+ }
550
+ /**
551
+ * #2035: lives here (not invariants/types.ts) to give ProjectConfig a
552
+ * dependency-free home — invariants/types.ts imports Language/GovernanceLevel
553
+ * from this module, so defining Invariant here keeps the graph acyclic
554
+ * (same trade as AutonomyLevel above). Re-exported from invariants/types.ts
555
+ * for its existing consumers.
556
+ */
557
+ export interface Invariant {
558
+ /** Unique identifier, e.g. "INV-01" (built-in) or "PROJ-01" (project-declared, #2035). */
559
+ id: string;
560
+ tier: InvariantTier;
561
+ /** One-liner for AGENTS.md */
562
+ title: string;
563
+ /** Detailed explanation for GLOBAL_INVARIANTS.md */
564
+ description: string;
565
+ /** If set, invariant only applies to these languages. Omit for all languages. */
566
+ languages?: Language[];
567
+ /**
568
+ * Per-language variant of title. Used instead of title when language matches.
569
+ * When set, MUST cover every language declared in `languages` — enforced at
570
+ * gate time by the catalog-parity test (#680).
571
+ */
572
+ languageDetail?: Partial<Record<Language, string>>;
573
+ /**
574
+ * Minimum governance level required.
575
+ * If omitted, applies at all levels.
576
+ */
577
+ minGovernanceLevel?: GovernanceLevel;
578
+ /**
579
+ * Bypasses the invariantTiers filter — this invariant appears regardless of
580
+ * which tiers the caller selects. minGovernanceLevel is still enforced.
581
+ */
582
+ alwaysActive: boolean;
583
+ /** How this invariant is enforced (e.g. "hook + CI", "CI only", "manual") */
584
+ enforcement?: string;
585
+ /**
586
+ * Optional ADR id this invariant traces to, e.g. "ADR-051". When set, the
587
+ * referenced ADR file MUST exist under docs/internal/ADR/ — enforced by the
588
+ * invariant↔ADR traceability test (#1102).
589
+ */
590
+ adr?: string;
591
+ /**
592
+ * Lifecycle status. Omit (or "active") for in-use invariants.
593
+ * Set to "retired" when an invariant is superseded or removed — IDs must never be reused.
594
+ */
595
+ status?: 'active' | 'retired';
596
+ /**
597
+ * Required when status is "retired". Explains why and what replaced this invariant.
598
+ */
599
+ retiredReason?: string;
600
+ /**
601
+ * Optional: the ID of the invariant that supersedes this one.
602
+ * Only set when status is "retired".
603
+ */
604
+ redirectTo?: string;
605
+ /**
606
+ * True for invariants that only apply to arbiter's own development.
607
+ * These are excluded from generated target-project AGENTS.md / GLOBAL_INVARIANTS.md.
608
+ */
609
+ selfOnly?: boolean;
610
+ /**
611
+ * Opt-in group identifier. Invariants in a named group are excluded from
612
+ * the default filter and only appear when the caller explicitly opts in.
613
+ * Currently supported: 'extended' (INV-62..INV-71, enabled via
614
+ * arbiter.json governance.invariants_catalog = 'extended').
615
+ */
616
+ optInGroup?: 'extended';
617
+ /**
618
+ * The minimum number of required items that must be present to satisfy the
619
+ * invariant in self-mode during a partial rollout (e.g. INV-73's W4→W10 CI-tier
620
+ * ramp). Read by scripts/check-ci-tiers.mjs as the sole rollout knob.
621
+ */
622
+ minPresent?: number;
623
+ }
624
+ /**
625
+ * #2044 (AC-2044.5/6): declared-live SSOT surfaces (matrix/ledger) that a code
626
+ * change must update in the SAME commit — bound by check-drift --live-ssot.
627
+ * Obligation is limited to these surfaces (the softening).
628
+ */
629
+ export interface LiveSsotSurface {
630
+ path: string;
631
+ kind: 'matrix' | 'ledger';
632
+ /** Optional key column names the drift check may use for finer binding. */
633
+ keys?: string[];
634
+ }
635
+ export interface LiveSsotConfig {
636
+ surfaces: LiveSsotSurface[];
637
+ }
@@ -0,0 +1 @@
1
+ export const SUPPORTED_AI_TOOLS=["claude","codex"];
@@ -0,0 +1,2 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import{existsSync,statSync}from"node:fs";import{copyFileTranslated,ensureDir}from"../utils/fs.js";import{dirname,join}from"node:path";import{runCli}from"../utils/run-cli.js";function parsePorcelainStatus(output){const files=[],records=output.split("\0");for(let i=0;i<records.length;i++){const record=records[i];if(record===void 0||record==="")continue;const xy=record.slice(0,2),path=record.slice(3);xy==="??"?path&&files.push(path):xy[0]==="R"||xy[0]==="C"?(path&&files.push(path),i++):path&&files.push(path)}return files}function parseUntrackedPaths(output){const files=[],records=output.split("\0");for(const record of records){if(!record)continue;const xy=record.slice(0,2),path=record.slice(3);xy==="??"&&path&&files.push(path)}return files}function captureParentSnapshot(mainRepoPath){const branch=runCli("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:mainRepoPath}).stdout.trim(),statusOutput=runCli("git",["status","--porcelain=v1","-z","--untracked-files=all"],{cwd:mainRepoPath}).stdout;return{branch,untracked:parseUntrackedPaths(statusOutput)}}export function harvestFiles(opts){const{worktreePath,mainRepoPath,onFile}=opts,result={copied:[],skipped:[],protectedUntracked:[]};if(opts.captureParentState){const snapshot=captureParentSnapshot(mainRepoPath);result.parentBranchBefore=snapshot.branch,result.parentUntrackedBefore=snapshot.untracked}const statusOutput=runCli("git",["status","--porcelain=v1","-z","--untracked-files=all"],{cwd:worktreePath}).stdout;if(statusOutput.length===0)return result;const changedFiles=parsePorcelainStatus(statusOutput);if(changedFiles.length===0)return result;for(const filePath of changedFiles){const srcPath=join(worktreePath,filePath),destPath=join(mainRepoPath,filePath);if(existsSync(srcPath)&&!statSync(srcPath).isDirectory()){if(destConflict(mainRepoPath,filePath,destPath,result)){onFile?.(filePath,"skip");continue}ensureDir(dirname(destPath)),copyFileTranslated(srcPath,destPath),result.copied.push(filePath),onFile?.(filePath,"copy")}}return result}function destConflict(mainRepoPath,filePath,destPath,result){return existsSync(destPath)?fileIsUntrackedInMainRepo(mainRepoPath,filePath)?(result.protectedUntracked.push(filePath),!0):fileHasUncommittedChanges(mainRepoPath,filePath)?(result.skipped.push(filePath),!0):!1:!1}function fileIsUntrackedInMainRepo(mainRepoPath,filePath){try{return runCli("git",["ls-files","--",filePath],{cwd:mainRepoPath}).stdout.trim()===""}catch{return!1}}function fileHasUncommittedChanges(mainRepoPath,filePath){try{return runCli("git",["diff","--quiet","--",filePath],{cwd:mainRepoPath}),runCli("git",["diff","--quiet","--cached","--",filePath],{cwd:mainRepoPath}),!1}catch{return!0}}
@@ -0,0 +1,2 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import{existsSync,lstatSync,readdirSync,readlinkSync,statSync}from"node:fs";import{copyFileTranslated,copyTreeTranslated,ensureDir,symlinkTranslated,toFsError}from"../utils/fs.js";import{dirname,join,resolve}from"node:path";const SYMLINK_CHILDREN_EXCLUSIONS=new Set([".vite",".cache",".vite-temp",".arbiter-test-scratch"]);function symlinkSafe(srcPath,destPath,linkResult){try{symlinkTranslated(srcPath,destPath)}catch(e){if(e.code==="EEXIST"&&lstatSync(destPath).isSymbolicLink())return linkResult;throw e}return linkResult}export function materializeLink(spec,mainRepoPath,worktreePath){const sourcePath=resolve(mainRepoPath,spec.path),destPath=resolve(worktreePath,spec.path),linkType=spec.type??"file",strategy=spec.strategy??"symlink";if(existsSync(destPath)&&!(linkType==="directory"&&strategy==="symlink-children")){if(!lstatSync(destPath).isSymbolicLink())throw new Error(`Cannot materialize '${spec.path}': a non-symlink already exists at ${destPath}. Remove it manually then retry.`);return{spec,result:linkType==="directory"?"LINKED_DIR":"LINKED"}}const sourceExists=existsSync(sourcePath);if(linkType==="directory"){const result=sourceExists?materializeDirectory(spec,strategy,sourcePath,destPath,mainRepoPath):missingOrThrow(spec,`Required directory missing: ${spec.path} in ${mainRepoPath}`);return{spec,result}}return{spec,result:materializeFile(spec,sourcePath,destPath,mainRepoPath)}}function materializeDirectory(spec,strategy,sourcePath,destPath,mainRepoPath){if(!statSync(sourcePath).isDirectory())throw new Error(`Expected directory but found file at: ${spec.path} in ${mainRepoPath}`);return ensureDir(dirname(destPath)),strategy==="symlink"?symlinkSafe(sourcePath,destPath,"LINKED_DIR"):strategy==="symlink-children"?materializeChildren(sourcePath,destPath,spec.path):(copyTreeTranslated(sourcePath,destPath,{recursive:!0}),"COPIED_DIR")}function materializeFile(spec,sourcePath,destPath,mainRepoPath){if(existsSync(sourcePath))return ensureDir(dirname(destPath)),symlinkSafe(sourcePath,destPath,"LINKED");if(spec.template){const templatePath=resolve(mainRepoPath,spec.template);if(existsSync(templatePath))return ensureDir(dirname(destPath)),copyFileTranslated(templatePath,destPath),"COPIED_TEMPLATE"}return missingOrThrow(spec,`Required link source missing: ${spec.path} in ${mainRepoPath}`)}function missingOrThrow(spec,message){if(spec.required===!0)throw new Error(message);return"MISSING"}function materializeChildren(sourcePath,destPath,specPath){if(existsSync(destPath)&&lstatSync(destPath).isSymbolicLink())throw new Error(`Cannot materialize '${specPath}' with strategy 'symlink-children': ${destPath} is a whole-directory symlink (old 'symlink' strategy). Remove it manually then retry.`);ensureDir(destPath);for(const child of readdirSync(sourcePath)){if(SYMLINK_CHILDREN_EXCLUSIONS.has(child))continue;const childDest=join(destPath,child);existsSync(childDest)||lstatSync2IsLink(childDest)||symlinkTranslated(join(sourcePath,child),childDest)}return"LINKED_CHILDREN"}function lstatSync2IsLink(path){try{return lstatSync(path).isSymbolicLink()}catch{return!1}}export function checkLinkIntegrity(specs,worktreePath){const dangling=[];for(const spec of specs){const linkPath=resolve(worktreePath,spec.path);try{const stat=lstatSync(linkPath);stat.isSymbolicLink()?pushIfDangling(linkPath,spec.path,dangling):stat.isDirectory()&&spec.strategy==="symlink-children"&&checkChildLinks(linkPath,spec.path,dangling)}catch(e){if(e.code!=="ENOENT")throw toFsError(e,linkPath)}}return dangling}function checkChildLinks(dirPath,specPath,dangling){for(const child of readdirSync(dirPath)){const childPath=join(dirPath,child);lstatSync(childPath).isSymbolicLink()&&pushIfDangling(childPath,`${specPath}/${child}`,dangling)}}function pushIfDangling(linkPath,displayPath,dangling){const target=readlinkSync(linkPath),resolvedTarget=resolve(dirname(linkPath),target);existsSync(resolvedTarget)||dangling.push(`${displayPath} \u2192 ${target} (target missing)`)}
@@ -0,0 +1,2 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import{dirname,basename,join}from"node:path";export function sanitizeTaskId(raw){const trimmed=raw.trim(),core=trimmed.startsWith("#")?trimmed.slice(1):trimmed;if(core.length===0)throw new Error(`Invalid task ID (empty): ${JSON.stringify(raw)}`);if(!/^[A-Za-z0-9._-]+$/.test(core))throw new Error(`Invalid task ID (illegal characters, must match [A-Za-z0-9._-]): ${raw}`);if(core.startsWith("-"))throw new Error(`Invalid task ID (must not start with '-'): ${raw}`);if(core.includes(".."))throw new Error(`Invalid task ID (must not contain '..'): ${raw}`);return`#${core}`}export function sanitizeSlug(raw){return raw.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)}export function branchNameFor(taskId,slug){const id=sanitizeTaskId(taskId);return slug?`task/${id}-${sanitizeSlug(slug)}`:`task/${id}`}export function worktreeDirectoryName(taskId,slug){const id=sanitizeTaskId(taskId).replace(/^#/,"");return slug?`${id}-${sanitizeSlug(slug)}`:id}export function resolveWorktreeBase(gitRoot,configBase,envOverride){if(envOverride)return envOverride;if(configBase)return configBase;const parent=dirname(gitRoot),repoName=basename(gitRoot);return join(parent,`${repoName}.worktrees`)}export function worktreePathFor(worktreeBase,taskId,slug){return join(worktreeBase,worktreeDirectoryName(taskId,slug))}export function siblingWorktreePathFor(gitRoot,siblingSlug){if(siblingSlug.length===0||/[/\\]/.test(siblingSlug)||siblingSlug.includes(".."))throw new Error(`Invalid sibling worktree name (must not be empty or contain path separators or '..'): ${JSON.stringify(siblingSlug)}`);const parent=dirname(gitRoot),repoName=basename(gitRoot);return join(parent,`${repoName}.worktrees`,siblingSlug)}