@accelerationguy/accel 1.0.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 (376) hide show
  1. package/CLAUDE.md +19 -0
  2. package/LICENSE +33 -0
  3. package/README.md +275 -0
  4. package/bin/install.js +661 -0
  5. package/docs/getting-started.md +164 -0
  6. package/docs/module-guide.md +139 -0
  7. package/modules/drive/LICENSE +21 -0
  8. package/modules/drive/PAUL-VS-GSD.md +171 -0
  9. package/modules/drive/README.md +555 -0
  10. package/modules/drive/assets/terminal.svg +67 -0
  11. package/modules/drive/bin/install.js +210 -0
  12. package/modules/drive/integration.js +76 -0
  13. package/modules/drive/package.json +38 -0
  14. package/modules/drive/src/commands/add-phase.md +36 -0
  15. package/modules/drive/src/commands/apply.md +83 -0
  16. package/modules/drive/src/commands/assumptions.md +37 -0
  17. package/modules/drive/src/commands/audit.md +57 -0
  18. package/modules/drive/src/commands/complete-milestone.md +36 -0
  19. package/modules/drive/src/commands/config.md +175 -0
  20. package/modules/drive/src/commands/consider-issues.md +41 -0
  21. package/modules/drive/src/commands/discover.md +48 -0
  22. package/modules/drive/src/commands/discuss-milestone.md +33 -0
  23. package/modules/drive/src/commands/discuss.md +34 -0
  24. package/modules/drive/src/commands/flows.md +73 -0
  25. package/modules/drive/src/commands/handoff.md +201 -0
  26. package/modules/drive/src/commands/help.md +525 -0
  27. package/modules/drive/src/commands/init.md +54 -0
  28. package/modules/drive/src/commands/map-codebase.md +34 -0
  29. package/modules/drive/src/commands/milestone.md +34 -0
  30. package/modules/drive/src/commands/pause.md +44 -0
  31. package/modules/drive/src/commands/plan-fix.md +216 -0
  32. package/modules/drive/src/commands/plan.md +36 -0
  33. package/modules/drive/src/commands/progress.md +138 -0
  34. package/modules/drive/src/commands/register.md +29 -0
  35. package/modules/drive/src/commands/remove-phase.md +37 -0
  36. package/modules/drive/src/commands/research-phase.md +209 -0
  37. package/modules/drive/src/commands/research.md +47 -0
  38. package/modules/drive/src/commands/resume.md +49 -0
  39. package/modules/drive/src/commands/status.md +78 -0
  40. package/modules/drive/src/commands/unify.md +87 -0
  41. package/modules/drive/src/commands/verify.md +60 -0
  42. package/modules/drive/src/references/checkpoints.md +234 -0
  43. package/modules/drive/src/references/context-management.md +219 -0
  44. package/modules/drive/src/references/git-strategy.md +206 -0
  45. package/modules/drive/src/references/loop-phases.md +254 -0
  46. package/modules/drive/src/references/plan-format.md +263 -0
  47. package/modules/drive/src/references/quality-principles.md +152 -0
  48. package/modules/drive/src/references/research-quality-control.md +247 -0
  49. package/modules/drive/src/references/sonarqube-integration.md +244 -0
  50. package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
  51. package/modules/drive/src/references/subagent-criteria.md +179 -0
  52. package/modules/drive/src/references/tdd.md +219 -0
  53. package/modules/drive/src/references/work-units.md +161 -0
  54. package/modules/drive/src/rules/commands.md +108 -0
  55. package/modules/drive/src/rules/references.md +107 -0
  56. package/modules/drive/src/rules/style.md +123 -0
  57. package/modules/drive/src/rules/templates.md +51 -0
  58. package/modules/drive/src/rules/workflows.md +133 -0
  59. package/modules/drive/src/templates/CONTEXT.md +88 -0
  60. package/modules/drive/src/templates/DEBUG.md +164 -0
  61. package/modules/drive/src/templates/DISCOVERY.md +148 -0
  62. package/modules/drive/src/templates/HANDOFF.md +77 -0
  63. package/modules/drive/src/templates/ISSUES.md +93 -0
  64. package/modules/drive/src/templates/MILESTONES.md +167 -0
  65. package/modules/drive/src/templates/PLAN.md +328 -0
  66. package/modules/drive/src/templates/PROJECT.md +219 -0
  67. package/modules/drive/src/templates/RESEARCH.md +130 -0
  68. package/modules/drive/src/templates/ROADMAP.md +328 -0
  69. package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
  70. package/modules/drive/src/templates/STATE.md +210 -0
  71. package/modules/drive/src/templates/SUMMARY.md +221 -0
  72. package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
  73. package/modules/drive/src/templates/codebase/architecture.md +259 -0
  74. package/modules/drive/src/templates/codebase/concerns.md +329 -0
  75. package/modules/drive/src/templates/codebase/conventions.md +311 -0
  76. package/modules/drive/src/templates/codebase/integrations.md +284 -0
  77. package/modules/drive/src/templates/codebase/stack.md +190 -0
  78. package/modules/drive/src/templates/codebase/structure.md +287 -0
  79. package/modules/drive/src/templates/codebase/testing.md +484 -0
  80. package/modules/drive/src/templates/config.md +181 -0
  81. package/modules/drive/src/templates/milestone-archive.md +236 -0
  82. package/modules/drive/src/templates/milestone-context.md +190 -0
  83. package/modules/drive/src/templates/paul-json.md +147 -0
  84. package/modules/drive/src/vector-config/PAUL +26 -0
  85. package/modules/drive/src/vector-config/PAUL.manifest +11 -0
  86. package/modules/drive/src/workflows/apply-phase.md +393 -0
  87. package/modules/drive/src/workflows/audit-plan.md +344 -0
  88. package/modules/drive/src/workflows/complete-milestone.md +479 -0
  89. package/modules/drive/src/workflows/configure-special-flows.md +283 -0
  90. package/modules/drive/src/workflows/consider-issues.md +172 -0
  91. package/modules/drive/src/workflows/create-milestone.md +268 -0
  92. package/modules/drive/src/workflows/debug.md +292 -0
  93. package/modules/drive/src/workflows/discovery.md +187 -0
  94. package/modules/drive/src/workflows/discuss-milestone.md +245 -0
  95. package/modules/drive/src/workflows/discuss-phase.md +231 -0
  96. package/modules/drive/src/workflows/init-project.md +698 -0
  97. package/modules/drive/src/workflows/map-codebase.md +459 -0
  98. package/modules/drive/src/workflows/pause-work.md +259 -0
  99. package/modules/drive/src/workflows/phase-assumptions.md +181 -0
  100. package/modules/drive/src/workflows/plan-phase.md +385 -0
  101. package/modules/drive/src/workflows/quality-gate.md +263 -0
  102. package/modules/drive/src/workflows/register-manifest.md +107 -0
  103. package/modules/drive/src/workflows/research.md +241 -0
  104. package/modules/drive/src/workflows/resume-project.md +200 -0
  105. package/modules/drive/src/workflows/roadmap-management.md +334 -0
  106. package/modules/drive/src/workflows/transition-phase.md +368 -0
  107. package/modules/drive/src/workflows/unify-phase.md +290 -0
  108. package/modules/drive/src/workflows/verify-work.md +241 -0
  109. package/modules/forge/README.md +281 -0
  110. package/modules/forge/bin/install.js +200 -0
  111. package/modules/forge/package.json +32 -0
  112. package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
  113. package/modules/forge/skillsmith/rules/context-rules.md +43 -0
  114. package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
  115. package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
  116. package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
  117. package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
  118. package/modules/forge/skillsmith/skillsmith.md +82 -0
  119. package/modules/forge/skillsmith/tasks/audit.md +277 -0
  120. package/modules/forge/skillsmith/tasks/discover.md +145 -0
  121. package/modules/forge/skillsmith/tasks/distill.md +276 -0
  122. package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
  123. package/modules/forge/specs/checklists.md +193 -0
  124. package/modules/forge/specs/context.md +223 -0
  125. package/modules/forge/specs/entry-point.md +320 -0
  126. package/modules/forge/specs/frameworks.md +228 -0
  127. package/modules/forge/specs/rules.md +245 -0
  128. package/modules/forge/specs/tasks.md +344 -0
  129. package/modules/forge/specs/templates.md +335 -0
  130. package/modules/forge/terminal.svg +70 -0
  131. package/modules/ignition/README.md +245 -0
  132. package/modules/ignition/bin/install.js +184 -0
  133. package/modules/ignition/checklists/planning-quality.md +55 -0
  134. package/modules/ignition/data/application/config.md +21 -0
  135. package/modules/ignition/data/application/guide.md +51 -0
  136. package/modules/ignition/data/application/skill-loadout.md +11 -0
  137. package/modules/ignition/data/campaign/config.md +18 -0
  138. package/modules/ignition/data/campaign/guide.md +36 -0
  139. package/modules/ignition/data/campaign/skill-loadout.md +10 -0
  140. package/modules/ignition/data/client/config.md +18 -0
  141. package/modules/ignition/data/client/guide.md +36 -0
  142. package/modules/ignition/data/client/skill-loadout.md +11 -0
  143. package/modules/ignition/data/utility/config.md +18 -0
  144. package/modules/ignition/data/utility/guide.md +31 -0
  145. package/modules/ignition/data/utility/skill-loadout.md +8 -0
  146. package/modules/ignition/data/workflow/config.md +19 -0
  147. package/modules/ignition/data/workflow/guide.md +41 -0
  148. package/modules/ignition/data/workflow/skill-loadout.md +10 -0
  149. package/modules/ignition/integration.js +54 -0
  150. package/modules/ignition/package.json +35 -0
  151. package/modules/ignition/seed.md +81 -0
  152. package/modules/ignition/tasks/add-type.md +164 -0
  153. package/modules/ignition/tasks/graduate.md +182 -0
  154. package/modules/ignition/tasks/ideate.md +221 -0
  155. package/modules/ignition/tasks/launch.md +137 -0
  156. package/modules/ignition/tasks/status.md +71 -0
  157. package/modules/ignition/templates/planning-application.md +193 -0
  158. package/modules/ignition/templates/planning-campaign.md +138 -0
  159. package/modules/ignition/templates/planning-client.md +149 -0
  160. package/modules/ignition/templates/planning-utility.md +112 -0
  161. package/modules/ignition/templates/planning-workflow.md +125 -0
  162. package/modules/ignition/terminal.svg +74 -0
  163. package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
  164. package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
  165. package/modules/mission-control/README.md +91 -0
  166. package/modules/mission-control/assets/terminal.svg +80 -0
  167. package/modules/mission-control/examples/entities.example.json +133 -0
  168. package/modules/mission-control/examples/projects.example.json +318 -0
  169. package/modules/mission-control/examples/state.example.json +183 -0
  170. package/modules/mission-control/examples/vector.example.json +245 -0
  171. package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
  172. package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
  173. package/modules/mission-control/mission-control/mission-control.md +83 -0
  174. package/modules/mission-control/mission-control/tasks/insights.md +73 -0
  175. package/modules/mission-control/mission-control/tasks/install.md +194 -0
  176. package/modules/mission-control/mission-control/tasks/status.md +125 -0
  177. package/modules/mission-control/schemas/entities.schema.json +89 -0
  178. package/modules/mission-control/schemas/projects.schema.json +221 -0
  179. package/modules/mission-control/schemas/state.schema.json +108 -0
  180. package/modules/mission-control/schemas/vector.schema.json +200 -0
  181. package/modules/momentum/README.md +678 -0
  182. package/modules/momentum/bin/install.js +563 -0
  183. package/modules/momentum/integration.js +131 -0
  184. package/modules/momentum/package.json +42 -0
  185. package/modules/momentum/schemas/entities.schema.json +89 -0
  186. package/modules/momentum/schemas/projects.schema.json +221 -0
  187. package/modules/momentum/schemas/state.schema.json +108 -0
  188. package/modules/momentum/src/commands/audit-claude-md.md +31 -0
  189. package/modules/momentum/src/commands/audit.md +33 -0
  190. package/modules/momentum/src/commands/groom.md +35 -0
  191. package/modules/momentum/src/commands/history.md +27 -0
  192. package/modules/momentum/src/commands/pulse.md +33 -0
  193. package/modules/momentum/src/commands/scaffold.md +33 -0
  194. package/modules/momentum/src/commands/status.md +28 -0
  195. package/modules/momentum/src/commands/surface-convert.md +35 -0
  196. package/modules/momentum/src/commands/surface-create.md +34 -0
  197. package/modules/momentum/src/commands/surface-list.md +27 -0
  198. package/modules/momentum/src/commands/vector-hygiene.md +33 -0
  199. package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
  200. package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
  201. package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
  202. package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
  203. package/modules/momentum/src/framework/tasks/audit.md +64 -0
  204. package/modules/momentum/src/framework/tasks/groom.md +164 -0
  205. package/modules/momentum/src/framework/tasks/history.md +34 -0
  206. package/modules/momentum/src/framework/tasks/pulse.md +83 -0
  207. package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
  208. package/modules/momentum/src/framework/tasks/status.md +35 -0
  209. package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
  210. package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
  211. package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
  212. package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
  213. package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
  214. package/modules/momentum/src/hooks/_template.py +129 -0
  215. package/modules/momentum/src/hooks/active-hook.py +178 -0
  216. package/modules/momentum/src/hooks/backlog-hook.py +115 -0
  217. package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
  218. package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
  219. package/modules/momentum/src/hooks/operator.py +53 -0
  220. package/modules/momentum/src/hooks/psmm-injector.py +67 -0
  221. package/modules/momentum/src/hooks/satellite-detection.py +248 -0
  222. package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
  223. package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
  224. package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
  225. package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
  226. package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
  227. package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
  228. package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
  229. package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
  230. package/modules/momentum/src/skill/momentum.md +111 -0
  231. package/modules/momentum/src/tasks/groom.md +164 -0
  232. package/modules/momentum/src/templates/operator.json +66 -0
  233. package/modules/momentum/src/templates/workspace.json +111 -0
  234. package/modules/momentum/terminal.svg +77 -0
  235. package/modules/radar/README.md +1552 -0
  236. package/modules/radar/commands/audit.md +233 -0
  237. package/modules/radar/commands/guardrails.md +194 -0
  238. package/modules/radar/commands/init.md +207 -0
  239. package/modules/radar/commands/playbook.md +176 -0
  240. package/modules/radar/commands/remediate.md +156 -0
  241. package/modules/radar/commands/report.md +172 -0
  242. package/modules/radar/commands/resume.md +176 -0
  243. package/modules/radar/commands/status.md +148 -0
  244. package/modules/radar/commands/transform.md +205 -0
  245. package/modules/radar/commands/validate.md +177 -0
  246. package/modules/radar/docs/ARCHITECTURE.md +336 -0
  247. package/modules/radar/docs/GETTING-STARTED.md +287 -0
  248. package/modules/radar/docs/standards/agents.md +197 -0
  249. package/modules/radar/docs/standards/commands.md +250 -0
  250. package/modules/radar/docs/standards/domains.md +191 -0
  251. package/modules/radar/docs/standards/personas.md +211 -0
  252. package/modules/radar/docs/standards/rules.md +218 -0
  253. package/modules/radar/docs/standards/runtime.md +445 -0
  254. package/modules/radar/docs/standards/schemas.md +269 -0
  255. package/modules/radar/docs/standards/tools.md +273 -0
  256. package/modules/radar/docs/standards/workflows.md +254 -0
  257. package/modules/radar/docs/terminal.svg +72 -0
  258. package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
  259. package/modules/radar/docs/validation/cross-reference-report.md +195 -0
  260. package/modules/radar/docs/validation/validation-summary.md +118 -0
  261. package/modules/radar/docs/validation/version-manifest.yaml +363 -0
  262. package/modules/radar/install.sh +711 -0
  263. package/modules/radar/integration.js +53 -0
  264. package/modules/radar/src/core/agents/architect.md +25 -0
  265. package/modules/radar/src/core/agents/compliance-officer.md +25 -0
  266. package/modules/radar/src/core/agents/data-engineer.md +25 -0
  267. package/modules/radar/src/core/agents/devils-advocate.md +22 -0
  268. package/modules/radar/src/core/agents/performance-engineer.md +25 -0
  269. package/modules/radar/src/core/agents/principal-engineer.md +23 -0
  270. package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
  271. package/modules/radar/src/core/agents/security-engineer.md +25 -0
  272. package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
  273. package/modules/radar/src/core/agents/sre.md +25 -0
  274. package/modules/radar/src/core/agents/staff-engineer.md +23 -0
  275. package/modules/radar/src/core/agents/test-engineer.md +25 -0
  276. package/modules/radar/src/core/personas/architect.md +111 -0
  277. package/modules/radar/src/core/personas/compliance-officer.md +104 -0
  278. package/modules/radar/src/core/personas/data-engineer.md +113 -0
  279. package/modules/radar/src/core/personas/devils-advocate.md +105 -0
  280. package/modules/radar/src/core/personas/performance-engineer.md +119 -0
  281. package/modules/radar/src/core/personas/principal-engineer.md +119 -0
  282. package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
  283. package/modules/radar/src/core/personas/security-engineer.md +108 -0
  284. package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
  285. package/modules/radar/src/core/personas/sre.md +117 -0
  286. package/modules/radar/src/core/personas/staff-engineer.md +109 -0
  287. package/modules/radar/src/core/personas/test-engineer.md +109 -0
  288. package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
  289. package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
  290. package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
  291. package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
  292. package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
  293. package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
  294. package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
  295. package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
  296. package/modules/radar/src/core/workflows/session-handoff.md +152 -0
  297. package/modules/radar/src/domains/00-context.md +201 -0
  298. package/modules/radar/src/domains/01-architecture.md +248 -0
  299. package/modules/radar/src/domains/02-data.md +224 -0
  300. package/modules/radar/src/domains/03-correctness.md +230 -0
  301. package/modules/radar/src/domains/04-security.md +274 -0
  302. package/modules/radar/src/domains/05-compliance.md +228 -0
  303. package/modules/radar/src/domains/06-testing.md +228 -0
  304. package/modules/radar/src/domains/07-reliability.md +246 -0
  305. package/modules/radar/src/domains/08-performance.md +247 -0
  306. package/modules/radar/src/domains/09-maintainability.md +271 -0
  307. package/modules/radar/src/domains/10-operability.md +250 -0
  308. package/modules/radar/src/domains/11-change-risk.md +246 -0
  309. package/modules/radar/src/domains/12-team-risk.md +221 -0
  310. package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
  311. package/modules/radar/src/rules/agent-boundaries.md +78 -0
  312. package/modules/radar/src/rules/disagreement-protocol.md +76 -0
  313. package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
  314. package/modules/radar/src/schemas/confidence.md +185 -0
  315. package/modules/radar/src/schemas/disagreement.md +238 -0
  316. package/modules/radar/src/schemas/finding.md +287 -0
  317. package/modules/radar/src/schemas/report-section.md +150 -0
  318. package/modules/radar/src/schemas/signal.md +108 -0
  319. package/modules/radar/src/tools/checkov.md +463 -0
  320. package/modules/radar/src/tools/git-history.md +581 -0
  321. package/modules/radar/src/tools/gitleaks.md +447 -0
  322. package/modules/radar/src/tools/grype.md +611 -0
  323. package/modules/radar/src/tools/semgrep.md +378 -0
  324. package/modules/radar/src/tools/sonarqube.md +550 -0
  325. package/modules/radar/src/tools/syft.md +539 -0
  326. package/modules/radar/src/tools/trivy.md +439 -0
  327. package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
  328. package/modules/radar/src/transform/agents/execution-validator.md +24 -0
  329. package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
  330. package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
  331. package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
  332. package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
  333. package/modules/radar/src/transform/personas/execution-validator.md +95 -0
  334. package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
  335. package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
  336. package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
  337. package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
  338. package/modules/radar/src/transform/rules/safety-governance.md +87 -0
  339. package/modules/radar/src/transform/schemas/change-risk.md +139 -0
  340. package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
  341. package/modules/radar/src/transform/schemas/playbook.md +205 -0
  342. package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
  343. package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
  344. package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
  345. package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
  346. package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
  347. package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
  348. package/modules/vector/.vector-template/vector.json +72 -0
  349. package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
  350. package/modules/vector/INSTALL.md +185 -0
  351. package/modules/vector/LICENSE +21 -0
  352. package/modules/vector/README.md +409 -0
  353. package/modules/vector/VECTOR-BLOCK.md +57 -0
  354. package/modules/vector/assets/terminal.svg +68 -0
  355. package/modules/vector/bin/install.js +455 -0
  356. package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
  357. package/modules/vector/commands/help.md +46 -0
  358. package/modules/vector/hooks/vector-hook.py +775 -0
  359. package/modules/vector/mcp/index.js +118 -0
  360. package/modules/vector/mcp/package.json +10 -0
  361. package/modules/vector/mcp/tools/decisions.js +269 -0
  362. package/modules/vector/mcp/tools/domains.js +361 -0
  363. package/modules/vector/mcp/tools/staging.js +252 -0
  364. package/modules/vector/mcp/tools/vector-json.js +647 -0
  365. package/modules/vector/package.json +38 -0
  366. package/modules/vector/schemas/vector.schema.json +237 -0
  367. package/package.json +39 -0
  368. package/shared/branding/branding.js +70 -0
  369. package/shared/config/defaults.json +59 -0
  370. package/shared/events/README.md +175 -0
  371. package/shared/events/event-bus.js +134 -0
  372. package/shared/events/event_bus.py +255 -0
  373. package/shared/events/integrations.js +161 -0
  374. package/shared/events/schemas/audit-complete.schema.json +21 -0
  375. package/shared/events/schemas/phase-progress.schema.json +23 -0
  376. package/shared/events/schemas/plan-created.schema.json +21 -0
@@ -0,0 +1,78 @@
1
+ ---
2
+ id: epistemic-hygiene
3
+ name: Epistemic Hygiene
4
+ scope: all_agents
5
+ priority: critical
6
+ ---
7
+
8
+ ## Purpose
9
+
10
+ Without epistemic hygiene rules, agents produce findings that sound confident but lack evidence, assert severity without justification, and treat tool output as ground truth. These are the five invariants that make Radar epistemically honest. They are non-negotiable — no persona can override them, no workflow can skip them, and no domain can contradict them.
11
+
12
+ Every failure mode these rules prevent has been observed in AI-generated analysis: confident conclusions built on unexamined assumptions, severity inflation to appear thorough, tool output parroted without interpretation, and clean narratives that paper over genuine uncertainty. These rules exist because the default behavior of language models is precisely what rigorous analysis must reject.
13
+
14
+ ## Rules
15
+
16
+ ### 1. No risk statements without observations
17
+
18
+ **Statement:** An agent must not produce a risk statement (Layer 5) without a corresponding observation (Layer 1). Risk cannot be asserted without first establishing what was observed.
19
+
20
+ **Rationale:** Risk statements that skip observation are speculation, not analysis. "This system is vulnerable to SQL injection" without identifying where in the code the vulnerability exists is unfalsifiable. Observations ground risk in reality.
21
+
22
+ **Enforcement:** Finding validation rejects any finding where Layer 5 (risk statement) is populated but Layer 1 (observation) is empty, vague, or contains risk language instead of factual observation. The observation must describe what exists, not what could go wrong.
23
+
24
+ ### 2. No judgments without risk modeling
25
+
26
+ **Statement:** An agent must not produce a judgment (Layer 7) without completing risk modeling (Layer 6). Judgment requires impact domain, magnitude, likelihood, time horizon, and blast radius.
27
+
28
+ **Rationale:** Judgments without risk modeling are gut reactions. "Must fix" without understanding impact magnitude, likelihood, and blast radius leads to misallocated remediation effort. Risk modeling makes the basis for judgment explicit and challengeable.
29
+
30
+ **Enforcement:** Finding validation rejects any finding where Layer 7 (judgment) is populated but Layer 6 (impact & likelihood) has missing or non-enum values. All five Layer 6 dimensions must be present with valid enumerated values.
31
+
32
+ ### 3. No confidence without evidence
33
+
34
+ **Statement:** A confidence vector must be grounded in actual evidence. High confidence scores require explicit justification referencing concrete evidence sources.
35
+
36
+ **Rationale:** Agents default to high confidence because it sounds authoritative. Miscalibrated confidence inflates the apparent reliability of findings, distorts prioritization, and — in the Transform pipeline — can trigger higher intervention levels than evidence warrants. Confidence must reflect actual evidential strength, not rhetorical force.
37
+
38
+ **Enforcement:** Confidence validation rejects vectors where evidence_diversity exceeds 1 but Layer 2 lists only one source type. Dimensions scored 4 or 5 must have corresponding justification text. A confidence vector with all dimensions at 4+ and a one-sentence justification is flagged for review.
39
+
40
+ ### 4. No synthesis without acknowledging uncertainty
41
+
42
+ **Statement:** Report synthesis sections (Executive Summary, Remediation Roadmap) must reference assumption fragility, confidence limitations, and open disagreements. Clean narratives that omit uncertainty are epistemically dishonest.
43
+
44
+ **Rationale:** Leadership reads the Executive Summary first and may read nothing else. If that summary presents a clean, confident narrative without acknowledging where the analysis is uncertain, leadership makes decisions on incomplete information. Uncertainty acknowledgment is not weakness — it is calibration.
45
+
46
+ **Enforcement:** Report validation checks that Section 1 (Executive Summary) references the unresolved disagreement count and any findings with confidence_vector.overall: low. Section 5 (Remediation Roadmap) must flag recommendations based on low-confidence findings.
47
+
48
+ ### 5. No "clean narrative" without Devil's Advocate response
49
+
50
+ **Statement:** The Phase 5 synthesis report cannot be finalized without the Devil's Advocate critique being produced and explicitly addressed. Every Devil's Advocate disagreement must have a Principal response.
51
+
52
+ **Rationale:** The Devil's Advocate exists to break comforting narratives. If the Devil's Advocate phase is skipped or its output ignored, the audit has a structural blind spot. A report that was never challenged is a report that was never tested.
53
+
54
+ **Enforcement:** Report generation workflow checks for the existence of Devil's Advocate disagreement records (agent_id: devils-advocate). If none exist, the audit is incomplete. If they exist but any has principal_response empty, the report cannot be finalized. The Devil's Advocate panel in the report (Section 4) must not be empty.
55
+
56
+ ## DO
57
+
58
+ - Finding states: "Confidence: medium — Semgrep flagged this pattern but the custom sanitizer at line 45 may handle it. Manual verification needed." (Confidence is calibrated to actual uncertainty.)
59
+
60
+ - Finding observation (Layer 1) reads: "Function `retryRequest()` at `src/http/client.ts:34` calls itself recursively on HTTP 500 responses with no maximum retry count or backoff." (Pure observation — no adjectives, no risk language.)
61
+
62
+ - Executive Summary includes: "4 total disagreements, 1 unresolved. Finding F-02-005 has low confidence (evidence_diversity: 1) and requires runtime validation before remediation prioritization." (Uncertainty is explicit.)
63
+
64
+ - Agent disagrees with tool output: "Semgrep reports SQL injection at line 32, but the parameterized query builder at line 28 prevents this. Downgrading to informational — likely false positive." (Tool output is treated as signal, not truth.)
65
+
66
+ ## DON'T
67
+
68
+ - Finding asserts "Critical SQL injection vulnerability" in Layer 1.
69
+ **Why this is wrong:** "Critical" and "vulnerability" are Layer 6/7 concepts (impact, judgment). Layer 1 must describe what was observed: "String concatenation used in SQL query construction at line 45 with user-supplied input."
70
+
71
+ - Finding has Layer 7 judgment "must_fix" but Layer 6 shows only `severity: high` with no likelihood, time horizon, or blast radius.
72
+ **Why this is wrong:** Judgment without complete risk modeling is a gut reaction. "Must fix" requires knowing not just severity but how likely, how soon, and how widely the impact spreads.
73
+
74
+ - Confidence vector shows evidence_diversity: 4 with justification: "Multiple sources confirmed this."
75
+ **Why this is wrong:** Justification must be specific. Which sources? What types? "Multiple sources" is vague and could mask the fact that all sources are the same type (e.g., four static analysis tools).
76
+
77
+ - Executive Summary reads: "The codebase is in good shape overall with a few areas needing attention."
78
+ **Why this is wrong:** "Good shape overall" is a clean narrative. If there are 2 critical findings and an unresolved disagreement, the summary must say so. Hedging language that minimizes findings is epistemically dishonest.
@@ -0,0 +1,185 @@
1
+ ---
2
+ id: confidence
3
+ name: Confidence Vector
4
+ version: 1.0.0
5
+ used_by:
6
+ - principal-engineer
7
+ - architect
8
+ - data-engineer
9
+ - security-engineer
10
+ - compliance-officer
11
+ - senior-app-engineer
12
+ - sre
13
+ - performance-engineer
14
+ - test-engineer
15
+ - staff-engineer
16
+ - reality-gap-analyst
17
+ - devils-advocate
18
+ ---
19
+
20
+ ## Purpose
21
+
22
+ Confidence in Radar is a vector, not a scalar. A single "high/medium/low" rating hides which aspects of confidence are strong and which are weak. An agent might have strong evidence diversity (four tools flagged the same issue) but weak signal freshness (all evidence is static analysis, no runtime validation). A scalar "medium" hides this — the vector exposes it.
23
+
24
+ The 4-dimension model enables nuanced statements like "High-impact, low-confidence risk — validate before remediation." This is senior-level nuance that scalar confidence destroys.
25
+
26
+ Each dimension is independently scored on a 1-5 scale with anchored descriptions, producing a confidence profile rather than a confidence rating. The `overall` field derives from the dimensions using a conservative formula — the weakest evidence dimension drags the aggregate down, because a finding is only as trustworthy as its weakest evidential link.
27
+
28
+ Transform intervention levels gate on confidence dimensions: a finding with low evidence diversity cannot produce a planning-level remediation, regardless of how high its historical precedent score is. This prevents confident-sounding but poorly-evidenced findings from generating unsafe change plans.
29
+
30
+ ## Template
31
+
32
+ ```markdown
33
+ #### Confidence Vector
34
+
35
+ | Dimension | Score | Anchor |
36
+ |-----------|-------|--------|
37
+ | Evidence diversity | {evidence_diversity} | {evidence_diversity_anchor} |
38
+ | Signal freshness | {signal_freshness} | {signal_freshness_anchor} |
39
+ | Assumption fragility | {assumption_fragility} | {assumption_fragility_anchor} |
40
+ | Historical precedent | {historical_precedent} | {historical_precedent_anchor} |
41
+
42
+ **Overall:** {overall}
43
+ **Justification:** {justification}
44
+ ```
45
+
46
+ ## Field Reference
47
+
48
+ | Field | Type | Required | Description | Valid Values |
49
+ |-------|------|----------|-------------|--------------|
50
+ | `evidence_diversity` | integer | yes | How many independent source types support this finding. Independent means different evidence categories (static analysis, runtime, history, config), not different tools within the same category. | 1-5 (see scale below) |
51
+ | `signal_freshness` | integer | yes | Temporal relevance of the evidence. Static code analysis sees code as-written; runtime data sees code as-running. Fresher signals are more trustworthy for behavioral claims. | 1-5 (see scale below) |
52
+ | `assumption_fragility` | integer | yes | How easily the finding's assumptions could be wrong. Inverse fragility — higher scores mean more robust assumptions. | 1-5 (see scale below) |
53
+ | `historical_precedent` | integer | yes | Whether this pattern is a known failure mode with documented incidents. Known patterns have higher prior probability and better-understood consequences. | 1-5 (see scale below) |
54
+ | `overall` | enum | yes | Conservative aggregate derived from dimension scores. | `low`, `medium`, `high` (see derivation formula) |
55
+ | `justification` | string | yes | Explanation of the dimension scores. At minimum, one sentence per dimension scored 4 or 5. Must explain why the score is warranted, not just restate the anchor description. | Free text, minimum one sentence per high-scoring dimension. |
56
+
57
+ ### Dimension Scales
58
+
59
+ #### Evidence Diversity (1-5)
60
+
61
+ | Score | Anchor | Description |
62
+ |-------|--------|-------------|
63
+ | 1 | Single source | One tool or one manual observation. No corroboration. |
64
+ | 2 | Single source type | Multiple tools of the same type (e.g., two static analyzers). Corroboration within one evidence category. |
65
+ | 3 | Two source types | Two different evidence categories (e.g., static analysis + configuration review). |
66
+ | 4 | Three+ source types | Three or more evidence categories (e.g., static + runtime + history). Strong cross-validation. |
67
+ | 5 | Comprehensive | Multiple independent source types with cross-validation. Evidence converges from orthogonal directions. |
68
+
69
+ #### Signal Freshness (1-5)
70
+
71
+ | Score | Anchor | Description |
72
+ |-------|--------|-------------|
73
+ | 1 | Historical only | Evidence is from past data only (old git history, archived logs). No current evidence. |
74
+ | 2 | Static only | Code as-written analysis. No runtime, deployment, or configuration validation. |
75
+ | 3 | Static + config | Static analysis plus recent configuration or deployment data. |
76
+ | 4 | Includes runtime | Evidence includes recent runtime data (logs, metrics, profiling). |
77
+ | 5 | Live validation | Current runtime validation available. Evidence reflects the system as it runs now. |
78
+
79
+ #### Assumption Fragility (1-5)
80
+
81
+ Higher score = more robust assumptions (inverse fragility).
82
+
83
+ | Score | Anchor | Description |
84
+ |-------|--------|-------------|
85
+ | 1 | Highly fragile | Finding depends on multiple unverified assumptions. Any one being wrong invalidates the finding. |
86
+ | 2 | Fragile | Key assumption is plausible but unverified. Finding may not hold under closer inspection. |
87
+ | 3 | Moderate | Key assumptions are reasonable with partial evidence. Finding likely holds but has uncertainty. |
88
+ | 4 | Robust | Most assumptions are verified or low-risk. Finding is solid with minor uncertainty. |
89
+ | 5 | Self-evident | All assumptions are verified or self-evident from the evidence. Finding is effectively certain given the evidence. |
90
+
91
+ #### Historical Precedent (1-5)
92
+
93
+ | Score | Anchor | Description |
94
+ |-------|--------|-------------|
95
+ | 1 | Novel | No known precedent for this pattern. First-time observation. |
96
+ | 2 | Theoretical | Theoretically possible failure mode discussed in literature but rarely observed. |
97
+ | 3 | Documented | Known anti-pattern in engineering literature or standards (CWE, OWASP). |
98
+ | 4 | Incident-proven | Documented failure mode with real-world incidents. Known to cause production failures. |
99
+ | 5 | Frequent | Frequent failure pattern with extensive incident history across the industry. Well-understood failure mode. |
100
+
101
+ ### Overall Derivation
102
+
103
+ The `overall` confidence is derived conservatively. The formula prioritizes evidential strength (evidence diversity and signal freshness) over pattern recognition (historical precedent).
104
+
105
+ **Formula:**
106
+
107
+ ```
108
+ raw_score = floor(
109
+ min(evidence_diversity, signal_freshness) * 0.6
110
+ + assumption_fragility * 0.3
111
+ + historical_precedent * 0.1
112
+ )
113
+ ```
114
+
115
+ **Mapping:**
116
+ | Raw Score | Overall |
117
+ |-----------|---------|
118
+ | 1-2 | low |
119
+ | 3 | medium |
120
+ | 4-5 | high |
121
+
122
+ **Conservative properties:**
123
+ - The `min()` of evidence diversity and signal freshness means the weaker evidential dimension dominates. A finding with 5 evidence sources but only static analysis (freshness = 2) gets a low evidential contribution.
124
+ - Assumption fragility carries 30% weight because fragile assumptions undermine even well-evidenced findings.
125
+ - Historical precedent carries only 10% weight because "this pattern is known" doesn't compensate for weak evidence in this specific instance.
126
+
127
+ **Override rule:** If any single dimension scores 1, the overall is capped at `low` regardless of other dimension scores. A finding with one catastrophically weak dimension cannot be trusted at any aggregate level.
128
+
129
+ ## Validation Rules
130
+
131
+ 1. **Integer range:** Each dimension must be an integer in the range 1-5. No fractional scores, no scores outside range.
132
+ 2. **All dimensions required:** All four dimensions must be present. Omitting a dimension is a validation error — confidence cannot be partially assessed.
133
+ 3. **Overall derivation:** `overall` must be derived from the formula. Manual override of the overall is not permitted — the formula enforces conservative aggregation.
134
+ 4. **Override enforcement:** If any dimension is 1, overall must be `low`. Any other value is a validation error.
135
+ 5. **Justification required:** `justification` is required and must contain at minimum one sentence per dimension scored 4 or 5. High scores without explanation are the primary vector for confidence inflation.
136
+ 6. **Consistency check — evidence diversity vs others:** `evidence_diversity` of 1 (single source) with `signal_freshness` of 4+ or `assumption_fragility` of 5 is flagged as inconsistent. A single source cannot produce live runtime validation or self-evident assumptions across a broad finding.
137
+ 7. **Immutability:** Confidence vectors are immutable once attached to a submitted finding. If confidence changes, the finding must be reissued with a new version (appending a version suffix to the finding_id, e.g., `F-04-001v2`).
138
+
139
+ ## Examples
140
+
141
+ ### Example 1: High-Confidence Finding — Hardcoded Credentials
142
+
143
+ ```markdown
144
+ #### Confidence Vector
145
+
146
+ | Dimension | Score | Anchor |
147
+ |-----------|-------|--------|
148
+ | Evidence diversity | 4 | Three+ source types |
149
+ | Signal freshness | 2 | Static only |
150
+ | Assumption fragility | 5 | Self-evident |
151
+ | Historical precedent | 5 | Frequent |
152
+
153
+ **Overall:** high
154
+ **Justification:**
155
+ - Evidence diversity (4): Four independent sources — Gitleaks (secrets scan), Semgrep (static analysis), SonarQube (static analysis), and git history (commit archaeology). Three distinct evidence categories (secrets scan, static analysis, commit history).
156
+ - Signal freshness (2): All evidence is from static analysis of the codebase. No runtime confirmation that these values are actually used in production (could be overridden by environment variables). However, for hardcoded credentials, static evidence is sufficient — the credentials are visible regardless of runtime behavior.
157
+ - Assumption fragility (5): The credentials are plaintext string literals assigned to database connection variables. The observation is self-evident from the code — no inference or interpretation required to establish that credentials exist in source code.
158
+ - Historical precedent (5): CWE-798 (Use of Hard-coded Credentials) is among the most documented and frequently observed security failures. Extensive incident history across all industries and technology stacks.
159
+
160
+ Derivation: min(4, 2) * 0.6 + 5 * 0.3 + 5 * 0.1 = 1.2 + 1.5 + 0.5 = 3.2 → floor(3.2) = 3 → medium.
161
+ Override: No dimension is 1. But note the raw formula yields medium despite the finding being very well-supported. This is the conservative bias at work — signal freshness of 2 drags the evidential component down. In practice, the Principal Engineer may note that this specific finding type (plaintext credentials) does not require runtime validation, and the overall is appropriate for the confidence gating thresholds (medium enables Planning intervention level).
162
+ ```
163
+
164
+ ### Example 2: Low-Confidence Finding — Potential Race Condition
165
+
166
+ ```markdown
167
+ #### Confidence Vector
168
+
169
+ | Dimension | Score | Anchor |
170
+ |-----------|-------|--------|
171
+ | Evidence diversity | 1 | Single source |
172
+ | Signal freshness | 2 | Static only |
173
+ | Assumption fragility | 2 | Fragile |
174
+ | Historical precedent | 3 | Documented |
175
+
176
+ **Overall:** low
177
+ **Justification:**
178
+ - Evidence diversity (1): Single source — manual code review of the request handler. No tool flagged this pattern. No runtime data, no concurrency testing results.
179
+ - Signal freshness (2): Static code analysis only. The race condition is inferred from code structure (read-modify-write without locking), not observed in runtime behavior.
180
+ - Assumption fragility (2): The finding assumes concurrent requests to the same endpoint modify the same database row simultaneously. This is plausible for a multi-user system but unverified — the actual request concurrency pattern is unknown without runtime data. If the endpoint is rarely called concurrently, the race condition may never manifest.
181
+ - Historical precedent (3): Read-modify-write race conditions are a documented anti-pattern in concurrent systems (CWE-362). Known in literature and standards, but the specific manifestation depends heavily on deployment context.
182
+
183
+ Derivation: min(1, 2) * 0.6 + 2 * 0.3 + 3 * 0.1 = 0.6 + 0.6 + 0.3 = 1.5 → floor(1.5) = 1 → low.
184
+ Override: evidence_diversity is 1, so overall is capped at low regardless. This finding needs corroborating evidence (concurrency testing, runtime logs showing concurrent access) before it can support any intervention level above Suggesting.
185
+ ```
@@ -0,0 +1,238 @@
1
+ ---
2
+ id: disagreement
3
+ name: Disagreement Record
4
+ version: 1.0.0
5
+ used_by:
6
+ - principal-engineer
7
+ - devils-advocate
8
+ - architect
9
+ - data-engineer
10
+ - security-engineer
11
+ - compliance-officer
12
+ - senior-app-engineer
13
+ - sre
14
+ - performance-engineer
15
+ - test-engineer
16
+ - staff-engineer
17
+ - reality-gap-analyst
18
+ ---
19
+
20
+ ## Purpose
21
+
22
+ A Disagreement is a first-class object in Radar — not a footnote, not a comment, not something to be quietly resolved. When two or more agents reach different conclusions about the same finding, that divergence is signal. It reveals where understanding is weakest relative to risk.
23
+
24
+ Disagreements happen because agents carry different threat models, different time horizons, different failure memories, and different risk tolerances. Radar surfaces these differences through structured records that identify what is disputed, why agents disagree, and how the Principal Engineer resolves the tension.
25
+
26
+ Every disagreement must be explicitly acknowledged, classified by root cause, resolved through a named model, and signed off by the Principal. Silent disappearance of disagreements is a critical anti-pattern — it destroys trust in the entire audit.
27
+
28
+ ## Template
29
+
30
+ ```markdown
31
+ ### {disagreement_id}
32
+
33
+ **Finding:** {finding_id}
34
+ **Epistemic layer disputed:** {epistemic_layer_disputed}
35
+ **Agents involved:** {agents_involved}
36
+ **Status:** {status}
37
+
38
+ ---
39
+
40
+ #### Positions
41
+
42
+ ##### Position: {agent_id_1}
43
+
44
+ **Claim:** {claim_1}
45
+
46
+ **Evidence:**
47
+ {evidence_1}
48
+
49
+ **Assumptions:**
50
+ - {assumption_1a}
51
+
52
+ **Confidence:** {confidence_1}
53
+
54
+ ##### Position: {agent_id_2}
55
+
56
+ **Claim:** {claim_2}
57
+
58
+ **Evidence:**
59
+ {evidence_2}
60
+
61
+ **Assumptions:**
62
+ - {assumption_2a}
63
+
64
+ **Confidence:** {confidence_2}
65
+
66
+ ---
67
+
68
+ #### Root Cause Analysis
69
+
70
+ **Root cause:** {root_cause}
71
+ **Explanation:** {root_cause_explanation}
72
+
73
+ #### Resolution
74
+
75
+ **Resolution model:** {resolution_model_applied}
76
+ **Model application:** {how_model_was_applied}
77
+
78
+ #### Principal Response
79
+
80
+ **Response:** {principal_response}
81
+ **Rationale:** {principal_rationale}
82
+ **Follow-up:** {follow_up_action}
83
+
84
+ ---
85
+
86
+ **Final status:** {status}
87
+ **Resolved by:** {resolver_agent_id}
88
+ **Resolution date:** {resolution_timestamp}
89
+ ```
90
+
91
+ ## Field Reference
92
+
93
+ ### Top-Level Fields
94
+
95
+ | Field | Type | Required | Description | Valid Values |
96
+ |-------|------|----------|-------------|--------------|
97
+ | `disagreement_id` | string | yes | Unique identifier across the entire audit. | Pattern: `D-{NNN}` where NNN is three-digit sequence (001-999). Example: `D-001` |
98
+ | `finding_id` | string | yes | The finding under dispute. | Must match a valid finding ID. Pattern: `F-{DD}-{NNN}`. |
99
+ | `epistemic_layer_disputed` | enum | yes | Which layer of the 7-layer epistemic stack is in dispute. | `observation`, `evidence_source`, `interpretation`, `assumptions`, `risk_statement`, `impact_likelihood`, `judgment` |
100
+ | `agents_involved` | list of strings | yes | Agent IDs participating in the disagreement. | At least 2 agent IDs. Each must match an agent assembly manifest's `id` field. |
101
+ | `status` | enum | yes | Current state of the disagreement. | `open`, `mitigated`, `accepted_risk`, `deferred`, `out_of_scope` |
102
+
103
+ ### Position Fields (Array — one per agent)
104
+
105
+ | Field | Type | Required | Description | Valid Values |
106
+ |-------|------|----------|-------------|--------------|
107
+ | `agent_id` | string | yes | Which agent holds this position. | Must be one of the `agents_involved`. |
108
+ | `claim` | string | yes | What the agent asserts about the disputed layer. | 1-3 sentences. Specific, not vague. |
109
+ | `evidence` | string | yes | Evidence supporting the claim. | Must reference concrete artifacts — file paths, tool signals, metrics, or code snippets. Evidence-free claims are invalid. |
110
+ | `assumptions` | list of strings | yes | Assumptions underlying this position. | At least one assumption. Each must be a concrete, testable statement. |
111
+ | `confidence` | enum | yes | Agent's confidence in this position. | `high`, `medium`, `low` |
112
+
113
+ ### Root Cause Fields
114
+
115
+ | Field | Type | Required | Description | Valid Values |
116
+ |-------|------|----------|-------------|--------------|
117
+ | `root_cause` | enum | yes | Why the agents disagree. From the closed taxonomy. | `threat_model_mismatch`, `time_horizon_mismatch`, `evidence_availability_mismatch`, `risk_tolerance_mismatch`, `domain_boundary_mismatch`, `optimism_pessimism_bias`, `tool_trust_bias` |
118
+ | `root_cause_explanation` | string | yes | How this root cause manifests in this specific disagreement. | 1-3 sentences connecting the taxonomy entry to the specific positions. |
119
+
120
+ ### Resolution Fields
121
+
122
+ | Field | Type | Required | Description | Valid Values |
123
+ |-------|------|----------|-------------|--------------|
124
+ | `resolution_model_applied` | enum | conditional | Which resolution model was used to resolve the disagreement. Required when status is not `open`. | `evidence_dominance`, `risk_asymmetry`, `reversibility`, `time_to_failure`, `blast_radius` |
125
+ | `how_model_was_applied` | string | conditional | How the chosen model was applied to this specific case. Required when resolution_model_applied is present. | 2-4 sentences describing the reasoning. |
126
+
127
+ ### Principal Response Fields
128
+
129
+ | Field | Type | Required | Description | Valid Values |
130
+ |-------|------|----------|-------------|--------------|
131
+ | `principal_response` | string | **always** | The Principal Engineer's explicit response. Silence is never valid. | 2-5 sentences. Must acknowledge the disagreement, state a position, and provide rationale. Null or empty is a validation error. |
132
+ | `principal_rationale` | string | **always** | Why the Principal reached this conclusion. | Must reference evidence, resolution model, or explicit reasoning. |
133
+ | `follow_up_action` | string | no | Any follow-up required after resolution. | Specific action (e.g., "Validate assumption X with runtime data") or "None required". |
134
+
135
+ ### Resolution Metadata
136
+
137
+ | Field | Type | Required | Description | Valid Values |
138
+ |-------|------|----------|-------------|--------------|
139
+ | `resolver_agent_id` | string | conditional | Agent that resolved the disagreement. Required when status is not `open`. | Typically `principal-engineer`. |
140
+ | `resolution_timestamp` | string | conditional | When the disagreement was resolved. Required when status is not `open`. | ISO 8601 format or audit-relative timestamp. |
141
+
142
+ ## Validation Rules
143
+
144
+ 1. **Unique ID:** `disagreement_id` must be unique across the audit. No two disagreements may share an ID.
145
+ 2. **Valid finding reference:** `finding_id` must reference an existing finding in the audit's finding set.
146
+ 3. **Valid epistemic layer:** `epistemic_layer_disputed` must be one of the 7 enumerated layers.
147
+ 4. **Minimum positions:** `positions` array must have at least 2 entries. A disagreement requires at least two perspectives — a single position is not a disagreement.
148
+ 5. **Evidence-backed positions:** Every position must include evidence referencing concrete artifacts. A position with `evidence: "I believe this is true"` is invalid.
149
+ 6. **Closed root cause taxonomy:** `root_cause` must be from the 7-entry closed taxonomy. No ad-hoc categories. If the root cause doesn't fit, the disagreement classification needs refinement, not a new category.
150
+ 7. **Resolution model required for resolved:** `resolution_model_applied` is required when `status` is any value other than `open`. You cannot resolve a disagreement without naming the reasoning model.
151
+ 8. **Principal response mandatory:** `principal_response` is ALWAYS required regardless of status. An open disagreement still requires the Principal to acknowledge it. Null, empty string, or omission is a validation error.
152
+ 9. **Forward-only status transitions:** Status transitions must move forward: `open` -> {`mitigated`, `accepted_risk`, `deferred`, `out_of_scope`}. Resolved disagreements cannot revert to `open`.
153
+ 10. **Anti-pattern detection:** The following patterns are validation failures:
154
+ - **Auto-resolution:** Both positions marked as "resolved" without Principal response.
155
+ - **Averaging:** Principal response that averages the positions (e.g., "severity is between high and medium").
156
+ - **Forced consensus:** Resolution that claims agents now agree when positions have not changed.
157
+ - **Hidden disagreement:** Disagreement referenced in a finding but no corresponding disagreement record exists.
158
+ - **Devil's Advocate dismissal:** Disagreement from devils-advocate resolved as `out_of_scope` without substantive rationale.
159
+
160
+ ## Examples
161
+
162
+ ### Example: Security vs Application Engineer — SQL Injection Risk
163
+
164
+ ```markdown
165
+ ### D-001
166
+
167
+ **Finding:** F-04-007
168
+ **Epistemic layer disputed:** interpretation
169
+ **Agents involved:** security-engineer, senior-app-engineer
170
+ **Status:** mitigated
171
+
172
+ ---
173
+
174
+ #### Positions
175
+
176
+ ##### Position: security-engineer
177
+
178
+ **Claim:** The dynamic query construction at `src/api/users.py:45` using string concatenation is a SQL injection vector. User-supplied `sort_by` parameter is interpolated directly into the ORDER BY clause without parameterization or allowlist validation.
179
+
180
+ **Evidence:**
181
+ Semgrep rule `python.security.sql-injection.string-concat-query` flags `src/api/users.py:45`. The code reads:
182
+ ```python
183
+ query = f"SELECT * FROM users ORDER BY {request.args['sort_by']}"
184
+ ```
185
+ No parameterization. No sanitization function call between request input and query construction.
186
+
187
+ **Assumptions:**
188
+ - The `sort_by` parameter is reachable from external HTTP requests (not internal-only).
189
+ - No middleware or framework layer sanitizes the parameter before it reaches this code.
190
+
191
+ **Confidence:** high
192
+
193
+ ##### Position: senior-app-engineer
194
+
195
+ **Claim:** The `sort_by` parameter passes through the `ValidatedRequest` middleware at `src/middleware/validation.py:28`, which restricts values to a hardcoded allowlist of column names (`["name", "email", "created_at", "updated_at"]`). String concatenation is used, but the input space is constrained to known-safe values.
196
+
197
+ **Evidence:**
198
+ File `src/middleware/validation.py:28-35` shows:
199
+ ```python
200
+ ALLOWED_SORT_FIELDS = ["name", "email", "created_at", "updated_at"]
201
+ if request.args.get('sort_by') not in ALLOWED_SORT_FIELDS:
202
+ raise ValidationError("Invalid sort field")
203
+ ```
204
+ Route `src/api/routes.py:12` applies `ValidatedRequest` middleware to the `/users` endpoint.
205
+
206
+ **Assumptions:**
207
+ - The middleware is correctly applied to this route and cannot be bypassed.
208
+ - The allowlist is maintained as new columns are added.
209
+ - No other code path reaches `users.py:45` without passing through the middleware.
210
+
211
+ **Confidence:** medium
212
+
213
+ ---
214
+
215
+ #### Root Cause Analysis
216
+
217
+ **Root cause:** evidence_availability_mismatch
218
+ **Explanation:** The security engineer's analysis focused on the query construction site in isolation (the direct code path from input to SQL). The application engineer had additional context about the middleware layer that restricts the input space. Both analyses are correct within their evidence scope — the disagreement arises because one agent had visibility into the defense layer and the other did not.
219
+
220
+ #### Resolution
221
+
222
+ **Resolution model:** evidence_dominance
223
+ **Model application:** The application engineer's evidence (middleware allowlist) directly addresses the security engineer's concern (unrestricted input). The middleware evidence is independently verifiable — the route configuration and validation logic are concrete code. However, the security engineer's concern about defense-in-depth remains valid: relying solely on middleware for SQL injection prevention is fragile. The finding should be downgraded from "injection vulnerability" to "defense-in-depth gap" with reduced severity.
224
+
225
+ #### Principal Response
226
+
227
+ **Response:** The SQL injection claim is mitigated by the allowlist middleware, but the underlying pattern (string concatenation in SQL construction) is still a maintenance risk. If a future developer adds a route to this handler without the middleware, or adds a new sort field without updating the allowlist, the injection vector reopens. The finding should be reclassified from critical (active injection) to medium (defense-in-depth gap) with a recommendation to use parameterized queries regardless of upstream validation.
228
+
229
+ **Rationale:** Evidence dominance favors the application engineer's position — the middleware demonstrably constrains the input. But the security engineer's architectural concern (string concatenation creates a latent vulnerability) is valid under the time-to-failure model. The compromise: acknowledge the current mitigation, flag the architectural weakness, and recommend parameterized queries as the durable fix.
230
+
231
+ **Follow-up:** Verify that all routes reaching `users.py:45` pass through `ValidatedRequest` middleware. Check for any route that bypasses middleware (e.g., internal API, admin endpoints, test harnesses).
232
+
233
+ ---
234
+
235
+ **Final status:** mitigated
236
+ **Resolved by:** principal-engineer
237
+ **Resolution date:** 2026-02-15T14:30:00Z
238
+ ```