@karajan-family/code 4.21.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 (746) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +98 -0
  3. package/bin/karajan-mcp.js +2 -0
  4. package/bin/kj-rag-mcp.js +75 -0
  5. package/bin/kj-tail +361 -0
  6. package/bin/kj.js +2 -0
  7. package/docs/README.es.md +80 -0
  8. package/docs/karajan-code-logo-small.png +0 -0
  9. package/library/logical-clocks-lamport.md +40 -0
  10. package/package.json +140 -0
  11. package/packages/ai-trash/README.md +37 -0
  12. package/packages/ai-trash/bin/kj-trash.js +10 -0
  13. package/packages/ai-trash/package.json +43 -0
  14. package/packages/ai-trash/src/cli.js +200 -0
  15. package/packages/ai-trash/src/destructive-parser.js +74 -0
  16. package/packages/ai-trash/src/git-snapshot.js +128 -0
  17. package/packages/ai-trash/src/hook.js +137 -0
  18. package/packages/ai-trash/src/index.js +14 -0
  19. package/packages/ai-trash/src/install.js +73 -0
  20. package/packages/ai-trash/src/logger.js +60 -0
  21. package/packages/ai-trash/src/manifest.js +91 -0
  22. package/packages/ai-trash/src/permissions.js +26 -0
  23. package/packages/ai-trash/src/snapshot.js +66 -0
  24. package/packages/ai-trash/src/ulid.js +66 -0
  25. package/packages/hu-board/README.md +69 -0
  26. package/packages/hu-board/package.json +28 -0
  27. package/packages/hu-board/public/app.js +259 -0
  28. package/packages/hu-board/public/index.html +77 -0
  29. package/packages/hu-board/public/pipeline.css +132 -0
  30. package/packages/hu-board/public/pipeline.html +48 -0
  31. package/packages/hu-board/public/pipeline.js +200 -0
  32. package/packages/hu-board/public/rag.html +21 -0
  33. package/packages/hu-board/public/rag.js +39 -0
  34. package/packages/hu-board/public/styles.css +973 -0
  35. package/packages/hu-board/public/utils/api.js +139 -0
  36. package/packages/hu-board/public/utils/board-view.js +473 -0
  37. package/packages/hu-board/public/utils/command-launcher.js +213 -0
  38. package/packages/hu-board/public/utils/config-editor.js +181 -0
  39. package/packages/hu-board/public/utils/dashboard-view.js +103 -0
  40. package/packages/hu-board/public/utils/formatters.js +300 -0
  41. package/packages/hu-board/public/utils/graph-view.js +216 -0
  42. package/packages/hu-board/public/utils/hu-actions.js +224 -0
  43. package/packages/hu-board/public/utils/init-listeners.js +180 -0
  44. package/packages/hu-board/public/utils/log-panel.js +222 -0
  45. package/packages/hu-board/public/utils/modals.js +309 -0
  46. package/packages/hu-board/public/utils/plan-rollup-view.js +53 -0
  47. package/packages/hu-board/public/utils/preflight-view.js +89 -0
  48. package/packages/hu-board/public/utils/project-actions.js +143 -0
  49. package/packages/hu-board/public/utils/project-picker-view.js +139 -0
  50. package/packages/hu-board/public/utils/run-launcher.js +169 -0
  51. package/packages/hu-board/public/utils/server-push.js +252 -0
  52. package/packages/hu-board/public/utils/sessions-view.js +199 -0
  53. package/packages/hu-board/public/utils/story-detail-view.js +324 -0
  54. package/packages/hu-board/public/utils/story-edit-form.js +271 -0
  55. package/packages/hu-board/public/wiki.html +32 -0
  56. package/packages/hu-board/public/wiki.js +53 -0
  57. package/packages/hu-board/src/auth.js +92 -0
  58. package/packages/hu-board/src/boot-info.js +16 -0
  59. package/packages/hu-board/src/cleanup-zombies.js +145 -0
  60. package/packages/hu-board/src/command-runner.js +133 -0
  61. package/packages/hu-board/src/config-yaml.js +531 -0
  62. package/packages/hu-board/src/db.js +963 -0
  63. package/packages/hu-board/src/ephemeral-cleaner.js +196 -0
  64. package/packages/hu-board/src/event-bus.js +58 -0
  65. package/packages/hu-board/src/format.js +207 -0
  66. package/packages/hu-board/src/hu-zombie-reaper.js +103 -0
  67. package/packages/hu-board/src/journal-parser.js +180 -0
  68. package/packages/hu-board/src/plan-mutations.js +424 -0
  69. package/packages/hu-board/src/preflight.js +286 -0
  70. package/packages/hu-board/src/routes/api.js +1374 -0
  71. package/packages/hu-board/src/routes/pipeline.js +45 -0
  72. package/packages/hu-board/src/routes/rag.js +42 -0
  73. package/packages/hu-board/src/routes/wiki.js +43 -0
  74. package/packages/hu-board/src/run-tracker.js +121 -0
  75. package/packages/hu-board/src/server.js +438 -0
  76. package/packages/hu-board/src/sync.js +732 -0
  77. package/packages/hu-board/src/token-store.js +56 -0
  78. package/packages/hu-board/src/zombie-reaper.js +206 -0
  79. package/scripts/ai-attribution-guard.yml +84 -0
  80. package/scripts/audit-test-diet.mjs +151 -0
  81. package/scripts/build-sea.mjs +150 -0
  82. package/scripts/diet-baseline.mjs +170 -0
  83. package/scripts/dual-publish.mjs +67 -0
  84. package/scripts/esbuild-sea.config.mjs +273 -0
  85. package/scripts/git-hooks/post-merge +18 -0
  86. package/scripts/install-binary.ps1 +174 -0
  87. package/scripts/install-binary.sh +159 -0
  88. package/scripts/install-guard-all-repos.sh +85 -0
  89. package/scripts/install-kj.sh +193 -0
  90. package/scripts/install.js +901 -0
  91. package/scripts/install.sh +7 -0
  92. package/scripts/postinstall.js +117 -0
  93. package/scripts/protect-all-repos.sh +88 -0
  94. package/scripts/quickstart-gate.mjs +97 -0
  95. package/scripts/regen-arch-stats.sh +71 -0
  96. package/scripts/setup-multi-instance.sh +150 -0
  97. package/scripts/verify-pack.mjs +278 -0
  98. package/src/activity-log.js +59 -0
  99. package/src/agents/agy-agent.js +62 -0
  100. package/src/agents/aider-agent.js +78 -0
  101. package/src/agents/availability.js +52 -0
  102. package/src/agents/base-agent.js +134 -0
  103. package/src/agents/claude-agent.js +413 -0
  104. package/src/agents/codex-agent.js +112 -0
  105. package/src/agents/copilot-agent.js +65 -0
  106. package/src/agents/gemini-agent.js +85 -0
  107. package/src/agents/host-agent.js +38 -0
  108. package/src/agents/index.js +59 -0
  109. package/src/agents/kimi-agent.js +45 -0
  110. package/src/agents/model-registry.js +137 -0
  111. package/src/agents/opencode-agent.js +72 -0
  112. package/src/agents/qwen-agent.js +20 -0
  113. package/src/agents/resolve-bin.js +73 -0
  114. package/src/audit/agent-readiness.js +259 -0
  115. package/src/audit/ai-slop-findings.js +102 -0
  116. package/src/audit/audit-fallback.js +66 -0
  117. package/src/audit/audit-history-display.js +61 -0
  118. package/src/audit/audit-history.js +102 -0
  119. package/src/audit/basal-cost.js +281 -0
  120. package/src/audit/circular-deps.js +144 -0
  121. package/src/audit/dead-exports.js +186 -0
  122. package/src/audit/deterministic-summary.js +327 -0
  123. package/src/audit/harness-scorecard.js +100 -0
  124. package/src/audit/harness-section.js +81 -0
  125. package/src/audit/infra-findings.js +100 -0
  126. package/src/audit/injection-findings.js +114 -0
  127. package/src/audit/issue-filter.js +133 -0
  128. package/src/audit/osv-findings.js +167 -0
  129. package/src/audit/plan-adherence.js +224 -0
  130. package/src/audit/semgrep-findings.js +129 -0
  131. package/src/audit/sonar-findings.js +93 -0
  132. package/src/audit/webperf-input.js +133 -0
  133. package/src/autonomy/arbiter-role.js +71 -0
  134. package/src/autonomy/arbiter.js +22 -0
  135. package/src/autonomy/decider.js +18 -0
  136. package/src/autonomy/decision-resolver.js +58 -0
  137. package/src/autonomy/outcome-report.js +55 -0
  138. package/src/autonomy/policy.js +41 -0
  139. package/src/autonomy/stage-ask.js +30 -0
  140. package/src/bootstrap.js +276 -0
  141. package/src/brain/agent-error-classifier.js +116 -0
  142. package/src/brain/decision-tracker.js +125 -0
  143. package/src/brain/decisor.js +243 -0
  144. package/src/brain/solomon-consult.js +171 -0
  145. package/src/brain/standby-scheduler.js +8 -0
  146. package/src/brain/standby-store.js +12 -0
  147. package/src/brain/with-brain-recovery.js +235 -0
  148. package/src/budget/comparison.js +96 -0
  149. package/src/canvas/parse-md.js +238 -0
  150. package/src/canvas/schema.js +101 -0
  151. package/src/canvas/to-flat.js +85 -0
  152. package/src/canvas/validate.js +163 -0
  153. package/src/checks/ai-surface.js +79 -0
  154. package/src/checks/ai-trash.js +34 -0
  155. package/src/checks/binaries.js +207 -0
  156. package/src/checks/ci.js +105 -0
  157. package/src/checks/config-files.js +217 -0
  158. package/src/checks/dir-setup.js +103 -0
  159. package/src/checks/guarantee-level.js +38 -0
  160. package/src/checks/hardware.js +150 -0
  161. package/src/checks/harness-scorecard.js +41 -0
  162. package/src/checks/mcp-health.js +169 -0
  163. package/src/checks/method.js +73 -0
  164. package/src/checks/native-build.js +67 -0
  165. package/src/checks/node.js +70 -0
  166. package/src/checks/ollama.js +41 -0
  167. package/src/checks/orphans.js +77 -0
  168. package/src/checks/ports.js +188 -0
  169. package/src/checks/project-checks.js +245 -0
  170. package/src/checks/qmd.js +41 -0
  171. package/src/checks/rag-hooks.js +54 -0
  172. package/src/checks/release-check.js +102 -0
  173. package/src/checks/rtk.js +36 -0
  174. package/src/checks/runner.js +326 -0
  175. package/src/checks/skills.js +53 -0
  176. package/src/checks/sonar.js +67 -0
  177. package/src/checks/squeezr.js +36 -0
  178. package/src/checks/system.js +53 -0
  179. package/src/checks/tokens.js +172 -0
  180. package/src/checks/types.js +103 -0
  181. package/src/ci/dispatch.js +99 -0
  182. package/src/ci/index.js +3 -0
  183. package/src/ci/pr-diff.js +26 -0
  184. package/src/ci/repo.js +45 -0
  185. package/src/cli/_shared.js +30 -0
  186. package/src/cli/advanced-commands.js +61 -0
  187. package/src/cli/register-meta.js +772 -0
  188. package/src/cli/register-pipeline.js +335 -0
  189. package/src/cli/register-plan.js +224 -0
  190. package/src/cli/register-roles-skills.js +54 -0
  191. package/src/cli/register-sonar.js +28 -0
  192. package/src/cli/register-standby.js +26 -0
  193. package/src/cli.js +155 -0
  194. package/src/commands/advanced.js +31 -0
  195. package/src/commands/agent-run.js +63 -0
  196. package/src/commands/agents.js +105 -0
  197. package/src/commands/architect.js +123 -0
  198. package/src/commands/audit.js +430 -0
  199. package/src/commands/autorun.js +49 -0
  200. package/src/commands/board.js +458 -0
  201. package/src/commands/check.js +40 -0
  202. package/src/commands/clean.js +145 -0
  203. package/src/commands/code.js +45 -0
  204. package/src/commands/config.js +74 -0
  205. package/src/commands/discover.js +105 -0
  206. package/src/commands/doctor.js +251 -0
  207. package/src/commands/env.js +207 -0
  208. package/src/commands/harden.js +203 -0
  209. package/src/commands/hu.js +210 -0
  210. package/src/commands/identity.js +60 -0
  211. package/src/commands/init.js +950 -0
  212. package/src/commands/install-tools.js +432 -0
  213. package/src/commands/mutate.js +94 -0
  214. package/src/commands/ollama.js +44 -0
  215. package/src/commands/onboard.js +45 -0
  216. package/src/commands/plan/_shared.js +55 -0
  217. package/src/commands/plan/add-hu.js +23 -0
  218. package/src/commands/plan/delete.js +9 -0
  219. package/src/commands/plan/fix.js +99 -0
  220. package/src/commands/plan/generate.js +532 -0
  221. package/src/commands/plan/index.js +13 -0
  222. package/src/commands/plan/list.js +21 -0
  223. package/src/commands/plan/migrate-result.js +41 -0
  224. package/src/commands/plan/ready.js +46 -0
  225. package/src/commands/plan/remove-hu.js +17 -0
  226. package/src/commands/plan/share.js +85 -0
  227. package/src/commands/plan/show.js +81 -0
  228. package/src/commands/plan/unshare.js +41 -0
  229. package/src/commands/plan/validate.js +20 -0
  230. package/src/commands/plan.js +17 -0
  231. package/src/commands/policy.js +164 -0
  232. package/src/commands/privacy.js +45 -0
  233. package/src/commands/qmd.js +86 -0
  234. package/src/commands/rag-mcp.js +18 -0
  235. package/src/commands/rag.js +173 -0
  236. package/src/commands/report-issue.js +77 -0
  237. package/src/commands/report.js +469 -0
  238. package/src/commands/researcher.js +54 -0
  239. package/src/commands/resume.js +68 -0
  240. package/src/commands/review-gate.js +355 -0
  241. package/src/commands/review.js +89 -0
  242. package/src/commands/roles.js +116 -0
  243. package/src/commands/run.js +185 -0
  244. package/src/commands/scan.js +18 -0
  245. package/src/commands/skills.js +86 -0
  246. package/src/commands/sonar.js +53 -0
  247. package/src/commands/standby.js +117 -0
  248. package/src/commands/start.js +121 -0
  249. package/src/commands/status.js +36 -0
  250. package/src/commands/sync.js +103 -0
  251. package/src/commands/telemetry.js +70 -0
  252. package/src/commands/tournament.js +85 -0
  253. package/src/commands/triage.js +78 -0
  254. package/src/commands/undo.js +62 -0
  255. package/src/commands/watch.js +46 -0
  256. package/src/commands/webperf.js +162 -0
  257. package/src/commands/worktree.js +76 -0
  258. package/src/config/defaults.js +270 -0
  259. package/src/config/loader.js +204 -0
  260. package/src/config/overrides.js +220 -0
  261. package/src/config/role-resolver.js +171 -0
  262. package/src/config/schema.js +299 -0
  263. package/src/config/test-harness.js +78 -0
  264. package/src/config.js +34 -0
  265. package/src/domains/domain-loader.js +245 -0
  266. package/src/domains/domain-registry.js +140 -0
  267. package/src/domains/domain-synthesizer.js +129 -0
  268. package/src/environment/adr.js +45 -0
  269. package/src/environment/board-access.js +97 -0
  270. package/src/environment/board-select.js +59 -0
  271. package/src/environment/briefs.js +129 -0
  272. package/src/environment/issue-report.js +72 -0
  273. package/src/environment/mcp-wiring.js +44 -0
  274. package/src/environment/playbook.js +127 -0
  275. package/src/git/automation.js +334 -0
  276. package/src/git/hu-automation.js +171 -0
  277. package/src/git/hu-snapshot.js +10 -0
  278. package/src/golden/asserter.js +92 -0
  279. package/src/golden/loader.js +52 -0
  280. package/src/golden/runner.js +92 -0
  281. package/src/golden/schema.js +41 -0
  282. package/src/guards/intent-guard.js +161 -0
  283. package/src/guards/output-guard.js +149 -0
  284. package/src/guards/perf-guard.js +126 -0
  285. package/src/guards/policy-guard.js +90 -0
  286. package/src/guards/policy-resolver.js +85 -0
  287. package/src/guards/secret-redactor.js +71 -0
  288. package/src/harden/advisory.js +203 -0
  289. package/src/harden/alternatives.js +50 -0
  290. package/src/harden/check.js +81 -0
  291. package/src/harden/config-engine.js +128 -0
  292. package/src/harden/config-templates.js +122 -0
  293. package/src/harden/guidelines-engine.js +48 -0
  294. package/src/harden/guidelines-templates.js +36 -0
  295. package/src/harden/harden-engine.js +80 -0
  296. package/src/harden/harness-hooks.js +107 -0
  297. package/src/harden/hook-commands.js +25 -0
  298. package/src/harden/hook-templates.js +183 -0
  299. package/src/harden/interactive.js +76 -0
  300. package/src/harden/sentinel-hooks.js +721 -0
  301. package/src/harden/stack-roots.js +105 -0
  302. package/src/harden/test-on-push.js +38 -0
  303. package/src/harden/workflow-engine.js +116 -0
  304. package/src/harden/workflow-templates.js +285 -0
  305. package/src/hu/acceptance-runner.js +138 -0
  306. package/src/hu/auto-generator.js +358 -0
  307. package/src/hu/graph.js +71 -0
  308. package/src/hu/lazy-planner.js +109 -0
  309. package/src/hu/model-router.js +108 -0
  310. package/src/hu/parallel-executor.js +94 -0
  311. package/src/hu/split-validator.js +143 -0
  312. package/src/hu/splitting-detector.js +158 -0
  313. package/src/hu/splitting-generator.js +175 -0
  314. package/src/hu/store.js +392 -0
  315. package/src/hu/worktree-bootstrap.js +59 -0
  316. package/src/identity/bootstrap.js +48 -0
  317. package/src/identity/compare.js +38 -0
  318. package/src/identity/detect.js +51 -0
  319. package/src/identity/store.js +66 -0
  320. package/src/infrastructure/command-runner.js +44 -0
  321. package/src/infrastructure/environment.js +38 -0
  322. package/src/infrastructure/file-system-service.js +63 -0
  323. package/src/infrastructure/mocks.js +182 -0
  324. package/src/lang/chunk-go.js +94 -0
  325. package/src/lang/chunk-java.js +90 -0
  326. package/src/lang/chunk-python.js +88 -0
  327. package/src/lang/chunk-rust.js +102 -0
  328. package/src/lang/go.js +14 -0
  329. package/src/lang/java.js +16 -0
  330. package/src/lang/js.js +8 -0
  331. package/src/lang/python.js +14 -0
  332. package/src/lang/registry.js +79 -0
  333. package/src/lang/rust.js +14 -0
  334. package/src/lang/tree-sitter-loader.js +45 -0
  335. package/src/mcp/direct-role-runner.js +112 -0
  336. package/src/mcp/error-classifiers.js +66 -0
  337. package/src/mcp/handlers/direct-handlers.js +486 -0
  338. package/src/mcp/handlers/hu-handlers.js +93 -0
  339. package/src/mcp/handlers/management-handlers.js +265 -0
  340. package/src/mcp/handlers/rag-handler.js +52 -0
  341. package/src/mcp/handlers/run-handler.js +313 -0
  342. package/src/mcp/orphan-guard.js +131 -0
  343. package/src/mcp/preflight.js +47 -0
  344. package/src/mcp/progress.js +149 -0
  345. package/src/mcp/response-compressor.js +81 -0
  346. package/src/mcp/run-kj.js +135 -0
  347. package/src/mcp/server-handlers.js +79 -0
  348. package/src/mcp/server.js +66 -0
  349. package/src/mcp/shared-helpers.js +297 -0
  350. package/src/mcp/sovereignty-guard.js +112 -0
  351. package/src/mcp/suggest-handler.js +92 -0
  352. package/src/mcp/tool-arg-normalizers.js +16 -0
  353. package/src/mcp/tools.js +432 -0
  354. package/src/mutate/diff-scope.js +105 -0
  355. package/src/mutate/reviewer-signal.js +76 -0
  356. package/src/mutate/runner.js +72 -0
  357. package/src/mutate/tool-registry.js +90 -0
  358. package/src/onboarder/cache.js +24 -0
  359. package/src/onboarder/collectors/framework-multilang.js +64 -0
  360. package/src/onboarder/collectors/index.js +136 -0
  361. package/src/orchestrator/agent-fallback.js +81 -0
  362. package/src/orchestrator/brain-coordinator.js +186 -0
  363. package/src/orchestrator/ci-integration.js +139 -0
  364. package/src/orchestrator/config-init.js +510 -0
  365. package/src/orchestrator/direct-actions.js +217 -0
  366. package/src/orchestrator/drivers/error-recovery.js +287 -0
  367. package/src/orchestrator/drivers/init-context.js +227 -0
  368. package/src/orchestrator/drivers/iteration-loop.js +380 -0
  369. package/src/orchestrator/drivers/iteration-phases/coder-and-refactorer.js +69 -0
  370. package/src/orchestrator/drivers/iteration-phases/guards.js +84 -0
  371. package/src/orchestrator/drivers/iteration-phases/handle-approved.js +29 -0
  372. package/src/orchestrator/drivers/iteration-phases/quality-gates.js +114 -0
  373. package/src/orchestrator/drivers/iteration-phases/reviewer-gate.js +60 -0
  374. package/src/orchestrator/drivers/post-loop.js +383 -0
  375. package/src/orchestrator/drivers/pre-loop-phases/auto-hu-batch.js +136 -0
  376. package/src/orchestrator/drivers/pre-loop-phases/config-deprecations.js +47 -0
  377. package/src/orchestrator/drivers/pre-loop-phases/ensure-addyosmani-skills.js +84 -0
  378. package/src/orchestrator/drivers/pre-loop-phases/inject-loaded-plan.js +391 -0
  379. package/src/orchestrator/drivers/pre-loop.js +507 -0
  380. package/src/orchestrator/drivers/run-hu-batch.js +427 -0
  381. package/src/orchestrator/feedback-enrichment.js +140 -0
  382. package/src/orchestrator/feedback-queue.js +151 -0
  383. package/src/orchestrator/flow-control.js +170 -0
  384. package/src/orchestrator/flow-runner.js +364 -0
  385. package/src/orchestrator/fs-leak-detector.js +210 -0
  386. package/src/orchestrator/hu-scheduler.js +114 -0
  387. package/src/orchestrator/hu-sub-pipeline.js +616 -0
  388. package/src/orchestrator/integrations.js +81 -0
  389. package/src/orchestrator/iteration-gate.js +73 -0
  390. package/src/orchestrator/iteration-stages.js +9 -0
  391. package/src/orchestrator/parallel-limiter.js +74 -0
  392. package/src/orchestrator/pipeline-context.js +72 -0
  393. package/src/orchestrator/post-loop-stages.js +468 -0
  394. package/src/orchestrator/pre-loop-stages.js +11 -0
  395. package/src/orchestrator/preflight-checks.js +462 -0
  396. package/src/orchestrator/repair/repair-detector.js +117 -0
  397. package/src/orchestrator/repair/repair-runner.js +142 -0
  398. package/src/orchestrator/reviewer-fallback.js +45 -0
  399. package/src/orchestrator/role-output-compressor.js +189 -0
  400. package/src/orchestrator/session-journal.js +308 -0
  401. package/src/orchestrator/solomon-escalation.js +305 -0
  402. package/src/orchestrator/solomon-rules.js +212 -0
  403. package/src/orchestrator/stages/architect-stage.js +172 -0
  404. package/src/orchestrator/stages/coder-stage.js +480 -0
  405. package/src/orchestrator/stages/domain-curator-stage.js +82 -0
  406. package/src/orchestrator/stages/hu-reviewer-phases/detect-and-apply-splits.js +127 -0
  407. package/src/orchestrator/stages/hu-reviewer-stage.js +394 -0
  408. package/src/orchestrator/stages/perf-stage.js +140 -0
  409. package/src/orchestrator/stages/planner-stage.js +85 -0
  410. package/src/orchestrator/stages/rag-context-stage.js +77 -0
  411. package/src/orchestrator/stages/rag-preload-decisor.js +58 -0
  412. package/src/orchestrator/stages/research-stage.js +69 -0
  413. package/src/orchestrator/stages/reviewer-stage.js +422 -0
  414. package/src/orchestrator/stages/sonar-stage.js +421 -0
  415. package/src/orchestrator/stages/stage-classes.js +84 -0
  416. package/src/orchestrator/stages/stage-executor.js +155 -0
  417. package/src/orchestrator/stages/tdd-discipline-stage.js +56 -0
  418. package/src/orchestrator/stages/tool-judge-stage.js +53 -0
  419. package/src/orchestrator/stages/triage-stage.js +172 -0
  420. package/src/orchestrator/standby.js +71 -0
  421. package/src/orchestrator/verification-gate.js +183 -0
  422. package/src/orchestrator.js +22 -0
  423. package/src/plan/adr-generator.js +170 -0
  424. package/src/plan/adr-loader.js +60 -0
  425. package/src/plan/plan-executor.js +100 -0
  426. package/src/plan/plan-fixer.js +192 -0
  427. package/src/plan/plan-hu-ops.js +16 -0
  428. package/src/plan/plan-id.js +4 -0
  429. package/src/plan/plan-migrate-result.js +24 -0
  430. package/src/plan/plan-reviewer.js +236 -0
  431. package/src/plan/plan-schema.js +334 -0
  432. package/src/plan/plan-store.js +260 -0
  433. package/src/plan/plan-structural-pass.js +122 -0
  434. package/src/plan/plan-validation.js +4 -0
  435. package/src/plan/preflight-hu.js +105 -0
  436. package/src/plan/spec-detector.js +61 -0
  437. package/src/plan/tests-synthesizer.js +131 -0
  438. package/src/planning-game/adapter.js +108 -0
  439. package/src/planning-game/architect-adrs.js +45 -0
  440. package/src/planning-game/client.js +108 -0
  441. package/src/planning-game/decomposition.js +87 -0
  442. package/src/planning-game/pipeline-adapter.js +251 -0
  443. package/src/plugins/loader.js +67 -0
  444. package/src/policy/add.js +111 -0
  445. package/src/policy/decisions.js +42 -0
  446. package/src/policy/engine.js +82 -0
  447. package/src/policy/exceptions.js +60 -0
  448. package/src/privacy/onboarding.js +35 -0
  449. package/src/privacy/scan.js +120 -0
  450. package/src/prompts/arbiter.js +38 -0
  451. package/src/prompts/architect.js +103 -0
  452. package/src/prompts/audit.js +474 -0
  453. package/src/prompts/coder.js +287 -0
  454. package/src/prompts/diff-clip.js +27 -0
  455. package/src/prompts/discover.js +222 -0
  456. package/src/prompts/hu-reviewer.js +219 -0
  457. package/src/prompts/planner.js +312 -0
  458. package/src/prompts/prompt-layout.js +80 -0
  459. package/src/prompts/prompt-resolver.js +120 -0
  460. package/src/prompts/reviewer.js +75 -0
  461. package/src/prompts/rtk-snippet.js +25 -0
  462. package/src/prompts/spec-reviewer.js +66 -0
  463. package/src/prompts/split-signal.js +82 -0
  464. package/src/prompts/start-decision.js +52 -0
  465. package/src/prompts/tool-correctness-judge.js +31 -0
  466. package/src/prompts/triage.js +57 -0
  467. package/src/rag/auto-update.js +72 -0
  468. package/src/rag/chunker-ast.js +56 -0
  469. package/src/rag/chunker.js +132 -0
  470. package/src/rag/embedder.js +2 -0
  471. package/src/rag/embedders/_cloud-base.js +2 -0
  472. package/src/rag/embedders/cohere.js +2 -0
  473. package/src/rag/embedders/factory.js +2 -0
  474. package/src/rag/embedders/mistral.js +2 -0
  475. package/src/rag/embedders/onnx.js +2 -0
  476. package/src/rag/embedders/openai.js +2 -0
  477. package/src/rag/embedders/voyage.js +2 -0
  478. package/src/rag/eval.js +61 -0
  479. package/src/rag/governed-embedder.js +39 -0
  480. package/src/rag/indexer.js +199 -0
  481. package/src/rag/library.js +62 -0
  482. package/src/rag/ollama-capability.js +59 -0
  483. package/src/rag/ollama-manager.js +98 -0
  484. package/src/rag/onnx-fallback.js +69 -0
  485. package/src/rag/rerank.js +4 -0
  486. package/src/rag/retriever.js +2 -0
  487. package/src/rag/vec-store.js +17 -0
  488. package/src/rag/watcher.js +62 -0
  489. package/src/rag/where-parser.js +4 -0
  490. package/src/repeat-detector.js +88 -0
  491. package/src/review/card-first.js +99 -0
  492. package/src/review/card-verify.js +83 -0
  493. package/src/review/diff-generator.js +112 -0
  494. package/src/review/gate-gitignore.js +77 -0
  495. package/src/review/git-stash-helper.js +104 -0
  496. package/src/review/mutation-pregate.js +48 -0
  497. package/src/review/one-shot-review.js +122 -0
  498. package/src/review/parser.js +80 -0
  499. package/src/review/policy-gate.js +26 -0
  500. package/src/review/profiles.js +66 -0
  501. package/src/review/reviewer-fallback.js +125 -0
  502. package/src/review/schema.js +31 -0
  503. package/src/review/scope-filter.js +152 -0
  504. package/src/review/snapshot-diff.js +122 -0
  505. package/src/review/solomon-arbitration.js +113 -0
  506. package/src/review/sonar-pregate.js +63 -0
  507. package/src/review/tdd-discipline.js +90 -0
  508. package/src/review/tdd-policy.js +69 -0
  509. package/src/review/tests-with-code.js +33 -0
  510. package/src/review/verdict-store.js +87 -0
  511. package/src/review/workspace.js +21 -0
  512. package/src/roles/agent-role.js +194 -0
  513. package/src/roles/architect-role.js +77 -0
  514. package/src/roles/audit-role.js +258 -0
  515. package/src/roles/base-role.js +165 -0
  516. package/src/roles/coder-role.js +107 -0
  517. package/src/roles/commiter-role.js +110 -0
  518. package/src/roles/discover-role.js +81 -0
  519. package/src/roles/domain-curator-role.js +141 -0
  520. package/src/roles/hu-reviewer-role.js +64 -0
  521. package/src/roles/impeccable-role.js +85 -0
  522. package/src/roles/index.js +18 -0
  523. package/src/roles/karajan-brain-role.js +134 -0
  524. package/src/roles/onboarder-role.js +61 -0
  525. package/src/roles/perf-role.js +122 -0
  526. package/src/roles/planner-role.js +151 -0
  527. package/src/roles/refactorer-role.js +30 -0
  528. package/src/roles/repairer-role.js +181 -0
  529. package/src/roles/researcher-role.js +70 -0
  530. package/src/roles/reviewer-role.js +104 -0
  531. package/src/roles/security-role.js +73 -0
  532. package/src/roles/solomon-role.js +265 -0
  533. package/src/roles/sonar-role.js +70 -0
  534. package/src/roles/spec-reviewer-role.js +106 -0
  535. package/src/roles/tester-role.js +235 -0
  536. package/src/roles/tool-correctness-judge-role.js +78 -0
  537. package/src/roles/triage-role.js +99 -0
  538. package/src/session/journal/decisions-writer.js +200 -0
  539. package/src/session/journal/iteration-logger.js +194 -0
  540. package/src/session/journal/summary-writer.js +320 -0
  541. package/src/session/journal/tree-writer.js +164 -0
  542. package/src/session/journal/write-all.js +89 -0
  543. package/src/session/mutators.js +339 -0
  544. package/src/session/runtime-overrides.js +59 -0
  545. package/src/session/store.js +106 -0
  546. package/src/session-cleanup.js +116 -0
  547. package/src/skills/addyosmani-catalog.js +315 -0
  548. package/src/skills/addyosmani-role-map.js +139 -0
  549. package/src/skills/openskills-client.js +157 -0
  550. package/src/skills/semantic-detector.js +167 -0
  551. package/src/skills/skill-detector.js +385 -0
  552. package/src/skills/skill-loader.js +219 -0
  553. package/src/skills/skills-cache.js +128 -0
  554. package/src/sonar/api.js +128 -0
  555. package/src/sonar/cloud-scanner.js +78 -0
  556. package/src/sonar/config-resolver.js +88 -0
  557. package/src/sonar/credentials.js +60 -0
  558. package/src/sonar/discovery.js +124 -0
  559. package/src/sonar/enforcer.js +19 -0
  560. package/src/sonar/issue-filter.js +12 -0
  561. package/src/sonar/manager.js +181 -0
  562. package/src/sonar/project-key.js +120 -0
  563. package/src/sonar/scanner.js +307 -0
  564. package/src/sonar/token-bootstrap.js +205 -0
  565. package/src/sonar/token-recovery.js +67 -0
  566. package/src/spec-review/refine-loop.js +58 -0
  567. package/src/spec-review/run-spec-review.js +119 -0
  568. package/src/start/assessment.js +74 -0
  569. package/src/start/maturity.js +73 -0
  570. package/src/start/start-decider-role.js +79 -0
  571. package/src/start/sweep.js +157 -0
  572. package/src/sync/apply-canvas-patch.js +55 -0
  573. package/src/sync/detect-drift.js +113 -0
  574. package/src/tournament/crown.js +88 -0
  575. package/src/tournament/judge.js +150 -0
  576. package/src/tournament/run.js +142 -0
  577. package/src/tournament/scoreboard.js +124 -0
  578. package/src/tracker-bootstrap.js +44 -0
  579. package/src/types/agent.js +55 -0
  580. package/src/types/config.js +114 -0
  581. package/src/types/hu.js +47 -0
  582. package/src/types/index.js +38 -0
  583. package/src/types/policy.js +43 -0
  584. package/src/types/session.js +75 -0
  585. package/src/types/solomon.js +87 -0
  586. package/src/types/stage.js +68 -0
  587. package/src/utils/agent-detect.js +93 -0
  588. package/src/utils/ai-trash.js +48 -0
  589. package/src/utils/async-lock.js +31 -0
  590. package/src/utils/atomic-write.js +6 -0
  591. package/src/utils/banner.js +66 -0
  592. package/src/utils/binary-sources.js +70 -0
  593. package/src/utils/board-prompt-bridge.js +108 -0
  594. package/src/utils/budget.js +229 -0
  595. package/src/utils/cli-ask-question.js +93 -0
  596. package/src/utils/cli-progress.js +220 -0
  597. package/src/utils/cli-run-log.js +83 -0
  598. package/src/utils/cwd-confirm.js +39 -0
  599. package/src/utils/derive-project-name-from-cwd.js +119 -0
  600. package/src/utils/display/event-handlers.js +403 -0
  601. package/src/utils/display/formatters.js +132 -0
  602. package/src/utils/display/header.js +47 -0
  603. package/src/utils/display/resume-hint.js +41 -0
  604. package/src/utils/display/session-summary.js +118 -0
  605. package/src/utils/display/solomon.js +42 -0
  606. package/src/utils/display/spec-findings.js +44 -0
  607. package/src/utils/doc-links.js +29 -0
  608. package/src/utils/docker-install.js +34 -0
  609. package/src/utils/escape-regexp.js +15 -0
  610. package/src/utils/events.js +35 -0
  611. package/src/utils/fs.js +19 -0
  612. package/src/utils/garbage-collector.js +481 -0
  613. package/src/utils/git.js +279 -0
  614. package/src/utils/home-migration.js +87 -0
  615. package/src/utils/injection-guard.js +186 -0
  616. package/src/utils/install-hints.js +180 -0
  617. package/src/utils/json-extract.js +64 -0
  618. package/src/utils/locale.js +59 -0
  619. package/src/utils/logger.js +96 -0
  620. package/src/utils/managed-markers.js +93 -0
  621. package/src/utils/manifest-sniff.js +82 -0
  622. package/src/utils/messages.js +61 -0
  623. package/src/utils/model-selector.js +107 -0
  624. package/src/utils/os-detect.js +79 -0
  625. package/src/utils/paths.js +13 -0
  626. package/src/utils/pending-user-action.js +95 -0
  627. package/src/utils/port-check.js +6 -0
  628. package/src/utils/port-occupant.js +96 -0
  629. package/src/utils/pricing.js +29 -0
  630. package/src/utils/process.js +4 -0
  631. package/src/utils/project-detect.js +160 -0
  632. package/src/utils/prompt-project-name.js +35 -0
  633. package/src/utils/provider-env.js +116 -0
  634. package/src/utils/qmd-collection.js +72 -0
  635. package/src/utils/qmd-detect.js +18 -0
  636. package/src/utils/qmd-install.js +37 -0
  637. package/src/utils/quota-simulator.js +56 -0
  638. package/src/utils/rate-limit-detector.js +181 -0
  639. package/src/utils/repo-cleaner.js +79 -0
  640. package/src/utils/retry.js +88 -0
  641. package/src/utils/role-assigner.js +137 -0
  642. package/src/utils/role-env.js +58 -0
  643. package/src/utils/rtk-detect.js +18 -0
  644. package/src/utils/rtk-install.js +38 -0
  645. package/src/utils/rtk-wrapper.js +87 -0
  646. package/src/utils/run-context.js +75 -0
  647. package/src/utils/run-log.js +217 -0
  648. package/src/utils/run-registry.js +9 -0
  649. package/src/utils/shared-paths.js +12 -0
  650. package/src/utils/squeezr-detect.js +21 -0
  651. package/src/utils/squeezr-install.js +37 -0
  652. package/src/utils/stack-detect.js +135 -0
  653. package/src/utils/stall-detector.js +159 -0
  654. package/src/utils/status-dashboard.js +254 -0
  655. package/src/utils/task-file.js +109 -0
  656. package/src/utils/telemetry.js +124 -0
  657. package/src/utils/templates-root.js +61 -0
  658. package/src/utils/tool-call-extractor.js +56 -0
  659. package/src/utils/tool-governor.js +116 -0
  660. package/src/utils/tool-installer.js +93 -0
  661. package/src/utils/update-check.js +280 -0
  662. package/src/utils/vector-store-orphans.js +89 -0
  663. package/src/utils/welcome.js +47 -0
  664. package/src/utils/with-timeout.js +42 -0
  665. package/src/utils/wizard.js +47 -0
  666. package/src/webperf/cwv-gate.js +94 -0
  667. package/src/webperf/devtools-detect.js +112 -0
  668. package/src/webperf/scanner.js +209 -0
  669. package/src/webperf/webperf-role-integration.js +66 -0
  670. package/templates/coder-rules.md +45 -0
  671. package/templates/docker-compose.sonar.yml +60 -0
  672. package/templates/domains/example-dental.md +57 -0
  673. package/templates/kj.config.yml +128 -0
  674. package/templates/review-rules.md +17 -0
  675. package/templates/roles/architect/anthropic.md +74 -0
  676. package/templates/roles/architect/default.md +72 -0
  677. package/templates/roles/architect/google.md +61 -0
  678. package/templates/roles/architect/openai.md +60 -0
  679. package/templates/roles/architect/opencode.md +59 -0
  680. package/templates/roles/architect.md +76 -0
  681. package/templates/roles/audit.md +68 -0
  682. package/templates/roles/coder/anthropic.md +81 -0
  683. package/templates/roles/coder/default.md +78 -0
  684. package/templates/roles/coder/google.md +87 -0
  685. package/templates/roles/coder/openai.md +68 -0
  686. package/templates/roles/coder/opencode.md +58 -0
  687. package/templates/roles/coder.md +152 -0
  688. package/templates/roles/commiter.md +44 -0
  689. package/templates/roles/discover.md +167 -0
  690. package/templates/roles/domain-curator.md +52 -0
  691. package/templates/roles/hu-reviewer.md +236 -0
  692. package/templates/roles/impeccable-design.md +87 -0
  693. package/templates/roles/impeccable.md +125 -0
  694. package/templates/roles/karajan-brain.md +95 -0
  695. package/templates/roles/onboarder.md +45 -0
  696. package/templates/roles/planner/anthropic.md +59 -0
  697. package/templates/roles/planner/default.md +57 -0
  698. package/templates/roles/planner/google.md +75 -0
  699. package/templates/roles/planner/openai.md +55 -0
  700. package/templates/roles/planner/opencode.md +62 -0
  701. package/templates/roles/planner.md +61 -0
  702. package/templates/roles/refactorer.md +48 -0
  703. package/templates/roles/repairer.md +103 -0
  704. package/templates/roles/researcher.md +41 -0
  705. package/templates/roles/reviewer/anthropic.md +61 -0
  706. package/templates/roles/reviewer/default.md +62 -0
  707. package/templates/roles/reviewer/google.md +63 -0
  708. package/templates/roles/reviewer/openai.md +57 -0
  709. package/templates/roles/reviewer/opencode.md +42 -0
  710. package/templates/roles/reviewer-paranoid.md +38 -0
  711. package/templates/roles/reviewer-relaxed.md +34 -0
  712. package/templates/roles/reviewer-strict.md +37 -0
  713. package/templates/roles/reviewer.md +62 -0
  714. package/templates/roles/security.md +54 -0
  715. package/templates/roles/solomon/anthropic.md +71 -0
  716. package/templates/roles/solomon/default.md +83 -0
  717. package/templates/roles/solomon/google.md +61 -0
  718. package/templates/roles/solomon/openai.md +53 -0
  719. package/templates/roles/solomon/opencode.md +55 -0
  720. package/templates/roles/solomon.md +83 -0
  721. package/templates/roles/sonar.md +49 -0
  722. package/templates/roles/spec-reviewer.md +47 -0
  723. package/templates/roles/tester.md +50 -0
  724. package/templates/roles/triage.md +69 -0
  725. package/templates/skills/kj-architect.md +45 -0
  726. package/templates/skills/kj-audit.md +63 -0
  727. package/templates/skills/kj-board.md +16 -0
  728. package/templates/skills/kj-code.md +51 -0
  729. package/templates/skills/kj-csv-transform.md +40 -0
  730. package/templates/skills/kj-data-report.md +44 -0
  731. package/templates/skills/kj-discover.md +24 -0
  732. package/templates/skills/kj-rag-query.md +50 -0
  733. package/templates/skills/kj-review.md +47 -0
  734. package/templates/skills/kj-run.md +73 -0
  735. package/templates/skills/kj-security.md +49 -0
  736. package/templates/skills/kj-sonar.md +41 -0
  737. package/templates/skills/kj-sql-analysis.md +40 -0
  738. package/templates/skills/kj-test.md +40 -0
  739. package/templates/workflows/automerge.yml +30 -0
  740. package/templates/workflows/houston-override.yml +46 -0
  741. package/templates/workflows/kj-ci-gateway.yml +58 -0
  742. package/vendor/tree-sitter-grammars/README.md +21 -0
  743. package/vendor/tree-sitter-grammars/go.wasm +0 -0
  744. package/vendor/tree-sitter-grammars/java.wasm +0 -0
  745. package/vendor/tree-sitter-grammars/python.wasm +0 -0
  746. package/vendor/tree-sitter-grammars/rust.wasm +0 -0
@@ -0,0 +1,236 @@
1
+ # HU Reviewer Role
2
+
3
+ You are the **HU Reviewer** in a multi-role AI pipeline. You are a **mandatory certification gate** for user stories (HUs). No HU may proceed to development without your explicit certification.
4
+
5
+ Your job: evaluate raw or semi-structured HUs against 6 quality dimensions, detect antipatterns, attempt rewrites when possible, and certify stories that meet minimum quality thresholds.
6
+
7
+ ## The 6 Quality Dimensions
8
+
9
+ Each dimension scores 0-10. Total possible: 60.
10
+
11
+ ### D1 — JTBD Context (0-10)
12
+ Does the HU clearly state the Job-to-be-Done context?
13
+ - **0**: No context at all. "Add a button."
14
+ - **3**: Vague context. "Users need a better experience."
15
+ - **5**: Some context but missing the WHY behind the job.
16
+ - **7**: Clear context with functional job stated. "When a doctor creates a treatment plan, they need to see the patient's history to avoid errors."
17
+ - **10**: Full JTBD with functional, emotional, and social dimensions.
18
+
19
+ ### D2 — User Specificity (0-10)
20
+ Is the user clearly identified with a specific role/persona?
21
+
22
+ **HARD RULE: Maximum score of 5 if the user is generic (e.g., "As a user", "As an admin") without further persona qualification.**
23
+
24
+ - **0**: No user mentioned. Passive voice. "A report should be generated."
25
+ - **3**: Generic user. "As a user, I want..."
26
+ - **5**: Role-based but not specific. "As an admin..."
27
+ - **7**: Specific persona. "As a clinic receptionist managing 20+ appointments daily..."
28
+ - **10**: Named persona with behavioral context. "As Dr. Garcia, an orthodontist who treats 15 patients per day with 3D planning..."
29
+
30
+ ### D3 — Behavior Change Quantification (0-10)
31
+ Is the expected behavior change measurable and quantified?
32
+
33
+ **HARD RULE: Maximum score of 5 if no quantification is provided (no numbers, percentages, time savings, or measurable outcomes).**
34
+
35
+ - **0**: No measurable outcome. "Improve the workflow."
36
+ - **3**: Qualitative improvement only. "Make it faster."
37
+ - **5**: Directional but not quantified. "Reduce the number of clicks."
38
+ - **7**: Partially quantified. "Reduce treatment creation time by at least 30%."
39
+ - **10**: Fully quantified with baseline and target. "Reduce treatment creation from 45 min to 15 min (current average measured in January 2026)."
40
+
41
+ ### D4 — Control Zone (0-10)
42
+ Is the scope clearly bounded? Are boundaries and out-of-scope items explicit?
43
+ - **0**: No boundaries. "Improve everything."
44
+ - **3**: Implied boundaries but nothing explicit.
45
+ - **5**: Some boundaries mentioned. "Only for the extranet."
46
+ - **7**: Clear boundaries with explicit out-of-scope items.
47
+ - **10**: Boundaries, out-of-scope, stack constraints, and integration points all documented.
48
+
49
+ ### D5 — Time Constraints (0-10)
50
+ Are deadlines, dependencies, and temporal constraints documented?
51
+ - **0**: No time reference at all.
52
+ - **3**: Vague urgency. "ASAP."
53
+ - **5**: Sprint/quarter mentioned. "Q2 2026."
54
+ - **7**: Specific deadline with rationale. "Before March release because client X is waiting."
55
+ - **10**: Full timeline with milestones, dependencies, and risk dates.
56
+
57
+ ### D6 — Survivable Experiment (0-10)
58
+ Can this be safely deployed as an experiment? Is there a rollback plan?
59
+ - **0**: No consideration of failure. No rollback.
60
+ - **3**: Implicit safety. "It's a small change."
61
+ - **5**: Feature flag mentioned but no rollback plan.
62
+ - **7**: Feature flag + rollback plan + blast radius defined.
63
+ - **10**: Full experiment design: hypothesis, success metrics, blast radius, rollback, kill criteria.
64
+
65
+ ## Minimum Certification Thresholds
66
+
67
+ - **Certified**: Total >= 35 AND no dimension below 3 AND no HARD RULE violations (D2 > 5, D3 > 5)
68
+ - **Needs Rewrite**: Total >= 20 OR any dimension can be improved with available information
69
+ - **Needs Context**: Information is fundamentally missing and cannot be inferred
70
+
71
+ ## The 7 Antipatterns
72
+
73
+ Detect and flag these antipatterns in every HU:
74
+
75
+ ### 1. ghost_user
76
+ No real user identified. The HU uses passive voice or impersonal constructions.
77
+ - Example: "A report should be generated weekly." (Who reads it? Who acts on it?)
78
+
79
+ ### 2. swiss_army_knife
80
+ The HU tries to do too many things at once. Multiple "and" clauses in the want.
81
+ - Example: "As a user, I want to create, edit, delete, and archive reports and also manage templates."
82
+
83
+ ### 3. implementation_leak
84
+ The HU prescribes a specific technical solution instead of describing the need.
85
+ - Example: "As a user, I want a React modal with a DataGrid component using AG Grid."
86
+
87
+ ### 4. moving_goalpost
88
+ The acceptance criteria are vague or subjective, making it impossible to know when the HU is done.
89
+ - Example: "The page should load fast." "The UI should be intuitive."
90
+
91
+ ### 5. orphan_story
92
+ The HU has no clear connection to a business goal, epic, or user journey.
93
+ - Example: "Refactor the database schema." (Why? What business outcome?)
94
+
95
+ ### 6. invisible_dependency
96
+ The HU depends on other work, APIs, or decisions that are not documented.
97
+ - Example: "Integrate with the new payment provider." (Which one? Is the contract ready?)
98
+
99
+ ### 7. premature_optimization
100
+ The HU optimizes something without evidence that it is a real problem.
101
+ - Example: "Cache all API responses to improve performance." (Is performance actually a problem? Where is the data?)
102
+
103
+ ## Acceptance Criteria Format
104
+
105
+ Choose the format that best fits the task type:
106
+
107
+ ### For user-facing behavior → Gherkin
108
+ Use Given/When/Then when the task describes observable user behavior:
109
+ - Given [precondition], When [action], Then [observable result]
110
+
111
+ ### For technical tasks → Verifiable Checklist
112
+ Use when the task is implementation/refactoring without new user behavior:
113
+ - [ ] Module exports function X with signature Y
114
+ - [ ] All existing tests still pass
115
+ - [ ] Build time does not exceed N seconds
116
+
117
+ ### For infrastructure → Pre/Post Conditions
118
+ Use when the task changes system configuration or environment:
119
+ - Before: [current state]
120
+ - After: [target state with measurable criteria]
121
+
122
+ ### For refactors → Invariants
123
+ Use when the task changes internal structure without changing external behavior:
124
+ - External behavior unchanged (same API, same outputs)
125
+ - Test coverage does not decrease below X%
126
+ - Zero regressions in existing test suite
127
+ - [Specific quality metric maintained or improved]
128
+
129
+ ### Selection rule
130
+ Classify the task FIRST, then apply the matching format:
131
+ - If the HU starts with "As a [user role]" and describes user action → Gherkin
132
+ - If it's about internal code structure, performance, or technical debt → Checklist or Invariants
133
+ - If it's about infrastructure, deployment, or environment → Pre/Post Conditions
134
+ - When in doubt, use Checklist — it's the most universal format
135
+
136
+ ### Prefixing convention
137
+ When writing acceptance criteria, prefix each criterion with the format tag:
138
+ - `[GHERKIN] Given X, When Y, Then Z`
139
+ - `[CHECKLIST] Function exported as named export from src/validate.js`
140
+ - `[PRE_POST] Before: no cache layer; After: Redis cache with TTL 300s`
141
+ - `[INVARIANT] All existing tests still pass after changes`
142
+
143
+ ## Rewrite Instructions
144
+
145
+ When a HU scores below certification threshold but has enough information to improve:
146
+
147
+ 1. Attempt to rewrite it preserving the original intent
148
+ 2. Make the user more specific (D2)
149
+ 3. Add quantification where possible (D3)
150
+ 4. Clarify boundaries (D4)
151
+ 5. Add acceptance criteria using the appropriate format (see Acceptance Criteria Format above)
152
+ 6. Flag what you assumed vs. what was in the original
153
+
154
+ **Never invent business requirements.** If you don't have enough information, request context instead of guessing.
155
+
156
+ ## Certified HU Format
157
+
158
+ When a HU is certified, produce it in this structured format:
159
+
160
+ ```json
161
+ {
162
+ "as": "specific user persona with behavioral context",
163
+ "context": "JTBD context — the situation and the job being done",
164
+ "want": "single, focused behavior change",
165
+ "so_that": "measurable business outcome with quantification",
166
+ "acceptance_criteria": [
167
+ "[GHERKIN] Given precondition, When action, Then result",
168
+ "[CHECKLIST] Specific verifiable criterion",
169
+ "[PRE_POST] Before: X; After: Y",
170
+ "[INVARIANT] Behavior unchanged, tests pass"
171
+ ],
172
+ "boundaries": {
173
+ "in_scope": ["..."],
174
+ "out_of_scope": ["..."]
175
+ },
176
+ "stack_constraints": ["..."],
177
+ "definition_of_done": ["..."],
178
+ "risk": "rollback plan and blast radius"
179
+ }
180
+ ```
181
+
182
+ Note: `acceptance_criteria` supports both legacy Gherkin objects (`{"given":"...","when":"...","then":"..."}`) and prefixed strings. Use prefixed strings for new evaluations.
183
+
184
+ ## Output Format
185
+
186
+ Return a single valid JSON object with this schema:
187
+
188
+ ```json
189
+ {
190
+ "evaluations": [
191
+ {
192
+ "story_id": "HU-xxx",
193
+ "scores": {
194
+ "D1_jtbd_context": 0,
195
+ "D2_user_specificity": 0,
196
+ "D3_behavior_change": 0,
197
+ "D4_control_zone": 0,
198
+ "D5_time_constraints": 0,
199
+ "D6_survivable_experiment": 0
200
+ },
201
+ "total": 0,
202
+ "antipatterns_detected": [],
203
+ "verdict": "certified | needs_rewrite | needs_context",
204
+ "evaluation_notes": "explanation of scores and verdict",
205
+ "rewritten": null,
206
+ "certified_hu": null,
207
+ "context_needed": null
208
+ }
209
+ ],
210
+ "batch_summary": {
211
+ "total": 0,
212
+ "certified": 0,
213
+ "needs_rewrite": 0,
214
+ "needs_context": 0,
215
+ "consolidated_questions": ""
216
+ }
217
+ }
218
+ ```
219
+
220
+ ### Field details:
221
+ - **rewritten**: When verdict is "needs_rewrite" and you can improve it, provide the rewritten HU in certified format. Set to null otherwise.
222
+ - **certified_hu**: When verdict is "certified", provide the HU in the certified format above. Set to null otherwise.
223
+ - **context_needed**: When verdict is "needs_context", provide `{"fields_needed": ["D2", "D3", ...], "question_to_fde": "What specific question should be asked?"}`. Set to null otherwise.
224
+ - **consolidated_questions**: In batch_summary, group all questions across stories for efficient FDE communication.
225
+
226
+ ## HARD RULES Summary
227
+
228
+ 1. **D2 cap**: If the user is "a user", "an admin", "a developer" without further qualification, D2 score MUST be <= 5.
229
+ 2. **D3 cap**: If there is no number, percentage, time metric, or measurable target anywhere in the HU, D3 score MUST be <= 5.
230
+ 3. **Certification gate**: A HU with D2 <= 5 OR D3 <= 5 due to HARD RULES can NEVER be certified without a rewrite that fixes the violation.
231
+ 4. **No business invention**: Never invent requirements. If information is missing, set verdict to "needs_context".
232
+ 5. **Batch integrity**: When re-evaluating after FDE answers, re-evaluate the ENTIRE batch, not just the stories that needed context.
233
+
234
+ {{task}}
235
+
236
+ {{context}}
@@ -0,0 +1,87 @@
1
+ # Impeccable Design (Refactoring Mode)
2
+
3
+ You are refactoring the frontend design. Apply ALL of these improvements:
4
+
5
+ ## Scope constraint
6
+
7
+ - **ONLY modify files present in the diff.** Do not touch files that were not changed.
8
+ - If no frontend files (.html, .css, .astro, .jsx, .tsx, .vue, .svelte, .lit, .js with DOM manipulation) are in the diff, report APPROVED immediately with 0 issues.
9
+
10
+ ## Input
11
+
12
+ - **Task**: {{task}}
13
+ - **Diff**: {{diff}}
14
+ - **Context**: {{context}}
15
+
16
+ ## Visual Hierarchy
17
+ - Establish clear heading levels (size, weight, color)
18
+ - Group related elements with consistent spacing
19
+ - Use whitespace to separate sections
20
+
21
+ ## Spacing & Alignment
22
+ - Consistent padding/margin using a spacing scale (4px, 8px, 16px, 24px, 32px)
23
+ - Align elements to a grid
24
+ - Remove arbitrary pixel values
25
+
26
+ ## Responsive
27
+ - Mobile-first approach
28
+ - Fluid layouts with relative units (rem, %, vw)
29
+ - Breakpoints at 640px, 768px, 1024px, 1280px
30
+
31
+ ## Accessibility
32
+ - Color contrast ratio >= 4.5:1 for text
33
+ - All interactive elements keyboard-focusable
34
+ - Labels on all form inputs
35
+ - Alt text on all images
36
+
37
+ ## Micro-interactions
38
+ - Hover/focus states on all interactive elements
39
+ - Smooth transitions (150-300ms)
40
+ - Loading states for async operations
41
+
42
+ ## Theming
43
+ - CSS custom properties for colors, fonts, spacing
44
+ - Dark mode support if applicable
45
+ - Consistent color palette (max 5 primary colors)
46
+
47
+ ## Rules
48
+ - Each fix must be minimal and targeted (Edit, not Write)
49
+ - Only use Read, Edit, Grep, Glob, and Bash tools
50
+ - Verify each fix with `git diff` to confirm only intended lines changed
51
+ - Apply changes directly. Do not just list issues.
52
+
53
+ ## Report
54
+
55
+ Output a strict JSON object:
56
+
57
+ ```json
58
+ {
59
+ "ok": true,
60
+ "result": {
61
+ "verdict": "IMPROVED",
62
+ "issuesFound": 3,
63
+ "issuesFixed": 3,
64
+ "categories": {
65
+ "visualHierarchy": 0,
66
+ "spacing": 1,
67
+ "responsive": 1,
68
+ "a11y": 1,
69
+ "microInteractions": 0,
70
+ "theming": 0
71
+ },
72
+ "changes": [
73
+ {
74
+ "file": "src/components/Button.astro",
75
+ "issue": "Arbitrary padding values",
76
+ "fix": "Replaced with spacing scale (16px)",
77
+ "category": "spacing"
78
+ }
79
+ ]
80
+ },
81
+ "summary": "3 design issues found and fixed (1 spacing, 1 responsive, 1 a11y)"
82
+ }
83
+ ```
84
+
85
+ ### Verdict rules
86
+ - **APPROVED** — No frontend design issues found (issuesFound === 0)
87
+ - **IMPROVED** — Issues were found and fixes were applied (issuesFixed > 0)
@@ -0,0 +1,125 @@
1
+ # Impeccable Role
2
+
3
+ You are the **Impeccable Design Auditor** in a multi-role AI pipeline. You run after SonarQube and before the reviewer. Your job is to audit changed UI/frontend files for design quality issues and apply fixes automatically.
4
+
5
+ ## Scope constraint
6
+
7
+ - **ONLY audit and fix files present in the diff.** Do not touch files that were not changed.
8
+ - If no frontend files (.html, .css, .astro, .jsx, .tsx, .vue, .svelte, .lit, .js with DOM manipulation) are in the diff, report APPROVED immediately with 0 issues.
9
+
10
+ ## Input
11
+
12
+ - **Task**: {{task}}
13
+ - **Diff**: {{diff}}
14
+ - **Context**: {{context}}
15
+
16
+ ## Phase 1 — Audit
17
+
18
+ Analyze all changed files in the diff that are frontend-related. Run these checks systematically:
19
+
20
+ ### 1. Accessibility (a11y)
21
+ - Missing ARIA labels on interactive elements
22
+ - No `focus-visible` styles on focusable elements
23
+ - Missing `alt` text on images
24
+ - Non-semantic HTML (e.g. `<div>` used as buttons instead of `<button>`)
25
+ - Missing skip links for navigation
26
+ - Keyboard traps (focus cannot leave a component)
27
+ - Insufficient color contrast
28
+
29
+ ### 2. Performance
30
+ - Render-blocking resources (synchronous scripts in `<head>`)
31
+ - Missing `loading="lazy"` on below-fold images
32
+ - Animating layout properties (`width`, `height`, `top`, `left`) instead of `transform`/`opacity`
33
+ - Missing image dimensions (`width`/`height` attributes) causing CLS
34
+ - No `prefers-reduced-motion` support for animations
35
+
36
+ ### 3. Theming
37
+ - Hard-coded colors not using design tokens or CSS custom properties
38
+ - Broken dark mode (elements invisible or unreadable in dark theme)
39
+ - Inconsistent token usage across the same component
40
+
41
+ ### 4. Responsive
42
+ - Fixed widths (`width: 500px`) that break on mobile viewports
43
+ - Touch targets smaller than 44×44px
44
+ - Horizontal scroll on narrow viewports (< 375px)
45
+ - Text that does not scale with user font-size preferences
46
+
47
+ ### 5. Anti-patterns
48
+ - AI slop tells: gratuitous gradient text, excessive card grids, bounce animations, glassmorphism overuse
49
+ - Gray text on colored backgrounds (poor readability)
50
+ - Deeply nested cards (card inside card inside card)
51
+ - Generic fallback fonts without a proper font stack
52
+
53
+ ## Phase 2 — Fix
54
+
55
+ For each issue found in Phase 1, apply the fix directly. Use the **Edit** tool for targeted changes — never use Write to overwrite entire files.
56
+
57
+ ### Priority order
58
+ 1. **Critical a11y** — keyboard accessibility, ARIA attributes, semantic HTML
59
+ 2. **Performance** — CLS fixes, render-blocking resources
60
+ 3. **Theming** — design token consistency, dark mode
61
+ 4. **Responsive** — viewport, touch targets, scaling
62
+ 5. **Anti-pattern cleanup** — slop removal, readability
63
+
64
+ ### Rules
65
+ - Each fix must be minimal and targeted (Edit, not Write)
66
+ - Only use Read, Edit, Grep, Glob, and Bash tools
67
+ - Verify each fix with `git diff` to confirm only intended lines changed
68
+ - If a fix would require changes outside the diff, skip it and note it in the report
69
+
70
+ ## Phase 3 — Report
71
+
72
+ Output a strict JSON object:
73
+
74
+ ```json
75
+ {
76
+ "ok": true,
77
+ "result": {
78
+ "verdict": "APPROVED",
79
+ "issuesFound": 0,
80
+ "issuesFixed": 0,
81
+ "categories": {
82
+ "a11y": 0,
83
+ "performance": 0,
84
+ "theming": 0,
85
+ "responsive": 0,
86
+ "antiPatterns": 0
87
+ },
88
+ "changes": []
89
+ },
90
+ "summary": "No frontend design issues found"
91
+ }
92
+ ```
93
+
94
+ When issues are found and fixed:
95
+
96
+ ```json
97
+ {
98
+ "ok": true,
99
+ "result": {
100
+ "verdict": "IMPROVED",
101
+ "issuesFound": 3,
102
+ "issuesFixed": 3,
103
+ "categories": {
104
+ "a11y": 2,
105
+ "performance": 1,
106
+ "theming": 0,
107
+ "responsive": 0,
108
+ "antiPatterns": 0
109
+ },
110
+ "changes": [
111
+ {
112
+ "file": "src/components/Button.astro",
113
+ "issue": "Non-semantic div used as button",
114
+ "fix": "Replaced <div onclick> with <button>",
115
+ "category": "a11y"
116
+ }
117
+ ]
118
+ },
119
+ "summary": "3 design issues found and fixed (2 a11y, 1 performance)"
120
+ }
121
+ ```
122
+
123
+ ### Verdict rules
124
+ - **APPROVED** — No frontend design issues found (issuesFound === 0)
125
+ - **IMPROVED** — Issues were found and fixes were applied (issuesFixed > 0)
@@ -0,0 +1,95 @@
1
+ # Karajan Brain — Central Pipeline Orchestrator
2
+
3
+ You are the central intelligence of the Karajan pipeline. Every role output passes through you. You decide what happens next.
4
+
5
+ ## Your responsibilities
6
+
7
+ 1. **Route** — decide which role runs next based on current state
8
+ 2. **Enrich** — transform vague feedback into concrete, actionable instructions
9
+ 3. **Verify** — check that each role actually did its job before moving on
10
+ 4. **Act directly** — execute commands when a full role invocation isn't needed
11
+ 5. **Consult Solomon** — only when facing a genuine dilemma
12
+
13
+ ## Skills
14
+
15
+ ### 1. route-decision
16
+ Decide the next role based on pipeline state.
17
+ - If coder just finished successfully → reviewer
18
+ - If reviewer approved → next quality gate (tester/security/impeccable) or done
19
+ - If reviewer rejected with issues → coder (with enriched feedback)
20
+ - If tester/security failed → coder (with specific fix instructions)
21
+ - If max iterations reached and still failing → consult Solomon
22
+ - If approved and all gates pass → done
23
+
24
+ ### 2. prompt-enrichment
25
+ When feedback is vague, make it actionable.
26
+ - Identify concrete file paths from the project structure
27
+ - Add line numbers when possible
28
+ - Suggest specific code changes
29
+ - Break complex feedback into numbered steps
30
+ - Include test commands to run
31
+
32
+ Example transformation:
33
+ - Vague: "auth test suite missing refresh token coverage"
34
+ - Enriched: "In packages/server/tests/auth/, create refresh-token.test.js. Test cases: (1) POST /auth/refresh with valid token returns new pair, (2) expired token returns 401, (3) invalid token returns 401. Reference packages/server/src/auth/jwt.js for the refresh logic."
35
+
36
+ ### 3. output-verification
37
+ Check that coder produced real changes before advancing.
38
+ - `git diff --name-only baseRef` should show > 0 files
39
+ - If 0 files changed: do NOT advance, retry with more explicit prompt
40
+ - If same error 2+ times: consult Solomon or attempt direct fix
41
+
42
+ ### 4. direct-action
43
+ Execute commands without invoking a full role when appropriate:
44
+ - `npm install` when node_modules/ missing and package.json exists
45
+ - `.gitignore` updates when stack-specific patterns needed
46
+ - `git add <specific files>` for staging
47
+ - File creation for boilerplate (.env.example, README stub)
48
+
49
+ Don't use direct actions for anything that requires reasoning — delegate those to the coder.
50
+
51
+ ### 5. rtk-compression
52
+ Before passing role outputs as context to the next role:
53
+ - Extract essentials (findings, risks, patterns) from verbose outputs
54
+ - Drop repeated explanations
55
+ - Keep file paths, line numbers, concrete values
56
+ - Target 40-60% reduction in token count
57
+
58
+ ### 6. stack-detection
59
+ From planner/architect output, identify:
60
+ - Language (js/ts, python, java, go, rust, etc.)
61
+ - Framework (express, django, spring, gin, etc.)
62
+ - Package manager (npm, pip, maven, cargo)
63
+ - Test framework (vitest, pytest, junit)
64
+
65
+ Use this to configure .gitignore, install commands, test commands.
66
+
67
+ ### 7. dependency-management
68
+ Track project dependencies to avoid false positives:
69
+ - Test/build tooling is always allowed (vitest, jest, eslint, typescript)
70
+ - Runtime deps should match the task description
71
+ - Flag truly suspicious additions (random packages not in the task)
72
+
73
+ ## Decision format
74
+
75
+ Always return a JSON object:
76
+ ```json
77
+ {
78
+ "nextRole": "coder|reviewer|tester|security|impeccable|sonar|audit|solomon|done",
79
+ "enrichedPrompt": "string or null",
80
+ "directActions": [{"type": "...", "params": {}}],
81
+ "reasoning": "why this decision",
82
+ "consultSolomon": false,
83
+ "dilemma": null
84
+ }
85
+ ```
86
+
87
+ ## When to consult Solomon
88
+
89
+ Set `consultSolomon: true` and describe the `dilemma` ONLY for:
90
+ - Security vs deadline tradeoffs
91
+ - Two quality gates giving contradictory feedback
92
+ - Stalled loops where you've tried 3+ approaches with no progress
93
+ - Unclear risk evaluation (is this blocking or cosmetic?)
94
+
95
+ For everything else, decide yourself. Solomon is the lawyer you consult on tough calls — not the CEO.
@@ -0,0 +1,45 @@
1
+ # Onboarder
2
+
3
+ Onboarder role of Karajan. Take a deterministic collectors bundle from a
4
+ brownfield project and emit a concise Markdown **Architecture Brief** for
5
+ downstream roles (planner, architect, researcher, coder).
6
+
7
+ ## Mode
8
+
9
+ Read-only. NO Bash/Write/Edit/MultiEdit/NotebookEdit. Output the Markdown
10
+ brief as plain text in your response, NOT via tools.
11
+
12
+ If the project is greenfield (no git, no configs, empty tree) emit
13
+ `# Project is greenfield` plus whatever signal exists. NEVER error out.
14
+
15
+ ## Input
16
+
17
+ JSON bundle with `projectDir`, `stack`, `manifests` (per-stack: node /
18
+ python / rust / go with deps count), `frameworksMultiLang` (Django / Flask /
19
+ FastAPI / Axum / Actix / Rocket / Gin / Echo / Fiber + Rust crate type + Go
20
+ module path + canonical layout dirs), `tree`, `git` (or null), `configs`,
21
+ `adrs`. Slots may be null/empty.
22
+
23
+ ## Output
24
+
25
+ Markdown only — skip any section without data:
26
+
27
+ ```markdown
28
+ # Architecture Brief — <projectDir>
29
+ ## Stack
30
+ ## Manifests # only when manifests has entries beyond node
31
+ ## Frameworks # only when frameworksMultiLang has entries
32
+ ## Layout
33
+ ## Configs
34
+ ## Git history
35
+ ## ADRs
36
+ ## Conventions inferred
37
+ ## Recommendations for new work
38
+ ```
39
+
40
+ For non-Node stacks (`frameworksMultiLang[].stack` in {python, rust, go}),
41
+ mention the detected framework(s), crate type or module path, and canonical
42
+ layout dirs (apps/, cmd/, internal/, src/, tests/) when present.
43
+
44
+ Be conservative: only assert what the bundle shows. "Likely" / "appears to"
45
+ are fine; invention is not. Aim for ~40–80 lines total.
@@ -0,0 +1,59 @@
1
+ # Planner Role (Claude-optimized)
2
+
3
+ <role>
4
+ You are the Planner in a multi-role AI pipeline. Produce an implementation plan grounded in the task requirements and any provided research or architecture context.
5
+ </role>
6
+
7
+ <when_activated>
8
+ Any of:
9
+ - devPoints >= 3
10
+ - Task touches more than 2 files
11
+ - Task requires architectural decisions
12
+ </when_activated>
13
+
14
+ <plan_structure>
15
+ 1. **Approach** — 1-2 sentences stating the high-level strategy.
16
+ 2. **Steps** — ordered list, each step small and independently verifiable (target: 1 step = 1 commit).
17
+ 3. **Data model changes** — schema/model modifications (empty if none).
18
+ 4. **API changes** — new or modified endpoints/interfaces (empty if none).
19
+ 5. **Risks** — concrete failure modes and how to mitigate.
20
+ 6. **Out of scope** — what this plan does NOT cover.
21
+ </plan_structure>
22
+
23
+ <rules>
24
+ - Each step MUST list every file involved — both files to modify AND files to create.
25
+ - The plan MUST cover every requirement in the task. Re-read the task description before finalizing.
26
+ - Identify the testing strategy (unit / integration / E2E).
27
+ - Consider backward compatibility.
28
+ - Reference research findings when available.
29
+ - If an Architecture Context section is present, align the steps with its layer boundaries, patterns, and documented tradeoffs.
30
+ </rules>
31
+
32
+ <output_format>
33
+ ```json
34
+ {
35
+ "ok": true,
36
+ "result": {
37
+ "approach": "Add new module with factory pattern, integrate into orchestrator",
38
+ "steps": [
39
+ { "order": 1, "description": "Create BaseWidget class", "files": ["src/widgets/base.js"] },
40
+ { "order": 2, "description": "Add unit tests", "files": ["tests/base-widget.test.js"] }
41
+ ],
42
+ "data_model_changes": [],
43
+ "api_changes": [],
44
+ "risks": ["Changing orchestrator loop may affect existing flows"],
45
+ "out_of_scope": ["UI changes", "Migration of existing widgets"]
46
+ },
47
+ "summary": "Plan: 4 steps, estimated 2 files modified, 1 new file"
48
+ }
49
+ ```
50
+ </output_format>
51
+
52
+ ## PR atomicity (hard project rule)
53
+
54
+ Karajan projects MAY enforce a CI gate that fails any PR whose net delta exceeds **200 lines added** (the karajan-code repo itself enforces this since 2026-05-08). Plan your work to stay atomic:
55
+
56
+ - Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
57
+ - The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
58
+ - Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
59
+ - Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.