Skip to content

feat: Phase 3C.3 — global view, Bayesian calibration, timeline, export, swim lanes, scoring#12

Merged
Emperiusm merged 14 commits intomainfrom
feature/phase3c3-global-bayesian
Apr 13, 2026
Merged

feat: Phase 3C.3 — global view, Bayesian calibration, timeline, export, swim lanes, scoring#12
Emperiusm merged 14 commits intomainfrom
feature/phase3c3-global-bayesian

Conversation

@Emperiusm
Copy link
Copy Markdown
Owner

Summary

  • Global cross-engagement graph at /chain/global with engagement color coding and filter chips
  • Bayesian weight calibration with Beta priors per linking rule, CLI command + web endpoint
  • Timeline playback with dual-handle scrubber, activity heatmap, temporal anchoring
  • Path-as-report Markdown export via backend endpoint + browser download
  • Swim lane Kill Chain layout with full lane dividers, phase headers, curved inter-lane edges
  • Attack vector scoring: path risk scores + node pivotality (betweenness centrality) with glow overlay
  • New ChainCalibrationState table (Alembic 007)
  • 12 new backend tests (95 total, all passing)

Test plan

  • Backend: 95/95 tests passing (12 new: 5 global subgraph + 4 calibration + 3 export)
  • Frontend: TypeScript type check clean (0 errors)
  • Frontend: Vite production build successful
  • Manual: /chain/global renders cross-engagement graph with engagement colors
  • Manual: engagement filter chips toggle engagement visibility
  • Manual: timeline scrubber filters nodes by time window
  • Manual: Kill Chain layout toggle positions nodes in MITRE phase lanes
  • Manual: calibrate button triggers Bayesian calibration
  • Manual: export path button downloads Markdown report

🤖 Generated with Claude Code

Emperiusm and others added 14 commits April 13, 2026 03:51
Adds per-rule Bayesian calibration state table (alpha, beta_param,
observations) for Phase 3C.3, with Alembic migration 007.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ment meta

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Also fixes rustworkx CentralityMapping.get() AttributeError in chain_service by converting to dict before lookup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nents

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds Phase 3C.3 test coverage for /api/chain/calibrate (Bayesian
below-threshold, success, dry-run, invalid scope) and
/api/chain/export/path (markdown output, 404 on missing findings,
422 on <2 findings). All 7 tests pass against the SQLite in-memory
test backend.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…, pivotality glow, engagement colors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ivotality

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ent colors, calibration, timeline

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…port

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Emperiusm Emperiusm merged commit 4b99ba2 into main Apr 13, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant