@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,539 @@
1
+ ---
2
+ id: syft
3
+ name: Syft
4
+ type: sbom
5
+ domains_fed: ["04", "05"]
6
+ install_required: true
7
+ install_command: "See Installation section — curl, brew, or Docker"
8
+ ---
9
+
10
+ ## Purpose
11
+
12
+ SBOM (Software Bill of Materials) generation tool from Anchore. Catalogs all packages, dependencies, and licenses present in a codebase or container image — producing a complete component inventory. Feeds Security (04) and Compliance (05) domains.
13
+
14
+ Syft is an **inventory tool**, not a vulnerability scanner. It enumerates what is installed: package names, versions, types, file locations, and license identifiers. It does not assess whether any component is vulnerable. That assessment is the responsibility of Grype (a separate tool) and Radar agents, both of which consume Syft SBOM output for downstream analysis.
15
+
16
+ Syft detects packages from: language package managers (npm, pip, Maven, Go modules, RubyGems, NuGet, Cargo), OS package managers (dpkg, rpm, apk), container image layers, and binary analysis (CPE extraction from compiled executables).
17
+
18
+ **Signals are component records, not vulnerability findings.** Syft produces inventory evidence that agents interpret. Severity is license-driven; confidence reflects the determinism of package detection, not exploit likelihood.
19
+
20
+ ## Configuration
21
+
22
+ Syft supports configuration via `.syft.yaml` at the repository root and command-line flags:
23
+
24
+ **Configuration File** (`.syft.yaml`):
25
+ ```yaml
26
+ output:
27
+ - "syft-json"
28
+ file:
29
+ metadata:
30
+ digests:
31
+ - "sha256"
32
+ catalogers:
33
+ enabled:
34
+ - "python-package-cataloger"
35
+ - "javascript-package-cataloger"
36
+ - "go-module-binary-cataloger"
37
+ - "java-pom-cataloger"
38
+ - "dpkg-db-cataloger"
39
+ - "rpm-db-cataloger"
40
+ disabled: []
41
+ log:
42
+ level: "warn"
43
+ ```
44
+
45
+ **Key Configuration Options**:
46
+ - **Output Format**: `syft-json` (native, richest), `spdx-json` (SPDX 2.3 standard), `cyclonedx-json` (CycloneDX 1.4 standard), `table` (human-readable). Radar prefers `syft-json` for normalization; `spdx-json` or `cyclonedx-json` for compliance deliverables.
47
+ - **Cataloger Selection**: Individual catalogers can be enabled or disabled to scope the scan. Disable catalogers irrelevant to the target stack to reduce noise and runtime.
48
+ - **Scope**: `--scope squashed` (default) merges layers and deduplicates; `--scope all-layers` preserves per-layer package records (container image scanning only).
49
+ - **Exclude Patterns**: `--exclude ./vendor --exclude ./node_modules/.cache` to skip vendored or generated directories.
50
+
51
+ **Cataloger Reference** (common catalogers relevant to Radar scans):
52
+
53
+ | Cataloger | Detects |
54
+ |-----------|---------|
55
+ | `javascript-package-cataloger` | npm, yarn (package.json, lock files) |
56
+ | `python-package-cataloger` | pip, poetry, pipenv (site-packages, requirements, pyproject.toml) |
57
+ | `go-module-binary-cataloger` | Go module metadata embedded in compiled binaries |
58
+ | `go-module-file-cataloger` | go.mod, go.sum |
59
+ | `java-pom-cataloger` | Maven pom.xml, JAR/WAR manifests |
60
+ | `dotnet-deps-cataloger` | NuGet .deps.json, packages.lock.json |
61
+ | `ruby-gemspec-cataloger` | Gemfile.lock, .gemspec |
62
+ | `rust-cargo-lock-cataloger` | Cargo.lock |
63
+ | `dpkg-db-cataloger` | Debian/Ubuntu system packages (/var/lib/dpkg/status) |
64
+ | `rpm-db-cataloger` | RHEL/CentOS system packages (/var/lib/rpm) |
65
+
66
+ ## Execution
67
+
68
+ ### Installation Options
69
+
70
+ **1. Installation Script (Linux/macOS — recommended for local use):**
71
+ ```bash
72
+ curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
73
+ ```
74
+
75
+ **2. Homebrew (macOS/Linux):**
76
+ ```bash
77
+ brew install syft
78
+ ```
79
+
80
+ **3. Docker (all platforms — recommended for CI/CD and consistency):**
81
+ ```bash
82
+ docker pull anchore/syft:latest
83
+ ```
84
+
85
+ **4. Binary Download (all platforms):**
86
+ Download from [GitHub Releases](https://github.com/anchore/syft/releases) and place in `$PATH`.
87
+
88
+ **Verify Installation:**
89
+ ```bash
90
+ syft version
91
+ ```
92
+
93
+ ### Primary Execution Commands
94
+
95
+ **Filesystem Scan** (Radar primary use case — native JSON format):
96
+ ```bash
97
+ syft scan {target_path} \
98
+ --output syft-json={output_dir}/syft-sbom.json \
99
+ --exclude ./vendor \
100
+ --exclude ./node_modules/.cache
101
+ ```
102
+
103
+ **Docker Variant**:
104
+ ```bash
105
+ docker run --rm \
106
+ -v {target_path}:/target \
107
+ anchore/syft:latest \
108
+ scan /target \
109
+ --output syft-json=/target/.radar/signals/syft-sbom.json \
110
+ --exclude /target/vendor
111
+ ```
112
+
113
+ **SPDX Format Output (for compliance deliverables)**:
114
+ ```bash
115
+ syft scan {target_path} \
116
+ --output spdx-json={output_dir}/syft-sbom.spdx.json
117
+ ```
118
+
119
+ **CycloneDX Format Output (for Grype or other consumers)**:
120
+ ```bash
121
+ syft scan {target_path} \
122
+ --output cyclonedx-json={output_dir}/syft-sbom.cdx.json
123
+ ```
124
+
125
+ **Container Image Scan**:
126
+ ```bash
127
+ syft scan {image_name}:{tag} \
128
+ --output syft-json={output_dir}/syft-image-sbom.json \
129
+ --scope squashed
130
+ ```
131
+
132
+ **Multiple Output Formats Simultaneously**:
133
+ ```bash
134
+ syft scan {target_path} \
135
+ --output syft-json={output_dir}/syft-sbom.json \
136
+ --output spdx-json={output_dir}/syft-sbom.spdx.json
137
+ ```
138
+
139
+ ### Execution Parameters
140
+
141
+ | Parameter | Purpose | Values | Default |
142
+ |-----------|---------|--------|---------|
143
+ | `--output` | Output format and destination | `{format}={path}` (repeatable) | table to stdout |
144
+ | `--scope` | Layer handling for container images | `squashed`, `all-layers` | squashed |
145
+ | `--exclude` | Glob patterns to skip | path glob | none |
146
+ | `--select-catalogers` | Override cataloger set | cataloger name list | all applicable |
147
+ | `--config` | Config file path | file path | `.syft.yaml` |
148
+ | `--quiet` | Suppress progress output | boolean flag | false |
149
+ | `--verbose` | Increase log verbosity | boolean flag | false |
150
+ | `--from` | Source override (oci-dir, docker, etc.) | scheme string | auto-detect |
151
+
152
+ ### Runtime Characteristics
153
+
154
+ - **Filesystem Scans**: 5-30 seconds for typical application repositories. Scales with number of packages, not lines of code.
155
+ - **Container Image Scans**: 10-60 seconds depending on image size and layer count.
156
+ - **No Network Required**: Syft operates entirely offline — no vulnerability database downloads. All detection is local.
157
+ - **Resource Usage**: Low CPU and memory. Disk I/O proportional to node_modules or similar large dependency trees.
158
+ - **Idempotent**: Same source produces identical output (deterministic catalog).
159
+
160
+ ## Output Format
161
+
162
+ Syft produces structured JSON (syft-json schema) with package entries as the primary payload:
163
+
164
+ ```json
165
+ {
166
+ "schema": {
167
+ "version": "16.0.9",
168
+ "url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-16.0.9.json"
169
+ },
170
+ "artifacts": [
171
+ {
172
+ "id": "8f3a2c1d4e9b7f05",
173
+ "name": "express",
174
+ "version": "4.18.2",
175
+ "type": "npm",
176
+ "foundBy": "javascript-package-cataloger",
177
+ "locations": [
178
+ {
179
+ "path": "/app/node_modules/express/package.json",
180
+ "accessPath": "/app/node_modules/express/package.json"
181
+ }
182
+ ],
183
+ "licenses": [
184
+ {
185
+ "value": "MIT",
186
+ "spdxExpression": "MIT",
187
+ "type": "declared",
188
+ "urls": [],
189
+ "locations": [
190
+ {
191
+ "path": "/app/node_modules/express/package.json"
192
+ }
193
+ ]
194
+ }
195
+ ],
196
+ "language": "javascript",
197
+ "cpes": [
198
+ "cpe:2.3:a:expressjs:express:4.18.2:*:*:*:*:node.js:*:*"
199
+ ],
200
+ "purl": "pkg:npm/express@4.18.2",
201
+ "metadataType": "NpmPackage",
202
+ "metadata": {
203
+ "name": "express",
204
+ "version": "4.18.2",
205
+ "author": "TJ Holowaychuk <tj@vision-media.ca>",
206
+ "licenses": ["MIT"],
207
+ "homepage": "https://expressjs.com/",
208
+ "description": "Fast, unopinionated, minimalist web framework",
209
+ "files": []
210
+ }
211
+ },
212
+ {
213
+ "id": "2b7e4f9a0c3d8e16",
214
+ "name": "lodash",
215
+ "version": "4.17.21",
216
+ "type": "npm",
217
+ "foundBy": "javascript-package-cataloger",
218
+ "locations": [
219
+ {
220
+ "path": "/app/node_modules/lodash/package.json",
221
+ "accessPath": "/app/node_modules/lodash/package.json"
222
+ }
223
+ ],
224
+ "licenses": [
225
+ {
226
+ "value": "MIT",
227
+ "spdxExpression": "MIT",
228
+ "type": "declared",
229
+ "urls": [],
230
+ "locations": [
231
+ {
232
+ "path": "/app/node_modules/lodash/package.json"
233
+ }
234
+ ]
235
+ }
236
+ ],
237
+ "language": "javascript",
238
+ "cpes": [
239
+ "cpe:2.3:a:lodash:lodash:4.17.21:*:*:*:*:node.js:*:*"
240
+ ],
241
+ "purl": "pkg:npm/lodash@4.17.21",
242
+ "metadataType": "NpmPackage",
243
+ "metadata": {
244
+ "name": "lodash",
245
+ "version": "4.17.21",
246
+ "author": "John-David Dalton <john.david.dalton@gmail.com>",
247
+ "licenses": ["MIT"],
248
+ "homepage": "https://lodash.com/",
249
+ "description": "Lodash modular utilities.",
250
+ "files": []
251
+ }
252
+ },
253
+ {
254
+ "id": "5c9f1e3a7b2d0f48",
255
+ "name": "requests",
256
+ "version": "2.31.0",
257
+ "type": "python",
258
+ "foundBy": "python-package-cataloger",
259
+ "locations": [
260
+ {
261
+ "path": "/usr/lib/python3/dist-packages/requests-2.31.0.dist-info/METADATA",
262
+ "accessPath": "/usr/lib/python3/dist-packages/requests-2.31.0.dist-info/METADATA"
263
+ }
264
+ ],
265
+ "licenses": [
266
+ {
267
+ "value": "Apache-2.0",
268
+ "spdxExpression": "Apache-2.0",
269
+ "type": "declared",
270
+ "urls": [],
271
+ "locations": [
272
+ {
273
+ "path": "/usr/lib/python3/dist-packages/requests-2.31.0.dist-info/METADATA"
274
+ }
275
+ ]
276
+ }
277
+ ],
278
+ "language": "python",
279
+ "cpes": [
280
+ "cpe:2.3:a:python-requests:requests:2.31.0:*:*:*:*:python:*:*"
281
+ ],
282
+ "purl": "pkg:pypi/requests@2.31.0",
283
+ "metadataType": "PythonPackage",
284
+ "metadata": {
285
+ "name": "requests",
286
+ "version": "2.31.0",
287
+ "author": "Kenneth Reitz",
288
+ "license": "Apache 2.0",
289
+ "sitePackagesRootPath": "/usr/lib/python3/dist-packages"
290
+ }
291
+ },
292
+ {
293
+ "id": "9a0d6b4c2e8f1730",
294
+ "name": "org.springframework:spring-core",
295
+ "version": "5.3.27",
296
+ "type": "java-archive",
297
+ "foundBy": "java-pom-cataloger",
298
+ "locations": [
299
+ {
300
+ "path": "/app/pom.xml",
301
+ "accessPath": "/app/pom.xml"
302
+ }
303
+ ],
304
+ "licenses": [
305
+ {
306
+ "value": "Apache-2.0",
307
+ "spdxExpression": "Apache-2.0",
308
+ "type": "declared",
309
+ "urls": ["https://www.apache.org/licenses/LICENSE-2.0"],
310
+ "locations": [
311
+ {
312
+ "path": "/app/pom.xml"
313
+ }
314
+ ]
315
+ }
316
+ ],
317
+ "language": "java",
318
+ "cpes": [
319
+ "cpe:2.3:a:springsource:spring_framework:5.3.27:*:*:*:*:*:*:*"
320
+ ],
321
+ "purl": "pkg:maven/org.springframework/spring-core@5.3.27",
322
+ "metadataType": "JavaArchive",
323
+ "metadata": {
324
+ "virtualPath": "org.springframework:spring-core",
325
+ "pomArtifactID": "spring-core",
326
+ "pomGroupID": "org.springframework",
327
+ "manifestName": "",
328
+ "archiveDigests": []
329
+ }
330
+ },
331
+ {
332
+ "id": "e3f7c2a9b5d0841c",
333
+ "name": "gpl-licensed-utility",
334
+ "version": "2.1.0",
335
+ "type": "npm",
336
+ "foundBy": "javascript-package-cataloger",
337
+ "locations": [
338
+ {
339
+ "path": "/app/node_modules/gpl-licensed-utility/package.json",
340
+ "accessPath": "/app/node_modules/gpl-licensed-utility/package.json"
341
+ }
342
+ ],
343
+ "licenses": [
344
+ {
345
+ "value": "GPL-3.0-or-later",
346
+ "spdxExpression": "GPL-3.0-or-later",
347
+ "type": "declared",
348
+ "urls": [],
349
+ "locations": [
350
+ {
351
+ "path": "/app/node_modules/gpl-licensed-utility/package.json"
352
+ }
353
+ ]
354
+ }
355
+ ],
356
+ "language": "javascript",
357
+ "cpes": [],
358
+ "purl": "pkg:npm/gpl-licensed-utility@2.1.0",
359
+ "metadataType": "NpmPackage",
360
+ "metadata": {
361
+ "name": "gpl-licensed-utility",
362
+ "version": "2.1.0",
363
+ "licenses": ["GPL-3.0-or-later"],
364
+ "description": "Utility library distributed under GPL-3.0",
365
+ "files": []
366
+ }
367
+ }
368
+ ],
369
+ "artifactRelationships": [
370
+ {
371
+ "parent": "8f3a2c1d4e9b7f05",
372
+ "child": "2b7e4f9a0c3d8e16",
373
+ "type": "dependency-of"
374
+ }
375
+ ],
376
+ "source": {
377
+ "type": "directory",
378
+ "target": {
379
+ "path": "/app"
380
+ }
381
+ },
382
+ "distro": {
383
+ "name": "ubuntu",
384
+ "version": "22.04",
385
+ "idLike": ["debian"]
386
+ }
387
+ }
388
+ ```
389
+
390
+ **Key Output Fields**:
391
+ - `schema.version`: Syft JSON schema version — used to detect breaking changes between Syft releases
392
+ - `artifacts[]`: Array of discovered package/component records — the primary payload
393
+ - `id`: Syft-internal stable identifier for the artifact (used in relationship graph)
394
+ - `name`: Package name as declared by the package manager
395
+ - `version`: Installed version string
396
+ - `type`: Package ecosystem (`npm`, `python`, `java-archive`, `deb`, `rpm`, `go-module`, etc.)
397
+ - `foundBy`: Cataloger that discovered the package — indicates detection method and confidence
398
+ - `locations[]`: File paths where the package was discovered
399
+ - `licenses[]`: License declarations with SPDX expression where parseable
400
+ - `language`: Programming language ecosystem (`javascript`, `python`, `java`, `go`, etc.)
401
+ - `cpes[]`: CPE identifiers (used by Grype for vulnerability matching)
402
+ - `purl`: Package URL (standard package identifier, used by Grype and SPDX consumers)
403
+ - `metadata`: Package-type-specific metadata (author, description, archive digests, etc.)
404
+ - `artifactRelationships[]`: Dependency graph edges between artifacts (parent/child, dependency-of)
405
+ - `source`: Scanned target descriptor (directory path, image reference, etc.)
406
+ - `distro`: OS distribution detected (relevant for OS package catalogers)
407
+
408
+ ## Normalization
409
+
410
+ Syft signals are **component inventory records**, not vulnerability findings. Normalization maps package attributes to Radar signal fields using license risk as the primary severity driver.
411
+
412
+ | Syft Field | Radar Signal Field | Transformation Logic |
413
+ |------------|--------------------|----------------------|
414
+ | Derived (sequential) | `signal_id` | Pattern: `S-SYF-{NNN}` (one signal per artifact) |
415
+ | Fixed value | `source_tool` | Always "syft" |
416
+ | `artifacts[].id` | `source_rule` | Syft artifact ID — stable deduplication key |
417
+ | `artifacts[].locations[0].path` | `file_path` | First discovered location path |
418
+ | `artifacts[].name` + `artifacts[].version` + `artifacts[].type` | `context` | Format: "{name}@{version} ({type}) — {license_spdx_expression}" |
419
+ | Derived from `licenses[].spdxExpression` | `severity` | License risk mapping (see Severity Mapping below) |
420
+ | Derived from `foundBy` | `confidence_estimate` | Detection method reliability (see Confidence Mapping below) |
421
+ | Derived from `artifactRelationships` depth | `blast_radius` | Dependency depth mapping (see Blast Radius below) |
422
+ | Derived from license + package type | `domain_relevance` | License issues → ["05"], dependency tracking → ["04", "05"] |
423
+
424
+ ### Severity Mapping (License-Driven)
425
+
426
+ Syft severity is determined by license risk, not by vulnerability score. This is the fundamental difference from scanner tool normalization.
427
+
428
+ | License Category | Examples | Severity |
429
+ |-----------------|----------|----------|
430
+ | Strong copyleft | GPL-2.0, GPL-3.0, AGPL-3.0 | `high` — potential license compliance obligation |
431
+ | Weak copyleft | LGPL-2.1, LGPL-3.0, MPL-2.0, EUPL-1.2 | `medium` — copyleft with limited scope |
432
+ | Permissive | MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC | `low` — minimal obligation, attribution only |
433
+ | Unknown / missing | (no license declared, NOASSERTION) | `medium` — requires legal review; cannot confirm permissive |
434
+ | Proprietary | Proprietary, Commercial, UNLICENSED | `high` — requires explicit rights verification |
435
+ | Public domain | Unlicense, CC0-1.0 | `informational` — no restriction |
436
+
437
+ **Multiple licenses:** Use the highest-risk license in the set.
438
+
439
+ **No license field:** Treat as `medium` (unknown). Do not assume permissive.
440
+
441
+ ### Confidence Mapping (Detection Method)
442
+
443
+ Confidence reflects how certain Syft is that the package record is accurate — not how certain a vulnerability assessment is.
444
+
445
+ | `foundBy` Value | Confidence | Rationale |
446
+ |-----------------|------------|-----------|
447
+ | `javascript-package-cataloger` | `high` | Lock file or package.json — declarative and exact |
448
+ | `python-package-cataloger` | `high` | dist-info/egg-info — installed package metadata |
449
+ | `go-module-file-cataloger` | `high` | go.sum — cryptographically verified |
450
+ | `java-pom-cataloger` | `high` | pom.xml — declarative dependency manifest |
451
+ | `rust-cargo-lock-cataloger` | `high` | Cargo.lock — exact resolved versions |
452
+ | `dpkg-db-cataloger` | `high` | System package database — authoritative |
453
+ | `rpm-db-cataloger` | `high` | RPM database — authoritative |
454
+ | `go-module-binary-cataloger` | `medium` | Binary analysis — reliable but version may lack patch segment |
455
+ | `java-archive-cataloger` | `medium` | JAR manifest analysis — may lack pom metadata |
456
+ | `binary-cataloger` | `low` | Heuristic binary matching — CPE-based, may misidentify |
457
+
458
+ ### Blast Radius Mapping (Dependency Depth)
459
+
460
+ Derive blast radius from `artifactRelationships` graph depth and package location:
461
+
462
+ | Condition | Blast Radius | Rationale |
463
+ |-----------|--------------|-----------|
464
+ | No parent in relationship graph (direct dependency) | `localized` | Single declared dependency; one change to update |
465
+ | One level of indirection (transitive, depth 2) | `moderate` | Removing requires upstream package change |
466
+ | Two or more levels of indirection (depth 3+) | `moderate` | Deep transitive; harder to surface and remediate |
467
+ | Package appears as parent to many children (hub package) | `widespread` | Changing version impacts many downstream packages |
468
+ | Relationship data unavailable | `localized` | Conservative default |
469
+
470
+ **Hub Package Heuristic**: If an artifact appears as `parent` in 5 or more `artifactRelationships` entries, classify as `widespread` regardless of depth.
471
+
472
+ ### Domain Relevance Assignment
473
+
474
+ | Signal Condition | Domain Relevance |
475
+ |-----------------|-----------------|
476
+ | License is copyleft or unknown | `["05"]` (Compliance — license obligation tracking) |
477
+ | License is permissive | `["04", "05"]` (Security inventory + Compliance attribution) |
478
+ | OS package (type: deb, rpm, apk) | `["04", "05"]` (Attack surface + compliance baseline) |
479
+ | No license declared | `["05"]` (Compliance — missing license is a compliance gap) |
480
+ | Proprietary license | `["05"]` (Compliance — rights verification required) |
481
+
482
+ ### Deduplication Strategy
483
+
484
+ - **Key**: `{artifacts[].name}:{artifacts[].version}:{artifacts[].type}`
485
+ - **Same package in multiple locations** (e.g., hoisted vs nested in node_modules): Single signal, merge `locations[]` array.
486
+ - **Syft artifact ID** (`artifacts[].id`) is stable across runs for the same package — use as dedup key when available.
487
+
488
+ ### Special Cases
489
+
490
+ - **No license declared**: Do not emit `severity: "informational"`. Emit `severity: "medium"` and flag in `context` as "no license declared — legal review required."
491
+ - **NOASSERTION / LicenseRef-scancode-unknown**: Treat same as no license — `severity: "medium"`.
492
+ - **Multi-license packages** (e.g., `MIT OR GPL-3.0`): Apply the highest-risk license to severity. Record full expression in `context`.
493
+ - **OS packages from distro catalogers**: These represent the runtime environment, not application dependencies. Still emit signals; agents use these to assess attack surface exposure (domain 04).
494
+ - **CPE present but purl absent**: Acceptable — CPE enables Grype matching. Note in `context`.
495
+ - **Grype integration note**: Syft SBOM output (cyclonedx-json or syft-json) is passed directly to Grype for vulnerability enrichment. Radar agents should correlate Syft `purl` values with Grype findings using `PkgIdentifier.PURL` for cross-tool signal linkage.
496
+
497
+ ## Limitations
498
+
499
+ ### Cannot Detect
500
+
501
+ 1. **Unlisted Dependencies Loaded at Runtime**: Packages fetched dynamically (via `require()` with a computed string, `importlib.import_module()` with a variable, or `dlopen()`), plugin systems that load packages by name from configuration, and lazy-loading patterns that bypass static manifest declaration are invisible to Syft catalogers.
502
+
503
+ 2. **Dependencies Installed Outside Package Manager**: Libraries installed via system commands, custom build scripts, or `make install` that do not register with dpkg, rpm, or a language package manager leave no metadata for Syft to discover.
504
+
505
+ 3. **Embedded or Vendored Source Code**: Third-party code copied directly into the repository as source files (not as a package) is not detected. There is no manifest or dist-info; Syft sees only files, not a package record.
506
+
507
+ 4. **Obfuscated or Compressed Binaries**: Pre-built binary blobs where version and provenance information has been stripped or obfuscated cannot be matched to known package identifiers, even by the binary cataloger.
508
+
509
+ 5. **Custom Internal Packages Without Standard Metadata**: Internally developed libraries distributed as tarballs or copied directories without a valid `package.json`, `setup.py`, `pom.xml`, or equivalent manifest are not cataloged.
510
+
511
+ 6. **License Text Not in Standard Locations**: Licenses embedded only in source file headers, custom license files with non-standard names, or licenses inherited from parent projects without local declaration may not be detected or may surface as NOASSERTION.
512
+
513
+ 7. **Runtime Configuration of License Terms**: Some packages ship with multiple license options (dual-licensed) where the applicable license is selected at build or deploy time. Syft catalogs the declared options but cannot determine which license is in effect for a given deployment.
514
+
515
+ ### Known False Positives
516
+
517
+ 1. **Development and Test Dependencies Treated as Production Risk**: Syft catalogs all packages regardless of whether they appear in `devDependencies`, test fixtures, or build tooling. License risk flags on test-only packages overstate the compliance exposure for production deployments.
518
+
519
+ 2. **Multiple Copies of the Same Package at Different Versions**: Node.js dependency hoisting failures produce multiple `node_modules` subtrees with different versions of the same library. Syft emits a record for each, creating duplicate-looking signals that represent the same logical dependency.
520
+
521
+ 3. **OS Package Duplicates from Layer Analysis**: When scanning container images in `all-layers` mode, packages installed and then modified or replaced in later layers appear multiple times. Use `squashed` scope to collapse layer duplicates.
522
+
523
+ 4. **CPE Misidentification by Binary Cataloger**: The binary cataloger uses heuristic pattern matching against CPE dictionaries. Version strings embedded in binaries may match multiple CPE entries, producing false package identity attributions for compiled artifacts.
524
+
525
+ 5. **Vendored Copies Reporting Stale Versions**: Some projects vendor dependencies and patch them locally without updating the version string in the manifest. Syft catalogs the declared version (which may be several patches behind), producing records that Grype will flag as vulnerable even though the patch is already applied in the vendored copy.
526
+
527
+ ### Known False Negatives
528
+
529
+ 1. **Transitive Dependencies Not Resolved in Manifest**: Lock files for some ecosystems (particularly pip without a pinned lockfile, or Maven without a dependency:tree export) do not include all transitive dependencies. Syft catalogs only what is resolvable from present manifests — unresolved transitive packages are absent from the SBOM.
530
+
531
+ 2. **Packages Installed After Image Build (Sideloaded)**: Dependencies installed into a running container at runtime (e.g., via a startup script or init container that calls `apt-get install` or `pip install`) are not present in the image layers Syft scans and will not appear in the SBOM.
532
+
533
+ 3. **Go Binaries Built Without Module Information**: Go binaries compiled with `-trimpath` and no embedded build info strip the module metadata that the `go-module-binary-cataloger` relies on. These binaries appear opaque to Syft.
534
+
535
+ 4. **npm Packages Without a Lock File**: Projects using npm without a committed `package-lock.json` or `yarn.lock` are cataloged from `package.json` alone. Nested transitive dependencies that only appear in the lock file are absent.
536
+
537
+ 5. **License Inheritance From Parent Projects**: Many packages declare their license only at the monorepo or parent pom level, with individual submodules inheriting it implicitly. If the submodule manifest omits the license field, Syft records NOASSERTION for that submodule even though a license exists at the parent level.
538
+
539
+ 6. **Packages Declared in Non-Standard Manifest Formats**: Some build systems use custom manifest formats (Bazel BUILD files, Pants targets, Buck BUCK files) that Syft has no cataloger for. Dependencies managed exclusively through these systems will not appear in the SBOM.