session-orchestrator 3.16.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 (762) hide show
  1. package/.claude-plugin/marketplace.json +29 -0
  2. package/.claude-plugin/plugin.json +18 -0
  3. package/.codex-plugin/agents/explorer.toml +14 -0
  4. package/.codex-plugin/agents/session-reviewer.toml +23 -0
  5. package/.codex-plugin/agents/wave-worker.toml +15 -0
  6. package/.codex-plugin/config.toml +20 -0
  7. package/.codex-plugin/plugin.json +37 -0
  8. package/.cursor/rules/000-session-orchestrator.mdc +73 -0
  9. package/.cursor/rules/010-session-workflow.mdc +170 -0
  10. package/.cursor/rules/020-quality-gates.mdc +128 -0
  11. package/.cursor/rules/030-wave-execution.mdc +216 -0
  12. package/.cursor/rules/040-discovery.mdc +242 -0
  13. package/.cursor/rules/050-plan.mdc +235 -0
  14. package/.cursor/rules/060-evolve.mdc +232 -0
  15. package/.cursor/rules/070-gitlab-ops.mdc +246 -0
  16. package/.cursor/rules/080-ecosystem-health.mdc +145 -0
  17. package/.mcp.json +8 -0
  18. package/CHANGELOG.md +1544 -0
  19. package/LICENSE +21 -0
  20. package/NOTICE +64 -0
  21. package/README.md +242 -0
  22. package/SECURITY.md +90 -0
  23. package/agents/AGENTS.md +136 -0
  24. package/agents/analyst.md +99 -0
  25. package/agents/architect-reviewer.md +93 -0
  26. package/agents/code-implementer.md +106 -0
  27. package/agents/db-specialist.md +104 -0
  28. package/agents/dialectic-deriver.md +139 -0
  29. package/agents/docs-writer.md +113 -0
  30. package/agents/eval-judge.md +146 -0
  31. package/agents/memory-proposal-collector.md +297 -0
  32. package/agents/qa-strategist.md +102 -0
  33. package/agents/schemas/analyst.schema.json +46 -0
  34. package/agents/schemas/architect-reviewer.schema.json +50 -0
  35. package/agents/schemas/code-implementer.schema.json +61 -0
  36. package/agents/schemas/db-specialist.schema.json +80 -0
  37. package/agents/schemas/docs-writer.schema.json +56 -0
  38. package/agents/schemas/persona-panel-sidecar.schema.json +245 -0
  39. package/agents/schemas/qa-strategist.schema.json +46 -0
  40. package/agents/schemas/security-reviewer.schema.json +86 -0
  41. package/agents/schemas/session-reviewer.schema.json +69 -0
  42. package/agents/schemas/test-writer.schema.json +69 -0
  43. package/agents/schemas/ui-developer.schema.json +90 -0
  44. package/agents/schemas/ux-evaluator.schema.json +51 -0
  45. package/agents/security-reviewer.md +236 -0
  46. package/agents/session-reviewer.md +201 -0
  47. package/agents/skill-applied-judge.md +122 -0
  48. package/agents/test-writer.md +123 -0
  49. package/agents/ui-developer.md +109 -0
  50. package/agents/ux-evaluator.md +161 -0
  51. package/assets/icon.svg +11 -0
  52. package/assets/og-card.png +0 -0
  53. package/assets/og-card.svg +47 -0
  54. package/commands/autopilot-multi.md +74 -0
  55. package/commands/autopilot.md +80 -0
  56. package/commands/bootstrap.md +56 -0
  57. package/commands/brainstorm.md +48 -0
  58. package/commands/close.md +24 -0
  59. package/commands/debug.md +36 -0
  60. package/commands/discovery.md +32 -0
  61. package/commands/dispatcher.md +59 -0
  62. package/commands/eval.md +28 -0
  63. package/commands/evolve.md +10 -0
  64. package/commands/go.md +41 -0
  65. package/commands/grill.md +45 -0
  66. package/commands/harness-audit.md +26 -0
  67. package/commands/memory-cleanup.md +25 -0
  68. package/commands/persona-panel.md +121 -0
  69. package/commands/plan.md +15 -0
  70. package/commands/portfolio.md +97 -0
  71. package/commands/reconcile.md +23 -0
  72. package/commands/repo-audit.md +24 -0
  73. package/commands/session.md +30 -0
  74. package/commands/spinout.md +15 -0
  75. package/commands/sunset-review.md +27 -0
  76. package/commands/templates-ack.md +96 -0
  77. package/commands/test.md +97 -0
  78. package/docs/README.md +105 -0
  79. package/docs/USER-GUIDE.md +1403 -0
  80. package/docs/ci-setup.md +81 -0
  81. package/docs/codex-setup.md +142 -0
  82. package/docs/components.md +74 -0
  83. package/docs/cursor-setup.md +104 -0
  84. package/docs/events-schema.md +81 -0
  85. package/docs/migration-v3.md +148 -0
  86. package/docs/owner-config-schema.md +154 -0
  87. package/docs/persona-panel.md +433 -0
  88. package/docs/pi-setup.md +115 -0
  89. package/docs/plugin-architecture-v3.md +296 -0
  90. package/docs/pm-skills-marketplace.md +114 -0
  91. package/docs/policy-cache-validation-2026-04-28.md +118 -0
  92. package/docs/rule-authoring.md +316 -0
  93. package/docs/session-config-reference.md +1439 -0
  94. package/docs/session-config-template.md +961 -0
  95. package/docs/vault-docs-architecture.md +297 -0
  96. package/hooks/_lib/lock-bootstrap.mjs +272 -0
  97. package/hooks/_lib/lock-reconcile.mjs +93 -0
  98. package/hooks/_lib/profile-gate.mjs +95 -0
  99. package/hooks/_lib/transcript-history.mjs +211 -0
  100. package/hooks/agent-teams-h3-test.sh +362 -0
  101. package/hooks/config-protection.mjs +0 -0
  102. package/hooks/cwd-change-restore.mjs +131 -0
  103. package/hooks/enforce-commands.mjs +179 -0
  104. package/hooks/enforce-scope.mjs +273 -0
  105. package/hooks/hooks-codex.json +60 -0
  106. package/hooks/hooks-cursor.json +15 -0
  107. package/hooks/hooks-pi.json +115 -0
  108. package/hooks/hooks.json +215 -0
  109. package/hooks/loop-guard.mjs +260 -0
  110. package/hooks/on-session-end.mjs +217 -0
  111. package/hooks/on-session-start.mjs +660 -0
  112. package/hooks/on-stop.mjs +294 -0
  113. package/hooks/operator-steer.mjs +64 -0
  114. package/hooks/post-edit-validate.mjs +225 -0
  115. package/hooks/post-subagent-discovery-validator.mjs +398 -0
  116. package/hooks/post-tool-batch-wave-signal.mjs +328 -0
  117. package/hooks/post-tool-failure-corrective-context.mjs +248 -0
  118. package/hooks/post-tooluse-frontend-slop.mjs +184 -0
  119. package/hooks/pre-bash-destructive-guard.mjs +515 -0
  120. package/hooks/pre-bash-memory-propose-audit.mjs +206 -0
  121. package/hooks/pre-bash-staging-fence.mjs +223 -0
  122. package/hooks/pre-bash-templates-first.mjs +404 -0
  123. package/hooks/run-node.sh +72 -0
  124. package/hooks/skill-invocation-telemetry.mjs +99 -0
  125. package/hooks/subagent-telemetry.mjs +249 -0
  126. package/hooks/wave-scope-commit-guard.mjs +191 -0
  127. package/monitors/monitors.json +14 -0
  128. package/output-styles/finding-report.md +48 -0
  129. package/output-styles/session-report.md +53 -0
  130. package/output-styles/wave-summary.md +38 -0
  131. package/package.json +94 -0
  132. package/pi/extensions/session-orchestrator.ts +25 -0
  133. package/pi/prompts/autopilot-multi.md +12 -0
  134. package/pi/prompts/autopilot.md +12 -0
  135. package/pi/prompts/bootstrap.md +12 -0
  136. package/pi/prompts/brainstorm.md +12 -0
  137. package/pi/prompts/close.md +11 -0
  138. package/pi/prompts/debug.md +12 -0
  139. package/pi/prompts/discovery.md +12 -0
  140. package/pi/prompts/dispatcher.md +12 -0
  141. package/pi/prompts/eval.md +12 -0
  142. package/pi/prompts/evolve.md +12 -0
  143. package/pi/prompts/go.md +12 -0
  144. package/pi/prompts/grill.md +12 -0
  145. package/pi/prompts/harness-audit.md +12 -0
  146. package/pi/prompts/memory-cleanup.md +12 -0
  147. package/pi/prompts/persona-panel.md +12 -0
  148. package/pi/prompts/plan.md +12 -0
  149. package/pi/prompts/portfolio.md +12 -0
  150. package/pi/prompts/reconcile.md +12 -0
  151. package/pi/prompts/repo-audit.md +12 -0
  152. package/pi/prompts/session.md +12 -0
  153. package/pi/prompts/spinout.md +12 -0
  154. package/pi/prompts/sunset-review.md +12 -0
  155. package/pi/prompts/templates-ack.md +12 -0
  156. package/pi/prompts/test.md +12 -0
  157. package/rules/_index.md +51 -0
  158. package/rules/always-on/commit-discipline.md +26 -0
  159. package/rules/always-on/npm-quality-gates.md +26 -0
  160. package/rules/always-on/parallel-sessions.md +43 -0
  161. package/rules/opt-in-domain/prompt-caching.md +270 -0
  162. package/rules/opt-in-stack/backend-data.md +188 -0
  163. package/rules/opt-in-stack/backend.md +390 -0
  164. package/rules/opt-in-stack/frontend.md +98 -0
  165. package/rules/opt-in-stack/security-web.md +194 -0
  166. package/rules/opt-in-stack/swift.md +65 -0
  167. package/scripts/archive-closed-prds.mjs +416 -0
  168. package/scripts/autopilot-multi.mjs +802 -0
  169. package/scripts/autopilot.mjs +383 -0
  170. package/scripts/backfill-abandoned-sessions.mjs +265 -0
  171. package/scripts/backfill-learnings-expires.mjs +196 -0
  172. package/scripts/backfill-learnings.mjs +203 -0
  173. package/scripts/backfill-sessions.mjs +282 -0
  174. package/scripts/check-doc-consistency.sh +279 -0
  175. package/scripts/check-package-manager.mjs +445 -0
  176. package/scripts/ci/assert-vitest-green.mjs +267 -0
  177. package/scripts/codex-install.mjs +435 -0
  178. package/scripts/compute-grounding-injection.sh +186 -0
  179. package/scripts/cursor-install.mjs +113 -0
  180. package/scripts/dialectic-deriver.mjs +573 -0
  181. package/scripts/emit-event.mjs +160 -0
  182. package/scripts/emit-session.mjs +212 -0
  183. package/scripts/eval-session.mjs +262 -0
  184. package/scripts/export-hw-learnings.mjs +437 -0
  185. package/scripts/gc-stale-worktrees.mjs +666 -0
  186. package/scripts/generate-pi-prompts.mjs +127 -0
  187. package/scripts/harness-audit.mjs +287 -0
  188. package/scripts/lib/agent-frontmatter.mjs +266 -0
  189. package/scripts/lib/agent-output-schema.mjs +166 -0
  190. package/scripts/lib/agent-status.mjs +303 -0
  191. package/scripts/lib/ajv-loader.mjs +34 -0
  192. package/scripts/lib/auto-dialectic.mjs +382 -0
  193. package/scripts/lib/auto-dream.mjs +471 -0
  194. package/scripts/lib/autonomy/suitability.mjs +212 -0
  195. package/scripts/lib/autopilot/dep-graph.mjs +417 -0
  196. package/scripts/lib/autopilot/durable-telemetry.mjs +121 -0
  197. package/scripts/lib/autopilot/flags.mjs +104 -0
  198. package/scripts/lib/autopilot/kill-switches.mjs +174 -0
  199. package/scripts/lib/autopilot/loop.mjs +320 -0
  200. package/scripts/lib/autopilot/mr-draft.mjs +520 -0
  201. package/scripts/lib/autopilot/multi-killswitch.mjs +184 -0
  202. package/scripts/lib/autopilot/recent-runs.mjs +106 -0
  203. package/scripts/lib/autopilot/stall-sampler.mjs +97 -0
  204. package/scripts/lib/autopilot/telemetry.mjs +224 -0
  205. package/scripts/lib/autopilot/worktree-pipeline.mjs +605 -0
  206. package/scripts/lib/autopilot-telemetry.mjs +11 -0
  207. package/scripts/lib/autopilot.mjs +39 -0
  208. package/scripts/lib/backlog-scan.mjs +179 -0
  209. package/scripts/lib/bootstrap-lock-freshness.mjs +260 -0
  210. package/scripts/lib/bootstrap-lock-refresh.mjs +186 -0
  211. package/scripts/lib/build-live-signals.mjs +150 -0
  212. package/scripts/lib/ci-status-banner.mjs +425 -0
  213. package/scripts/lib/claude-md-budget-lint.mjs +246 -0
  214. package/scripts/lib/cli-flags.mjs +158 -0
  215. package/scripts/lib/codex/plugin-contract.mjs +610 -0
  216. package/scripts/lib/cold-start-detector.mjs +240 -0
  217. package/scripts/lib/command-blocker.mjs +458 -0
  218. package/scripts/lib/common.mjs +333 -0
  219. package/scripts/lib/config/auto-dream.mjs +77 -0
  220. package/scripts/lib/config/block-header.mjs +94 -0
  221. package/scripts/lib/config/broken-window.mjs +114 -0
  222. package/scripts/lib/config/coercers.mjs +248 -0
  223. package/scripts/lib/config/cold-start.mjs +92 -0
  224. package/scripts/lib/config/config-protection.mjs +120 -0
  225. package/scripts/lib/config/cross-repo.mjs +104 -0
  226. package/scripts/lib/config/custom-phases.mjs +213 -0
  227. package/scripts/lib/config/dialectic.mjs +92 -0
  228. package/scripts/lib/config/discovery-validator.mjs +75 -0
  229. package/scripts/lib/config/dispatcher-autonomy-capture.mjs +240 -0
  230. package/scripts/lib/config/dispatcher-autonomy.mjs +152 -0
  231. package/scripts/lib/config/docs-orchestrator.mjs +90 -0
  232. package/scripts/lib/config/docs-staleness.mjs +96 -0
  233. package/scripts/lib/config/drift-check.mjs +155 -0
  234. package/scripts/lib/config/eval.mjs +130 -0
  235. package/scripts/lib/config/events-rotation.mjs +74 -0
  236. package/scripts/lib/config/evolve.mjs +308 -0
  237. package/scripts/lib/config/frontend-slop-hook.mjs +104 -0
  238. package/scripts/lib/config/gitlab-portfolio.mjs +150 -0
  239. package/scripts/lib/config/handover-gate.mjs +106 -0
  240. package/scripts/lib/config/host-paths.mjs +76 -0
  241. package/scripts/lib/config/io.mjs +54 -0
  242. package/scripts/lib/config/loop-guard.mjs +117 -0
  243. package/scripts/lib/config/memory.mjs +150 -0
  244. package/scripts/lib/config/persona-gate-wave.mjs +258 -0
  245. package/scripts/lib/config/reconcile.mjs +205 -0
  246. package/scripts/lib/config/section-extractor.mjs +100 -0
  247. package/scripts/lib/config/skill-evolution.mjs +112 -0
  248. package/scripts/lib/config/slopcheck.mjs +99 -0
  249. package/scripts/lib/config/state-md-lock.mjs +83 -0
  250. package/scripts/lib/config/templates-first.mjs +94 -0
  251. package/scripts/lib/config/test.mjs +113 -0
  252. package/scripts/lib/config/vault-integration.mjs +201 -0
  253. package/scripts/lib/config/vault-mirror-quality.mjs +99 -0
  254. package/scripts/lib/config/vault-staleness.mjs +84 -0
  255. package/scripts/lib/config/vault-sync.mjs +96 -0
  256. package/scripts/lib/config/verification-auto-fix.mjs +84 -0
  257. package/scripts/lib/config/wave-reviewers.mjs +133 -0
  258. package/scripts/lib/config-schema.mjs +345 -0
  259. package/scripts/lib/config.mjs +474 -0
  260. package/scripts/lib/convergence-monitor.mjs +389 -0
  261. package/scripts/lib/coordinator-snapshot.mjs +371 -0
  262. package/scripts/lib/crypto-digest-utils.mjs +91 -0
  263. package/scripts/lib/discovery/helpers.mjs +127 -0
  264. package/scripts/lib/discovery/triage-state.mjs +279 -0
  265. package/scripts/lib/dispatcher/cli.mjs +257 -0
  266. package/scripts/lib/dispatcher/enumerate.mjs +243 -0
  267. package/scripts/lib/dispatcher/rank.mjs +363 -0
  268. package/scripts/lib/ecosystem-health.mjs +224 -0
  269. package/scripts/lib/ecosystem-wizard/ci-detector.mjs +18 -0
  270. package/scripts/lib/ecosystem-wizard/config-parser.mjs +54 -0
  271. package/scripts/lib/ecosystem-wizard/config-writer.mjs +287 -0
  272. package/scripts/lib/ecosystem-wizard/package-manager-detector.mjs +42 -0
  273. package/scripts/lib/ecosystem-wizard/wizard-prompt.mjs +246 -0
  274. package/scripts/lib/ecosystem-wizard.mjs +48 -0
  275. package/scripts/lib/env-check.mjs +89 -0
  276. package/scripts/lib/eval/engine.mjs +605 -0
  277. package/scripts/lib/eval/judge.mjs +433 -0
  278. package/scripts/lib/eval/report.mjs +367 -0
  279. package/scripts/lib/eval/schema.mjs +618 -0
  280. package/scripts/lib/eval/session-resolve.mjs +137 -0
  281. package/scripts/lib/eval/sink.mjs +77 -0
  282. package/scripts/lib/events-rotation.mjs +86 -0
  283. package/scripts/lib/events-schema.mjs +81 -0
  284. package/scripts/lib/events.mjs +80 -0
  285. package/scripts/lib/evolve/autonomy-verdict.mjs +461 -0
  286. package/scripts/lib/evolve/autopilot-effectiveness.mjs +293 -0
  287. package/scripts/lib/exclusivity-matrix.mjs +68 -0
  288. package/scripts/lib/fetch-baseline.mjs +311 -0
  289. package/scripts/lib/file-lock.mjs +512 -0
  290. package/scripts/lib/frontend-detect/detect.mjs +138 -0
  291. package/scripts/lib/frontend-detect/rules.mjs +295 -0
  292. package/scripts/lib/frontmatter-guard.mjs +241 -0
  293. package/scripts/lib/gates/echo-stub-detect.mjs +39 -0
  294. package/scripts/lib/gates/gate-baseline.mjs +42 -0
  295. package/scripts/lib/gates/gate-full.mjs +85 -0
  296. package/scripts/lib/gates/gate-helpers.mjs +231 -0
  297. package/scripts/lib/gates/gate-incremental.mjs +76 -0
  298. package/scripts/lib/gates/gate-per-file.mjs +55 -0
  299. package/scripts/lib/gitlab-ops/stale-mr-sweep.mjs +447 -0
  300. package/scripts/lib/gitlab-portfolio/aggregator.mjs +383 -0
  301. package/scripts/lib/gitlab-portfolio/cli.mjs +428 -0
  302. package/scripts/lib/gitlab-portfolio/markdown-writer.mjs +289 -0
  303. package/scripts/lib/gitlab-portfolio/vcs-detect.mjs +182 -0
  304. package/scripts/lib/handover-gate.mjs +222 -0
  305. package/scripts/lib/hardening.mjs +43 -0
  306. package/scripts/lib/hardware-pattern-detector.mjs +238 -0
  307. package/scripts/lib/harness-audit/categories/category1.mjs +123 -0
  308. package/scripts/lib/harness-audit/categories/category2.mjs +145 -0
  309. package/scripts/lib/harness-audit/categories/category3.mjs +143 -0
  310. package/scripts/lib/harness-audit/categories/category4.mjs +202 -0
  311. package/scripts/lib/harness-audit/categories/category5.mjs +152 -0
  312. package/scripts/lib/harness-audit/categories/category6.mjs +211 -0
  313. package/scripts/lib/harness-audit/categories/category7.mjs +125 -0
  314. package/scripts/lib/harness-audit/categories/category8.mjs +328 -0
  315. package/scripts/lib/harness-audit/categories/category9.mjs +294 -0
  316. package/scripts/lib/harness-audit/categories/helpers.mjs +165 -0
  317. package/scripts/lib/harness-audit/categories.mjs +19 -0
  318. package/scripts/lib/historical-guard.mjs +15 -0
  319. package/scripts/lib/host-identity.mjs +262 -0
  320. package/scripts/lib/instruction-budget-guard.mjs +332 -0
  321. package/scripts/lib/io.mjs +304 -0
  322. package/scripts/lib/issue-close-strip-labels.mjs +161 -0
  323. package/scripts/lib/language-mappers/README.md +57 -0
  324. package/scripts/lib/language-mappers/index.mjs +165 -0
  325. package/scripts/lib/language-mappers/markdown.mjs +149 -0
  326. package/scripts/lib/language-mappers/python.mjs +249 -0
  327. package/scripts/lib/language-mappers/swift.mjs +201 -0
  328. package/scripts/lib/language-mappers/typescript.mjs +433 -0
  329. package/scripts/lib/learnings/expiry-sweep.mjs +164 -0
  330. package/scripts/lib/learnings/filters.mjs +43 -0
  331. package/scripts/lib/learnings/io.mjs +255 -0
  332. package/scripts/lib/learnings/schema.mjs +518 -0
  333. package/scripts/lib/learnings/surface.mjs +207 -0
  334. package/scripts/lib/learnings.mjs +42 -0
  335. package/scripts/lib/lock-reaper.mjs +648 -0
  336. package/scripts/lib/locks/index.mjs +31 -0
  337. package/scripts/lib/locks/lock-body.mjs +62 -0
  338. package/scripts/lib/locks/staging-fence-lock.mjs +267 -0
  339. package/scripts/lib/locks/state-md-lock.mjs +351 -0
  340. package/scripts/lib/loop-readiness-banner.mjs +144 -0
  341. package/scripts/lib/memory-banner.mjs +478 -0
  342. package/scripts/lib/memory-cleanup/worktree-sweep.mjs +108 -0
  343. package/scripts/lib/memory-cleanup-stamp.mjs +56 -0
  344. package/scripts/lib/memory-paths.mjs +31 -0
  345. package/scripts/lib/memory-proposals/collector.mjs +334 -0
  346. package/scripts/lib/memory-proposals/schema.mjs +289 -0
  347. package/scripts/lib/memory-proposals/sink.mjs +507 -0
  348. package/scripts/lib/memory-proposals/store.mjs +441 -0
  349. package/scripts/lib/mission-status-schema.mjs +114 -0
  350. package/scripts/lib/mode-selector/alternatives.mjs +64 -0
  351. package/scripts/lib/mode-selector/constants.mjs +29 -0
  352. package/scripts/lib/mode-selector/context-pressure.mjs +157 -0
  353. package/scripts/lib/mode-selector/rationale.mjs +55 -0
  354. package/scripts/lib/mode-selector/scoring.mjs +221 -0
  355. package/scripts/lib/mode-selector-accuracy.mjs +121 -0
  356. package/scripts/lib/mode-selector.mjs +160 -0
  357. package/scripts/lib/multi-provider-build/providers.mjs +64 -0
  358. package/scripts/lib/multi-provider-build/templating.mjs +130 -0
  359. package/scripts/lib/named-baseline-resolver.mjs +233 -0
  360. package/scripts/lib/named-vault-resolver.mjs +433 -0
  361. package/scripts/lib/owner-config/coerce.mjs +29 -0
  362. package/scripts/lib/owner-config/constants.mjs +21 -0
  363. package/scripts/lib/owner-config/defaults.mjs +50 -0
  364. package/scripts/lib/owner-config/error.mjs +19 -0
  365. package/scripts/lib/owner-config/index.mjs +13 -0
  366. package/scripts/lib/owner-config/merge.mjs +52 -0
  367. package/scripts/lib/owner-config/validate.mjs +259 -0
  368. package/scripts/lib/owner-config-banner.mjs +126 -0
  369. package/scripts/lib/owner-config-loader.mjs +159 -0
  370. package/scripts/lib/owner-config.example.yaml +72 -0
  371. package/scripts/lib/owner-config.mjs +28 -0
  372. package/scripts/lib/owner-interview.mjs +243 -0
  373. package/scripts/lib/owner-yaml.mjs +571 -0
  374. package/scripts/lib/package-manager.mjs +160 -0
  375. package/scripts/lib/path-utils.mjs +217 -0
  376. package/scripts/lib/peer-cards/merger.mjs +310 -0
  377. package/scripts/lib/peer-cards/reader.mjs +125 -0
  378. package/scripts/lib/peer-cards/schema.mjs +230 -0
  379. package/scripts/lib/peer-cards/staleness-banner.mjs +86 -0
  380. package/scripts/lib/peer-cards/writer.mjs +138 -0
  381. package/scripts/lib/peer-discovery.mjs +200 -0
  382. package/scripts/lib/persona-panel/catalog-loader.mjs +577 -0
  383. package/scripts/lib/persona-panel/consolidator.mjs +370 -0
  384. package/scripts/lib/persona-panel/persona-runner.mjs +375 -0
  385. package/scripts/lib/persona-panel/threshold.mjs +130 -0
  386. package/scripts/lib/pi-hook-bridge.mjs +328 -0
  387. package/scripts/lib/platform.mjs +266 -0
  388. package/scripts/lib/playwright-driver/runner.mjs +297 -0
  389. package/scripts/lib/plugin-root.mjs +210 -0
  390. package/scripts/lib/pre-dispatch-check.mjs +126 -0
  391. package/scripts/lib/product-repo-detect.mjs +121 -0
  392. package/scripts/lib/profiles/registry.mjs +176 -0
  393. package/scripts/lib/profiles/schema.mjs +209 -0
  394. package/scripts/lib/qg-command-drift-banner.mjs +88 -0
  395. package/scripts/lib/quality-gate/diagnostics.mjs +92 -0
  396. package/scripts/lib/quality-gate.mjs +536 -0
  397. package/scripts/lib/quality-gates-cache.mjs +228 -0
  398. package/scripts/lib/quality-gates-policy.mjs +95 -0
  399. package/scripts/lib/recommendations-v0.mjs +156 -0
  400. package/scripts/lib/reconcile/eligibility.mjs +203 -0
  401. package/scripts/lib/reconcile/emitter.mjs +244 -0
  402. package/scripts/lib/reconcile/engine.mjs +412 -0
  403. package/scripts/lib/reconcile/idempotency.mjs +239 -0
  404. package/scripts/lib/reconcile/renderer.mjs +211 -0
  405. package/scripts/lib/reconcile/writer.mjs +293 -0
  406. package/scripts/lib/reconcile-nudge-banner.mjs +284 -0
  407. package/scripts/lib/resource-probe/evaluate.mjs +190 -0
  408. package/scripts/lib/resource-probe/parsers.mjs +181 -0
  409. package/scripts/lib/resource-probe/probe-platform.mjs +300 -0
  410. package/scripts/lib/resource-probe.mjs +95 -0
  411. package/scripts/lib/rule-loader.mjs +552 -0
  412. package/scripts/lib/rules-sync.mjs +439 -0
  413. package/scripts/lib/scope-gate.mjs +496 -0
  414. package/scripts/lib/session-close-backfill.mjs +539 -0
  415. package/scripts/lib/session-discovery.mjs +256 -0
  416. package/scripts/lib/session-end/phase-skip.mjs +357 -0
  417. package/scripts/lib/session-end/worktree-cleanup.mjs +112 -0
  418. package/scripts/lib/session-id.mjs +362 -0
  419. package/scripts/lib/session-lock.mjs +703 -0
  420. package/scripts/lib/session-registry.mjs +355 -0
  421. package/scripts/lib/session-schema/aliases.mjs +71 -0
  422. package/scripts/lib/session-schema/constants.mjs +115 -0
  423. package/scripts/lib/session-schema/normalizer.mjs +66 -0
  424. package/scripts/lib/session-schema/timestamps.mjs +64 -0
  425. package/scripts/lib/session-schema/validator.mjs +453 -0
  426. package/scripts/lib/session-schema.mjs +71 -0
  427. package/scripts/lib/session-token-rollup.mjs +137 -0
  428. package/scripts/lib/sessions-staleness-banner.mjs +247 -0
  429. package/scripts/lib/skill-evolution/blast-radius-classifier.mjs +114 -0
  430. package/scripts/lib/skill-evolution/candidate-intake.mjs +270 -0
  431. package/scripts/lib/skill-evolution/config-validation-gate.mjs +279 -0
  432. package/scripts/lib/skill-evolution/engine.mjs +719 -0
  433. package/scripts/lib/skill-evolution/idempotency.mjs +279 -0
  434. package/scripts/lib/skill-evolution/mr-opener.mjs +507 -0
  435. package/scripts/lib/skill-health/join.mjs +181 -0
  436. package/scripts/lib/skill-health/score.mjs +123 -0
  437. package/scripts/lib/skill-invocations-schema.mjs +214 -0
  438. package/scripts/lib/skill-judge.mjs +348 -0
  439. package/scripts/lib/skill-judgments-schema.mjs +264 -0
  440. package/scripts/lib/slopcheck.mjs +501 -0
  441. package/scripts/lib/soul-resolve.mjs +118 -0
  442. package/scripts/lib/spiral-carryover.mjs +495 -0
  443. package/scripts/lib/state-md/body-sections.mjs +851 -0
  444. package/scripts/lib/state-md/frontmatter-mutators.mjs +453 -0
  445. package/scripts/lib/state-md/mission-status.mjs +247 -0
  446. package/scripts/lib/state-md/recommendations.mjs +57 -0
  447. package/scripts/lib/state-md/yaml-parser.mjs +234 -0
  448. package/scripts/lib/state-md-peer-guard.mjs +232 -0
  449. package/scripts/lib/state-md.mjs +53 -0
  450. package/scripts/lib/subagents-schema.mjs +309 -0
  451. package/scripts/lib/sunset/walker.mjs +1192 -0
  452. package/scripts/lib/test-runner/artifact-paths.mjs +94 -0
  453. package/scripts/lib/test-runner/fingerprint.mjs +33 -0
  454. package/scripts/lib/test-runner/issue-reconcile.mjs +770 -0
  455. package/scripts/lib/tmux-layout/layouts.mjs +224 -0
  456. package/scripts/lib/tmux-layout/telemetry-stats.mjs +100 -0
  457. package/scripts/lib/tmux-layout/telemetry.mjs +88 -0
  458. package/scripts/lib/tmux-layout/tmux-shell.mjs +82 -0
  459. package/scripts/lib/tmux-layout/vcs-detector.mjs +88 -0
  460. package/scripts/lib/validate/check-agents.mjs +457 -0
  461. package/scripts/lib/validate/check-codex-plugin.mjs +37 -0
  462. package/scripts/lib/validate/check-commands.mjs +148 -0
  463. package/scripts/lib/validate/check-component-paths.mjs +112 -0
  464. package/scripts/lib/validate/check-dead-bridge.mjs +180 -0
  465. package/scripts/lib/validate/check-hooks-symmetry.mjs +258 -0
  466. package/scripts/lib/validate/check-json-files.mjs +116 -0
  467. package/scripts/lib/validate/check-owner-leakage.mjs +1011 -0
  468. package/scripts/lib/validate/check-path-utils-canary.mjs +175 -0
  469. package/scripts/lib/validate/check-peekaboo-driver-canary.mjs +201 -0
  470. package/scripts/lib/validate/check-pi-package.mjs +110 -0
  471. package/scripts/lib/validate/check-pi-prompts.mjs +43 -0
  472. package/scripts/lib/validate/check-playwright-mcp-canary.mjs +154 -0
  473. package/scripts/lib/validate/check-plugin-json.mjs +96 -0
  474. package/scripts/lib/validate/check-plugin-monitors.mjs +206 -0
  475. package/scripts/lib/validate/check-plugin-schema.mjs +137 -0
  476. package/scripts/lib/validate/check-rules.mjs +143 -0
  477. package/scripts/lib/validate/check-session-plan-routing.mjs +154 -0
  478. package/scripts/lib/validate/check-test-fixture-shapes.mjs +280 -0
  479. package/scripts/lib/validate/check-unicode-safety.mjs +533 -0
  480. package/scripts/lib/validate/confidential-names.mjs +169 -0
  481. package/scripts/lib/validate/dead-bridge-corpus.mjs +141 -0
  482. package/scripts/lib/validate/dead-bridge-detectors.mjs +568 -0
  483. package/scripts/lib/validate/tier-inference.mjs +100 -0
  484. package/scripts/lib/validate-vendored-rules.mjs +519 -0
  485. package/scripts/lib/vault-archive.mjs +404 -0
  486. package/scripts/lib/vault-backfill/glab.mjs +164 -0
  487. package/scripts/lib/vault-backfill/manifest.mjs +75 -0
  488. package/scripts/lib/vault-backfill/template.mjs +130 -0
  489. package/scripts/lib/vault-consolidate-fs.mjs +331 -0
  490. package/scripts/lib/vault-migration-rules.mjs +155 -0
  491. package/scripts/lib/vault-mirror/auto-commit.mjs +203 -0
  492. package/scripts/lib/vault-mirror/namespace.mjs +152 -0
  493. package/scripts/lib/vault-mirror/process.mjs +567 -0
  494. package/scripts/lib/vault-mirror/pseudonym-map.mjs +164 -0
  495. package/scripts/lib/vault-mirror/render-learnings.mjs +201 -0
  496. package/scripts/lib/vault-mirror/render-sessions.mjs +367 -0
  497. package/scripts/lib/vault-mirror/render.mjs +8 -0
  498. package/scripts/lib/vault-mirror/utils.mjs +217 -0
  499. package/scripts/lib/vault-relocation-rules.mjs +555 -0
  500. package/scripts/lib/vault-repo-backfill.mjs +235 -0
  501. package/scripts/lib/vault-staleness-banner.mjs +142 -0
  502. package/scripts/lib/vault-status/board-writer.mjs +769 -0
  503. package/scripts/lib/vault-status/narrative-mirror.mjs +544 -0
  504. package/scripts/lib/vault-sync-baseline.mjs +152 -0
  505. package/scripts/lib/wave-context.mjs +29 -0
  506. package/scripts/lib/wave-executor/pool.mjs +248 -0
  507. package/scripts/lib/wave-resource-gate.mjs +204 -0
  508. package/scripts/lib/wave-sizing.mjs +75 -0
  509. package/scripts/lib/webhook-url.mjs +105 -0
  510. package/scripts/lib/workspace.mjs +198 -0
  511. package/scripts/lib/worktree/constants.mjs +35 -0
  512. package/scripts/lib/worktree/index.mjs +17 -0
  513. package/scripts/lib/worktree/lifecycle.mjs +287 -0
  514. package/scripts/lib/worktree/listing.mjs +118 -0
  515. package/scripts/lib/worktree/meta.mjs +64 -0
  516. package/scripts/lib/worktree-freshness.mjs +313 -0
  517. package/scripts/lib/worktree.mjs +15 -0
  518. package/scripts/lifecycle-sim-v6.mjs +347 -0
  519. package/scripts/lock-reaper.mjs +185 -0
  520. package/scripts/mcp-server.sh +241 -0
  521. package/scripts/measure-policy-cache-effectiveness.mjs +427 -0
  522. package/scripts/memory-propose.mjs +464 -0
  523. package/scripts/migrate-cold-start-seed.mjs +404 -0
  524. package/scripts/migrate-learnings-jsonl.mjs +189 -0
  525. package/scripts/migrate-legacy-learnings.sh +61 -0
  526. package/scripts/migrate-sessions-jsonl.mjs +448 -0
  527. package/scripts/migrate-subagents-jsonl.mjs +196 -0
  528. package/scripts/migrate-vault-paths.mjs +796 -0
  529. package/scripts/parse-config.mjs +149 -0
  530. package/scripts/pi-install.mjs +117 -0
  531. package/scripts/print-applicable-rules.mjs +247 -0
  532. package/scripts/promote-vault-strict.mjs +496 -0
  533. package/scripts/relocate-vault-corpus.mjs +1178 -0
  534. package/scripts/run-migrate-v2-cross-repo.mjs +385 -0
  535. package/scripts/run-quality-gate.mjs +216 -0
  536. package/scripts/spikes/h3-agent-teams/preflight.sh +53 -0
  537. package/scripts/spikes/h3-agent-teams/run-h3.sh +112 -0
  538. package/scripts/spikes/h3-agent-teams/setup.sh +137 -0
  539. package/scripts/spikes/h3-agent-teams/toggle.sh +38 -0
  540. package/scripts/sweep-expired-learnings.mjs +135 -0
  541. package/scripts/sync-vault-schema.mjs +376 -0
  542. package/scripts/tests/fixtures/fetch-baseline/sample-rule.md +8 -0
  543. package/scripts/tmux-layout.mjs +245 -0
  544. package/scripts/token-audit.sh +191 -0
  545. package/scripts/typecheck.mjs +42 -0
  546. package/scripts/upload-social-preview.mjs +316 -0
  547. package/scripts/validate-config.mjs +46 -0
  548. package/scripts/validate-plugin-manifests.mjs +163 -0
  549. package/scripts/validate-plugin.mjs +264 -0
  550. package/scripts/validate-wave-scope.mjs +289 -0
  551. package/scripts/vault-backfill.mjs +404 -0
  552. package/scripts/vault-consolidate.mjs +596 -0
  553. package/scripts/vault-integration-watcher.mjs +394 -0
  554. package/scripts/vault-mirror.mjs +430 -0
  555. package/skills/_shared/bootstrap-gate.md +111 -0
  556. package/skills/_shared/config-reading.md +226 -0
  557. package/skills/_shared/instruction-file-resolution.md +79 -0
  558. package/skills/_shared/model-selection.md +64 -0
  559. package/skills/_shared/monitor-patterns.md +300 -0
  560. package/skills/_shared/parallel-aware-auq.md +121 -0
  561. package/skills/_shared/parallel-aware-preamble.md +185 -0
  562. package/skills/_shared/platform-tools.md +96 -0
  563. package/skills/_shared/state-ownership.md +221 -0
  564. package/skills/architecture/DEEPENING.md +37 -0
  565. package/skills/architecture/INTERFACE-DESIGN.md +44 -0
  566. package/skills/architecture/LANGUAGE.md +53 -0
  567. package/skills/architecture/SKILL.md +92 -0
  568. package/skills/autopilot/SKILL.md +419 -0
  569. package/skills/bootstrap/SKILL.md +592 -0
  570. package/skills/bootstrap/STATE.md.template +24 -0
  571. package/skills/bootstrap/_shared-template.md +243 -0
  572. package/skills/bootstrap/deep-template.md +659 -0
  573. package/skills/bootstrap/fast-template.md +251 -0
  574. package/skills/bootstrap/intensity-heuristic.md +80 -0
  575. package/skills/bootstrap/public-fallback.md +342 -0
  576. package/skills/bootstrap/standard-template.md +736 -0
  577. package/skills/bootstrap/templates/agents/project-code-review.md +18 -0
  578. package/skills/bootstrap/templates/agents/project-discovery.md +18 -0
  579. package/skills/bootstrap/templates/agents/project-quality-gate.md +18 -0
  580. package/skills/brainstorm/SKILL.md +268 -0
  581. package/skills/brainstorm/soul.md +49 -0
  582. package/skills/claude-md-drift-check/SKILL.md +186 -0
  583. package/skills/claude-md-drift-check/checker.mjs +1380 -0
  584. package/skills/claude-md-drift-check/checker.sh +37 -0
  585. package/skills/claude-md-drift-check/package.json +16 -0
  586. package/skills/convergence-monitoring/README.md +39 -0
  587. package/skills/convergence-monitoring/SIGNALS.md +246 -0
  588. package/skills/convergence-monitoring/SKILL.md +285 -0
  589. package/skills/daily/SKILL.md +222 -0
  590. package/skills/daily/generate.sh +92 -0
  591. package/skills/daily/templates/daily.md.tpl +36 -0
  592. package/skills/debug/SKILL.md +188 -0
  593. package/skills/debug/soul.md +35 -0
  594. package/skills/discovery/SKILL.md +567 -0
  595. package/skills/discovery/issue-templates.md +237 -0
  596. package/skills/discovery/probes/docs-staleness.mjs +195 -0
  597. package/skills/discovery/probes/frontend-slop.mjs +186 -0
  598. package/skills/discovery/probes/ssot-code-diff.mjs +310 -0
  599. package/skills/discovery/probes/supply-chain-slopcheck.mjs +440 -0
  600. package/skills/discovery/probes/vault-narrative-staleness.mjs +355 -0
  601. package/skills/discovery/probes/vault-staleness.mjs +272 -0
  602. package/skills/discovery/probes-arch.md +252 -0
  603. package/skills/discovery/probes-audit.md +95 -0
  604. package/skills/discovery/probes-code.md +329 -0
  605. package/skills/discovery/probes-docs.md +76 -0
  606. package/skills/discovery/probes-feature.md +150 -0
  607. package/skills/discovery/probes-infra.md +138 -0
  608. package/skills/discovery/probes-intro.md +25 -0
  609. package/skills/discovery/probes-session.md +495 -0
  610. package/skills/discovery/probes-supply-chain.md +94 -0
  611. package/skills/discovery/probes-ui.md +147 -0
  612. package/skills/discovery/probes-vault.md +64 -0
  613. package/skills/discovery/slop-patterns.md +115 -0
  614. package/skills/dispatcher/SKILL.md +173 -0
  615. package/skills/docs-orchestrator/SKILL.md +362 -0
  616. package/skills/docs-orchestrator/audience-mapping.md +140 -0
  617. package/skills/domain-model/ADR-FORMAT.md +47 -0
  618. package/skills/domain-model/CONTEXT-FORMAT.md +77 -0
  619. package/skills/domain-model/SKILL.md +85 -0
  620. package/skills/ecosystem-health/SKILL.md +119 -0
  621. package/skills/ecosystem-health/wizard.md +193 -0
  622. package/skills/eval/SKILL.md +293 -0
  623. package/skills/eval/rubric-v1.md +218 -0
  624. package/skills/evolve/SKILL.md +546 -0
  625. package/skills/frontmatter-guard/SKILL.md +126 -0
  626. package/skills/gitlab-ops/SKILL.md +368 -0
  627. package/skills/gitlab-portfolio/SKILL.md +196 -0
  628. package/skills/grill/SKILL.md +185 -0
  629. package/skills/grill/soul.md +55 -0
  630. package/skills/hook-development/SKILL.md +413 -0
  631. package/skills/mcp-builder/SKILL.md +260 -0
  632. package/skills/memory-cleanup/SKILL.md +310 -0
  633. package/skills/mode-selector/SKILL.md +226 -0
  634. package/skills/peekaboo-driver/SKILL.md +237 -0
  635. package/skills/peekaboo-driver/soul.md +32 -0
  636. package/skills/persona-panel/SKILL.md +365 -0
  637. package/skills/persona-panel/persona-format.md +205 -0
  638. package/skills/persona-panel/presets/designer-lens.md +87 -0
  639. package/skills/persona-panel/presets/engineer-lens.md +88 -0
  640. package/skills/persona-panel/presets/pm-lens.md +86 -0
  641. package/skills/plan/SKILL.md +496 -0
  642. package/skills/plan/mode-feature.md +141 -0
  643. package/skills/plan/mode-new.md +297 -0
  644. package/skills/plan/mode-retro.md +271 -0
  645. package/skills/plan/prd-feature-template.md +132 -0
  646. package/skills/plan/prd-full-template.md +151 -0
  647. package/skills/plan/prd-reviewer-prompt.md +103 -0
  648. package/skills/plan/retro-template.md +75 -0
  649. package/skills/plan/soul.md +62 -0
  650. package/skills/playwright-driver/SKILL.md +226 -0
  651. package/skills/playwright-driver/soul.md +30 -0
  652. package/skills/quality-gates/SKILL.md +212 -0
  653. package/skills/reconcile/SKILL.md +324 -0
  654. package/skills/repo-audit/SKILL.md +272 -0
  655. package/skills/session-end/SKILL.md +1044 -0
  656. package/skills/session-end/discovery-scan.md +37 -0
  657. package/skills/session-end/drift-operations.md +97 -0
  658. package/skills/session-end/learning-patterns.md +78 -0
  659. package/skills/session-end/metrics-collection.md +175 -0
  660. package/skills/session-end/phase-3-2-docs-verification.md +148 -0
  661. package/skills/session-end/phase-3-6-tail.md +344 -0
  662. package/skills/session-end/phase-3-7a-recommendations.md +86 -0
  663. package/skills/session-end/plan-verification.md +288 -0
  664. package/skills/session-end/session-metrics-write.md +223 -0
  665. package/skills/session-end/vault-operations.md +50 -0
  666. package/skills/session-end/verification-checklist.md +20 -0
  667. package/skills/session-plan/SKILL.md +554 -0
  668. package/skills/session-plan/wave-template.md +37 -0
  669. package/skills/session-start/SKILL.md +1043 -0
  670. package/skills/session-start/phase-2-5-docs-planning.md +119 -0
  671. package/skills/session-start/phase-4-5-resource-health.md +49 -0
  672. package/skills/session-start/phase-7-1-premise-check.md +47 -0
  673. package/skills/session-start/phase-7-5-mode-selector.md +237 -0
  674. package/skills/session-start/phase-8-5-express-path.md +61 -0
  675. package/skills/session-start/presentation-format.md +81 -0
  676. package/skills/session-start/soul.md +57 -0
  677. package/skills/skill-creator/SKILL.md +168 -0
  678. package/skills/spinout/SKILL.md +76 -0
  679. package/skills/sunset-review/SKILL.md +96 -0
  680. package/skills/test-runner/SKILL.md +362 -0
  681. package/skills/test-runner/rubric-v1.md +388 -0
  682. package/skills/test-runner/soul.md +46 -0
  683. package/skills/tmux-layout/SKILL.md +104 -0
  684. package/skills/ubiquitous-language/SKILL.md +97 -0
  685. package/skills/using-orchestrator/SKILL.md +144 -0
  686. package/skills/vault-mirror/SKILL.md +234 -0
  687. package/skills/vault-sync/SKILL.md +319 -0
  688. package/skills/vault-sync/package-lock.json +40 -0
  689. package/skills/vault-sync/package.json +11 -0
  690. package/skills/vault-sync/tests/fixtures/archive-test-vault/90-archive/bad-archived.md +8 -0
  691. package/skills/vault-sync/tests/fixtures/archive-test-vault/_meta/.gitkeep +0 -0
  692. package/skills/vault-sync/tests/fixtures/archive-test-vault/live-note.md +8 -0
  693. package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/_meta/.gitkeep +0 -0
  694. package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/bad-type.md +8 -0
  695. package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/good-note.md +8 -0
  696. package/skills/vault-sync/tests/fixtures/clean-vault/.obsidian/config.md +8 -0
  697. package/skills/vault-sync/tests/fixtures/clean-vault/01-projects/foo/projects-baseline.md +10 -0
  698. package/skills/vault-sync/tests/fixtures/clean-vault/03-daily/daily-2026-04-13.md +8 -0
  699. package/skills/vault-sync/tests/fixtures/clean-vault/README.md +3 -0
  700. package/skills/vault-sync/tests/fixtures/clean-vault/hello-world.md +11 -0
  701. package/skills/vault-sync/tests/fixtures/dangling-link-vault/_meta/.gitkeep +0 -0
  702. package/skills/vault-sync/tests/fixtures/dangling-link-vault/has-dangling.md +9 -0
  703. package/skills/vault-sync/tests/fixtures/dangling-link-vault/real-target.md +8 -0
  704. package/skills/vault-sync/tests/fixtures/empty-vault/_meta/.gitkeep +0 -0
  705. package/skills/vault-sync/tests/fixtures/missing-field-vault/_meta/.gitkeep +0 -0
  706. package/skills/vault-sync/tests/fixtures/missing-field-vault/missing-id.md +7 -0
  707. package/skills/vault-sync/tests/fixtures/nested-tag-vault/03-daily/daily-2026-04-13.md +9 -0
  708. package/skills/vault-sync/tests/fixtures/nested-tag-vault/_meta/.gitkeep +0 -0
  709. package/skills/vault-sync/tests/fixtures/nested-tag-vault/nested-tags-note.md +11 -0
  710. package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/README.md +3 -0
  711. package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/_MOC.md +3 -0
  712. package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/_meta/.gitkeep +0 -0
  713. package/skills/vault-sync/tests/fixtures/with-moc-vault/_MOC.md +11 -0
  714. package/skills/vault-sync/tests/fixtures/with-moc-vault/_meta/.gitkeep +0 -0
  715. package/skills/vault-sync/tests/fixtures/with-moc-vault/hello-world.md +11 -0
  716. package/skills/vault-sync/tests/schema-drift.test.mjs +133 -0
  717. package/skills/vault-sync/validator.mjs +658 -0
  718. package/skills/vault-sync/validator.sh +55 -0
  719. package/skills/wave-executor/SKILL.md +496 -0
  720. package/skills/wave-executor/circuit-breaker.md +169 -0
  721. package/skills/wave-executor/wave-loop.md +1043 -0
  722. package/skills/write-executable-plan/SKILL.md +237 -0
  723. package/skills/write-executable-plan/plan-template.md +154 -0
  724. package/templates/_minimal/CLAUDE.md.tmpl +41 -0
  725. package/templates/_minimal/README.md.tmpl +15 -0
  726. package/templates/_minimal/gitignore.tmpl +47 -0
  727. package/templates/_shared/harte-regeln.md +16 -0
  728. package/templates/_shared/loop.md +90 -0
  729. package/templates/_shared/rules/parallel-sessions.md +77 -0
  730. package/templates/nextjs-minimal/README.md +30 -0
  731. package/templates/nextjs-minimal/app/layout.tsx +18 -0
  732. package/templates/nextjs-minimal/app/page.tsx +7 -0
  733. package/templates/nextjs-minimal/eslint.config.mjs +16 -0
  734. package/templates/nextjs-minimal/next.config.mjs +4 -0
  735. package/templates/nextjs-minimal/package.json +27 -0
  736. package/templates/nextjs-minimal/tsconfig.json +23 -0
  737. package/templates/node-minimal/README.md +33 -0
  738. package/templates/node-minimal/eslint.config.mjs +10 -0
  739. package/templates/node-minimal/package.json +21 -0
  740. package/templates/node-minimal/src/index.ts +1 -0
  741. package/templates/node-minimal/tests/sanity.test.ts +5 -0
  742. package/templates/node-minimal/tsconfig.json +17 -0
  743. package/templates/personas/README.md +150 -0
  744. package/templates/personas/accounting-compliance.v1.md +120 -0
  745. package/templates/personas/accounting-tax-advisor.v1.md +116 -0
  746. package/templates/personas/buyer-p1-cto.v1.md +125 -0
  747. package/templates/personas/buyer-p2-kanzlei.v1.md +134 -0
  748. package/templates/personas/buyer-p3-build.v1.md +130 -0
  749. package/templates/personas/buyer-p4-tech-veto.v1.md +130 -0
  750. package/templates/personas/buyer-p5-solo.v1.md +132 -0
  751. package/templates/personas/buyer-p6-ld.v1.md +130 -0
  752. package/templates/personas/klima-ai-expert.v1.md +114 -0
  753. package/templates/personas/klima-physicist.v1.md +117 -0
  754. package/templates/python-uv/README.md +28 -0
  755. package/templates/python-uv/pyproject.toml +32 -0
  756. package/templates/python-uv/src/__PROJECT_NAME__/__init__.py +0 -0
  757. package/templates/python-uv/src/__PROJECT_NAME__/main.py +6 -0
  758. package/templates/python-uv/tests/test_sanity.py +2 -0
  759. package/templates/static-html/README.md +19 -0
  760. package/templates/static-html/index.html +15 -0
  761. package/templates/static-html/script.js +1 -0
  762. package/templates/static-html/styles.css +26 -0
@@ -0,0 +1,1403 @@
1
+ # Session Orchestrator — User Guide
2
+
3
+ Session Orchestrator is a Claude Code and Codex plugin that brings structured, wave-based development sessions to any project. It handles session planning, parallel agent execution, VCS integration, quality gates, and session close-out — so you can focus on deciding *what* to build while it orchestrates *how*.
4
+
5
+ ---
6
+
7
+ ## Table of Contents
8
+
9
+ 1. [Quick Start](#1-quick-start)
10
+ 2. [Bootstrap Gate](#2-bootstrap-gate)
11
+ 3. [Commands Reference](#3-commands-reference)
12
+ 4. [Session Types](#4-session-types)
13
+ 5. [Session Config Reference](#5-session-config-reference)
14
+ 6. [The Wave Pattern](#6-the-wave-pattern)
15
+ 7. [Workflow Walkthrough](#7-workflow-walkthrough)
16
+ 8. [VCS Integration](#8-vcs-integration)
17
+ 9. [Quality Gates](#9-quality-gates)
18
+ 10. [Design-Code Alignment (Pencil Integration)](#10-design-code-alignment-pencil-integration)
19
+ 11. [Ecosystem Health](#11-ecosystem-health)
20
+ 12. [Quality Discovery](#12-quality-discovery)
21
+ 13. [Harness Audit](#13-harness-audit)
22
+ 14. [Session Persistence](#14-session-persistence)
23
+ 15. [Safety Features](#15-safety-features)
24
+ 16. [Session Metrics](#16-session-metrics)
25
+ 17. [Cross-Session Learning](#17-cross-session-learning)
26
+ 18. [Adaptive Wave Sizing](#18-adaptive-wave-sizing)
27
+ 19. [Cheat Sheet](#19-cheat-sheet)
28
+ 20. [FAQ](#20-faq)
29
+ 21. [Troubleshooting](#21-troubleshooting)
30
+
31
+ ---
32
+
33
+ ## 1. Quick Start
34
+
35
+ ### Install the plugin
36
+
37
+ #### Claude Code
38
+
39
+ Claude Code installs plugins through slash commands inside a running session. There is no `claude plugin` shell CLI — run these commands in the Claude Code prompt:
40
+
41
+ **From GitHub (recommended for end users):**
42
+
43
+ ```text
44
+ /plugin marketplace add Kanevry/session-orchestrator
45
+ /plugin install session-orchestrator@kanevry
46
+ ```
47
+
48
+ **From a local clone (for contributors or offline work):**
49
+
50
+ ```text
51
+ /plugin marketplace add /absolute/path/to/session-orchestrator
52
+ /plugin install session-orchestrator@kanevry
53
+ ```
54
+
55
+ After installation, starting Claude Code will display:
56
+
57
+ ```
58
+ 🎯 Session Orchestrator v3.x — /session [housekeeping|feature|deep] | /plan [new|feature|retro] | /discovery [scope] | /evolve [analyze|review|list]
59
+ ```
60
+
61
+ #### Codex
62
+
63
+ Clone the repository, then run the installer from the plugin root:
64
+
65
+ ```bash
66
+ git clone https://github.com/Kanevry/session-orchestrator.git
67
+ cd session-orchestrator
68
+ npm install
69
+ node scripts/codex-install.mjs
70
+ codex plugin list --available --json
71
+ ```
72
+
73
+ The installer uses Codex's public `plugin marketplace add` and `plugin add` lifecycle. Marketplace configuration only makes the plugin discoverable; the list output must separately show `session-orchestrator@kanevry` as installed and enabled. Next, fully restart Codex or start a fresh task, run `/hooks`, and review the bundle before approving it. Hook trust is operator-controlled and is never written or bypassed by the installer.
74
+
75
+ Rerun the installer after pulling changes. It performs `plugin add` on every run to refresh the installed bundle. The committed `.codex-plugin/plugin.json` version uses `+codex.<UTC timestamp>` as an explicit invalidation marker; the installer validates that tracked version but never rewrites it. For the full lifecycle, hook subset, and troubleshooting steps, see [`docs/codex-setup.md`](codex-setup.md).
76
+
77
+ ### Add Session Config to your project
78
+
79
+ Open your project's Session Config host file and add a `## Session Config` section:
80
+
81
+ - `CLAUDE.md` on Claude Code
82
+ - `AGENTS.md` on Codex
83
+
84
+ A minimal configuration looks like this:
85
+
86
+ ```markdown
87
+ ## Session Config
88
+
89
+ test-command: npm test
90
+ typecheck-command: npm run typecheck
91
+ lint-command: npm run lint
92
+ agents-per-wave: 6
93
+ waves: 5
94
+ persistence: true
95
+ enforcement: warn
96
+ vcs: github
97
+ ```
98
+
99
+ If you skip this step, the plugin uses sensible defaults: `feature` type, 6 agents per wave, 5 waves, and auto-detected VCS. See [`docs/session-config-template.md`](session-config-template.md) for the full field walkthrough.
100
+
101
+ ### Run your first session
102
+
103
+ ```
104
+ /session feature
105
+ ```
106
+
107
+ The orchestrator researches your project state autonomously, presents findings with recommendations, and asks you to pick a direction. Once you agree on a plan, run `/go` to execute it across multiple parallel agents in structured waves. When done, run `/close` to verify, commit, and clean up.
108
+
109
+ ---
110
+
111
+ ## 2. Bootstrap Gate
112
+
113
+ The Bootstrap Gate ensures every repository has a minimal structure before any orchestrator command runs. It exists because LLMs will rationalize their way past soft warnings in empty repos — Codex was observed bypassing the `/plan` Phase-0 abort entirely by falling back to "pragmatic paths", leaving repos unstructured. The gate replaces soft warnings with a state-file-backed, non-bypassable check that works identically on Claude Code, Codex, and Cursor.
114
+
115
+ ### When the gate runs
116
+
117
+ Phase 0 of every orchestrator skill — `/session`, `/go`, `/close`, `/plan`, `/discovery`, and `/evolve` — checks for three conditions before doing anything else:
118
+
119
+ 1. A `CLAUDE.md` (or `AGENTS.md` on Codex) exists in the project root
120
+ 2. That file contains a `## Session Config` section
121
+ 3. `.orchestrator/bootstrap.lock` is committed to the repository
122
+
123
+ If all three are present, the gate passes silently in under a second. If any are missing, the bootstrap flow starts.
124
+
125
+ ### What happens in an empty repo
126
+
127
+ When the gate triggers, the orchestrator:
128
+
129
+ 1. Reads your first prompt to infer what kind of project this is
130
+ 2. Recommends an intensity tier (see below) with one sentence of rationale
131
+ 3. Asks you to confirm with a single yes/no question (or choose a different tier)
132
+ 4. Runs the bootstrap flow for your tier
133
+ 5. Commits `.orchestrator/bootstrap.lock` and exits
134
+
135
+ You then re-run your original command and proceed normally. The gate never fires again for this repo unless you delete the lock file.
136
+
137
+ ### The three tiers
138
+
139
+ Tiers are cumulative — Standard includes everything Fast does, Deep includes everything Standard does.
140
+
141
+ #### Fast — demos, spikes, prototypes
142
+
143
+ Suitable for: a Glücksrad demo, a weekend prototype, a proof-of-concept you may throw away.
144
+
145
+ Sets up:
146
+ - Minimal `CLAUDE.md` with `## Session Config` (3-4 fields)
147
+ - `.orchestrator/bootstrap.lock`
148
+
149
+ No VCS issues, no PRD, no test scaffolding required.
150
+
151
+ #### Standard — MVPs, internal tools, small SaaS
152
+
153
+ Suitable for: a small SaaS product, an internal admin tool, a personal project you intend to maintain.
154
+
155
+ Sets up everything in Fast, plus:
156
+ - Standard `CLAUDE.md` with full Session Config
157
+ - Baseline directory structure per archetype
158
+ - VCS labels created (`priority:*`, `status:*`, `type:*`)
159
+ - Initial `STATUS.md` SSOT file
160
+
161
+ #### Deep — customer-facing systems, team repos, production
162
+
163
+ Suitable for: a customer-facing product, a shared team repository, anything with SLAs or compliance requirements.
164
+
165
+ Sets up everything in Standard, plus:
166
+ - Full PRD scaffolding in `docs/prd/`
167
+ - CI configuration baseline
168
+ - Security policy stub
169
+ - Comprehensive label taxonomy
170
+ - `CONTRIBUTING.md` with session workflow conventions
171
+
172
+ ### Public path (no local baseline)
173
+
174
+ If you do not have a local `projects-baseline` directory configured, the gate falls back to plugin-bundled minimal templates. Five archetypes are available:
175
+
176
+ | Archetype | Use for |
177
+ |-----------|---------|
178
+ | `_minimal` | Any project not matching a specific archetype |
179
+ | `static-html` | Static sites, landing pages |
180
+ | `node-minimal` | Node.js scripts, CLI tools, Express APIs |
181
+ | `nextjs-minimal` | Next.js applications |
182
+ | `python-uv` | Python projects using uv |
183
+
184
+ On Claude Code, `claude init` generates a baseline and then the gate proceeds normally. On Codex and Cursor, the plugin-bundled templates are used directly.
185
+
186
+ ### The `/bootstrap` command
187
+
188
+ You can also run the bootstrap flow explicitly, outside of any session:
189
+
190
+ ```
191
+ /bootstrap # Auto-detect tier from project context
192
+ /bootstrap --fast # Force Fast tier
193
+ /bootstrap --standard # Force Standard tier
194
+ /bootstrap --deep # Force Deep tier
195
+ /bootstrap --upgrade standard # Upgrade an existing Fast repo to Standard
196
+ /bootstrap --retroactive # Bootstrap an existing repo without resetting it
197
+ ```
198
+
199
+ `--retroactive` is the recommended path for existing repos that predate the Bootstrap Gate — it adds the missing `CLAUDE.md` structure and lock file without touching your existing code or configuration.
200
+
201
+ ### Anti-bureaucracy promise
202
+
203
+ - **Normal flow:** exactly 1 question (tier confirmation)
204
+ - **Ambiguous public path:** maximum 2 questions (archetype selection + tier confirmation)
205
+ - The gate is idempotent — re-running it on an already-bootstrapped repo is a no-op
206
+ - `.orchestrator/bootstrap.lock` is the mechanical truth — no external service, no network call
207
+
208
+ ### Troubleshooting: retroactively bootstrapping an existing repo
209
+
210
+ If you have an existing repo that was created before the Bootstrap Gate and every orchestrator command now stops at Phase 0:
211
+
212
+ ```
213
+ /bootstrap --retroactive
214
+ ```
215
+
216
+ This adds the required structure around your existing files without modifying them. It takes under a minute.
217
+
218
+ ---
219
+
220
+ ## 3. Commands Reference
221
+
222
+ This section introduces the core commands of the session lifecycle — the ones the subsections below document in detail. Session Orchestrator ships many more; the full command inventory lives in [`docs/components.md`](components.md).
223
+
224
+ | Command | Purpose | When to use |
225
+ |---------|---------|-------------|
226
+ | `/session [type]` | Start a new session | Beginning of a work session |
227
+ | `/go` | Approve the plan and begin wave execution | After reviewing the proposed wave plan |
228
+ | `/close` | End the session with verification and commits | When all waves are complete |
229
+ | `/discovery [scope]` | Systematic quality discovery and issue detection | Anytime, or automatically during `/close` |
230
+ | `/plan [mode]` | Structured project planning and PRD generation | Before starting a session, or standalone |
231
+ | `/evolve [mode]` | Extract and manage cross-session learnings | After 2+ sessions, or to review/prune learnings |
232
+
233
+ ### `/session [type]`
234
+
235
+ Starts a new development session. Accepts one argument: `housekeeping`, `feature`, or `deep`. If omitted, the type is read from your Session Config or defaults to `feature`.
236
+
237
+ ```
238
+ /session feature
239
+ /session housekeeping
240
+ /session deep
241
+ ```
242
+
243
+ This triggers autonomous research: git state, open issues, SSOT freshness, CI status, cross-repo health, and more. You then review findings and pick a direction before any code changes happen.
244
+
245
+ ### `/go`
246
+
247
+ Approves the wave plan and begins execution. You can optionally pass additional instructions:
248
+
249
+ ```
250
+ /go
251
+ /go focus on the API endpoints first
252
+ ```
253
+
254
+ This dispatches parallel subagents wave by wave. You do not need to intervene during execution — the orchestrator handles inter-wave reviews and plan adaptation automatically.
255
+
256
+ ### `/close`
257
+
258
+ Ends the session. This runs a full verification against the agreed plan, creates issues for any gaps, runs quality gates, commits cleanly, pushes, mirrors (if configured), and presents a session summary.
259
+
260
+ ```
261
+ /close
262
+ ```
263
+
264
+ ### `/plan [mode]`
265
+
266
+ Structured requirement gathering, PRD generation, and issue creation. Accepts one argument: `new`, `feature`, or `retro`.
267
+
268
+ ```
269
+ /plan new
270
+ /plan feature
271
+ /plan retro
272
+ ```
273
+
274
+ **`/plan new`** — Full project kickoff. Gathers requirements across 3 waves of questions (core decisions, technical details, business scope), generates an 8-section PRD, optionally scaffolds the repository, and creates a prioritized Epic with sub-issues. Typically 30-45 minutes.
275
+
276
+ **`/plan feature`** — Compact feature planning. Gathers requirements in 1-2 waves, generates a 5-section PRD with acceptance criteria, and creates feature sub-issues. Typically 5-15 minutes.
277
+
278
+ **`/plan retro`** — Data-driven retrospective. Reads session metrics from `.orchestrator/metrics/sessions.jsonl`, surfaces trends and patterns, guides reflection, and creates improvement issues. Typically 10-20 minutes.
279
+
280
+ **When to use `/plan` vs `/session`:**
281
+ - `/plan` answers **"What should we build?"** — requirements, PRDs, issues
282
+ - `/session` answers **"How do we build it?"** — wave planning, agent execution, verification
283
+
284
+ `/plan` runs outside of sessions. Its output (PRD + issues) feeds into the next `/session`, which picks from those issues and executes them. You can skip `/plan` entirely and create issues manually — sessions work with any existing issues.
285
+
286
+ **Optional:** `plan-baseline-path` in Session Config (for `/plan new` repo scaffolding from your own baseline). When absent, `/bootstrap` falls back to plugin-bundled minimal templates. Not required for `/plan feature` or `/plan retro`.
287
+
288
+ ---
289
+
290
+ ## 4. Session Types
291
+
292
+ ### Housekeeping
293
+
294
+ Best for: git cleanup, SSOT refresh, CI fixes, branch merges, documentation updates.
295
+
296
+ - **Execution model:** Serial (no wave structure)
297
+ - **Agents:** 1-2 per task
298
+ - **Typical duration:** Short
299
+ - **Use when:** Your repo needs maintenance, not new features
300
+
301
+ ```
302
+ /session housekeeping
303
+ ```
304
+
305
+ ### Feature
306
+
307
+ Best for: frontend/backend feature work, implementing issues, standard development.
308
+
309
+ - **Execution model:** 5 waves with parallel agents
310
+ - **Agents:** 4-6 per wave (configurable)
311
+ - **Typical duration:** Medium
312
+ - **Use when:** You have feature issues to implement
313
+
314
+ ```
315
+ /session feature
316
+ ```
317
+
318
+ ### Deep
319
+
320
+ Best for: complex backend work, security audits, database refactoring, architecture changes.
321
+
322
+ - **Execution model:** 5 waves with parallel agents
323
+ - **Agents:** Up to 10-18 per wave (configurable)
324
+ - **Typical duration:** Longer
325
+ - **Use when:** The work requires extensive discovery, testing, or touches critical systems
326
+
327
+ ```
328
+ /session deep
329
+ ```
330
+
331
+ ---
332
+
333
+ ## 5. Session Config Reference
334
+
335
+ > **Skill authors:** The authoritative field reference used by all skills is [`docs/session-config-reference.md`](session-config-reference.md). Update that file when adding or changing Session Config fields.
336
+
337
+ Add a `## Session Config` section to your project's Session Config host file to configure how Session Orchestrator behaves in that repository:
338
+
339
+ - `CLAUDE.md` on Claude Code
340
+ - `AGENTS.md` on Codex
341
+
342
+ ### Example
343
+
344
+ ```markdown
345
+ ## Session Config
346
+
347
+ - **agents-per-wave:** 6
348
+ - **waves:** 5
349
+ - **pencil:** designs/app.pen
350
+ - **cross-repos:** [api-service, shared-lib]
351
+ - **ssot-files:** [.claude/STATUS.md]
352
+ - **mirror:** github
353
+ - **ecosystem-health:** true
354
+ - **vcs:** gitlab
355
+ - **gitlab-host:** gitlab.company.com
356
+ - **health-endpoints:** [{name: "API", url: "https://api.example.com/health"}, {name: "Worker", url: "http://worker:8080/healthz"}]
357
+ - **special:** "Always run database migrations before testing"
358
+ - **test-command:** pnpm vitest run
359
+ - **stale-issue-days:** 14
360
+ - **persistence:** true
361
+ - **plan-baseline-path:** ~/Projects/projects-baseline
362
+ - **plan-default-visibility:** internal
363
+ - **plan-prd-location:** docs/prd/
364
+ - **plan-retro-location:** docs/retro/
365
+ - **memory-cleanup-threshold:** 5
366
+ - **enforcement:** warn
367
+ - **isolation:** auto
368
+ - **max-turns:** auto
369
+ ```
370
+
371
+ ### Field Reference
372
+
373
+ | Field | Type | Default | Description |
374
+ |-------|------|---------|-------------|
375
+ | `agents-per-wave` | integer | `6` | Maximum number of parallel subagents per wave. Higher values increase parallelism but use more resources. |
376
+ | `waves` | integer | `5` | Number of execution waves for feature and deep sessions. |
377
+ | `pencil` | string | none | Path to a `.pen` design file (relative to project root). Enables design-code alignment reviews after Impl-Core and Impl-Polish waves. |
378
+ | `cross-repos` | list | none | Related repositories under `~/Projects/`. The orchestrator checks their git state and critical issues during session start. |
379
+ | `ssot-files` | list | none | Single Source of Truth files to track for freshness (e.g., `STATUS.md`, `STATE.md`). Flagged if older than 5 days. |
380
+ | `mirror` | string | `none` | Mirror target after push. Set to `github` to automatically push to a GitHub remote after every session commit. |
381
+ | `ecosystem-health` | boolean | `false` | Enable service health checks at session start. Requires `health-endpoints` to be configured. |
382
+ | `vcs` | string | auto-detect | Version control platform: `github` or `gitlab`. Auto-detected from git remote URL if not set. |
383
+ | `gitlab-host` | string | from remote | Custom GitLab hostname. Only needed if the host cannot be inferred from the git remote URL. |
384
+ | `health-endpoints` | list | none | Service URLs to check health. Each entry is an object with `name` and `url` fields. |
385
+ | `special` | string | none | Repo-specific instructions. Freeform text that the orchestrator reads and follows during sessions. |
386
+ | `test-command` | string | `npm test` | Custom test command. Used by quality gates for all test invocations. |
387
+ | `typecheck-command` | string | `npm run typecheck` | Custom TypeScript check command. Set to `skip` for non-TS projects. |
388
+ | `lint-command` | string | `npm run lint` | Custom lint command. Used by the Full Gate quality check at session end. |
389
+ | `ssot-freshness-days` | integer | `5` | Days before an SSOT file is flagged as stale during session start. |
390
+ | `plugin-freshness-days` | integer | `30` | Days before the plugin itself is flagged as potentially outdated. |
391
+ | `recent-commits` | integer | `20` | Number of recent commits to display during session start git analysis. |
392
+ | `issue-limit` | integer | `50` | Maximum issues to fetch when querying VCS during session start. |
393
+ | `stale-branch-days` | integer | `7` | Days of inactivity before a branch is flagged as stale. |
394
+ | `stale-issue-days` | integer | `30` | Days without progress before an issue is flagged for triage. |
395
+ | `discovery-on-close` | boolean | `false` | Run discovery probes automatically during `/close`. |
396
+ | `discovery-probes` | list | `[all]` | Probe categories to run: `all`, `code`, `infra`, `ui`, `arch`, `session`, `audit`, `vault`, `feature`. |
397
+ | `discovery-exclude-paths` | list | `[]` | Glob patterns to exclude from discovery scanning (e.g., `vendor/**`, `dist/**`). |
398
+ | `discovery-severity-threshold` | string | `low` | Minimum severity for reported findings: `critical`, `high`, `medium`, `low`. |
399
+ | `discovery-confidence-threshold` | integer | `60` | Minimum confidence score (0-100) for discovery findings to be reported. Findings below this threshold are auto-deferred. |
400
+ | `persistence` | boolean | `true` | Enable session resumption via STATE.md and session memory files. |
401
+ | `plan-baseline-path` | string | none | Path to projects-baseline directory (e.g., `~/Projects/projects-baseline`). Optional. When absent, `/bootstrap` falls back to plugin-bundled minimal templates. Only required if you want to scaffold from your own baseline during `/plan new`. |
402
+ | `plan-default-visibility` | string | `internal` | Default repo visibility for `/plan new`: `internal`, `private`, or `public`. |
403
+ | `plan-prd-location` | string | `docs/prd/` | Directory where PRD documents are saved (relative to project root). |
404
+ | `plan-retro-location` | string | `docs/retro/` | Directory where retrospective documents are saved (relative to project root). |
405
+ | `memory-cleanup-threshold` | integer | `5` | Recommend `/memory-cleanup` after N accumulated session memory files. |
406
+ | `memory-cleanup-soft-limit` | integer | `180` | Hard ceiling on accumulated memory files before the cleanup nudge escalates from soft suggestion to strong recommendation. PRD F2.2 / issue #502. |
407
+ | `vault-mirror.quality.min-narrative-chars` | integer | `400` | Minimum body length (characters) before a learning or session note is mirrored to the vault. Notes shorter than this threshold are skipped. PRD F1.2 / issue #504. |
408
+ | `vault-mirror.quality.min-confidence` | float | `0.5` | Minimum learning confidence (0.0..1.0) before a learning note is mirrored. Set to `0.0` to mirror every learning regardless of confidence. PRD F1.2 / issue #504. |
409
+ | `cold-start.enabled` | boolean | `true` | Master toggle for the cold-start detector. When `false`, no idle-time nudges fire at session-start. PRD F1.3 / issue #500. |
410
+ | `cold-start.nudge-after-hours` | integer | `1` | Hours of wall-clock idle (since the last session-end) before the cold-start detector fires a nudge. PRD F1.3 / issue #500. |
411
+ | `cold-start.silence-after-sessions` | integer | `1` | Consecutive silent sessions (no commits, no learnings) before the cold-start detector fires a nudge. PRD F1.3 / issue #500. |
412
+ | `enforcement` | string | `warn` | Hook enforcement level for scope and command restrictions: `strict`, `warn`, or `off`. |
413
+ | `isolation` | string | `auto` | Agent isolation mode: `worktree`, `none`, or `auto`. `auto` resolves per-wave via the graduated default (#194): ≤2 agents → `none`, 3–4 agents on feature/deep → `worktree`, ≥5 agents → `worktree`, housekeeping 3–4 → `none`. See Section 15 "Isolation Graduation" below. |
414
+ | `max-turns` | integer or string | `auto` | Max agent turns before PARTIAL. Auto: housekeeping=8, feature=15, deep=25. |
415
+
416
+ > **Security:** Do not embed credentials, API keys, or auth tokens in Session Config fields — especially `health-endpoints` URLs. These values are stored in your config host file (`CLAUDE.md` / `AGENTS.md`) which may be committed to version control. Use header-based auth or separate secret management instead.
417
+
418
+ ### Minimal Config
419
+
420
+ If you add no Session Config at all, the orchestrator uses these defaults:
421
+
422
+ - Session type: `feature`
423
+ - Agents per wave: `6`
424
+ - Waves: `5`
425
+ - VCS: auto-detected from git remote
426
+ - Everything else: disabled/none
427
+
428
+ See [examples](examples/) for project-specific configurations (Next.js, Express API, Swift iOS).
429
+
430
+ ---
431
+
432
+ ## 6. The Wave Pattern
433
+
434
+ Feature and deep sessions execute work in structured waves, each assigned one of 5 roles. Each wave has a specific purpose, and agents within a wave run in parallel.
435
+
436
+ ### Wave Structure
437
+
438
+ | Role | Purpose | Agents modify code? |
439
+ |------|---------|---------------------|
440
+ | **Discovery** | Understand the current state before changing anything | No (read-only) |
441
+ | **Impl-Core** | Core feature work — the primary implementation | Yes |
442
+ | **Impl-Polish** | Polish, fix Impl-Core issues, integration, edge cases | Yes |
443
+ | **Quality** | Tests, TypeScript checks, lint, security review | Yes (tests only) |
444
+ | **Finalization** | Documentation, issue cleanup, commit preparation | Minimal |
445
+
446
+ ### Role-to-Wave Mapping
447
+
448
+ Roles map dynamically to the configured wave count (default: 5):
449
+
450
+ | `waves` | Mapping |
451
+ |---------|---------|
452
+ | 3 | W1=Discovery+Impl-Core, W2=Impl-Polish+Quality, W3=Finalization |
453
+ | 4 | W1=Discovery, W2=Impl-Core+Impl-Polish, W3=Quality, W4=Finalization |
454
+ | 5 | W1=Discovery, W2=Impl-Core, W3=Impl-Polish, W4=Quality, W5=Finalization |
455
+ | 6+ | W1=Discovery, W2-W3=Impl-Core (split), W4-W5=Impl-Polish (split), W6=Quality+Finalization |
456
+
457
+ ### Wave Details
458
+
459
+ **Discovery**
460
+ Agents audit affected code paths, verify assumptions from the plan, check existing test coverage, and identify edge cases. This wave is read-only: no files are modified. If discoveries warrant it, the plan is adjusted before Impl-Core begins.
461
+
462
+ **Impl-Core**
463
+ The primary implementation wave. Agents write core feature code, database changes, API endpoints, and primary UI components. Each agent has a clearly scoped set of files and acceptance criteria. Output: a working (possibly rough) implementation.
464
+
465
+ **Impl-Polish**
466
+ Agents fix issues discovered during Impl-Core, implement secondary features, handle integration between Impl-Core outputs, and address edge cases. If Pencil design review is configured, a design-code alignment check runs after this wave.
467
+
468
+ **Quality**
469
+ Before test writers run, the orchestrator dispatches 1-2 simplification agents that scan all files changed in the session (excluding test files) and clean up common AI-generated code patterns — unnecessary try-catch wrappers, over-documentation, re-implemented stdlib functions, and redundant boolean logic. These agents reference `slop-patterns.md` (produced by the discovery skill) and do not change functionality. After simplification, the remaining agents write and update tests, run quality checks per the quality-gates skill, and perform a security review. Goal: all tests passing, zero TypeScript errors, no lint violations.
470
+
471
+ **Finalization**
472
+ One or two agents update SSOT files, close or update issues, write session handover documentation, and prepare clean commits. No new feature work happens here.
473
+
474
+ ### Agent Counts by Session Type
475
+
476
+ | Session Type | Discovery | Impl-Core | Impl-Polish | Quality | Finalization |
477
+ |-------------|-----------|-----------|-------------|---------|-------------|
478
+ | housekeeping | 2 | 2 | 1 | 1 | 1 |
479
+ | feature | 4-6 | 6 | 4-6 | 4 | 2 |
480
+ | deep | 6-8 | 6-10 | 6-8 | 6 | 2-4 |
481
+
482
+ The `agents-per-wave` config value caps the maximum. These counts are guidelines — the orchestrator adjusts based on task complexity.
483
+
484
+ ### Inter-Wave Checkpoints
485
+
486
+ Between each wave, the orchestrator:
487
+
488
+ 1. Reviews all agent outputs
489
+ 2. Checks for file conflicts between agents
490
+ 3. Runs verification based on wave role (Incremental after Impl-Core/Impl-Polish, Full Gate after Quality)
491
+ 4. Runs design review if configured (after Impl-Core and Impl-Polish roles)
492
+ 5. Adapts the plan for the next wave if needed (adds fix tasks, re-scopes)
493
+ 6. Reports progress to you
494
+
495
+ ---
496
+
497
+ ## 7. Workflow Walkthrough
498
+
499
+ Here is what happens step by step when you run a full feature session.
500
+
501
+ ### Step 1: Start the session
502
+
503
+ ```
504
+ /session feature
505
+ ```
506
+
507
+ The orchestrator autonomously researches your project:
508
+
509
+ - **Git analysis:** Branch state, recent commits, unpushed changes, stale branches
510
+ - **VCS deep dive:** Open issues (categorized by priority), recently closed issues, open MRs/PRs, CI pipeline status, active milestones
511
+ - **SSOT check:** Freshness of tracked files, TypeScript error count, test baseline
512
+ - **Cross-repo status:** Git state and critical issues in related repositories
513
+ - **Ecosystem health:** Service endpoint checks (if configured)
514
+ - **Pattern recognition:** Recurring issue patterns, blocking chains, quick wins, synergies
515
+
516
+ ### Step 2: Review findings and pick a direction
517
+
518
+ The orchestrator presents a structured overview:
519
+
520
+ ```
521
+ ## Session Overview
522
+ - Type: feature
523
+ - Repo: my-app on branch main
524
+ - Git: 0 uncommitted, 0 unpushed, 3 open branches
525
+ - VCS: 12 open issues (2 high, 4 medium), 1 open PR
526
+ - Health: TypeScript: 0 errors | Tests: passing | CI: green
527
+ - SSOT: STATUS.md fresh (2 days)
528
+
529
+ ## Recommended Focus
530
+ Option A (recommended): Issues #42 + #45 — high synergy, shared code paths
531
+ Option B: Issue #38 — standalone deep work, can be done independently
532
+ Option C: Issues #50 + #51 + #52 — quick wins, clean up the backlog
533
+ ```
534
+
535
+ You pick an option (or propose your own). The orchestrator does not proceed until you confirm.
536
+
537
+ ### Step 3: Review the wave plan
538
+
539
+ After you choose a direction, the orchestrator decomposes the work into a role-based wave plan:
540
+
541
+ ```
542
+ ## Wave Plan (Session: feature)
543
+
544
+ ### Wave 1: Discovery (4 agents)
545
+ - Agent 1: Audit API endpoint structure → src/api/ → map current routes
546
+ - Agent 2: Verify database schema → prisma/schema.prisma → check relations
547
+ ...
548
+
549
+ ### Wave 2: Impl-Core (6 agents)
550
+ - Agent 1: Implement new API route → src/api/users.ts → endpoint returns 200
551
+ ...
552
+
553
+ ### Inter-Wave Checkpoints
554
+ - After Impl-Core: Design review (Pencil configured)
555
+ - After Quality: Full quality gate
556
+
557
+ Ready to execute? Use /go to begin.
558
+ ```
559
+
560
+ You can request changes to the plan. When satisfied:
561
+
562
+ ### Step 4: Execute
563
+
564
+ ```
565
+ /go
566
+ ```
567
+
568
+ Waves execute automatically. Agents within each wave run in parallel. Between waves, the orchestrator reviews results, runs checks, and adapts the plan if needed. You see progress updates after each wave:
569
+
570
+ ```
571
+ ## Wave 2 (Impl-Core) Complete ✓
572
+ - Agent 1: done — API route implemented, returns correct schema
573
+ - Agent 2: done — Database migration created
574
+ - Agent 3: done — Frontend form component built
575
+ - Tests: 3 new passing | TypeScript: 0 errors
576
+ - Design: ALIGNED
577
+ - Adaptations for Impl-Polish: none
578
+ ```
579
+
580
+ ### Step 5: Close the session
581
+
582
+ After the Finalization wave completes:
583
+
584
+ ```
585
+ /close
586
+ ```
587
+
588
+ The orchestrator:
589
+
590
+ 1. **Verifies** every planned item against the agreed plan (with evidence)
591
+ 2. **Creates issues** for any work that was not completed (carryover issues)
592
+ 3. **Runs quality gates:** TypeScript (0 errors), tests (passing), lint (clean), no debug artifacts
593
+ 4. **Updates SSOT** files with current metrics
594
+ 5. **Commits** using Conventional Commits format, staging files individually
595
+ 6. **Pushes** to origin
596
+ 7. **Mirrors** to GitHub (if configured)
597
+ 8. **Closes/updates issues** on your VCS platform
598
+ 9. **Presents a session summary** with completed items, carryovers, new issues, metrics, and recommendations for the next session
599
+
600
+ ---
601
+
602
+ ## 8. VCS Integration
603
+
604
+ Session Orchestrator works with both GitHub and GitLab. It manages issues, merge requests / pull requests, labels, milestones, and CI status throughout the session.
605
+
606
+ ### Auto-Detection
607
+
608
+ The VCS platform is detected from your git remote URL:
609
+
610
+ - Remote contains `github.com` --> uses `gh` CLI
611
+ - All other remotes --> uses `glab` CLI
612
+
613
+ To override auto-detection, set `vcs` in your Session Config:
614
+
615
+ ```markdown
616
+ - **vcs:** github
617
+ ```
618
+
619
+ or
620
+
621
+ ```markdown
622
+ - **vcs:** gitlab
623
+ - **gitlab-host:** gitlab.company.com
624
+ ```
625
+
626
+ ### What the orchestrator does with your VCS
627
+
628
+ **At session start:**
629
+ - Lists open issues, categorized by priority and status labels
630
+ - Lists recently closed issues (context from last session)
631
+ - Checks active milestones
632
+ - Lists open MRs/PRs
633
+ - Checks CI pipeline status
634
+
635
+ **During execution:**
636
+ - Marks selected issues as `status:in-progress`
637
+ - Adds comments to issues noting which wave is working on them
638
+
639
+ **At session end:**
640
+ - Closes resolved issues with a summary comment
641
+ - Updates issue labels to reflect actual state
642
+ - Creates carryover issues for partially-completed work
643
+ - Creates new issues for discovered problems
644
+ - Updates milestone progress
645
+
646
+ ### Label Taxonomy
647
+
648
+ The orchestrator uses a structured label system for issue management. For the complete label taxonomy (priority, status, area, and type labels), see the **Label Taxonomy** section of the `gitlab-ops` skill (`skills/gitlab-ops/SKILL.md`).
649
+
650
+ Create these labels in your VCS platform if they do not already exist. The orchestrator will use them automatically during session start (categorizing issues), execution (marking in-progress), and close-out (updating status).
651
+
652
+ ### GitHub Mirroring
653
+
654
+ If your primary VCS is GitLab but you also maintain a GitHub mirror, configure:
655
+
656
+ ```markdown
657
+ - **mirror:** github
658
+ ```
659
+
660
+ The orchestrator pushes to the `github` remote after every session commit. The remote must already be configured in your git config.
661
+
662
+ ---
663
+
664
+ ## 9. Quality Gates
665
+
666
+ Session Orchestrator enforces quality at two levels: inter-wave checks during execution, and a full quality gate at session end.
667
+
668
+ ### Session Reviewer Agent
669
+
670
+ The `session-reviewer` is a dedicated agent that verifies work quality. It runs between waves (especially before Impl-Polish and after Quality) and at session end. It checks:
671
+
672
+ 1. **Implementation correctness** — Changed files match task descriptions. No incomplete implementations, placeholder values, or hardcoded data. Error handling follows project patterns.
673
+
674
+ 2. **Test coverage** — Every changed source file has a corresponding test file. Tests cover the new behavior (not just boilerplate). Tests pass when run.
675
+
676
+ 3. **TypeScript health** — typecheck per quality-gates skill reports zero errors. This is non-negotiable.
677
+
678
+ 4. **Security basics (OWASP quick check):**
679
+ - No hardcoded secrets or API keys
680
+ - User input validated at boundaries (e.g., with Zod)
681
+ - No unjustified `any` types
682
+ - No `console.log` in production code (except `warn`/`error`)
683
+ - SQL uses parameterized queries
684
+ - Auth checks present in server actions
685
+
686
+ 5. **Issue tracking accuracy** — Claimed issues have the correct status labels. Acceptance criteria from issues are actually met.
687
+
688
+ 6. **Silent failure analysis** — Catch blocks that swallow errors, empty error handlers, and fallback returns that hide failures.
689
+
690
+ 7. **Test depth check** — Tests exercise changed behavior (not just boilerplate), edge cases are present, assertion quality is adequate, and mock boundaries are correct.
691
+
692
+ 8. **Type design spot-check** — String parameters that should be unions, overly broad `any` types, and unused generics.
693
+
694
+ Each finding includes a **confidence score** (0-100). Only findings with confidence >= 80 appear in the main report. Findings scored 50-79 are listed in a separate "Possible Issues" section for manual review.
695
+
696
+ ### Review Output
697
+
698
+ The reviewer produces a structured verdict:
699
+
700
+ ```
701
+ ## Quality Review — Impl-Core
702
+
703
+ ### Implementation: PASS
704
+ ### Tests: WARN — missing test for src/api/users.ts
705
+ ### TypeScript: PASS — 0 errors
706
+ ### Security: PASS
707
+ ### Issues: PASS
708
+
709
+ ### Verdict: PROCEED (address test gap in Quality wave)
710
+ ```
711
+
712
+ Possible verdicts:
713
+ - **PROCEED** — quality is acceptable, continue to next wave
714
+ - **FIX REQUIRED** — specific items must be addressed before continuing
715
+
716
+ ### Session-End Quality Gate
717
+
718
+ Before any code is committed, `/close` runs all checks:
719
+
720
+ | Check | Requirement |
721
+ |-------|------------|
722
+ | TypeScript | 0 errors |
723
+ | Tests | All passing |
724
+ | Lint | No errors (warnings acceptable) |
725
+ | Debug artifacts | No `console.log`, `debugger`, or `TODO: remove` in changed files |
726
+ | Git status | All changes accounted for |
727
+
728
+ If any check fails and cannot be quickly fixed, the orchestrator creates a `priority:high` issue for immediate follow-up rather than committing broken code.
729
+
730
+ ### Deterministic Scripts
731
+
732
+ Session Orchestrator includes bash scripts for critical workflow paths. These provide deterministic, testable alternatives to agent-interpreted instructions:
733
+
734
+ - `scripts/parse-config.mjs` — Parses `## Session Config` from a config host file, outputs validated JSON with all 40+ fields and defaults applied. Run: `node scripts/parse-config.mjs [path/to/CLAUDE.md|AGENTS.md]`
735
+ - `scripts/run-quality-gate.mjs` — Runs quality gates with structured JSON output. Supports 4 variants: baseline, incremental, full-gate, per-file.
736
+ - `scripts/validate-wave-scope.mjs` — Validates wave-scope.json before enforcement hooks consume it. Checks for path traversal, absolute paths, and required fields.
737
+
738
+ Run `npm test` to execute the vitest suite.
739
+
740
+ ---
741
+
742
+ ## 10. Design-Code Alignment (Pencil Integration)
743
+
744
+ If your project uses Pencil (`.pen`) design files, the orchestrator can automatically compare your implementation against the design after each implementation wave.
745
+
746
+ ### Setup
747
+
748
+ Add the path to your `.pen` file in Session Config:
749
+
750
+ ```markdown
751
+ - **pencil:** designs/app.pen
752
+ ```
753
+
754
+ The path is relative to your project root. The orchestrator verifies the file exists during session start.
755
+
756
+ ### How it works
757
+
758
+ After **Impl-Core** and **Impl-Polish** waves, the orchestrator:
759
+
760
+ 1. Opens the `.pen` file via Pencil MCP
761
+ 2. Finds design frames relevant to the current wave's UI work
762
+ 3. Screenshots those frames
763
+ 4. Reads the actual UI files changed in the wave
764
+ 5. Compares: layout structure, component hierarchy, visual elements (headings, buttons, inputs, cards), responsive behavior
765
+
766
+ ### Alignment Reports
767
+
768
+ Each design review produces one of three verdicts:
769
+
770
+ | Verdict | Meaning | Action |
771
+ |---------|---------|--------|
772
+ | **ALIGNED** | Implementation matches design | Proceed as planned |
773
+ | **MINOR DRIFT** | Small differences (spacing, colors, minor layout) | Fix tasks added to next wave automatically |
774
+ | **MAJOR MISMATCH** | Significant deviation from design | User informed, revised plan proposed |
775
+
776
+ ### Example output
777
+
778
+ ```
779
+ ## Wave 2 (Impl-Core) Complete ✓
780
+ ...
781
+ - Design: MINOR DRIFT — card grid uses 3 columns instead of designed 2-column layout
782
+ - Adaptations for Impl-Polish: Agent 2 assigned to fix card grid layout
783
+ ```
784
+
785
+ ### Without Pencil
786
+
787
+ Pencil integration is entirely optional. If no `pencil` path is configured, design reviews are skipped with no impact on the rest of the session workflow.
788
+
789
+ ---
790
+
791
+ ## 11. Ecosystem Health
792
+
793
+ For projects with deployed services or multiple related repositories, the orchestrator can check ecosystem health at session start.
794
+
795
+ ### Setup
796
+
797
+ Enable ecosystem health and configure your endpoints in Session Config:
798
+
799
+ ```markdown
800
+ - **ecosystem-health:** true
801
+ - **health-endpoints:** [{name: "API", url: "https://api.example.com/health"}, {name: "Dashboard", url: "http://localhost:3000/api/health"}]
802
+ - **cross-repos:** [api-service, shared-lib]
803
+ ```
804
+
805
+ ### What gets checked
806
+
807
+ **Service health endpoints:**
808
+ Each configured endpoint is queried with a simple HTTP check. If the endpoint returns JSON with a `status` field, that value is reported. Otherwise, the check reports OK or unreachable.
809
+
810
+ **Cross-repo critical issues:**
811
+ For each related repository, the orchestrator queries open issues with `priority:critical` or `priority:high` labels. This surfaces blocking problems in other parts of your ecosystem before you start working.
812
+
813
+ **CI pipeline status:**
814
+ The latest CI pipeline runs are checked for the current repository.
815
+
816
+ ### Health Report
817
+
818
+ The report appears in the session overview:
819
+
820
+ ```
821
+ ## Ecosystem Health
822
+ | Service | Status |
823
+ |-----------|-------------|
824
+ | API | OK |
825
+ | Dashboard | unreachable |
826
+
827
+ Critical issues: 2 across cross-repos
828
+ CI: green
829
+ ```
830
+
831
+ Any service that is down or any critical issue count above zero is flagged as requiring attention.
832
+
833
+ ### Graceful Degradation
834
+
835
+ If `health-endpoints` is not configured, the service table is omitted. If `cross-repos` is not configured, the cross-project issue scan is omitted. The orchestrator does not fail — it simply skips the unconfigured checks.
836
+
837
+ ---
838
+
839
+ ## 12. Quality Discovery
840
+
841
+ The `/discovery` command runs systematic quality probes to find issues that don't have VCS issues yet.
842
+
843
+ ### Usage
844
+
845
+ ```
846
+ /discovery # Scan all categories
847
+ /discovery code # Code quality only
848
+ /discovery session # Session gap analysis only
849
+ /discovery code,session # Multiple categories
850
+ ```
851
+
852
+ ### Scope Options
853
+
854
+ | Scope | Probes | Focus |
855
+ |-------|--------|-------|
856
+ | `all` | 23 probes | Everything (default) |
857
+ | `code` | 8 probes | Hardcoded values, dead code, AI slop, type safety, tests, security |
858
+ | `infra` | 4 probes | CI pipelines, env config, dependencies, deployments |
859
+ | `ui` | 3 probes | Accessibility, responsive design, design drift |
860
+ | `arch` | 3 probes | Circular deps, complexity hotspots, dependency security |
861
+ | `session` | 5 probes | Gap analysis, hallucination check, stale issues, dependency chains, claude-md audit |
862
+
863
+ ### How It Works
864
+
865
+ 1. **Stack Detection** -- Detects your tech stack (JS/TS, Python, Docker, etc.) and activates relevant probes
866
+ 2. **Probe Execution** -- Runs probes in parallel as read-only subagents
867
+ 3. **Verification** -- Re-reads files to confirm findings, discards false positives
868
+ 4. **Interactive Triage** -- Critical/High findings reviewed individually; Medium/Low batched by category
869
+ 5. **Issue Creation** -- Approved findings become VCS issues with `type:discovery` label
870
+
871
+ ### Embedded Mode
872
+
873
+ Set `discovery-on-close: true` in Session Config to automatically run discovery during `/close`. In embedded mode, critical/high findings become issues; medium/low are listed in the session report.
874
+
875
+ ### Confidence Scoring
876
+
877
+ Each verified finding receives a confidence score from 0 to 100 that reflects how trustworthy the detection is. The score starts at a baseline of 40 and adds points from three factors: **pattern specificity** (how specific the match pattern is — generic patterns score lower), **file context** (whether surrounding code reinforces the finding), and **historical signal** (whether the same issue has appeared in prior discovery runs). Each factor contributes 0, 10, or 20 points, so scores range from 40 to 100 in practice.
878
+
879
+ Findings below the confidence threshold are **auto-deferred** — they skip interactive triage entirely and appear in a collapsed summary instead. The threshold is controlled by `discovery-confidence-threshold` in your Session Config (default: `60`). Raise it if you are seeing too many false positives in triage; lower it if you want more aggressive detection. Auto-deferred findings are not lost — you can review them anytime with `/discovery --include-deferred`.
880
+
881
+ One exception: findings with **critical** severity always receive a minimum confidence of 70, regardless of how the three factors score. This ensures that critical issues — potential security holes, data-loss risks — are never silently deferred. They always appear in interactive triage.
882
+
883
+ ```yaml
884
+ ## Session Config
885
+ discovery-confidence-threshold: 60 # default; raise to reduce noise
886
+ ```
887
+
888
+ ---
889
+
890
+ ## 13. Harness Audit
891
+
892
+ The harness audit scores this repository against the session-orchestrator rubric — a structured set of checks that verify the repo is set up correctly and the orchestrator has what it needs to run reliably. Run it whenever you want a baseline health reading or after making structural changes to the project setup.
893
+
894
+ ### How to run
895
+
896
+ ```
897
+ /harness-audit
898
+ ```
899
+
900
+ Or directly from the shell:
901
+
902
+ ```bash
903
+ node scripts/harness-audit.mjs
904
+ ```
905
+
906
+ No flags. The script always audits the current working directory / repo root.
907
+
908
+ ### What it produces
909
+
910
+ - **stdout** — a JSON record matching the audit schema (see below)
911
+ - **stderr** — a concise human-readable summary
912
+ - **`.orchestrator/metrics/audit.jsonl`** — the same record appended as a single JSONL line for historical tracking
913
+
914
+ ### The 9 categories
915
+
916
+ | Category | What it checks |
917
+ |----------|----------------|
918
+ | Session Discipline | STATE.md lifecycle, session-type usage, turn-limit compliance |
919
+ | Quality Gate Coverage | Test command configured, typecheck command configured, lint command configured |
920
+ | Hook Integrity | All registered hook handlers point to existing files |
921
+ | Persistence Health | sessions.jsonl present and parseable, learnings.jsonl consistent |
922
+ | Plugin-Root Resolution | Plugin path resolves correctly; bootstrap.lock committed |
923
+ | Config Hygiene | Session Config fields are valid types; no unknown fields; no embedded secrets |
924
+ | Policy Freshness | blocked-commands.json present; rubric_version matches `2026-06` |
925
+ | Large-Codebase Readiness | Layered instruction files, a navigable codebase map, LSP/language-server tooling, scoped test/lint commands, a version-controlled destructive-command deny-list, and a lean delegated root |
926
+ | Skill-Health Surfacing | Skill-invocation telemetry hygiene, the skill-health scorer module wired correctly, and an advisory (never-scored) verdict tally — absence of adoption is a healthy state, not a defect |
927
+
928
+ ### Severity escalation
929
+
930
+ | Score | Level | Action |
931
+ |-------|-------|--------|
932
+ | ≥ 7/10 | Info | No action required |
933
+ | 5–7/10 | Medium finding | Review and address in next session |
934
+ | < 5/10 | High finding | Surfaces automatically via `/discovery audit` |
935
+
936
+ ### Rubric version and bump policy
937
+
938
+ The current rubric version is `2026-06`. It is embedded in every audit record as the `rubric_version` field. When session-orchestrator releases a minor version that changes the rubric, the version string is bumped via a conventional commit (`chore: bump rubric version to YYYY-MM`). Older records in `audit.jsonl` retain their original `rubric_version` and remain valid — use the field to filter when comparing across versions.
939
+
940
+ ### Related commands
941
+
942
+ `/discovery audit` runs only the harness-audit probe within the discovery framework, without the full multi-category scan.
943
+
944
+ ---
945
+
946
+ ## 14. Session Persistence
947
+
948
+ Session Orchestrator persists session state so you can resume after crashes, pauses, or context window exhaustion.
949
+
950
+ ### STATE.md
951
+
952
+ Lives at `.claude/STATE.md` in your project. Contains YAML frontmatter (`session-type`, `branch`, `issues`, `started`, `status`, `current-wave`, `total-waves`) and a Markdown body tracking the Current Wave, Wave History, and any Deviations from the plan. Written by the wave-executor after each wave; read by session-start on the next `/session` invocation.
953
+
954
+ ### Session Continuity
955
+
956
+ When you run `/session`, the orchestrator checks for an existing STATE.md:
957
+
958
+ - **`status: active`** -- Crashed or interrupted session detected. You are offered the choice to resume from the last completed wave or start fresh.
959
+ - **`status: paused`** -- Intentional pause (e.g., you closed Claude Code mid-session). Resume picks up where you left off.
960
+ - **`status: completed`** -- Normal end state. No resume offered; a new session starts cleanly.
961
+
962
+ ### Session Memory
963
+
964
+ After each session, `/close` writes a memory file to `~/.claude/projects/<project>/memory/session-<date>.md` containing Outcomes, Learnings, and Next Session recommendations. On the next `/session`, the orchestrator reads the last 2-3 session memory files for context continuity across sessions.
965
+
966
+ When memory files accumulate past the `memory-cleanup-threshold` (default: 5), the orchestrator recommends running `/memory-cleanup` to consolidate them.
967
+
968
+ ### Disabling Persistence
969
+
970
+ Set `persistence: false` in your Session Config to disable STATE.md writing and session memory. Sessions will not be resumable and will not carry context forward.
971
+
972
+ ---
973
+
974
+ ## 15. Safety Features
975
+
976
+ ### Scope Enforcement
977
+
978
+ Before each wave, the wave-executor writes `.claude/wave-scope.json` defining the allowed file paths and blocked commands for that wave's agents. PreToolUse hooks validate Edit/Write operations against `allowedPaths` and Bash commands against `blockedCommands`.
979
+
980
+ Enforcement levels (configured via `enforcement`):
981
+
982
+ | Level | Behavior |
983
+ |-------|----------|
984
+ | `strict` | Out-of-scope operations are denied |
985
+ | `warn` | Out-of-scope operations are allowed but logged with a warning |
986
+ | `off` | No enforcement; agents have full access |
987
+
988
+ ### Prerequisites
989
+
990
+ Scope and command enforcement hooks require `jq` to be installed. If `jq` is not available, hooks degrade gracefully — all operations are allowed with a warning to stderr. Install `jq` for enforcement to be active:
991
+
992
+ - **macOS**: `brew install jq`
993
+ - **Ubuntu/Debian**: `sudo apt-get install jq`
994
+ - **Alpine**: `apk add jq`
995
+
996
+ ### Circuit Breaker
997
+
998
+ The orchestrator enforces turn limits per session type to prevent runaway execution:
999
+
1000
+ | Session Type | Default Max Turns |
1001
+ |-------------|-------------------|
1002
+ | housekeeping | 8 |
1003
+ | feature | 15 |
1004
+ | deep | 25 |
1005
+
1006
+ Override with `max-turns` in Session Config, or set to `auto` for these defaults.
1007
+
1008
+ The circuit breaker also detects execution spirals: a file edited 3+ times within a single agent's execution, repeated identical errors, or self-reverts. Recovery depends on the failure mode:
1009
+
1010
+ - **FAILED** -- A fix task is created for the next wave
1011
+ - **PARTIAL** -- Completed work is carried forward; remaining tasks become carryover issues
1012
+ - **SPIRAL** -- Changes are reverted and the scope is narrowed before retrying
1013
+
1014
+ ### Worktree Isolation
1015
+
1016
+ When `isolation` is set to `worktree`, each subagent gets its own git worktree. This prevents file conflicts between agents working in parallel within the same wave. When set to `none`, all agents work in the coordinator's working tree in-place.
1017
+
1018
+ ### Isolation Graduation (#194)
1019
+
1020
+ `isolation: auto` (the default) is **not** a session-type switch — it is resolved per wave using the graduated default:
1021
+
1022
+ | agentCount | sessionType | resolved |
1023
+ |---|---|---|
1024
+ | ≤ 2 | any | `none` |
1025
+ | 3–4 | housekeeping | `none` |
1026
+ | 3–4 | feature / deep | `worktree` |
1027
+ | ≥ 5 | any | `worktree` |
1028
+
1029
+ The reason: worktrees are a tax, not a free lunch. Two full repo copies per wave, build artifacts duplicated, and merge-back risk when the coordinator commits inline. On small waves (1–2 agents on partitioned scopes) the tax is not worth paying — in-place dispatch is cleaner. On larger waves the isolation actually matters.
1030
+
1031
+ **Overrides:**
1032
+ - Explicit `isolation: worktree` or `isolation: none` in Session Config disables the graduation entirely.
1033
+ - Session-plan may emit `collision-risk: high` on a wave spec to force `worktree` even at ≤2 agents — use it when agents will touch the same file.
1034
+
1035
+ **Enforcement auto-promote:** when isolation resolves to `none`, `enforcement: warn` auto-promotes to `strict` for that wave. Worktrees provide filesystem-level isolation; in-place dispatch relies solely on the scope hook, so it must be hard. Explicit `enforcement: off` is respected.
1036
+
1037
+ ### Base-Ref Freshness (#195)
1038
+
1039
+ Even with graduated isolation, worktree dispatch still carries a subtle risk: if the coordinator commits inline to `main` AFTER a worktree agent was created, the agent's merge-back silently overwrites those inline commits (the agent's base-ref is stale). This is not theoretical — it happened twice consecutively on 2026-04-20.
1040
+
1041
+ The fix: wave-executor persists worktree meta at creation time (`.orchestrator/tmp/worktree-meta/<suffix>.json`) recording `baseSha`, `baseRef`, and `createdAt`. Before each merge-back, it checks whether `main` has advanced. Four outcomes:
1042
+
1043
+ - **pass** — base matches current `main`. Merge-back proceeds normally.
1044
+ - **warn** — `main` advanced, but drift does not overlap the agent's scope. Log and proceed.
1045
+ - **block** — `main` advanced AND drift overlaps the agent's scope. Merge-back is refused; coordinator reconciles manually or rebases.
1046
+ - **no-meta** — meta missing/corrupted. Falls back to manual diff review.
1047
+
1048
+ You do not configure this guard — it runs automatically for every `isolation: worktree` dispatch when persistence is enabled. The freshness events are logged to `.orchestrator/metrics/events.jsonl` as `event: freshness_check` for post-hoc analysis.
1049
+
1050
+ ---
1051
+
1052
+ ## 16. Session Metrics
1053
+
1054
+ Session Orchestrator tracks metrics across sessions to provide historical trends and inform future planning.
1055
+
1056
+ ### What is tracked
1057
+ - **Per-wave**: duration (wall-clock), agent count, files changed, quality check result
1058
+ - **Per-session**: total duration, total waves, total agents, total files changed, agent summary (complete/partial/failed/spiral)
1059
+
1060
+ ### Storage
1061
+ Metrics are stored in `.orchestrator/metrics/sessions.jsonl` — one JSON line per session, append-only. This file is created automatically on first session close.
1062
+
1063
+ ### Historical Trends
1064
+ During session-start (Phase 7), the last 5 sessions are displayed as a trend table:
1065
+
1066
+ | Session | Type | Duration | Waves | Agents | Files Changed |
1067
+ |---------|------|----------|-------|--------|---------------|
1068
+
1069
+ If fewer than 2 sessions exist, the message "Not enough history for trends (need 2+)" is displayed.
1070
+
1071
+ ### Quality Gates Output
1072
+ Quality gates (Incremental and Full Gate variants) produce structured JSON output for metrics integration, including duration, check status, and error details.
1073
+
1074
+ ### Effectiveness Tracking
1075
+
1076
+ After 5 or more completed sessions, session-start automatically computes effectiveness metrics from `sessions.jsonl` and surfaces them in the **Project Intelligence** section of the session overview. Three metrics are tracked:
1077
+
1078
+ - **Completion rate trend** — averages `effectiveness.completion_rate` over the last 5 sessions. If the rate is below 0.6, the orchestrator suggests reducing scope. If above 0.9, it confirms that current sizing works well.
1079
+ - **Discovery probe value** — if the ratio of actioned findings to total findings stays below 0.1 across 3 or more sessions for a probe category, that category is flagged as low-value and may be excluded from future discovery runs.
1080
+ - **Carryover pattern** — if the ratio of carryover issues to planned issues exceeds 0.3 across 3 or more sessions, the orchestrator suggests smaller scope or switching to deep sessions to reduce persistent overflow.
1081
+
1082
+ These metrics are only displayed once enough session history exists; projects with fewer than 5 sessions see the standard trend table instead.
1083
+
1084
+ > **Requires:** `persistence: true` (default) in Session Config.
1085
+
1086
+ ---
1087
+
1088
+ ## 17. Cross-Session Learning
1089
+
1090
+ The learning system captures patterns from completed sessions and surfaces them in future sessions as "Project Intelligence."
1091
+
1092
+ ### What is learned
1093
+ - **Fragile files**: files that needed 3+ iterations or caused cascading failures
1094
+ - **Effective sizing**: which agent counts worked for different complexity levels
1095
+ - **Recurring issues**: issue patterns that appear across waves (type errors, missing imports)
1096
+ - **Scope guidance**: how many issues fit comfortably in one session
1097
+ - **Deviation patterns**: plan adaptations that recur across sessions (scope changes, unexpected blockers)
1098
+
1099
+ ### Storage
1100
+ Learnings are stored in `.orchestrator/metrics/learnings.jsonl` — one JSON line per learning.
1101
+
1102
+ ### Confidence System
1103
+ Each learning has a confidence score (0.0 to 1.0):
1104
+ - New learnings start at **0.5**
1105
+ - Confirmed by a subsequent session: **+0.15**
1106
+ - Contradicted by a subsequent session: **-0.2**
1107
+ - Learnings at **0.0** are removed
1108
+ - Learnings expire after **90 days**
1109
+ - Only learnings with confidence **> 0.3** are surfaced
1110
+
1111
+ ### Lifecycle
1112
+ 1. **Collection** (session-end Phase 3.5a): analyze completed session, extract learnings
1113
+ 2. **Consumption** (session-start Phase 5.6 + session-plan Step 1): read and apply learnings
1114
+ 3. **Pruning** (session-end Phase 3.6): remove expired and zero-confidence entries
1115
+
1116
+ > **Requires:** `persistence: true` (default) in Session Config.
1117
+
1118
+ ### Managing Learnings with /evolve
1119
+
1120
+ The `/evolve` command gives you manual control over the learning system.
1121
+
1122
+ #### Analyze Mode (default)
1123
+
1124
+ ```
1125
+ /evolve
1126
+ /evolve analyze
1127
+ ```
1128
+
1129
+ Reads `sessions.jsonl`, extracts patterns (fragile files, sizing, scope, recurring issues, deviations), deduplicates against existing learnings, and presents candidates for your approval via interactive selection. Only confirmed learnings are saved.
1130
+
1131
+ **When to use:** After 2-3 sessions to validate the tool, or when you suspect the learning system is missing patterns.
1132
+
1133
+ #### Review Mode
1134
+
1135
+ ```
1136
+ /evolve review
1137
+ ```
1138
+
1139
+ Displays all active learnings in a formatted table grouped by type. You can:
1140
+ - **Boost** confidence (+0.15) for learnings you've validated
1141
+ - **Reduce** confidence (-0.2) for learnings that seem wrong
1142
+ - **Delete** specific learnings
1143
+ - **Extend** expiry (+90 days) for learnings you want to keep longer
1144
+
1145
+ **When to use:** When Project Intelligence suggestions seem off, or to prune stale learnings.
1146
+
1147
+ #### List Mode
1148
+
1149
+ ```
1150
+ /evolve list
1151
+ ```
1152
+
1153
+ Read-only display of all active learnings with confidence scores and expiry dates. Shows high-confidence (>0.7) and expiring-soon (<14 days) counts.
1154
+
1155
+ **When to use:** Quick check of what the system has learned, without making changes.
1156
+
1157
+ ---
1158
+
1159
+ ## 18. Adaptive Wave Sizing
1160
+
1161
+ Instead of fixed agent counts, the orchestrator scores session complexity and adjusts agent allocation dynamically.
1162
+
1163
+ ### Complexity Scoring
1164
+ Three factors are scored (0-2 points each):
1165
+
1166
+ | Factor | 0 points | 1 point | 2 points |
1167
+ |--------|----------|---------|----------|
1168
+ | Files to change | 1-5 | 6-15 | 16+ |
1169
+ | Cross-module scope | 1 directory | 2-3 directories | 4+ directories |
1170
+ | Issue count | 1 issue | 2-3 issues | 4+ issues |
1171
+
1172
+ ### Complexity Tiers
1173
+ - **Simple** (0-1 points): fewer agents per wave
1174
+ - **Moderate** (2-3 points): standard allocation
1175
+ - **Complex** (4-6 points): maximum agents per wave
1176
+
1177
+ ### Dynamic Scaling Between Waves
1178
+ After each wave, agent count is adjusted based on performance:
1179
+ - All agents fast + no issues → reduce next wave
1180
+ - Failures or broken code → add fix agents
1181
+ - Scope expansion → scale up
1182
+ - Quality regressions → targeted fix agents
1183
+
1184
+ The `agents-per-wave` config value always caps the maximum.
1185
+
1186
+ > **Note:** Housekeeping sessions skip complexity scoring and use fixed counts.
1187
+
1188
+ ---
1189
+
1190
+ ## 19. Cheat Sheet
1191
+
1192
+ ### Commands
1193
+
1194
+ ```
1195
+ /session feature Start a feature session
1196
+ /session housekeeping Start a cleanup/maintenance session
1197
+ /session deep Start a deep work session (complex, many agents)
1198
+ /go Approve plan, begin wave execution
1199
+ /go <instructions> Approve plan with additional guidance
1200
+ /close Verify all work, commit, push, clean up issues
1201
+ /discovery Run quality probes across all categories
1202
+ /discovery code Scan code quality only
1203
+ /discovery code,arch Scan multiple categories
1204
+ /plan new Plan a new project (PRD + repo setup + issues)
1205
+ /plan feature Plan a feature (compact PRD + issues)
1206
+ /plan retro Run a data-driven retrospective
1207
+ /evolve Analyze sessions, extract learnings (default: analyze)
1208
+ /evolve analyze Extract patterns from session history
1209
+ /evolve review Interactively manage existing learnings
1210
+ /evolve list Display active learnings
1211
+ ```
1212
+
1213
+ ### Session Config (add to `CLAUDE.md` or `AGENTS.md`)
1214
+
1215
+ ```markdown
1216
+ ## Session Config
1217
+
1218
+ - **agents-per-wave:** 6
1219
+ - **waves:** 5
1220
+ - **vcs:** github
1221
+ - **gitlab-host:** gitlab.company.com
1222
+ - **mirror:** github
1223
+ - **pencil:** designs/app.pen
1224
+ - **cross-repos:** [other-repo]
1225
+ - **ssot-files:** [.claude/STATUS.md]
1226
+ - **ecosystem-health:** true
1227
+ - **health-endpoints:** [{name: "API", url: "https://api.example.com/health"}]
1228
+ - **special:** "Run migrations before testing"
1229
+ - **discovery-on-close:** true
1230
+ - **discovery-probes:** [code, arch]
1231
+ - **discovery-severity-threshold:** medium
1232
+ - **persistence:** true
1233
+ - **enforcement:** warn
1234
+ - **isolation:** auto
1235
+ - **max-turns:** auto
1236
+ ```
1237
+
1238
+ ### Typical Session Flow
1239
+
1240
+ ```
1241
+ /plan feature # (Optional) Define requirements → PRD + issues
1242
+ /session feature # Research + recommendations → pick issues
1243
+ (pick a direction) # User chooses focus
1244
+ (review wave plan) # Orchestrator proposes role-based wave plan
1245
+ /go # Execute waves with parallel agents
1246
+ (role-based waves execute) # Automatic, with inter-wave reviews
1247
+ /close # Verify, commit, push, summarize
1248
+ /plan retro # (Optional) Retrospective → improvement issues
1249
+ ```
1250
+
1251
+ ### Wave Quick Reference
1252
+
1253
+ ```
1254
+ Discovery Validation & read-only audit
1255
+ Impl-Core Primary implementation (core work)
1256
+ Impl-Polish Fix, integrate, polish, edge cases
1257
+ Quality Tests, TypeScript, lint, security
1258
+ Finalization Documentation, issues, commits
1259
+ ```
1260
+
1261
+ ---
1262
+
1263
+ ## 20. FAQ
1264
+
1265
+ ### Can I use this with GitHub?
1266
+
1267
+ Yes. The orchestrator auto-detects your VCS platform from the git remote URL. If your remote points to `github.com`, it uses the `gh` CLI. You can also force it with `vcs: github` in Session Config. Both GitHub and GitLab are fully supported for issues, PRs/MRs, CI status, and milestones.
1268
+
1269
+ ### What if an agent fails during a wave?
1270
+
1271
+ The wave executor does not ignore failures. If an agent produces broken code or reports errors, the orchestrator adds fix tasks to the next wave. If an agent times out, it is re-dispatched with a smaller scope. If there is a major blocker, the orchestrator informs you and proposes a revised plan for the remaining waves.
1272
+
1273
+ ### Can I change the plan mid-session?
1274
+
1275
+ Yes. Between each wave, the orchestrator reviews results and can adapt the plan. If you need to change direction, you can communicate that and the remaining waves will be re-scoped. The orchestrator documents every deviation from the original plan so the session summary remains accurate.
1276
+
1277
+ ### How many agents run in parallel?
1278
+
1279
+ This is controlled by the `agents-per-wave` setting in your Session Config. The default is 6. For deep sessions, you can increase this to 10-18. All agents within a single wave run in parallel; the orchestrator waits for all of them to complete before starting the next wave.
1280
+
1281
+ ### Do I need Pencil?
1282
+
1283
+ No. Pencil design integration is entirely optional. If you do not configure a `pencil` path in Session Config, design-code alignment reviews are simply skipped. Everything else works the same.
1284
+
1285
+ ### What is the Soul system?
1286
+
1287
+ The Soul is a personality layer that shapes how the orchestrator communicates and makes decisions. It defines the orchestrator as a seasoned engineering lead who drives outcomes — direct, opinionated, systems-thinking, pragmatic. It affects communication style (recommendations first, not analysis), decision-making priorities (user safety > productivity > code quality > ecosystem health > speed), and values (pragmatism over perfection, evidence over assumptions). You do not need to configure it; it is built into the plugin.
1288
+
1289
+ ### Does the orchestrator commit automatically?
1290
+
1291
+ No. The orchestrator never commits code until you run `/close`. During wave execution, agents do not commit independently — the coordinator handles all commits at session end after running quality gates. This ensures only verified, clean code is committed.
1292
+
1293
+ ### What happens to unfinished work?
1294
+
1295
+ During `/close`, any work that was planned but not completed is documented. The orchestrator creates carryover issues on your VCS platform with the title prefix `[Carryover]`, including context on what was done and what remains. Nothing is silently dropped.
1296
+
1297
+ ### Can I use this across multiple repos?
1298
+
1299
+ Yes. Configure `cross-repos` in your Session Config with the names of related repositories (located under `~/Projects/`). The orchestrator checks their git state and critical issues at session start, giving you ecosystem-wide awareness.
1300
+
1301
+ ### When should I use `/plan` vs creating issues manually?
1302
+
1303
+ `/plan` provides structured requirement gathering with parallel research agents, auto-prioritization, and PRD documents for reference. Use it when you want a thorough requirements process. Skip it when you already know exactly what to build — just create issues manually and run `/session`.
1304
+
1305
+ ### What's the difference between `/plan new` and `/plan feature`?
1306
+
1307
+ `/plan new` is for brand-new projects — it scaffolds a repository, creates a full PRD, and generates an Epic with sub-issues. `/plan feature` is for adding a feature to an existing project — it produces a compact PRD and feature issues. Use `/plan new` once per project, `/plan feature` once per feature.
1308
+
1309
+ ### Can I run `/plan` during an active session?
1310
+
1311
+ No. `/plan` runs outside of sessions. The session scope is locked after `/session` + user alignment + `/go`. If new requirements emerge during a session, create them as issues for the next session or let `/close` generate carryover issues.
1312
+
1313
+ ---
1314
+
1315
+ ## 21. Troubleshooting
1316
+
1317
+ ### "glab: command not found" or "gh: command not found"
1318
+
1319
+ The orchestrator needs the appropriate VCS CLI tool installed:
1320
+
1321
+ - **GitLab:** Install `glab` — [https://gitlab.com/gitlab-org/cli](https://gitlab.com/gitlab-org/cli)
1322
+ - **GitHub:** Install `gh` — [https://cli.github.com](https://cli.github.com)
1323
+
1324
+ After installing, authenticate:
1325
+
1326
+ ```bash
1327
+ glab auth login
1328
+ # or
1329
+ gh auth login
1330
+ ```
1331
+
1332
+ ### "No issues found" when issues exist
1333
+
1334
+ This usually means the CLI tool is not authenticated or is pointing at the wrong host.
1335
+
1336
+ - Run `glab auth status` or `gh auth status` to verify authentication
1337
+ - For GitLab with a custom host, ensure `gitlab-host` is set in Session Config or that your `.env` / `.env.local` contains the correct `GITLAB_HOST`
1338
+ - Check that `git remote get-url origin` returns the expected URL
1339
+
1340
+ ### Plugin not loading
1341
+
1342
+ For Codex, start with the public state view:
1343
+
1344
+ ```bash
1345
+ codex plugin list --available --json
1346
+ ```
1347
+
1348
+ Confirm that `session-orchestrator@kanevry` appears exactly once with `installed: true`, `enabled: true`, and the version committed in `.codex-plugin/plugin.json`. If it is only available, run `codex plugin add session-orchestrator@kanevry`. If it is missing or stale, run `codex plugin marketplace list --json`, remove the exact target with `codex plugin remove session-orchestrator@kanevry` when present, and rerun `node scripts/codex-install.mjs` from the clone. A healthy install still needs a fresh task plus operator review in `/hooks`; installation does not grant hook trust.
1349
+
1350
+ The installer removes only the allowlisted legacy IDs `session-orchestrator@openai-curated` and `session-orchestrator@local`; those exact IDs can also be removed through `codex plugin remove`. For a conflicting `kanevry` source, use `codex plugin marketplace remove kanevry` and rerun the installer from the intended clone. Any other pre-public plugin/config/cache/hook-state residue is unsupported: do not modify private Codex files; file an issue with `codex --version` plus the public plugin and marketplace list output.
1351
+
1352
+ For Claude Code, run these commands inside a Claude Code session, not in your shell:
1353
+
1354
+ ```text
1355
+ /plugin marketplace add /absolute/path/to/session-orchestrator
1356
+ /plugin install session-orchestrator@kanevry
1357
+ ```
1358
+
1359
+ ### "tsgo: command not found"
1360
+
1361
+ The default typecheck command is `npm run typecheck`. If your project's `typecheck` script invokes `tsgo`, install it or change `typecheck-command` to the runner your project actually uses:
1362
+
1363
+ ```bash
1364
+ npm install -g @anthropic-ai/tsgo
1365
+ ```
1366
+
1367
+ ### Agents timing out
1368
+
1369
+ If agents consistently time out during wave execution:
1370
+
1371
+ - Reduce `agents-per-wave` in Session Config (fewer parallel agents = less resource contention)
1372
+ - Switch from `deep` to `feature` session type if you do not need the extra agent count
1373
+ - Check that your machine has sufficient resources for parallel agent execution
1374
+
1375
+ ### Design review skipped unexpectedly
1376
+
1377
+ If you configured `pencil` but design reviews are not running:
1378
+
1379
+ - Verify the `.pen` file exists at the configured path (relative to project root)
1380
+ - Ensure the Pencil MCP server is running and accessible
1381
+ - Check the wave progress output for messages like "Pencil review skipped — .pen file unavailable"
1382
+
1383
+ ### Session Config not being read
1384
+
1385
+ The orchestrator looks for a `## Session Config` section in your project's config host file. Ensure:
1386
+
1387
+ - The file is named exactly `CLAUDE.md` on Claude Code or `AGENTS.md` on Codex, and is in the project root
1388
+ - The section heading is exactly `## Session Config`
1389
+ - Fields use the exact format: `- **field-name:** value`
1390
+
1391
+ ### Mirror push fails
1392
+
1393
+ If `mirror: github` is configured but mirroring fails:
1394
+
1395
+ - Verify a `github` remote exists: `git remote get-url github`
1396
+ - If not, add it: `git remote add github git@github.com:user/repo.git`
1397
+ - Ensure you have push access to the GitHub repository
1398
+
1399
+ ---
1400
+
1401
+ ## License
1402
+
1403
+ Session Orchestrator is released under the MIT License. See the project repository for details: [https://github.com/Kanevry/session-orchestrator](https://github.com/Kanevry/session-orchestrator)