@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.
- package/CLAUDE.md +19 -0
- package/LICENSE +33 -0
- package/README.md +275 -0
- package/bin/install.js +661 -0
- package/docs/getting-started.md +164 -0
- package/docs/module-guide.md +139 -0
- package/modules/drive/LICENSE +21 -0
- package/modules/drive/PAUL-VS-GSD.md +171 -0
- package/modules/drive/README.md +555 -0
- package/modules/drive/assets/terminal.svg +67 -0
- package/modules/drive/bin/install.js +210 -0
- package/modules/drive/integration.js +76 -0
- package/modules/drive/package.json +38 -0
- package/modules/drive/src/commands/add-phase.md +36 -0
- package/modules/drive/src/commands/apply.md +83 -0
- package/modules/drive/src/commands/assumptions.md +37 -0
- package/modules/drive/src/commands/audit.md +57 -0
- package/modules/drive/src/commands/complete-milestone.md +36 -0
- package/modules/drive/src/commands/config.md +175 -0
- package/modules/drive/src/commands/consider-issues.md +41 -0
- package/modules/drive/src/commands/discover.md +48 -0
- package/modules/drive/src/commands/discuss-milestone.md +33 -0
- package/modules/drive/src/commands/discuss.md +34 -0
- package/modules/drive/src/commands/flows.md +73 -0
- package/modules/drive/src/commands/handoff.md +201 -0
- package/modules/drive/src/commands/help.md +525 -0
- package/modules/drive/src/commands/init.md +54 -0
- package/modules/drive/src/commands/map-codebase.md +34 -0
- package/modules/drive/src/commands/milestone.md +34 -0
- package/modules/drive/src/commands/pause.md +44 -0
- package/modules/drive/src/commands/plan-fix.md +216 -0
- package/modules/drive/src/commands/plan.md +36 -0
- package/modules/drive/src/commands/progress.md +138 -0
- package/modules/drive/src/commands/register.md +29 -0
- package/modules/drive/src/commands/remove-phase.md +37 -0
- package/modules/drive/src/commands/research-phase.md +209 -0
- package/modules/drive/src/commands/research.md +47 -0
- package/modules/drive/src/commands/resume.md +49 -0
- package/modules/drive/src/commands/status.md +78 -0
- package/modules/drive/src/commands/unify.md +87 -0
- package/modules/drive/src/commands/verify.md +60 -0
- package/modules/drive/src/references/checkpoints.md +234 -0
- package/modules/drive/src/references/context-management.md +219 -0
- package/modules/drive/src/references/git-strategy.md +206 -0
- package/modules/drive/src/references/loop-phases.md +254 -0
- package/modules/drive/src/references/plan-format.md +263 -0
- package/modules/drive/src/references/quality-principles.md +152 -0
- package/modules/drive/src/references/research-quality-control.md +247 -0
- package/modules/drive/src/references/sonarqube-integration.md +244 -0
- package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
- package/modules/drive/src/references/subagent-criteria.md +179 -0
- package/modules/drive/src/references/tdd.md +219 -0
- package/modules/drive/src/references/work-units.md +161 -0
- package/modules/drive/src/rules/commands.md +108 -0
- package/modules/drive/src/rules/references.md +107 -0
- package/modules/drive/src/rules/style.md +123 -0
- package/modules/drive/src/rules/templates.md +51 -0
- package/modules/drive/src/rules/workflows.md +133 -0
- package/modules/drive/src/templates/CONTEXT.md +88 -0
- package/modules/drive/src/templates/DEBUG.md +164 -0
- package/modules/drive/src/templates/DISCOVERY.md +148 -0
- package/modules/drive/src/templates/HANDOFF.md +77 -0
- package/modules/drive/src/templates/ISSUES.md +93 -0
- package/modules/drive/src/templates/MILESTONES.md +167 -0
- package/modules/drive/src/templates/PLAN.md +328 -0
- package/modules/drive/src/templates/PROJECT.md +219 -0
- package/modules/drive/src/templates/RESEARCH.md +130 -0
- package/modules/drive/src/templates/ROADMAP.md +328 -0
- package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
- package/modules/drive/src/templates/STATE.md +210 -0
- package/modules/drive/src/templates/SUMMARY.md +221 -0
- package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
- package/modules/drive/src/templates/codebase/architecture.md +259 -0
- package/modules/drive/src/templates/codebase/concerns.md +329 -0
- package/modules/drive/src/templates/codebase/conventions.md +311 -0
- package/modules/drive/src/templates/codebase/integrations.md +284 -0
- package/modules/drive/src/templates/codebase/stack.md +190 -0
- package/modules/drive/src/templates/codebase/structure.md +287 -0
- package/modules/drive/src/templates/codebase/testing.md +484 -0
- package/modules/drive/src/templates/config.md +181 -0
- package/modules/drive/src/templates/milestone-archive.md +236 -0
- package/modules/drive/src/templates/milestone-context.md +190 -0
- package/modules/drive/src/templates/paul-json.md +147 -0
- package/modules/drive/src/vector-config/PAUL +26 -0
- package/modules/drive/src/vector-config/PAUL.manifest +11 -0
- package/modules/drive/src/workflows/apply-phase.md +393 -0
- package/modules/drive/src/workflows/audit-plan.md +344 -0
- package/modules/drive/src/workflows/complete-milestone.md +479 -0
- package/modules/drive/src/workflows/configure-special-flows.md +283 -0
- package/modules/drive/src/workflows/consider-issues.md +172 -0
- package/modules/drive/src/workflows/create-milestone.md +268 -0
- package/modules/drive/src/workflows/debug.md +292 -0
- package/modules/drive/src/workflows/discovery.md +187 -0
- package/modules/drive/src/workflows/discuss-milestone.md +245 -0
- package/modules/drive/src/workflows/discuss-phase.md +231 -0
- package/modules/drive/src/workflows/init-project.md +698 -0
- package/modules/drive/src/workflows/map-codebase.md +459 -0
- package/modules/drive/src/workflows/pause-work.md +259 -0
- package/modules/drive/src/workflows/phase-assumptions.md +181 -0
- package/modules/drive/src/workflows/plan-phase.md +385 -0
- package/modules/drive/src/workflows/quality-gate.md +263 -0
- package/modules/drive/src/workflows/register-manifest.md +107 -0
- package/modules/drive/src/workflows/research.md +241 -0
- package/modules/drive/src/workflows/resume-project.md +200 -0
- package/modules/drive/src/workflows/roadmap-management.md +334 -0
- package/modules/drive/src/workflows/transition-phase.md +368 -0
- package/modules/drive/src/workflows/unify-phase.md +290 -0
- package/modules/drive/src/workflows/verify-work.md +241 -0
- package/modules/forge/README.md +281 -0
- package/modules/forge/bin/install.js +200 -0
- package/modules/forge/package.json +32 -0
- package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
- package/modules/forge/skillsmith/rules/context-rules.md +43 -0
- package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
- package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
- package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
- package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
- package/modules/forge/skillsmith/skillsmith.md +82 -0
- package/modules/forge/skillsmith/tasks/audit.md +277 -0
- package/modules/forge/skillsmith/tasks/discover.md +145 -0
- package/modules/forge/skillsmith/tasks/distill.md +276 -0
- package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
- package/modules/forge/specs/checklists.md +193 -0
- package/modules/forge/specs/context.md +223 -0
- package/modules/forge/specs/entry-point.md +320 -0
- package/modules/forge/specs/frameworks.md +228 -0
- package/modules/forge/specs/rules.md +245 -0
- package/modules/forge/specs/tasks.md +344 -0
- package/modules/forge/specs/templates.md +335 -0
- package/modules/forge/terminal.svg +70 -0
- package/modules/ignition/README.md +245 -0
- package/modules/ignition/bin/install.js +184 -0
- package/modules/ignition/checklists/planning-quality.md +55 -0
- package/modules/ignition/data/application/config.md +21 -0
- package/modules/ignition/data/application/guide.md +51 -0
- package/modules/ignition/data/application/skill-loadout.md +11 -0
- package/modules/ignition/data/campaign/config.md +18 -0
- package/modules/ignition/data/campaign/guide.md +36 -0
- package/modules/ignition/data/campaign/skill-loadout.md +10 -0
- package/modules/ignition/data/client/config.md +18 -0
- package/modules/ignition/data/client/guide.md +36 -0
- package/modules/ignition/data/client/skill-loadout.md +11 -0
- package/modules/ignition/data/utility/config.md +18 -0
- package/modules/ignition/data/utility/guide.md +31 -0
- package/modules/ignition/data/utility/skill-loadout.md +8 -0
- package/modules/ignition/data/workflow/config.md +19 -0
- package/modules/ignition/data/workflow/guide.md +41 -0
- package/modules/ignition/data/workflow/skill-loadout.md +10 -0
- package/modules/ignition/integration.js +54 -0
- package/modules/ignition/package.json +35 -0
- package/modules/ignition/seed.md +81 -0
- package/modules/ignition/tasks/add-type.md +164 -0
- package/modules/ignition/tasks/graduate.md +182 -0
- package/modules/ignition/tasks/ideate.md +221 -0
- package/modules/ignition/tasks/launch.md +137 -0
- package/modules/ignition/tasks/status.md +71 -0
- package/modules/ignition/templates/planning-application.md +193 -0
- package/modules/ignition/templates/planning-campaign.md +138 -0
- package/modules/ignition/templates/planning-client.md +149 -0
- package/modules/ignition/templates/planning-utility.md +112 -0
- package/modules/ignition/templates/planning-workflow.md +125 -0
- package/modules/ignition/terminal.svg +74 -0
- package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
- package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
- package/modules/mission-control/README.md +91 -0
- package/modules/mission-control/assets/terminal.svg +80 -0
- package/modules/mission-control/examples/entities.example.json +133 -0
- package/modules/mission-control/examples/projects.example.json +318 -0
- package/modules/mission-control/examples/state.example.json +183 -0
- package/modules/mission-control/examples/vector.example.json +245 -0
- package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
- package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
- package/modules/mission-control/mission-control/mission-control.md +83 -0
- package/modules/mission-control/mission-control/tasks/insights.md +73 -0
- package/modules/mission-control/mission-control/tasks/install.md +194 -0
- package/modules/mission-control/mission-control/tasks/status.md +125 -0
- package/modules/mission-control/schemas/entities.schema.json +89 -0
- package/modules/mission-control/schemas/projects.schema.json +221 -0
- package/modules/mission-control/schemas/state.schema.json +108 -0
- package/modules/mission-control/schemas/vector.schema.json +200 -0
- package/modules/momentum/README.md +678 -0
- package/modules/momentum/bin/install.js +563 -0
- package/modules/momentum/integration.js +131 -0
- package/modules/momentum/package.json +42 -0
- package/modules/momentum/schemas/entities.schema.json +89 -0
- package/modules/momentum/schemas/projects.schema.json +221 -0
- package/modules/momentum/schemas/state.schema.json +108 -0
- package/modules/momentum/src/commands/audit-claude-md.md +31 -0
- package/modules/momentum/src/commands/audit.md +33 -0
- package/modules/momentum/src/commands/groom.md +35 -0
- package/modules/momentum/src/commands/history.md +27 -0
- package/modules/momentum/src/commands/pulse.md +33 -0
- package/modules/momentum/src/commands/scaffold.md +33 -0
- package/modules/momentum/src/commands/status.md +28 -0
- package/modules/momentum/src/commands/surface-convert.md +35 -0
- package/modules/momentum/src/commands/surface-create.md +34 -0
- package/modules/momentum/src/commands/surface-list.md +27 -0
- package/modules/momentum/src/commands/vector-hygiene.md +33 -0
- package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
- package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
- package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
- package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
- package/modules/momentum/src/framework/tasks/audit.md +64 -0
- package/modules/momentum/src/framework/tasks/groom.md +164 -0
- package/modules/momentum/src/framework/tasks/history.md +34 -0
- package/modules/momentum/src/framework/tasks/pulse.md +83 -0
- package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
- package/modules/momentum/src/framework/tasks/status.md +35 -0
- package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
- package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
- package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
- package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
- package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
- package/modules/momentum/src/hooks/_template.py +129 -0
- package/modules/momentum/src/hooks/active-hook.py +178 -0
- package/modules/momentum/src/hooks/backlog-hook.py +115 -0
- package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
- package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
- package/modules/momentum/src/hooks/operator.py +53 -0
- package/modules/momentum/src/hooks/psmm-injector.py +67 -0
- package/modules/momentum/src/hooks/satellite-detection.py +248 -0
- package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
- package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
- package/modules/momentum/src/skill/momentum.md +111 -0
- package/modules/momentum/src/tasks/groom.md +164 -0
- package/modules/momentum/src/templates/operator.json +66 -0
- package/modules/momentum/src/templates/workspace.json +111 -0
- package/modules/momentum/terminal.svg +77 -0
- package/modules/radar/README.md +1552 -0
- package/modules/radar/commands/audit.md +233 -0
- package/modules/radar/commands/guardrails.md +194 -0
- package/modules/radar/commands/init.md +207 -0
- package/modules/radar/commands/playbook.md +176 -0
- package/modules/radar/commands/remediate.md +156 -0
- package/modules/radar/commands/report.md +172 -0
- package/modules/radar/commands/resume.md +176 -0
- package/modules/radar/commands/status.md +148 -0
- package/modules/radar/commands/transform.md +205 -0
- package/modules/radar/commands/validate.md +177 -0
- package/modules/radar/docs/ARCHITECTURE.md +336 -0
- package/modules/radar/docs/GETTING-STARTED.md +287 -0
- package/modules/radar/docs/standards/agents.md +197 -0
- package/modules/radar/docs/standards/commands.md +250 -0
- package/modules/radar/docs/standards/domains.md +191 -0
- package/modules/radar/docs/standards/personas.md +211 -0
- package/modules/radar/docs/standards/rules.md +218 -0
- package/modules/radar/docs/standards/runtime.md +445 -0
- package/modules/radar/docs/standards/schemas.md +269 -0
- package/modules/radar/docs/standards/tools.md +273 -0
- package/modules/radar/docs/standards/workflows.md +254 -0
- package/modules/radar/docs/terminal.svg +72 -0
- package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
- package/modules/radar/docs/validation/cross-reference-report.md +195 -0
- package/modules/radar/docs/validation/validation-summary.md +118 -0
- package/modules/radar/docs/validation/version-manifest.yaml +363 -0
- package/modules/radar/install.sh +711 -0
- package/modules/radar/integration.js +53 -0
- package/modules/radar/src/core/agents/architect.md +25 -0
- package/modules/radar/src/core/agents/compliance-officer.md +25 -0
- package/modules/radar/src/core/agents/data-engineer.md +25 -0
- package/modules/radar/src/core/agents/devils-advocate.md +22 -0
- package/modules/radar/src/core/agents/performance-engineer.md +25 -0
- package/modules/radar/src/core/agents/principal-engineer.md +23 -0
- package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
- package/modules/radar/src/core/agents/security-engineer.md +25 -0
- package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
- package/modules/radar/src/core/agents/sre.md +25 -0
- package/modules/radar/src/core/agents/staff-engineer.md +23 -0
- package/modules/radar/src/core/agents/test-engineer.md +25 -0
- package/modules/radar/src/core/personas/architect.md +111 -0
- package/modules/radar/src/core/personas/compliance-officer.md +104 -0
- package/modules/radar/src/core/personas/data-engineer.md +113 -0
- package/modules/radar/src/core/personas/devils-advocate.md +105 -0
- package/modules/radar/src/core/personas/performance-engineer.md +119 -0
- package/modules/radar/src/core/personas/principal-engineer.md +119 -0
- package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
- package/modules/radar/src/core/personas/security-engineer.md +108 -0
- package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
- package/modules/radar/src/core/personas/sre.md +117 -0
- package/modules/radar/src/core/personas/staff-engineer.md +109 -0
- package/modules/radar/src/core/personas/test-engineer.md +109 -0
- package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
- package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
- package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
- package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
- package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
- package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
- package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
- package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
- package/modules/radar/src/core/workflows/session-handoff.md +152 -0
- package/modules/radar/src/domains/00-context.md +201 -0
- package/modules/radar/src/domains/01-architecture.md +248 -0
- package/modules/radar/src/domains/02-data.md +224 -0
- package/modules/radar/src/domains/03-correctness.md +230 -0
- package/modules/radar/src/domains/04-security.md +274 -0
- package/modules/radar/src/domains/05-compliance.md +228 -0
- package/modules/radar/src/domains/06-testing.md +228 -0
- package/modules/radar/src/domains/07-reliability.md +246 -0
- package/modules/radar/src/domains/08-performance.md +247 -0
- package/modules/radar/src/domains/09-maintainability.md +271 -0
- package/modules/radar/src/domains/10-operability.md +250 -0
- package/modules/radar/src/domains/11-change-risk.md +246 -0
- package/modules/radar/src/domains/12-team-risk.md +221 -0
- package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
- package/modules/radar/src/rules/agent-boundaries.md +78 -0
- package/modules/radar/src/rules/disagreement-protocol.md +76 -0
- package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
- package/modules/radar/src/schemas/confidence.md +185 -0
- package/modules/radar/src/schemas/disagreement.md +238 -0
- package/modules/radar/src/schemas/finding.md +287 -0
- package/modules/radar/src/schemas/report-section.md +150 -0
- package/modules/radar/src/schemas/signal.md +108 -0
- package/modules/radar/src/tools/checkov.md +463 -0
- package/modules/radar/src/tools/git-history.md +581 -0
- package/modules/radar/src/tools/gitleaks.md +447 -0
- package/modules/radar/src/tools/grype.md +611 -0
- package/modules/radar/src/tools/semgrep.md +378 -0
- package/modules/radar/src/tools/sonarqube.md +550 -0
- package/modules/radar/src/tools/syft.md +539 -0
- package/modules/radar/src/tools/trivy.md +439 -0
- package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
- package/modules/radar/src/transform/agents/execution-validator.md +24 -0
- package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
- package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
- package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
- package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
- package/modules/radar/src/transform/personas/execution-validator.md +95 -0
- package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
- package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
- package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
- package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
- package/modules/radar/src/transform/rules/safety-governance.md +87 -0
- package/modules/radar/src/transform/schemas/change-risk.md +139 -0
- package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
- package/modules/radar/src/transform/schemas/playbook.md +205 -0
- package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
- package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
- package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
- package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
- package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
- package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
- package/modules/vector/.vector-template/vector.json +72 -0
- package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
- package/modules/vector/INSTALL.md +185 -0
- package/modules/vector/LICENSE +21 -0
- package/modules/vector/README.md +409 -0
- package/modules/vector/VECTOR-BLOCK.md +57 -0
- package/modules/vector/assets/terminal.svg +68 -0
- package/modules/vector/bin/install.js +455 -0
- package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
- package/modules/vector/commands/help.md +46 -0
- package/modules/vector/hooks/vector-hook.py +775 -0
- package/modules/vector/mcp/index.js +118 -0
- package/modules/vector/mcp/package.json +10 -0
- package/modules/vector/mcp/tools/decisions.js +269 -0
- package/modules/vector/mcp/tools/domains.js +361 -0
- package/modules/vector/mcp/tools/staging.js +252 -0
- package/modules/vector/mcp/tools/vector-json.js +647 -0
- package/modules/vector/package.json +38 -0
- package/modules/vector/schemas/vector.schema.json +237 -0
- package/package.json +39 -0
- package/shared/branding/branding.js +70 -0
- package/shared/config/defaults.json +59 -0
- package/shared/events/README.md +175 -0
- package/shared/events/event-bus.js +134 -0
- package/shared/events/event_bus.py +255 -0
- package/shared/events/integrations.js +161 -0
- package/shared/events/schemas/audit-complete.schema.json +21 -0
- package/shared/events/schemas/phase-progress.schema.json +23 -0
- package/shared/events/schemas/plan-created.schema.json +21 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: finding
|
|
3
|
+
name: Epistemic Finding
|
|
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
|
+
A Finding is the atomic unit of agent output in Radar — a single identified issue, risk, or observation produced by an agent during domain audit phases. Every concern an agent raises must be expressed as a Finding. Findings feed into disagreement resolution, severity calibration, and final report generation.
|
|
23
|
+
|
|
24
|
+
The 7-layer epistemic structure enforces decomposition of reasoning. Agents cannot jump from observation to judgment — they must pass through evidence sourcing, interpretation, assumption surfacing, risk modeling, and impact assessment first. This prevents the most common failure mode in AI-generated analysis: confident conclusions built on unexamined assumptions.
|
|
25
|
+
|
|
26
|
+
Findings are Layer A (diagnostic) output. They are the primary input to disagreement resolution, the Transform remediation pipeline, and the final report.
|
|
27
|
+
|
|
28
|
+
## Template
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
### {finding_id}
|
|
32
|
+
|
|
33
|
+
**Domain:** {domain_number} — {domain_name}
|
|
34
|
+
**Agent:** {agent_id}
|
|
35
|
+
**Severity:** {severity}
|
|
36
|
+
|
|
37
|
+
#### Confidence Vector
|
|
38
|
+
@schema:confidence — {confidence_vector}
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
#### Layer 1 — Observation (Raw Signal)
|
|
43
|
+
|
|
44
|
+
{observation}
|
|
45
|
+
|
|
46
|
+
**Source signals:**
|
|
47
|
+
- {signal_reference_1}
|
|
48
|
+
- {signal_reference_2}
|
|
49
|
+
|
|
50
|
+
#### Layer 2 — Evidence Source
|
|
51
|
+
|
|
52
|
+
| Attribute | Value |
|
|
53
|
+
|-----------|-------|
|
|
54
|
+
| Source type | {source_type} |
|
|
55
|
+
| Tool or artifact | {tool_or_artifact} |
|
|
56
|
+
| Location | {location} |
|
|
57
|
+
| Freshness | {freshness} |
|
|
58
|
+
| Additional sources | {additional_sources} |
|
|
59
|
+
|
|
60
|
+
#### Layer 3 — Interpretation (Mechanism)
|
|
61
|
+
|
|
62
|
+
{interpretation}
|
|
63
|
+
|
|
64
|
+
**Causal mechanism:** {causal_mechanism}
|
|
65
|
+
|
|
66
|
+
**Alternative interpretations:**
|
|
67
|
+
- {alternative_1}
|
|
68
|
+
|
|
69
|
+
#### Layer 4 — Assumptions
|
|
70
|
+
|
|
71
|
+
What must be true for the interpretation to hold:
|
|
72
|
+
|
|
73
|
+
1. {assumption_1}
|
|
74
|
+
2. {assumption_2}
|
|
75
|
+
|
|
76
|
+
**Falsifiability:** {how_assumptions_could_be_disproved}
|
|
77
|
+
|
|
78
|
+
#### Layer 5 — Risk Statement
|
|
79
|
+
|
|
80
|
+
If {interpretation_summary}, then {failure_mode}, impacting {asset}.
|
|
81
|
+
|
|
82
|
+
#### Layer 6 — Impact & Likelihood
|
|
83
|
+
|
|
84
|
+
| Dimension | Assessment |
|
|
85
|
+
|-----------|------------|
|
|
86
|
+
| Impact domain | {impact_domain} |
|
|
87
|
+
| Impact magnitude | {impact_magnitude} |
|
|
88
|
+
| Likelihood | {likelihood} |
|
|
89
|
+
| Time horizon | {time_horizon} |
|
|
90
|
+
| Blast radius | {blast_radius} |
|
|
91
|
+
|
|
92
|
+
**Reasoning:** {impact_reasoning}
|
|
93
|
+
|
|
94
|
+
#### Layer 7 — Judgment (Decision-Oriented)
|
|
95
|
+
|
|
96
|
+
**Action:** {action}
|
|
97
|
+
**Owning agent:** {judgment_owner}
|
|
98
|
+
**Rationale:** {judgment_rationale}
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
**References:**
|
|
103
|
+
- {reference_1}
|
|
104
|
+
- {reference_2}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Field Reference
|
|
108
|
+
|
|
109
|
+
### Metadata Fields
|
|
110
|
+
|
|
111
|
+
| Field | Type | Required | Description | Valid Values |
|
|
112
|
+
|-------|------|----------|-------------|--------------|
|
|
113
|
+
| `finding_id` | string | yes | Unique identifier across the entire audit. | Pattern: `F-{DD}-{NNN}` where DD is two-digit domain number (00-13), NNN is three-digit sequence (001-999). Example: `F-04-001` |
|
|
114
|
+
| `domain_number` | string | yes | Two-digit domain number this finding belongs to. | `00` through `13` |
|
|
115
|
+
| `domain_name` | string | yes | Human-readable domain name. | Must match the domain file's `name` field |
|
|
116
|
+
| `agent_id` | string | yes | ID of the agent that produced this finding. | Must match an agent assembly manifest's `id` field. Agent must have the specified domain in its `domains` list. |
|
|
117
|
+
| `severity` | enum | yes | Assessed severity of the finding. | `critical`, `high`, `medium`, `low`, `informational` |
|
|
118
|
+
| `confidence_vector` | object | yes | Multi-dimensional confidence assessment. | Must conform to @schema:confidence. Contains: evidence_diversity (1-5), signal_freshness (1-5), assumption_fragility (1-5), historical_precedent (1-5), overall (low/medium/high), justification (string). |
|
|
119
|
+
|
|
120
|
+
### Layer 1 — Observation Fields
|
|
121
|
+
|
|
122
|
+
| Field | Type | Required | Description | Valid Values |
|
|
123
|
+
|-------|------|----------|-------------|--------------|
|
|
124
|
+
| `observation` | string | yes | What exists independently of interpretation. Factual description of what was observed. | No adjectives. No risk language. No value judgments. Tool outputs live here. 1-4 sentences. |
|
|
125
|
+
| `signal_references` | list of strings | yes | IDs or descriptions of signals that produced this observation. | At least one signal reference. Can be tool signal IDs, file paths, or configuration excerpts. |
|
|
126
|
+
|
|
127
|
+
### Layer 2 — Evidence Source Fields
|
|
128
|
+
|
|
129
|
+
| Field | Type | Required | Description | Valid Values |
|
|
130
|
+
|-------|------|----------|-------------|--------------|
|
|
131
|
+
| `source_type` | enum | yes | Category of evidence. | `static_analysis`, `config_file`, `runtime_metric`, `log`, `commit_history`, `manual_review`, `dependency_scan`, `iac_scan`, `secrets_scan` |
|
|
132
|
+
| `tool_or_artifact` | string | yes | Which tool or artifact produced the evidence. | Tool name (e.g., "Semgrep", "SonarQube") or artifact name (e.g., "Dockerfile", "terraform/main.tf") |
|
|
133
|
+
| `location` | string | yes | Where the evidence was found. | File path + line number, environment name, config key, or API endpoint. Must be specific enough to locate. |
|
|
134
|
+
| `freshness` | enum | yes | Temporal relevance of the evidence. | `static` (code as-written), `historical` (git history, past data), `recent` (recent config/deploy), `live` (current runtime data) |
|
|
135
|
+
| `additional_sources` | list of objects | no | Additional corroborating sources beyond the primary. | Each object: {source_type, tool_or_artifact, location, freshness}. Strengthens evidence_diversity in confidence vector. |
|
|
136
|
+
|
|
137
|
+
### Layer 3 — Interpretation Fields
|
|
138
|
+
|
|
139
|
+
| Field | Type | Required | Description | Valid Values |
|
|
140
|
+
|-------|------|----------|-------------|--------------|
|
|
141
|
+
| `interpretation` | string | yes | What this observation means in context. | Must explain a causal mechanism. No value judgment. 2-4 sentences. |
|
|
142
|
+
| `causal_mechanism` | string | yes | The specific mechanism by which this observation could lead to a problem. | One sentence describing cause-and-effect. |
|
|
143
|
+
| `alternative_interpretations` | list of strings | no | Other valid interpretations of the same observation. | Each entry is a plausible alternative. Presence indicates epistemic honesty; absence is acceptable only when interpretation is unambiguous. |
|
|
144
|
+
|
|
145
|
+
### Layer 4 — Assumptions Fields
|
|
146
|
+
|
|
147
|
+
| Field | Type | Required | Description | Valid Values |
|
|
148
|
+
|-------|------|----------|-------------|--------------|
|
|
149
|
+
| `assumptions` | list of strings | yes | What must be true for the interpretation to hold. | At least one falsifiable assumption. Each must be a concrete, testable statement. |
|
|
150
|
+
| `falsifiability` | string | yes | How the assumptions could be disproved. | Description of what evidence would invalidate the interpretation. |
|
|
151
|
+
|
|
152
|
+
### Layer 5 — Risk Statement Fields
|
|
153
|
+
|
|
154
|
+
| Field | Type | Required | Description | Valid Values |
|
|
155
|
+
|-------|------|----------|-------------|--------------|
|
|
156
|
+
| `risk_statement` | string | yes | Structured risk assertion. | Must follow format: "If [interpretation], then [failure mode], impacting [asset]." All three components required. |
|
|
157
|
+
|
|
158
|
+
### Layer 6 — Impact & Likelihood Fields
|
|
159
|
+
|
|
160
|
+
| Field | Type | Required | Description | Valid Values |
|
|
161
|
+
|-------|------|----------|-------------|--------------|
|
|
162
|
+
| `impact_domain` | enum | yes | Which domain of impact this finding affects. | `security`, `data_integrity`, `availability`, `compliance`, `velocity` |
|
|
163
|
+
| `impact_magnitude` | enum | yes | How severe the impact would be if the risk materializes. | `low`, `moderate`, `high`, `critical`, `existential` |
|
|
164
|
+
| `likelihood` | enum | yes | How likely the risk is to materialize. | `rare`, `unlikely`, `possible`, `likely`, `frequent` |
|
|
165
|
+
| `time_horizon` | enum | yes | When the risk is expected to manifest. | `immediate`, `near_term`, `long_term`, `hypothetical` |
|
|
166
|
+
| `blast_radius` | enum | yes | How widely the impact would spread. | `localized`, `service_level`, `systemic`, `org_wide` |
|
|
167
|
+
| `impact_reasoning` | string | yes | Explicit reasoning for the impact and likelihood assessments. | 2-4 sentences connecting evidence to impact dimensions. No "vibes" — must reference specific evidence. |
|
|
168
|
+
|
|
169
|
+
### Layer 7 — Judgment Fields
|
|
170
|
+
|
|
171
|
+
| Field | Type | Required | Description | Valid Values |
|
|
172
|
+
|-------|------|----------|-------------|--------------|
|
|
173
|
+
| `action` | enum | yes | Recommended action. | `must_fix`, `should_fix`, `accept_risk`, `monitor`, `out_of_scope` |
|
|
174
|
+
| `judgment_owner` | string | yes | Agent responsible for the final judgment. | Typically `principal-engineer` for final judgments. Originating agent for initial recommendations. |
|
|
175
|
+
| `judgment_rationale` | string | yes | Why this action is recommended. | 1-3 sentences. Must reference Layer 6 assessments. Judgment is explicitly separated from facts. |
|
|
176
|
+
|
|
177
|
+
### Reference Fields
|
|
178
|
+
|
|
179
|
+
| Field | Type | Required | Description | Valid Values |
|
|
180
|
+
|-------|------|----------|-------------|--------------|
|
|
181
|
+
| `references` | list of strings | no | External standards, related findings, or documentation. | CWE IDs, CVE IDs, standard references, or related finding IDs (F-{DD}-{NNN} format). |
|
|
182
|
+
|
|
183
|
+
## Validation Rules
|
|
184
|
+
|
|
185
|
+
1. **Unique ID:** `finding_id` must be unique across the entire audit. No two findings may share an ID.
|
|
186
|
+
2. **Valid domain:** `domain_number` must reference an existing domain (00-13).
|
|
187
|
+
3. **Agent-domain alignment:** `agent_id` must reference an agent that has the specified domain in its `domains` list.
|
|
188
|
+
4. **Observation purity:** Layer 1 (`observation`) must contain no adjectives, risk language, or value judgments. It describes what exists, not what it means. Phrases like "dangerous", "poor", "inadequate" in Layer 1 are validation failures.
|
|
189
|
+
5. **Evidence grounding:** Layer 2 must contain at least one concrete source reference (file path, tool signal ID, or configuration excerpt). Assertions without evidence are invalid.
|
|
190
|
+
6. **Mechanistic interpretation:** Layer 3 (`interpretation`) must explain a causal mechanism. Restating the observation is not interpretation. "Function retries on 500" (observation) vs "Unbounded retries can amplify load during partial outages" (interpretation).
|
|
191
|
+
7. **Falsifiable assumptions:** Layer 4 must list at least one falsifiable assumption. Tautologies ("the code does what it does") are not assumptions.
|
|
192
|
+
8. **Risk statement structure:** Layer 5 must follow "If [interpretation], then [failure mode], impacting [asset]" structure. All three components are required.
|
|
193
|
+
9. **Enumerated values:** All Layer 6 fields must use their enumerated values. No other values are valid.
|
|
194
|
+
10. **Valid judgment:** Layer 7 `action` must be one of the five enumerated values.
|
|
195
|
+
11. **Confidence vector conformance:** `confidence_vector` must be a valid instance of @schema:confidence. All four dimensions required, all scoring within 1-5 range.
|
|
196
|
+
12. **Severity-confidence consistency:** A finding with `severity: critical` and `confidence_vector.overall: low` must include explicit justification in Layer 7 explaining why a critical severity is warranted despite low confidence. The combination triggers mandatory review by the Principal Engineer.
|
|
197
|
+
13. **Cross-reference validity:** Any finding ID referenced in `references` must exist in the audit's finding set.
|
|
198
|
+
|
|
199
|
+
## Examples
|
|
200
|
+
|
|
201
|
+
### Example: Critical Security Finding — Hardcoded Credentials
|
|
202
|
+
|
|
203
|
+
```markdown
|
|
204
|
+
### F-04-001
|
|
205
|
+
|
|
206
|
+
**Domain:** 04 — Security
|
|
207
|
+
**Agent:** security-engineer
|
|
208
|
+
**Severity:** critical
|
|
209
|
+
|
|
210
|
+
#### Confidence Vector
|
|
211
|
+
@schema:confidence
|
|
212
|
+
- Evidence diversity: 4 (static analysis + secrets scan + config review + commit history)
|
|
213
|
+
- Signal freshness: 2 (static analysis only, no runtime confirmation)
|
|
214
|
+
- Assumption fragility: 5 (credentials are plaintext in source — self-evident)
|
|
215
|
+
- Historical precedent: 5 (CWE-798 is among the most documented credential failures)
|
|
216
|
+
- Overall: high
|
|
217
|
+
- Justification: Four independent evidence sources confirm plaintext credentials in source code. This is a well-documented failure mode (CWE-798) with extensive incident history. Signal freshness is limited to static analysis, but the finding does not require runtime validation — the credentials are visible in the code.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
#### Layer 1 — Observation (Raw Signal)
|
|
222
|
+
|
|
223
|
+
File `config/database.py` lines 12-14 contain three string literals assigned to variables named `DB_USER`, `DB_PASS`, and `DB_HOST`. The values are `"admin"`, `"pr0d_s3cret_2024"`, and `"prod-db.internal.company.com"` respectively.
|
|
224
|
+
|
|
225
|
+
**Source signals:**
|
|
226
|
+
- Gitleaks signal GL-047: high-entropy secret detected in config/database.py
|
|
227
|
+
- Semgrep rule python.security.hardcoded-credentials: match at config/database.py:12-14
|
|
228
|
+
- SonarQube hotspot S2068: credentials should not be hard-coded
|
|
229
|
+
|
|
230
|
+
#### Layer 2 — Evidence Source
|
|
231
|
+
|
|
232
|
+
| Attribute | Value |
|
|
233
|
+
|-----------|-------|
|
|
234
|
+
| Source type | static_analysis |
|
|
235
|
+
| Tool or artifact | Gitleaks v8.x |
|
|
236
|
+
| Location | config/database.py, lines 12-14 |
|
|
237
|
+
| Freshness | static |
|
|
238
|
+
| Additional sources | Semgrep (static_analysis, config/database.py:12), SonarQube (static_analysis, S2068 hotspot), git log (commit_history, credentials present since initial commit a1b2c3d, 2024-03-15) |
|
|
239
|
+
|
|
240
|
+
#### Layer 3 — Interpretation (Mechanism)
|
|
241
|
+
|
|
242
|
+
Production database credentials stored as plaintext strings in source code are accessible to anyone with repository read access. The credentials are not injected at runtime via environment variables or a secrets manager — they are embedded directly in the application configuration module.
|
|
243
|
+
|
|
244
|
+
**Causal mechanism:** Repository access grants database access because credentials are not externalized from the codebase.
|
|
245
|
+
|
|
246
|
+
**Alternative interpretations:**
|
|
247
|
+
- The values could be development-only defaults overridden by environment variables at runtime. However, no environment variable lookup or override mechanism exists in the file.
|
|
248
|
+
|
|
249
|
+
#### Layer 4 — Assumptions
|
|
250
|
+
|
|
251
|
+
What must be true for the interpretation to hold:
|
|
252
|
+
|
|
253
|
+
1. The `config/database.py` file is used in production deployments (not just local development).
|
|
254
|
+
2. No runtime override mechanism (environment variable, secrets manager injection) supersedes these values before the database connection is established.
|
|
255
|
+
3. The repository is accessible to individuals who should not have production database credentials.
|
|
256
|
+
|
|
257
|
+
**Falsifiability:** If a deployment script or container entrypoint injects environment variables that override these values before `config/database.py` is loaded, the plaintext values would never be used in production. Review of deployment configuration (Dockerfile, docker-compose.yml, CI/CD pipeline) would confirm or refute this.
|
|
258
|
+
|
|
259
|
+
#### Layer 5 — Risk Statement
|
|
260
|
+
|
|
261
|
+
If production database credentials are embedded in source code without runtime override, then anyone with repository access can connect directly to the production database, impacting data confidentiality, integrity, and availability.
|
|
262
|
+
|
|
263
|
+
#### Layer 6 — Impact & Likelihood
|
|
264
|
+
|
|
265
|
+
| Dimension | Assessment |
|
|
266
|
+
|-----------|------------|
|
|
267
|
+
| Impact domain | security |
|
|
268
|
+
| Impact magnitude | critical |
|
|
269
|
+
| Likelihood | likely |
|
|
270
|
+
| Time horizon | immediate |
|
|
271
|
+
| Blast radius | systemic |
|
|
272
|
+
|
|
273
|
+
**Reasoning:** The credentials are plaintext and have been in the repository since the initial commit (11 months). Any developer, CI system, or third-party integration with repository access has had production database credentials for nearly a year. The blast radius is systemic because database compromise affects all application data and all services that depend on this database. Credential rotation requires a code change and redeployment.
|
|
274
|
+
|
|
275
|
+
#### Layer 7 — Judgment (Decision-Oriented)
|
|
276
|
+
|
|
277
|
+
**Action:** must_fix
|
|
278
|
+
**Owning agent:** security-engineer
|
|
279
|
+
**Rationale:** Plaintext production credentials in source code are an immediate, systemic risk with critical impact magnitude. The finding has high confidence across all dimensions. Remediation is well-understood (externalize to environment variables or secrets manager) and low-risk. There is no defensible reason to accept this risk.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
**References:**
|
|
284
|
+
- CWE-798: Use of Hard-coded Credentials
|
|
285
|
+
- F-04-003 (related: missing secrets scanning in CI pipeline)
|
|
286
|
+
- OWASP Top 10 A07:2021 — Identification and Authentication Failures
|
|
287
|
+
```
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: report-section
|
|
3
|
+
name: Report Section
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
used_by:
|
|
6
|
+
- principal-engineer
|
|
7
|
+
- phase-5-synthesis-workflow
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
The report section schema defines the structure of the Radar Layer A diagnostic report — the primary deliverable of every audit. The report consists of 7 sections in fixed order, each with a defined purpose, required content, data sources, and target audience.
|
|
13
|
+
|
|
14
|
+
This schema governs structure, not generation. How the report is assembled is workflow logic (Phase 6). What the report must contain is defined here. The distinction prevents structural drift across audits — every Radar report has the same sections in the same order with the same content requirements, regardless of the target codebase.
|
|
15
|
+
|
|
16
|
+
## Template
|
|
17
|
+
|
|
18
|
+
```markdown
|
|
19
|
+
# Radar Audit Report: {project_name}
|
|
20
|
+
|
|
21
|
+
**Audit ID:** {audit_id}
|
|
22
|
+
**Date:** {audit_date}
|
|
23
|
+
**Version:** {audit_version}
|
|
24
|
+
**Target:** {target_description}
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Section 1: Executive Risk Summary
|
|
29
|
+
|
|
30
|
+
{executive_risk_summary}
|
|
31
|
+
|
|
32
|
+
## Section 2: Architecture Narrative
|
|
33
|
+
|
|
34
|
+
{architecture_narrative}
|
|
35
|
+
|
|
36
|
+
## Section 3: Findings by Domain (Severity-Ranked)
|
|
37
|
+
|
|
38
|
+
### Domain {DD} — {domain_name}
|
|
39
|
+
|
|
40
|
+
{domain_findings_block}
|
|
41
|
+
|
|
42
|
+
[Repeated for all 14 domains]
|
|
43
|
+
|
|
44
|
+
## Section 4: Cross-Validation Notes
|
|
45
|
+
|
|
46
|
+
{cross_validation_notes}
|
|
47
|
+
|
|
48
|
+
## Section 5: Remediation Roadmap
|
|
49
|
+
|
|
50
|
+
{remediation_roadmap}
|
|
51
|
+
|
|
52
|
+
## Section 6: Long-Term Structural Risks
|
|
53
|
+
|
|
54
|
+
{long_term_risks}
|
|
55
|
+
|
|
56
|
+
## Section 7: What Would Break First at 10x Scale
|
|
57
|
+
|
|
58
|
+
{scale_failure_analysis}
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
**Audit metadata:**
|
|
63
|
+
- Agents deployed: {agent_list}
|
|
64
|
+
- Tools executed: {tool_list}
|
|
65
|
+
- Total findings: {finding_count}
|
|
66
|
+
- Total disagreements: {disagreement_count}
|
|
67
|
+
- Unresolved disagreements: {unresolved_count}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Field Reference
|
|
71
|
+
|
|
72
|
+
### Report Metadata
|
|
73
|
+
|
|
74
|
+
| Field | Type | Required | Description | Valid Values |
|
|
75
|
+
|-------|------|----------|-------------|--------------|
|
|
76
|
+
| `audit_id` | string | yes | Unique identifier for this audit run. | Format: `Radar-{YYYYMMDD}-{NNN}` |
|
|
77
|
+
| `audit_date` | string | yes | Date the audit was completed. | ISO 8601 date. |
|
|
78
|
+
| `audit_version` | string | yes | Version of the Radar system used. | Semantic version matching Radar release. |
|
|
79
|
+
| `target_description` | string | yes | What was audited. | Repository name, path, and scope constraints. |
|
|
80
|
+
|
|
81
|
+
### Section Specifications
|
|
82
|
+
|
|
83
|
+
| Section | Name | Required Content | Data Sources | Audience |
|
|
84
|
+
|---------|------|-----------------|--------------|----------|
|
|
85
|
+
| 1 | Executive Risk Summary | Top 5 risks by severity, overall risk posture (critical/high/medium/low), count of findings per severity, count of unresolved disagreements, single-paragraph assessment | Aggregated @schema:finding by severity, @schema:disagreement with status: open | Leadership, non-technical stakeholders |
|
|
86
|
+
| 2 | Architecture Narrative | System description, architectural pattern identified, component map, dependency direction analysis, key strengths, key concerns | Domain 00 (Context) Phase 0 output, Domain 01 (Architecture) findings | Technical leadership, architects |
|
|
87
|
+
| 3 | Findings by Domain | All findings grouped by domain (00-13), severity-ranked within each domain, each finding in full @schema:finding format | All @schema:finding instances | Engineering teams, domain owners |
|
|
88
|
+
| 4 | Cross-Validation Notes | All disagreements with positions, root causes, resolution models, and Principal responses. Disagreement heatmap data (severity x disagreement intensity). | All @schema:disagreement instances | Principal Engineer, technical leadership |
|
|
89
|
+
| 5 | Remediation Roadmap | Prioritized action plan, findings with action: must_fix or should_fix, ordered by severity then dependency, estimated effort categories, quick wins highlighted | @schema:finding where action is must_fix or should_fix | Engineering teams, project managers |
|
|
90
|
+
| 6 | Long-Term Structural Risks | Risks that worsen over time — architectural erosion, tech debt accumulation, knowledge concentration, test coverage decay | @schema:finding where time_horizon is long_term or hypothetical | Technical leadership, architects |
|
|
91
|
+
| 7 | What Would Break First at 10x Scale | Predictive failure analysis — which components fail first under 10x load/users/data, bottleneck identification, cascade failure paths | Domain 07 (Reliability) + Domain 08 (Performance) findings, findings with blast_radius: systemic | CTO, architects, SRE team |
|
|
92
|
+
|
|
93
|
+
### Section Content Rules
|
|
94
|
+
|
|
95
|
+
| Rule | Applies To | Description |
|
|
96
|
+
|------|-----------|-------------|
|
|
97
|
+
| Severity ranking | Section 3 | Findings within each domain are ordered: critical → high → medium → low → informational |
|
|
98
|
+
| Completeness | Section 3 | All 14 domains must be present. Domains with no findings state "No findings in this domain." |
|
|
99
|
+
| Resolution status | Section 4 | Each disagreement shows current status. Unresolved disagreements are flagged. |
|
|
100
|
+
| Dependency ordering | Section 5 | Remediations are ordered by dependency (foundation fixes before dependent fixes), not just severity. |
|
|
101
|
+
| Evidence grounding | Section 7 | Predictions must reference specific findings and evidence, not speculation. |
|
|
102
|
+
|
|
103
|
+
## Validation Rules
|
|
104
|
+
|
|
105
|
+
1. **All sections required:** All 7 sections must be present. Omitting a section is a validation error, even if the section would be sparse.
|
|
106
|
+
2. **Fixed order:** Sections must appear in order 1-7. Reordering is a validation error.
|
|
107
|
+
3. **Section 3 completeness:** All 14 domains (00-13) must be represented in Section 3, even if a domain has zero findings.
|
|
108
|
+
4. **Data source traceability:** Every finding in Section 3 must have a valid finding_id matching @schema:finding. Every disagreement in Section 4 must have a valid disagreement_id matching @schema:disagreement.
|
|
109
|
+
5. **Executive summary constraints:** Section 1 must not exceed one page equivalent (~500 words). It is a summary, not a detailed analysis.
|
|
110
|
+
6. **No orphaned references:** Any finding_id or disagreement_id referenced in the report must exist in the audit's dataset. Forward references to findings not yet produced are invalid.
|
|
111
|
+
7. **Unresolved disagreement count:** Report metadata must accurately count disagreements with status: open. A report claiming zero unresolved disagreements when open disagreements exist is a validation error.
|
|
112
|
+
|
|
113
|
+
## Examples
|
|
114
|
+
|
|
115
|
+
### Example: Executive Risk Summary (Section 1)
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
## Section 1: Executive Risk Summary
|
|
119
|
+
|
|
120
|
+
**Overall Risk Posture: HIGH**
|
|
121
|
+
|
|
122
|
+
| Severity | Count |
|
|
123
|
+
|----------|-------|
|
|
124
|
+
| Critical | 2 |
|
|
125
|
+
| High | 7 |
|
|
126
|
+
| Medium | 14 |
|
|
127
|
+
| Low | 8 |
|
|
128
|
+
| Informational | 3 |
|
|
129
|
+
|
|
130
|
+
**Top 5 Risks:**
|
|
131
|
+
|
|
132
|
+
1. **F-04-001 — Hardcoded production database credentials** (Critical, Security)
|
|
133
|
+
Plaintext credentials in source code accessible to all repository users. Immediate remediation required.
|
|
134
|
+
|
|
135
|
+
2. **F-04-012 — Missing authentication on admin API endpoints** (Critical, Security)
|
|
136
|
+
Three admin endpoints accept unauthenticated requests. Exploitation is trivial.
|
|
137
|
+
|
|
138
|
+
3. **F-01-003 — Circular dependency between core modules** (High, Architecture)
|
|
139
|
+
Service layer and data layer have bidirectional dependencies, preventing independent deployment and testing.
|
|
140
|
+
|
|
141
|
+
4. **F-07-002 — No circuit breaker on external API calls** (High, Reliability)
|
|
142
|
+
Downstream service failures cascade into full application unavailability.
|
|
143
|
+
|
|
144
|
+
5. **F-02-005 — Race condition in user balance updates** (High, Data Integrity)
|
|
145
|
+
Concurrent requests can produce incorrect balances. Confirmed by code structure; unverified at runtime.
|
|
146
|
+
|
|
147
|
+
**Disagreements:** 4 total, 1 unresolved (D-003: severity of F-02-005 disputed between data-engineer and senior-app-engineer).
|
|
148
|
+
|
|
149
|
+
**Assessment:** The codebase has two critical security vulnerabilities requiring immediate attention. Architectural issues (circular dependencies, missing circuit breakers) create systemic fragility that will worsen under growth. The unresolved disagreement on F-02-005 needs runtime validation to determine true severity.
|
|
150
|
+
```
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: signal
|
|
3
|
+
name: Signal
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
used_by:
|
|
6
|
+
- tool-adapters
|
|
7
|
+
- principal-engineer
|
|
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
|
+
- devils-advocate
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Purpose
|
|
22
|
+
|
|
23
|
+
A Signal is a normalized tool output — the bridge between heterogeneous analysis tools and structured agent reasoning. Tools speak different severity languages: SonarQube uses "blocker/critical/major/minor/info", Semgrep uses "ERROR/WARNING/INFO", Trivy uses "CRITICAL/HIGH/MEDIUM/LOW/UNKNOWN", Gitleaks uses "match/no-match". Without normalization, agents cannot compare or correlate signals across tools.
|
|
24
|
+
|
|
25
|
+
The signal schema converts all tool output into four normalized dimensions (severity, confidence estimate, blast radius, domain relevance) while preserving the original tool output for audit trail integrity. Signals are Phase 1 output — raw evidence gathered before any agent reasoning begins. Agents consume signals as input to their domain audits, producing @schema:finding instances as output.
|
|
26
|
+
|
|
27
|
+
Signals are NOT findings. A signal is evidence. A finding is a reasoned conclusion built on evidence. The separation is fundamental to Radar's epistemic architecture.
|
|
28
|
+
|
|
29
|
+
## Template
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
### {signal_id}
|
|
33
|
+
|
|
34
|
+
**Source tool:** {source_tool}
|
|
35
|
+
**Source rule:** {source_rule}
|
|
36
|
+
**Location:** {location}
|
|
37
|
+
**Category:** {signal_category}
|
|
38
|
+
|
|
39
|
+
#### Normalized Dimensions
|
|
40
|
+
|
|
41
|
+
| Dimension | Value |
|
|
42
|
+
|-----------|-------|
|
|
43
|
+
| Severity | {severity} |
|
|
44
|
+
| Confidence estimate | {confidence_estimate} |
|
|
45
|
+
| Blast radius | {blast_radius} |
|
|
46
|
+
| Domain relevance | {domain_relevance} |
|
|
47
|
+
|
|
48
|
+
#### Raw Output
|
|
49
|
+
|
|
50
|
+
**Raw severity:** {raw_severity}
|
|
51
|
+
**Raw output ref:** {raw_output_ref}
|
|
52
|
+
**Normalization notes:** {normalization_notes}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Field Reference
|
|
56
|
+
|
|
57
|
+
| Field | Type | Required | Description | Valid Values |
|
|
58
|
+
|-------|------|----------|-------------|--------------|
|
|
59
|
+
| `signal_id` | string | yes | Unique identifier across the audit. | Pattern: `S-{TTT}-{NNN}` where TTT is 2-4 character tool abbreviation, NNN is three-digit sequence. Examples: `S-SMG-001` (Semgrep), `S-SQ-001` (SonarQube), `S-TRV-001` (Trivy), `S-GL-001` (Gitleaks), `S-CHK-001` (Checkov), `S-GRP-001` (Grype), `S-GIT-001` (git mining) |
|
|
60
|
+
| `source_tool` | enum | yes | Tool that produced this signal. | `sonarqube`, `semgrep`, `trivy`, `gitleaks`, `checkov`, `syft`, `grype`, `git-mining`, `manual-review` |
|
|
61
|
+
| `source_rule` | string | yes | The specific rule, check, or policy that fired. | Tool-specific rule identifier. Examples: `python.security.sql-injection` (Semgrep), `S2068` (SonarQube), `CVE-2024-1234` (Trivy/Grype). |
|
|
62
|
+
| `location` | string | yes | Where the signal was detected. | File path + line range, container image + layer, dependency name + version, or config path. Must be specific enough to locate. |
|
|
63
|
+
| `signal_category` | enum | yes | Which of the 6 evidence dimensions this signal belongs to. | `structure`, `behavior`, `history`, `dependencies`, `policy_posture`, `runtime_contracts` |
|
|
64
|
+
| `severity` | enum | yes | Normalized Radar severity. | `critical`, `high`, `medium`, `low`, `informational` |
|
|
65
|
+
| `confidence_estimate` | enum | yes | Tool-level confidence in the signal's accuracy. This is a rough estimate, not the full @schema:confidence vector (agents compute that during analysis). | `high`, `medium`, `low` |
|
|
66
|
+
| `blast_radius` | enum | yes | Estimated scope of impact if this signal represents a real issue. | `localized`, `service_level`, `systemic`, `org_wide` |
|
|
67
|
+
| `domain_relevance` | list of strings | yes | Domain numbers this signal is relevant to. | At least one value. Each must be a two-digit domain number `00` through `13`. |
|
|
68
|
+
| `raw_severity` | string | yes | The original severity string from the tool, preserved verbatim. | Free text — exact value the tool reported. |
|
|
69
|
+
| `raw_output_ref` | string | yes | Path to the raw tool output file. | File path within the `.radar/signals/` directory. |
|
|
70
|
+
| `normalization_notes` | string | no | Context about how raw values were mapped to Radar values. | Useful when mapping is ambiguous (e.g., SonarQube "blocker" maps to Radar "critical" but with context-dependent confidence). |
|
|
71
|
+
|
|
72
|
+
## Validation Rules
|
|
73
|
+
|
|
74
|
+
1. **Unique ID:** `signal_id` must be unique across the entire audit.
|
|
75
|
+
2. **Valid tool:** `source_tool` must match a configured tool adapter in the Radar installation.
|
|
76
|
+
3. **Radar severity values:** `severity` must use the 5-value Radar enum. Raw tool severities are preserved in `raw_severity` but never used directly by agents.
|
|
77
|
+
4. **Domain relevance required:** `domain_relevance` must contain at least one valid domain number (00-13).
|
|
78
|
+
5. **Raw preservation:** `raw_severity` must be preserved exactly as the tool reported it. Discarding raw values breaks audit trail integrity.
|
|
79
|
+
6. **Signal is not finding:** Signals must not contain interpretation, risk statements, or judgment. These are Layer 1 (observation) + Layer 2 (evidence source) content only. If a signal contains reasoning, it has been contaminated by agent logic.
|
|
80
|
+
7. **Category alignment:** `signal_category` must match the tool's evidence type. Static analysis tools produce `structure` or `policy_posture` signals, not `behavior` signals.
|
|
81
|
+
|
|
82
|
+
## Examples
|
|
83
|
+
|
|
84
|
+
### Example: Semgrep SQL Injection Signal
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
### S-SMG-001
|
|
88
|
+
|
|
89
|
+
**Source tool:** semgrep
|
|
90
|
+
**Source rule:** python.security.sql-injection.string-concat-query
|
|
91
|
+
**Location:** src/api/users.py:45
|
|
92
|
+
**Category:** policy_posture
|
|
93
|
+
|
|
94
|
+
#### Normalized Dimensions
|
|
95
|
+
|
|
96
|
+
| Dimension | Value |
|
|
97
|
+
|-----------|-------|
|
|
98
|
+
| Severity | high |
|
|
99
|
+
| Confidence estimate | medium |
|
|
100
|
+
| Blast radius | service_level |
|
|
101
|
+
| Domain relevance | 04, 03 |
|
|
102
|
+
|
|
103
|
+
#### Raw Output
|
|
104
|
+
|
|
105
|
+
**Raw severity:** ERROR
|
|
106
|
+
**Raw output ref:** .radar/signals/semgrep/run-001.json
|
|
107
|
+
**Normalization notes:** Semgrep ERROR maps to Radar high (not critical) because Semgrep does not distinguish between exploitable and theoretical vulnerabilities. Confidence is medium because Semgrep is pattern-based without data flow analysis — the match may be a false positive if input is sanitized upstream. Domain 04 (Security) is primary; Domain 03 (Correctness) is secondary because string concatenation in SQL is also a correctness issue.
|
|
108
|
+
```
|