@mmerterden/multi-agent-pipeline 12.6.0 → 12.8.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 (481) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/README.md +18 -18
  3. package/docs/FIGMA_PIPELINE.md +34 -34
  4. package/docs/adr/0001-three-model-triage.md +12 -12
  5. package/docs/adr/0002-instruction-driven-flag.md +5 -5
  6. package/docs/adr/0003-unified-shared-skills.md +5 -5
  7. package/docs/adr/0004-zero-dependency-philosophy.md +5 -5
  8. package/docs/adr/0005-lazy-phase-docs.md +2 -2
  9. package/docs/adr/0006-skills-core-external-split.md +6 -6
  10. package/docs/adr/0007-multi-tool-adapter-framework.md +19 -19
  11. package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +19 -19
  12. package/docs/adr/README.md +1 -1
  13. package/docs/best-practices.md +3 -3
  14. package/docs/features.md +28 -28
  15. package/docs/performance.md +16 -16
  16. package/docs/recovery-guide.md +39 -39
  17. package/index.js +4 -4
  18. package/install/_common.mjs +53 -11
  19. package/install/_copilot-instructions.mjs +2 -2
  20. package/install/_dev-only-files.mjs +126 -6
  21. package/install/_platform-filter.mjs +1 -1
  22. package/install/_telemetry.mjs +1 -1
  23. package/install/claude.mjs +20 -13
  24. package/install/copilot.mjs +11 -23
  25. package/install/index.mjs +7 -15
  26. package/install/templates/copilot-instructions.md +54 -54
  27. package/install.js +1 -1
  28. package/package.json +29 -11
  29. package/pipeline/commands/multi-agent/SKILL.md +1 -1
  30. package/pipeline/commands/multi-agent/analysis/SKILL.md +2 -2
  31. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -1
  32. package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
  33. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +1 -1
  34. package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
  35. package/pipeline/commands/multi-agent/design-check/SKILL.md +1 -1
  36. package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
  37. package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
  38. package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
  39. package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
  40. package/pipeline/commands/multi-agent/diff-explain/SKILL.md +1 -1
  41. package/pipeline/commands/multi-agent/finish/SKILL.md +6 -6
  42. package/pipeline/commands/multi-agent/forget/SKILL.md +1 -1
  43. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  44. package/pipeline/commands/multi-agent/help/SKILL.md +3 -3
  45. package/pipeline/commands/multi-agent/issue/SKILL.md +1 -1
  46. package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
  47. package/pipeline/commands/multi-agent/kill/SKILL.md +1 -1
  48. package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
  49. package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
  50. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
  51. package/pipeline/commands/multi-agent/log/SKILL.md +1 -1
  52. package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -1
  53. package/pipeline/commands/multi-agent/prune-logs/SKILL.md +1 -1
  54. package/pipeline/commands/multi-agent/purge/SKILL.md +1 -1
  55. package/pipeline/commands/multi-agent/refactor/SKILL.md +16 -8
  56. package/pipeline/commands/multi-agent/resume/SKILL.md +2 -2
  57. package/pipeline/commands/multi-agent/review/SKILL.md +1 -1
  58. package/pipeline/commands/multi-agent/review-issue/SKILL.md +1 -1
  59. package/pipeline/commands/multi-agent/review-jira/SKILL.md +1 -1
  60. package/pipeline/commands/multi-agent/routines/SKILL.md +1 -1
  61. package/pipeline/commands/multi-agent/save/SKILL.md +1 -1
  62. package/pipeline/commands/multi-agent/scan/SKILL.md +1 -1
  63. package/pipeline/commands/multi-agent/search/SKILL.md +1 -1
  64. package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
  65. package/pipeline/commands/multi-agent/stack/SKILL.md +3 -3
  66. package/pipeline/commands/multi-agent/status/SKILL.md +1 -1
  67. package/pipeline/commands/multi-agent/sync/SKILL.md +5 -5
  68. package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
  69. package/pipeline/commands/multi-agent/uninstall/SKILL.md +1 -1
  70. package/pipeline/commands/multi-agent/update/SKILL.md +3 -3
  71. package/pipeline/lib/account-resolver.sh +1 -1
  72. package/pipeline/lib/channels-multi-repo.sh +1 -1
  73. package/pipeline/lib/context-link-extractor.sh +1 -1
  74. package/pipeline/lib/credential-store.sh +21 -1
  75. package/pipeline/lib/fetch-confluence.sh +1 -1
  76. package/pipeline/lib/fetch-crashlytics.sh +1 -1
  77. package/pipeline/lib/fetch-fortify.sh +1 -1
  78. package/pipeline/lib/fetch-graylog.sh +1 -1
  79. package/pipeline/lib/fetch-swagger.sh +1 -1
  80. package/pipeline/lib/issue-fetcher.sh +1 -1
  81. package/pipeline/lib/multi-repo-pipeline.sh +1 -1
  82. package/pipeline/lib/repo-cache.sh +1 -1
  83. package/pipeline/lib/submodule-detector.sh +1 -1
  84. package/pipeline/multi-agent-refs/_account-picker.md +1 -1
  85. package/pipeline/multi-agent-refs/_dev-context.md +1 -1
  86. package/pipeline/multi-agent-refs/_repo-picker.md +1 -1
  87. package/pipeline/multi-agent-refs/component-dispatch.md +1 -1
  88. package/pipeline/multi-agent-refs/component-generation.md +121 -0
  89. package/pipeline/multi-agent-refs/cross-cli-contract.md +1 -1
  90. package/pipeline/multi-agent-refs/features/model-fallback.md +2 -2
  91. package/pipeline/multi-agent-refs/phases/operations.md +28 -0
  92. package/pipeline/multi-agent-refs/phases/phase-0-init.md +1 -0
  93. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +1 -1
  94. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +1 -2
  95. package/pipeline/multi-agent-refs/phases/phase-4-review.md +50 -5
  96. package/pipeline/preferences-template.json +5 -11
  97. package/pipeline/schemas/agent-state.schema.json +39 -9
  98. package/pipeline/schemas/analysis-output.schema.json +18 -4
  99. package/pipeline/schemas/analysis-spec.schema.json +120 -32
  100. package/pipeline/schemas/clarify-output.schema.json +15 -5
  101. package/pipeline/schemas/design-check-config.schema.json +32 -11
  102. package/pipeline/schemas/dev-critic-output.schema.json +20 -5
  103. package/pipeline/schemas/figma-project-config.schema.json +42 -10
  104. package/pipeline/schemas/learnings-ledger.schema.json +10 -2
  105. package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +1 -4
  106. package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +24 -7
  107. package/pipeline/schemas/plan-todos.schema.json +6 -3
  108. package/pipeline/schemas/planning-output.schema.json +5 -1
  109. package/pipeline/schemas/prefs.schema.json +97 -229
  110. package/pipeline/schemas/test-gap.schema.json +5 -5
  111. package/pipeline/schemas/token-budget.json +8 -8
  112. package/pipeline/schemas/triage-corpus.schema.json +1 -1
  113. package/pipeline/scripts/_smoke-root.sh +61 -0
  114. package/pipeline/scripts/aggregate-metrics.mjs +18 -6
  115. package/pipeline/scripts/audit-log.sh +25 -0
  116. package/pipeline/scripts/build-skills-index.mjs +6 -2
  117. package/pipeline/scripts/build-stack-plugins.mjs +142 -39
  118. package/pipeline/scripts/check-derived-drift.mjs +196 -0
  119. package/pipeline/scripts/classify-plan-safety.mjs +20 -7
  120. package/pipeline/scripts/cost-budget-check.mjs +2 -1
  121. package/pipeline/scripts/cost-table.json +1 -1
  122. package/pipeline/scripts/diff-explain.mjs +7 -3
  123. package/pipeline/scripts/diff-risk-score.mjs +13 -3
  124. package/pipeline/scripts/evidence-gate.mjs +7 -2
  125. package/pipeline/scripts/gen-mode-dispatch.mjs +38 -21
  126. package/pipeline/scripts/gen-skills-index.mjs +18 -3
  127. package/pipeline/scripts/learning-curve.mjs +13 -3
  128. package/pipeline/scripts/learnings-ledger.mjs +103 -36
  129. package/pipeline/scripts/localize-commands.mjs +6 -1
  130. package/pipeline/scripts/match-skills.mjs +15 -4
  131. package/pipeline/scripts/migrate-prefs.mjs +33 -16
  132. package/pipeline/scripts/phase-tracker.sh +3 -1
  133. package/pipeline/scripts/repo-map.mjs +110 -64
  134. package/pipeline/scripts/review-scope.mjs +7 -1
  135. package/pipeline/scripts/routine-registry.mjs +4 -9
  136. package/pipeline/scripts/run-aggregator.mjs +11 -5
  137. package/pipeline/scripts/run-metrics.mjs +13 -8
  138. package/pipeline/scripts/smoke-cross-cli-behavior.sh +21 -7
  139. package/pipeline/scripts/test-gap-scan.mjs +44 -12
  140. package/pipeline/scripts/test-integrity-gate.mjs +5 -1
  141. package/pipeline/scripts/token-budget-report.mjs +44 -21
  142. package/pipeline/scripts/triage-memory.mjs +126 -34
  143. package/pipeline/scripts/uninstall.mjs +74 -30
  144. package/pipeline/scripts/validate-analysis-doc.mjs +15 -5
  145. package/pipeline/scripts/validate-diff-risk.mjs +32 -18
  146. package/pipeline/scripts/validate-test-gap.mjs +17 -7
  147. package/pipeline/scripts/validate-triage.mjs +17 -5
  148. package/pipeline/scripts/write-state.mjs +32 -9
  149. package/pipeline/skills/.skills-index.json +91 -91
  150. package/pipeline/skills/shared/README.md +57 -57
  151. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +1 -1
  152. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +1 -1
  153. package/pipeline/skills/shared/core/multi-agent/SKILL.md +26 -279
  154. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +1 -1
  155. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
  156. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +1 -1
  157. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  158. package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
  159. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +1 -1
  160. package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
  161. package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
  162. package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
  163. package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
  164. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +1 -1
  165. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  166. package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +1 -1
  167. package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +1 -1
  168. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  169. package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +1 -1
  170. package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +1 -1
  171. package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +1 -1
  172. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
  173. package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +1 -1
  174. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +1 -1
  175. package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +1 -1
  176. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +1 -1
  177. package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +1 -1
  178. package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
  179. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +16 -8
  180. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
  181. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +1 -1
  182. package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +1 -1
  183. package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +1 -1
  184. package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +1 -1
  185. package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +1 -1
  186. package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +1 -1
  187. package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +1 -1
  188. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
  189. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +3 -3
  190. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +1 -1
  191. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +1 -1
  192. package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +1 -1
  193. package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +1 -1
  194. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +1 -1
  195. package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +1 -1
  196. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -4
  197. package/pipeline/skills/shared/external/agentflow/SKILL.md +1 -1
  198. package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +1 -1
  199. package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +1 -1
  200. package/pipeline/skills/shared/external/api-patterns/SKILL.md +1 -1
  201. package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +1 -1
  202. package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +1 -1
  203. package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
  204. package/pipeline/skills/shared/external/backlog/SKILL.md +12 -12
  205. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -1
  206. package/pipeline/skills/shared/external/context-compression/SKILL.md +1 -1
  207. package/pipeline/skills/shared/external/council/SKILL.md +3 -3
  208. package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -1
  209. package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -1
  210. package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +1 -1
  211. package/pipeline/skills/shared/external/docker-expert/SKILL.md +1 -1
  212. package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +1 -1
  213. package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
  214. package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +1 -1
  215. package/pipeline/skills/shared/external/help-skills/SKILL.md +1 -1
  216. package/pipeline/skills/shared/external/hig-components-content/SKILL.md +1 -1
  217. package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +1 -1
  218. package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
  219. package/pipeline/skills/shared/external/hig-components-system/SKILL.md +1 -1
  220. package/pipeline/skills/shared/external/hig-foundations/SKILL.md +1 -1
  221. package/pipeline/skills/shared/external/hig-inputs/SKILL.md +1 -1
  222. package/pipeline/skills/shared/external/hig-patterns/SKILL.md +1 -1
  223. package/pipeline/skills/shared/external/hig-platforms/SKILL.md +1 -1
  224. package/pipeline/skills/shared/external/hig-technologies/SKILL.md +1 -1
  225. package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -1
  226. package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -1
  227. package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +1 -1
  228. package/pipeline/skills/shared/external/ios-developer/SKILL.md +1 -1
  229. package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +1 -1
  230. package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +1 -1
  231. package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +1 -1
  232. package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +1 -1
  233. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -1
  234. package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +1 -1
  235. package/pipeline/skills/shared/external/observability-engineer/SKILL.md +1 -1
  236. package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -1
  237. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -1
  238. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -1
  239. package/pipeline/skills/shared/external/search-first/SKILL.md +2 -2
  240. package/pipeline/skills/shared/external/skill-creator/SKILL.md +12 -12
  241. package/pipeline/skills/shared/external/skill-creator/audit.md +21 -21
  242. package/pipeline/skills/shared/external/skill-creator/checklist.md +3 -3
  243. package/pipeline/skills/shared/external/skill-creator/examples.md +10 -10
  244. package/pipeline/skills/shared/external/skill-creator/label-check.md +17 -17
  245. package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +86 -50
  246. package/pipeline/skills/shared/external/skill-creator/template.md +9 -9
  247. package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +1 -1
  248. package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +1 -1
  249. package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
  250. package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +1 -1
  251. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -1
  252. package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -1
  253. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -1
  254. package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -1
  255. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -1
  256. package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -1
  257. package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -1
  258. package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +9 -49
  259. package/pipeline/skills/skills-index.md +57 -57
  260. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +0 -25
  261. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-2-plan.json +0 -30
  262. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +0 -20
  263. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +0 -15
  264. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +0 -14
  265. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/task.json +0 -12
  266. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +0 -29
  267. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-2-plan.json +0 -43
  268. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +0 -35
  269. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +0 -35
  270. package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +0 -14
  271. package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +0 -12
  272. package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-1-analysis.json +0 -29
  273. package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-2-plan.json +0 -42
  274. package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-review.json +0 -20
  275. package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/expected/phase-4-triage.json +0 -15
  276. package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/metadata.json +0 -14
  277. package/pipeline/eval/golden-tasks/03-backend-python-ratelimit/task.json +0 -12
  278. package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-1-analysis.json +0 -29
  279. package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-2-plan.json +0 -40
  280. package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-review.json +0 -20
  281. package/pipeline/eval/golden-tasks/04-frontend-next-hydration/expected/phase-4-triage.json +0 -15
  282. package/pipeline/eval/golden-tasks/04-frontend-next-hydration/metadata.json +0 -14
  283. package/pipeline/eval/golden-tasks/04-frontend-next-hydration/task.json +0 -12
  284. package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-1-analysis.json +0 -29
  285. package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-2-plan.json +0 -42
  286. package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-review.json +0 -28
  287. package/pipeline/eval/golden-tasks/05-ios-security-keychain/expected/phase-4-triage.json +0 -27
  288. package/pipeline/eval/golden-tasks/05-ios-security-keychain/metadata.json +0 -14
  289. package/pipeline/eval/golden-tasks/05-ios-security-keychain/task.json +0 -12
  290. package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-1-analysis.json +0 -29
  291. package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-2-plan.json +0 -41
  292. package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-review.json +0 -12
  293. package/pipeline/eval/golden-tasks/06-android-refactor-usecase/expected/phase-4-triage.json +0 -6
  294. package/pipeline/eval/golden-tasks/06-android-refactor-usecase/metadata.json +0 -14
  295. package/pipeline/eval/golden-tasks/06-android-refactor-usecase/task.json +0 -12
  296. package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-1-analysis.json +0 -29
  297. package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-2-plan.json +0 -42
  298. package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-review.json +0 -28
  299. package/pipeline/eval/golden-tasks/07-backend-node-idempotency/expected/phase-4-triage.json +0 -27
  300. package/pipeline/eval/golden-tasks/07-backend-node-idempotency/metadata.json +0 -14
  301. package/pipeline/eval/golden-tasks/07-backend-node-idempotency/task.json +0 -12
  302. package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-1-analysis.json +0 -25
  303. package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-2-plan.json +0 -31
  304. package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-review.json +0 -12
  305. package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/expected/phase-4-triage.json +0 -18
  306. package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/metadata.json +0 -14
  307. package/pipeline/eval/golden-tasks/08-ios-auth-consensus-unverified/task.json +0 -12
  308. package/pipeline/eval/golden-tasks/README.md +0 -65
  309. package/pipeline/eval/intent-cases.json +0 -40
  310. package/pipeline/eval/run-metrics-fixture.json +0 -46
  311. package/pipeline/eval/triage/01-empty-findings/expected.json +0 -6
  312. package/pipeline/eval/triage/01-empty-findings/input.json +0 -5
  313. package/pipeline/eval/triage/01-empty-findings/notes.md +0 -7
  314. package/pipeline/eval/triage/02-real-blocker/expected.json +0 -15
  315. package/pipeline/eval/triage/02-real-blocker/input.json +0 -14
  316. package/pipeline/eval/triage/02-real-blocker/notes.md +0 -7
  317. package/pipeline/eval/triage/03-out-of-scope-defer/expected.json +0 -18
  318. package/pipeline/eval/triage/03-out-of-scope-defer/input.json +0 -14
  319. package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +0 -10
  320. package/pipeline/eval/triage/04-false-positive-reject/expected.json +0 -18
  321. package/pipeline/eval/triage/04-false-positive-reject/input.json +0 -14
  322. package/pipeline/eval/triage/04-false-positive-reject/notes.md +0 -10
  323. package/pipeline/eval/triage/05-mixed-classification/expected.json +0 -43
  324. package/pipeline/eval/triage/05-mixed-classification/input.json +0 -38
  325. package/pipeline/eval/triage/05-mixed-classification/notes.md +0 -17
  326. package/pipeline/eval/triage/06-severity-mismatch/expected.json +0 -15
  327. package/pipeline/eval/triage/06-severity-mismatch/input.json +0 -14
  328. package/pipeline/eval/triage/06-severity-mismatch/notes.md +0 -9
  329. package/pipeline/eval/triage/07-duplicate-reviewers/expected.json +0 -27
  330. package/pipeline/eval/triage/07-duplicate-reviewers/input.json +0 -22
  331. package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +0 -9
  332. package/pipeline/eval/triage/08-style-misclassified/expected.json +0 -18
  333. package/pipeline/eval/triage/08-style-misclassified/input.json +0 -14
  334. package/pipeline/eval/triage/08-style-misclassified/notes.md +0 -9
  335. package/pipeline/eval/triage/09-cascading-finding/expected.json +0 -23
  336. package/pipeline/eval/triage/09-cascading-finding/input.json +0 -22
  337. package/pipeline/eval/triage/09-cascading-finding/notes.md +0 -9
  338. package/pipeline/eval/triage/10-deferred-crossref/expected.json +0 -18
  339. package/pipeline/eval/triage/10-deferred-crossref/input.json +0 -14
  340. package/pipeline/eval/triage/10-deferred-crossref/notes.md +0 -9
  341. package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +0 -27
  342. package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +0 -22
  343. package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +0 -14
  344. package/pipeline/eval/triage/README.md +0 -54
  345. package/pipeline/scripts/benchmark-phase-0.sh +0 -128
  346. package/pipeline/scripts/check-md-links.mjs +0 -84
  347. package/pipeline/scripts/eval-golden-tasks-live.mjs +0 -297
  348. package/pipeline/scripts/eval-golden-tasks.mjs +0 -212
  349. package/pipeline/scripts/eval-intent.mjs +0 -103
  350. package/pipeline/scripts/eval-mine-corpus.mjs +0 -201
  351. package/pipeline/scripts/eval-triage.mjs +0 -171
  352. package/pipeline/scripts/fixtures/diff-risk-android.diff +0 -40
  353. package/pipeline/scripts/fixtures/diff-risk-ios.diff +0 -48
  354. package/pipeline/scripts/fixtures/diff-risk-test-removal.diff +0 -40
  355. package/pipeline/scripts/fixtures/install-layout.tsv +0 -19
  356. package/pipeline/scripts/fixtures/pack-expected-count.txt +0 -1
  357. package/pipeline/scripts/fixtures/test-gap-node.diff +0 -30
  358. package/pipeline/scripts/fixtures/test-gap-python.diff +0 -32
  359. package/pipeline/scripts/lint-mcp-refs.mjs +0 -207
  360. package/pipeline/scripts/lint-skills.mjs +0 -143
  361. package/pipeline/scripts/run-smokes.mjs +0 -76
  362. package/pipeline/scripts/smoke-add-detail.sh +0 -137
  363. package/pipeline/scripts/smoke-agent-guard.sh +0 -74
  364. package/pipeline/scripts/smoke-agent-log-cost.sh +0 -262
  365. package/pipeline/scripts/smoke-agent-model-routing.sh +0 -87
  366. package/pipeline/scripts/smoke-ask-choice.sh +0 -42
  367. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +0 -36
  368. package/pipeline/scripts/smoke-bitbucket-contract.sh +0 -255
  369. package/pipeline/scripts/smoke-changelog-version.sh +0 -47
  370. package/pipeline/scripts/smoke-channels-approval-gate.sh +0 -60
  371. package/pipeline/scripts/smoke-channels-flow.sh +0 -130
  372. package/pipeline/scripts/smoke-ci-workflows.sh +0 -88
  373. package/pipeline/scripts/smoke-clarify.sh +0 -148
  374. package/pipeline/scripts/smoke-command-inventory.sh +0 -81
  375. package/pipeline/scripts/smoke-commands-skills-parity.sh +0 -87
  376. package/pipeline/scripts/smoke-community-gates.sh +0 -75
  377. package/pipeline/scripts/smoke-compliance-skills.sh +0 -119
  378. package/pipeline/scripts/smoke-config-hygiene.sh +0 -58
  379. package/pipeline/scripts/smoke-cost-budget.sh +0 -70
  380. package/pipeline/scripts/smoke-cost-summary.sh +0 -139
  381. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +0 -128
  382. package/pipeline/scripts/smoke-description-tr.sh +0 -82
  383. package/pipeline/scripts/smoke-dev-critic.sh +0 -144
  384. package/pipeline/scripts/smoke-diff-explain.sh +0 -147
  385. package/pipeline/scripts/smoke-diff-risk.sh +0 -190
  386. package/pipeline/scripts/smoke-dynamic-skill-loading.sh +0 -160
  387. package/pipeline/scripts/smoke-eval-live.sh +0 -136
  388. package/pipeline/scripts/smoke-evidence-gate.sh +0 -93
  389. package/pipeline/scripts/smoke-extract-conventions.sh +0 -163
  390. package/pipeline/scripts/smoke-fetchers-offline.sh +0 -448
  391. package/pipeline/scripts/smoke-figma-dispatch.sh +0 -112
  392. package/pipeline/scripts/smoke-gate-hooks.sh +0 -74
  393. package/pipeline/scripts/smoke-gc-tmp.sh +0 -130
  394. package/pipeline/scripts/smoke-gc-worktrees.sh +0 -125
  395. package/pipeline/scripts/smoke-generate-issue.sh +0 -120
  396. package/pipeline/scripts/smoke-handoff-contract.sh +0 -92
  397. package/pipeline/scripts/smoke-identity-isolation.sh +0 -70
  398. package/pipeline/scripts/smoke-install-layout.sh +0 -248
  399. package/pipeline/scripts/smoke-intent-guard.sh +0 -86
  400. package/pipeline/scripts/smoke-issue-comment-template.sh +0 -86
  401. package/pipeline/scripts/smoke-issue-jira-triad.sh +0 -120
  402. package/pipeline/scripts/smoke-keychain.sh +0 -158
  403. package/pipeline/scripts/smoke-language-axis.sh +0 -109
  404. package/pipeline/scripts/smoke-learning-curve.sh +0 -61
  405. package/pipeline/scripts/smoke-learnings-ledger.sh +0 -86
  406. package/pipeline/scripts/smoke-lib-scripts.sh +0 -448
  407. package/pipeline/scripts/smoke-mcp-gate.sh +0 -68
  408. package/pipeline/scripts/smoke-md-links.sh +0 -8
  409. package/pipeline/scripts/smoke-md2confluence.sh +0 -126
  410. package/pipeline/scripts/smoke-metrics-cache-ratio.sh +0 -72
  411. package/pipeline/scripts/smoke-migrate-state.sh +0 -102
  412. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +0 -161
  413. package/pipeline/scripts/smoke-model-fallback.sh +0 -89
  414. package/pipeline/scripts/smoke-multi-repo-integration.sh +0 -116
  415. package/pipeline/scripts/smoke-multi-repo-worktree.sh +0 -61
  416. package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +0 -115
  417. package/pipeline/scripts/smoke-no-token-prompt.sh +0 -85
  418. package/pipeline/scripts/smoke-pack-contents.sh +0 -140
  419. package/pipeline/scripts/smoke-pat-audit.sh +0 -128
  420. package/pipeline/scripts/smoke-per-repo-memory.sh +0 -156
  421. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +0 -170
  422. package/pipeline/scripts/smoke-phase-6-multi.sh +0 -79
  423. package/pipeline/scripts/smoke-phase-banner.sh +0 -101
  424. package/pipeline/scripts/smoke-phase-tracker.sh +0 -324
  425. package/pipeline/scripts/smoke-phase0-bridge-contract.sh +0 -241
  426. package/pipeline/scripts/smoke-phase4-gates.sh +0 -45
  427. package/pipeline/scripts/smoke-phase4-triage.sh +0 -229
  428. package/pipeline/scripts/smoke-plan-approval-gate.sh +0 -71
  429. package/pipeline/scripts/smoke-plan-safety.sh +0 -139
  430. package/pipeline/scripts/smoke-plan-todos.sh +0 -196
  431. package/pipeline/scripts/smoke-plugin-validate.sh +0 -64
  432. package/pipeline/scripts/smoke-pr-review-actions.sh +0 -152
  433. package/pipeline/scripts/smoke-pre-commit.sh +0 -170
  434. package/pipeline/scripts/smoke-pref-migration.sh +0 -226
  435. package/pipeline/scripts/smoke-prefs-language.sh +0 -134
  436. package/pipeline/scripts/smoke-progress-contract.sh +0 -127
  437. package/pipeline/scripts/smoke-prune-logs.sh +0 -137
  438. package/pipeline/scripts/smoke-purge.sh +0 -138
  439. package/pipeline/scripts/smoke-push-retry.sh +0 -75
  440. package/pipeline/scripts/smoke-repo-map.sh +0 -300
  441. package/pipeline/scripts/smoke-review-readiness.sh +0 -92
  442. package/pipeline/scripts/smoke-review-watch.sh +0 -146
  443. package/pipeline/scripts/smoke-routines.sh +0 -84
  444. package/pipeline/scripts/smoke-run-aggregator.sh +0 -216
  445. package/pipeline/scripts/smoke-run-metrics.sh +0 -50
  446. package/pipeline/scripts/smoke-search.sh +0 -187
  447. package/pipeline/scripts/smoke-shadow-git.sh +0 -224
  448. package/pipeline/scripts/smoke-skill-authoring.sh +0 -137
  449. package/pipeline/scripts/smoke-skill-language.sh +0 -83
  450. package/pipeline/scripts/smoke-skill-manifest.sh +0 -138
  451. package/pipeline/scripts/smoke-skill-scan.sh +0 -198
  452. package/pipeline/scripts/smoke-source-parity.sh +0 -85
  453. package/pipeline/scripts/smoke-subagent-validators.sh +0 -108
  454. package/pipeline/scripts/smoke-sync-parity.sh +0 -92
  455. package/pipeline/scripts/smoke-tasklist-ordering.sh +0 -112
  456. package/pipeline/scripts/smoke-telemetry.sh +0 -147
  457. package/pipeline/scripts/smoke-test-gap.sh +0 -183
  458. package/pipeline/scripts/smoke-token-budget.sh +0 -67
  459. package/pipeline/scripts/smoke-token-preflight.sh +0 -82
  460. package/pipeline/scripts/smoke-tracker-contract.sh +0 -191
  461. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +0 -73
  462. package/pipeline/scripts/smoke-triage-memory.sh +0 -174
  463. package/pipeline/scripts/smoke-update-check.sh +0 -135
  464. package/pipeline/scripts/smoke-url-enrichment.sh +0 -70
  465. package/pipeline/scripts/smoke-validate-analysis-doc.sh +0 -161
  466. package/pipeline/scripts/smoke-validator-contradiction.sh +0 -67
  467. package/pipeline/scripts/smoke-validator-gates.sh +0 -164
  468. package/pipeline/scripts/smoke-vercel-deploy-redact.sh +0 -129
  469. package/pipeline/scripts/smoke-verify-by-test.sh +0 -148
  470. package/pipeline/scripts/smoke-wiki-integration.sh +0 -122
  471. package/pipeline/scripts/smoke-work-summary.sh +0 -163
  472. package/pipeline/scripts/smoke-workflow-audit.sh +0 -69
  473. package/pipeline/scripts/smoke-worktree-path-convention.sh +0 -86
  474. package/pipeline/scripts/smoke-wrapper-preservation.sh +0 -68
  475. package/pipeline/scripts/smoke-write-state.sh +0 -115
  476. package/pipeline/scripts/sync-parity-check.sh +0 -135
  477. package/pipeline/scripts/test-gap-rules/android.json +0 -25
  478. package/pipeline/scripts/test-gap-rules/ios.json +0 -29
  479. package/pipeline/scripts/test-gap-rules/node.json +0 -17
  480. package/pipeline/scripts/test-gap-rules/python.json +0 -19
  481. package/pipeline/scripts/validate-schemas.mjs +0 -88
@@ -1,22 +0,0 @@
1
- {
2
- "rawFindings": [
3
- {
4
- "severity": "blocking",
5
- "file": "src/checkout.ts",
6
- "line": 88,
7
- "issue": "Missing transaction wrapper around multi-table writes in checkout",
8
- "fix": "Wrap the checkout persistence logic in a database transaction",
9
- "reviewer": "opus"
10
- },
11
- {
12
- "severity": "blocking",
13
- "file": "src/checkout.ts",
14
- "line": 88,
15
- "issue": "Checkout writes to orders and inventory tables without a transaction boundary",
16
- "fix": "Use a single transaction for all database writes in the checkout flow",
17
- "reviewer": "sonnet"
18
- }
19
- ],
20
- "scope": "Implement checkout flow with order creation and inventory update.",
21
- "diffSummary": "src/checkout.ts: +95 -10"
22
- }
@@ -1,9 +0,0 @@
1
- # Case 07 - Duplicate findings from two reviewers
2
-
3
- Both Opus and Sonnet flagged the same issue (same file, same line, same root cause) but with slightly different wording. Triage must deduplicate, not double-count.
4
-
5
- Convention: when two reviewers agree, keep the Opus finding in `accepted` and move the Sonnet duplicate to `rejected` with a reason linking it to the accepted entry.
6
-
7
- Guards against: double-classification when reviewers agree. Without dedup, the developer would see the same fix twice and the finding count would overstate the real issue count.
8
-
9
- Validator exit code: 0 (1/2 rejected is under the 80% over-rejection threshold).
@@ -1,18 +0,0 @@
1
- {
2
- "accepted": [],
3
- "deferred": [],
4
- "rejected": [
5
- {
6
- "finding": {
7
- "severity": "blocking",
8
- "file": "src/utils/format.ts",
9
- "line": 14,
10
- "issue": "Function name `fmt` is too short, should be `formatCurrency`",
11
- "fix": "Rename fmt to formatCurrency for readability",
12
- "reviewer": "sonnet"
13
- },
14
- "reason": "stylistic preference, not a correctness issue. Reviewer over-tagged severity. Naming was reviewed in PR #234 and approved by team."
15
- }
16
- ],
17
- "approved": true
18
- }
@@ -1,14 +0,0 @@
1
- {
2
- "rawFindings": [
3
- {
4
- "severity": "blocking",
5
- "file": "src/utils/format.ts",
6
- "line": 14,
7
- "issue": "Function name `fmt` is too short, should be `formatCurrency`",
8
- "fix": "Rename fmt to formatCurrency for readability",
9
- "reviewer": "sonnet"
10
- }
11
- ],
12
- "scope": "Add currency formatting utility for multi-locale support.",
13
- "diffSummary": "src/utils/format.ts: +22 -0"
14
- }
@@ -1,9 +0,0 @@
1
- # Case 08 - Stylistic blocker misclassification
2
-
3
- Reviewer tagged a naming preference as `severity: "blocking"`. Renaming `fmt` to `formatCurrency` is a style opinion, not a correctness or security issue.
4
-
5
- Triage MUST reject this: the blocking severity does not match the nature of the finding. The reason should cite that it is stylistic and that the reviewer over-tagged.
6
-
7
- Guards against: accepting a stylistic nitpick because it has a "blocking" tag. Severity must be evaluated by substance, not blindly trusted.
8
-
9
- Validator exit code: 0 (1/1 = 100% rejected but total < 5 findings, so over-rejection guard does not trip).
@@ -1,23 +0,0 @@
1
- {
2
- "accepted": [
3
- {
4
- "severity": "blocking",
5
- "file": "src/tests/setup.ts",
6
- "line": 5,
7
- "issue": "Test setup uses Math.random() without a fixed seed causing flaky results",
8
- "fix": "Replace Math.random() with a seeded PRNG for reproducible test data",
9
- "reviewer": "sonnet"
10
- },
11
- {
12
- "severity": "blocking",
13
- "file": "src/tests/setup.ts",
14
- "line": 12,
15
- "issue": "Tests fail intermittently in CI due to non-deterministic ordering",
16
- "fix": "Fixing the unseeded Math.random() in setup.ts (accepted[0]) should resolve this symptom",
17
- "reviewer": "opus"
18
- }
19
- ],
20
- "deferred": [],
21
- "rejected": [],
22
- "approved": false
23
- }
@@ -1,22 +0,0 @@
1
- {
2
- "rawFindings": [
3
- {
4
- "severity": "blocking",
5
- "file": "src/tests/setup.ts",
6
- "line": 12,
7
- "issue": "Tests fail intermittently in CI due to non-deterministic ordering",
8
- "fix": "Ensure deterministic test execution by fixing random seed initialization",
9
- "reviewer": "opus"
10
- },
11
- {
12
- "severity": "blocking",
13
- "file": "src/tests/setup.ts",
14
- "line": 5,
15
- "issue": "Test setup uses Math.random() without a fixed seed causing flaky results",
16
- "fix": "Replace Math.random() with a seeded PRNG for reproducible test data",
17
- "reviewer": "sonnet"
18
- }
19
- ],
20
- "scope": "Stabilize test infrastructure to eliminate flaky CI runs.",
21
- "diffSummary": "src/tests/setup.ts: +8 -2, src/tests/helpers.ts: +4 -1"
22
- }
@@ -1,9 +0,0 @@
1
- # Case 09 - Cascading finding (symptom + root cause)
2
-
3
- Two findings describe the same underlying problem at different levels: (a) the symptom ("tests fail intermittently") and (b) the root cause ("Math.random() without a fixed seed").
4
-
5
- Triage must accept BOTH but order them upstream-first: the root cause (b) comes before the symptom (a) in the accepted array. The fix text for (a) references (b) to document the cascade - fixing the seed should resolve the intermittent failures.
6
-
7
- Guards against: treating symptom and root cause as independent issues. The cascade relationship must be explicit in the fix text so the developer addresses root cause first.
8
-
9
- Validator exit code: 0 (both accepted with blocking severity, approved:false is consistent).
@@ -1,18 +0,0 @@
1
- {
2
- "accepted": [],
3
- "deferred": [
4
- {
5
- "finding": {
6
- "severity": "important",
7
- "file": "src/payments/refund.ts",
8
- "line": 55,
9
- "issue": "Refund flow doesn't emit audit event for compliance tracking",
10
- "fix": "Add an audit event emission after successful refund processing",
11
- "reviewer": "opus"
12
- },
13
- "reason": "out of scope for current task (checkout session creation); HOWEVER this should be addressed before PROJ-5678 (next sprint refund work) because that task assumes audit events exist for refund operations."
14
- }
15
- ],
16
- "rejected": [],
17
- "approved": true
18
- }
@@ -1,14 +0,0 @@
1
- {
2
- "rawFindings": [
3
- {
4
- "severity": "important",
5
- "file": "src/payments/refund.ts",
6
- "line": 55,
7
- "issue": "Refund flow doesn't emit audit event for compliance tracking",
8
- "fix": "Add an audit event emission after successful refund processing",
9
- "reviewer": "opus"
10
- }
11
- ],
12
- "scope": "Implement checkout session creation endpoint. Touches src/checkout/ only.",
13
- "diffSummary": "src/checkout/session.ts: +45 -0, src/checkout/types.ts: +12 -0"
14
- }
@@ -1,9 +0,0 @@
1
- # Case 10 - Deferred with cross-reference
2
-
3
- A real issue (missing audit event in refund flow) that is out of scope for the current task (checkout session creation). However, the next planned task (PROJ-5678, refund work) assumes audit events already exist.
4
-
5
- Triage must defer - not reject - because the issue is real. The reason must capture the cross-task dependency: deferring is correct, but the reason needs to surface that PROJ-5678 will be affected.
6
-
7
- Guards against: losing inter-task dependencies when deferring. A bare "out of scope" reason is insufficient; the cross-reference to the downstream task ensures Phase 7 captures this for backlog prioritization.
8
-
9
- Validator exit code: 0 (deferred + approved:true is consistent because no blocking items in accepted).
@@ -1,27 +0,0 @@
1
- {
2
- "accepted": [
3
- {
4
- "severity": "blocking",
5
- "file": "scripts/deploy.sh",
6
- "line": 14,
7
- "issue": "Script invokes `vercel deploy --token=$VERCEL_TOKEN`. On retry the Vercel CLI prints failed argv verbatim - the token leaks into the conversation transcript and CI logs. Same shape as the v7.9.1 incident that forced a token rotation.",
8
- "fix": "Replace with the safe wrapper: `bash $HOME/.claude/scripts/vercel-deploy.sh deploy --prod`. The wrapper refuses --token argv, reads VERCEL_TOKEN from env, and pipes stdout/stderr through a redact filter that scrubs vcp_... patterns.",
9
- "reviewer": "opus"
10
- }
11
- ],
12
- "deferred": [],
13
- "rejected": [
14
- {
15
- "finding": {
16
- "severity": "important",
17
- "file": "scripts/deploy.sh",
18
- "line": 14,
19
- "issue": "Token passed as positional argument allows shell history (zsh, bash) to capture it across sessions.",
20
- "fix": "Use env var; never argv.",
21
- "reviewer": "sonnet"
22
- },
23
- "reason": "duplicate - same root cause as the accepted blocking finding; merging would dilute the actionable line"
24
- }
25
- ],
26
- "approved": false
27
- }
@@ -1,22 +0,0 @@
1
- {
2
- "rawFindings": [
3
- {
4
- "severity": "blocking",
5
- "file": "scripts/deploy.sh",
6
- "line": 14,
7
- "issue": "Script invokes `vercel deploy --token=$VERCEL_TOKEN`. On retry the Vercel CLI prints failed argv verbatim - the token leaks into the conversation transcript and CI logs. Same shape as the v7.9.1 incident that forced a token rotation.",
8
- "fix": "Replace with the safe wrapper: `bash $HOME/.claude/scripts/vercel-deploy.sh deploy --prod`. The wrapper refuses --token argv, reads VERCEL_TOKEN from env, and pipes stdout/stderr through a redact filter that scrubs vcp_... patterns.",
9
- "reviewer": "opus"
10
- },
11
- {
12
- "severity": "important",
13
- "file": "scripts/deploy.sh",
14
- "line": 14,
15
- "issue": "Token passed as positional argument allows shell history (zsh, bash) to capture it across sessions.",
16
- "fix": "Use env var; never argv.",
17
- "reviewer": "sonnet"
18
- }
19
- ],
20
- "scope": "Add a one-shot deploy script that wraps `vercel deploy` for the marketing site.",
21
- "diffSummary": "1 file changed, 28 insertions, 0 deletions"
22
- }
@@ -1,14 +0,0 @@
1
- # Case 11 - Vercel token-leak as a blocker (v8.0.0)
2
-
3
- Two reviewers flag the same `vercel deploy --token=$VERCEL_TOKEN` call. Triage MUST:
4
-
5
- 1. **Accept** the Opus finding - it's a real production-affecting blocker, identical in shape to the v7.9.1 incident that forced a token rotation.
6
- 2. **Reject** the Sonnet finding as a duplicate - same root cause (token in argv), additional reviewer would dilute the actionable line. The fix is the same code change either way.
7
- 3. Set `approved: false` because at least one accepted blocking remains.
8
-
9
- Guards against:
10
- - Future regressions where token-leak findings get classified as `suggestion` or `style` (they are blocking - secret leaks reach production logs and force rotation).
11
- - Triage adding both reviewers' findings to `accepted` and producing two redundant "fix this" lines for the same line of code.
12
- - Approving the diff while a blocker is open.
13
-
14
- Validator exit code: 0 (clean - no contradictions).
@@ -1,54 +0,0 @@
1
- # Triage Eval Suite
2
-
3
- Semantic regression detection for Phase 4 triage. Each fixture pair (`input.json` + `expected.json`) tests a specific behavior the triage agent must preserve when its prompt or model changes.
4
-
5
- ## How it works
6
-
7
- Each test case lives in its own subdirectory:
8
-
9
- ```
10
- pipeline/eval/triage/
11
- ├── README.md
12
- ├── 01-empty-findings/
13
- │ ├── input.json - what reviewers returned (raw findings, scope, diff)
14
- │ ├── expected.json - what the triage step MUST produce, normalized
15
- │ └── notes.md - why this case matters
16
- ├── 02-real-blocker/
17
- ├── 03-out-of-scope-defer/
18
- ├── 04-false-positive-reject/
19
- ├── ...
20
- ```
21
-
22
- Run all cases:
23
-
24
- ```bash
25
- node pipeline/scripts/eval-triage.mjs
26
- ```
27
-
28
- Filter to one case:
29
-
30
- ```bash
31
- node pipeline/scripts/eval-triage.mjs --case 03-out-of-scope-defer
32
- ```
33
-
34
- `--json` produces machine-readable output for CI consumption.
35
-
36
- ## Pass criteria
37
-
38
- For each case the runner:
39
-
40
- 1. Validates `expected.json` against `triage-output.schema.json` (smoke-level sanity).
41
- 2. Runs `validate-triage.mjs` against `expected.json` and asserts the documented exit code.
42
- 3. Compares classification membership: each finding in `input.json.rawFindings` must appear in exactly one of `accepted | deferred | rejected` in `expected.json` (no leaks, no inventions).
43
-
44
- This is **not** a model-quality check (we don't run a real triage agent in CI - that requires API keys and is non-deterministic). It's a **contract regression check**: the fixtures encode "for input X, the spec says triage MUST produce Y", and any prompt/spec change that breaks the mapping fails CI.
45
-
46
- ## Adding new cases
47
-
48
- When a new triage edge case is discovered in production:
49
-
50
- 1. Capture the actual reviewer findings + diff context into a new `pipeline/eval/triage/<NN>-<short-name>/input.json`.
51
- 2. Hand-curate `expected.json` (or paste a known-good triage output and verify by hand).
52
- 3. Add `notes.md` explaining the failure mode this case guards against.
53
- 4. Run the suite locally; `eval-triage.mjs` should pass with your new case.
54
- 5. Commit. CI will keep it green going forward.
@@ -1,128 +0,0 @@
1
- #!/usr/bin/env bash
2
- # benchmark-phase-0.sh - measures Phase 0 latency (single-repo + multi-repo)
3
- # and writes a baseline / comparison row to benchmarks/v3.7-phase-0.jsonl.
4
- #
5
- # Usage:
6
- # benchmark-phase-0.sh # run once, append result
7
- # benchmark-phase-0.sh --runs 5 # run N times, report median
8
- # benchmark-phase-0.sh --label baseline # tag the row (e.g. "baseline" / "post-refactor")
9
- # benchmark-phase-0.sh --multi-repo # exercise the multi-repo path
10
- #
11
- # What it measures (proxy - actual Phase 0 needs a live task):
12
- # 1. Preferences load (read + JSON parse)
13
- # 2. Schema validation (validate prefs against prefs.schema.json - node + ajv if present)
14
- # 3. Project scan ($HOME maxdepth 2 with marker globs - same as Phase 0 Step 2)
15
- # 4. Branch listing (no remote - uses local $HOME repo if available)
16
- # 5. Recents read + TTL prune simulation
17
- #
18
- # Best-effort: missing tools (node, jq) cause the section to skip rather than fail.
19
-
20
- set -uo pipefail
21
-
22
- RUNS=1
23
- LABEL="adhoc"
24
- MULTI=false
25
- while [ "$#" -gt 0 ]; do
26
- case "$1" in
27
- --runs) RUNS="$2"; shift 2 ;;
28
- --label) LABEL="$2"; shift 2 ;;
29
- --multi-repo) MULTI=true; shift ;;
30
- *) shift ;;
31
- esac
32
- done
33
-
34
- PREFS="$HOME/.claude/multi-agent-preferences.json"
35
- SCHEMA="$HOME/.claude/schemas/prefs.schema.json"
36
- OUT_DIR="$HOME/.claude/benchmarks"
37
- OUT="$OUT_DIR/v3.7-phase-0.jsonl"
38
- mkdir -p "$OUT_DIR"
39
-
40
- # Portable nanosecond timer using python (date -u +%N is GNU-only)
41
- now_ms() {
42
- python3 -c 'import time; print(int(time.time()*1000))' 2>/dev/null \
43
- || echo "$(($(date +%s) * 1000))"
44
- }
45
-
46
- bench_one() {
47
- local total_start=$(now_ms)
48
-
49
- # 1. prefs load
50
- local t1=$(now_ms)
51
- if [ -f "$PREFS" ]; then
52
- cat "$PREFS" >/dev/null 2>&1
53
- local prefs_load_ms=$(( $(now_ms) - t1 ))
54
- else
55
- local prefs_load_ms=0
56
- fi
57
-
58
- # 2. schema validate (best-effort)
59
- local schema_ms=0
60
- if [ -f "$PREFS" ] && [ -f "$SCHEMA" ] && command -v node >/dev/null 2>&1; then
61
- local t2=$(now_ms)
62
- node -e "JSON.parse(require('fs').readFileSync('$PREFS','utf8'))" 2>/dev/null
63
- schema_ms=$(( $(now_ms) - t2 ))
64
- fi
65
-
66
- # 3. project scan
67
- local t3=$(now_ms)
68
- find "$HOME" -maxdepth 2 -type f \( \
69
- -name "Package.swift" -o -name "package.json" -o -name "build.gradle" \
70
- -o -name "Cargo.toml" -o -name "go.mod" -o -name "pom.xml" \
71
- \) 2>/dev/null | head -50 >/dev/null
72
- local scan_ms=$(( $(now_ms) - t3 ))
73
-
74
- # 4. branch listing (use first git repo found in $HOME, if any)
75
- local branch_ms=0
76
- local repo=""
77
- repo=$(find "$HOME" -maxdepth 3 -type d -name ".git" 2>/dev/null | head -1 | xargs -I {} dirname {})
78
- if [ -n "$repo" ]; then
79
- local t4=$(now_ms)
80
- git -C "$repo" branch -r 2>/dev/null | head -50 >/dev/null
81
- branch_ms=$(( $(now_ms) - t4 ))
82
- fi
83
-
84
- # 5. recents read + TTL prune sim
85
- local t5=$(now_ms)
86
- if [ -f "$PREFS" ] && command -v node >/dev/null 2>&1; then
87
- node -e "
88
- const p = JSON.parse(require('fs').readFileSync('$PREFS','utf8'));
89
- const cutoff = Date.now() - 15*86400*1000;
90
- const rb = p.global?.recentBranches || {};
91
- let kept = 0, pruned = 0;
92
- for (const proj of Object.keys(rb)) {
93
- const arr = rb[proj] || [];
94
- for (const b of arr) {
95
- if (b && b.lastUsed && Date.parse(b.lastUsed) >= cutoff) kept++;
96
- else pruned++;
97
- }
98
- }
99
- " 2>/dev/null
100
- fi
101
- local recents_ms=$(( $(now_ms) - t5 ))
102
-
103
- local total_ms=$(( $(now_ms) - total_start ))
104
- local mode="single"; [ "$MULTI" = true ] && mode="multi"
105
- printf '{"ts":"%s","label":"%s","mode":"%s","prefs_load_ms":%d,"schema_ms":%d,"project_scan_ms":%d,"branch_list_ms":%d,"recents_ms":%d,"total_ms":%d}\n' \
106
- "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" "$LABEL" "$mode" \
107
- "$prefs_load_ms" "$schema_ms" "$scan_ms" "$branch_ms" "$recents_ms" "$total_ms"
108
- }
109
-
110
- echo "Running $RUNS bench iteration(s) - label=$LABEL mode=$([ "$MULTI" = true ] && echo multi || echo single)"
111
- TOTALS=()
112
- for i in $(seq 1 "$RUNS"); do
113
- ROW=$(bench_one)
114
- echo " $ROW"
115
- echo "$ROW" >> "$OUT"
116
- TOTAL=$(echo "$ROW" | grep -oE '"total_ms":[0-9]+' | grep -oE '[0-9]+')
117
- TOTALS+=("$TOTAL")
118
- done
119
-
120
- # Median across runs
121
- if [ "${#TOTALS[@]}" -gt 1 ]; then
122
- SORTED=$(printf '%s\n' "${TOTALS[@]}" | sort -n)
123
- MEDIAN=$(echo "$SORTED" | awk -v n="${#TOTALS[@]}" 'NR == int((n+1)/2)')
124
- echo ""
125
- echo "median total_ms: $MEDIAN (across $RUNS runs)"
126
- fi
127
-
128
- echo "Wrote to: $OUT"
@@ -1,84 +0,0 @@
1
- #!/usr/bin/env node
2
- // Internal markdown link checker for the user-facing docs surface and the
3
- // pipeline instruction tree.
4
- //
5
- // Scope: root *.md + docs/**/*.md + examples/**/*.md + pipeline/**/*.md.
6
- // Verifies that every relative link target ([text](./path) or
7
- // [text](path#anchor)) resolves to an existing file or directory. Skipped:
8
- // external (http/https/mailto) links, pure #anchors, template links whose
9
- // path contains a {placeholder} variable, and links through shell
10
- // variables ($HOME, ...) - except $HOME/.claude/multi-agent-refs/, which
11
- // is checked against its repo source (pipeline/multi-agent-refs/) so a
12
- // ref rename cannot leave stale runtime links behind. This is a drift
13
- // gate for file moves/renames, not a network crawler.
14
- //
15
- // Excluded trees: pipeline/skills/shared/external/ is vendored community
16
- // skill content - several packs (the Apple HIG set) index upstream
17
- // references/ companion files that are deliberately not vendored here.
18
-
19
- import { readFileSync, existsSync, readdirSync, statSync } from "node:fs";
20
- import { dirname, join, resolve } from "node:path";
21
- import { fileURLToPath } from "node:url";
22
-
23
- const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
24
-
25
- function mdFiles(dir, acc = []) {
26
- for (const entry of readdirSync(dir)) {
27
- if (entry === "node_modules" || entry.startsWith(".")) continue;
28
- const full = join(dir, entry);
29
- if (statSync(full).isDirectory()) mdFiles(full, acc);
30
- else if (entry.endsWith(".md")) acc.push(full);
31
- }
32
- return acc;
33
- }
34
-
35
- const targets = [
36
- ...readdirSync(repoRoot).filter((f) => f.endsWith(".md")).map((f) => join(repoRoot, f)),
37
- ...["docs", "examples", "pipeline"].filter((d) => existsSync(join(repoRoot, d))).flatMap((d) => mdFiles(join(repoRoot, d))),
38
- // CHANGELOG-archive.md is frozen history - it legitimately references docs
39
- // that were deleted in later releases.
40
- ]
41
- .filter((f) => !f.endsWith("CHANGELOG-archive.md"))
42
- // Vendored community skill packs (see header note).
43
- .filter((f) => !f.includes(join("pipeline", "skills", "shared", "external") + "/"));
44
-
45
- const LINK_RE = /\[[^\]]*\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
46
- const errors = [];
47
-
48
- for (const file of targets) {
49
- // Drop fenced blocks and inline code spans - links inside code are
50
- // illustrative placeholders, not navigation.
51
- const text = readFileSync(file, "utf-8")
52
- .replace(/```[\s\S]*?```/g, "")
53
- .replace(/`[^`\n]*`/g, "");
54
- for (const match of text.matchAll(LINK_RE)) {
55
- const raw = match[1];
56
- if (/^(https?:|mailto:|#)/.test(raw)) continue;
57
- // Template placeholders ({fileKey}, {slug}, ...) resolve at runtime,
58
- // never on disk - skip them.
59
- if (raw.includes("{") || raw.includes("}")) continue;
60
- const target = raw.split("#")[0];
61
- if (target === "") continue;
62
- let resolved;
63
- const refsPrefix = "$HOME/.claude/multi-agent-refs/";
64
- if (target.startsWith(refsPrefix)) {
65
- // Runtime install path with a repo source - check the source tree.
66
- resolved = join(repoRoot, "pipeline", "multi-agent-refs", target.slice(refsPrefix.length));
67
- } else if (target.includes("$") || target.startsWith("~")) {
68
- // Other shell-variable / home paths resolve at runtime only.
69
- continue;
70
- } else {
71
- resolved = resolve(dirname(file), decodeURIComponent(target));
72
- }
73
- if (!existsSync(resolved)) {
74
- errors.push(`${file.slice(repoRoot.length + 1)}: broken link -> ${raw}`);
75
- }
76
- }
77
- }
78
-
79
- if (errors.length > 0) {
80
- console.error(`check-md-links: ${errors.length} broken internal link(s)`);
81
- for (const e of errors) console.error(" " + e);
82
- process.exit(1);
83
- }
84
- console.log(`check-md-links: ${targets.length} files OK`);