v0.5.0 — Tier 3: STRIDE, serious-incident helper, model card, inventory roll-up
Adds the Tier 3 set and the public-demo plumbing.
Added
- STRIDE threat model (
stridereport) — the six STRIDE categories driven by the security-architecture fields. Tampering, Information disclosure, Denial of service and Elevation of privilege reuse the AI security lens's architecture-aware severity, so the STRIDE and OWASP views agree by construction; Spoofing and Repudiation are scored fromarch_auth_strength/arch_logging. Anchored on Art. 15 (Art. 12 for Repudiation). - Serious-incident decision helper + report (
incidentreport) — a boolean-driven helper over the four Art. 3(49) limbs returning the binding Art. 73 reporting deadline (15 / 2 / 10 days), plus a fill-in incident-report template. Maps to NIST CSF Respond + ISO 27001 A.5.24/A.5.26. New section-10inc_*intake fields drive it; they do not affect the risk tier. - Model Card generator (
modelcardreport) — a Mitchell et al. (2019) skeleton pre-filled from the intake, anchored on Art. 13. - Inventory portfolio roll-up —
GET /api/portfolio(risk-tier distribution, obligations coming due by date, Art. 50 disclosure count) + extra CSV columns; the web inventory shows the roll-up plus Due-from / Art. 50 columns. Pure aggregation, no new persistence. - Public demo plumbing — a
DEMO_MODEflag (sandbox banner +/api/config), a$PORT-aware Dockerfile (Hugging Face Spaces), anddocs/DEPLOY-HF-SPACE.md.
All three report types are wired into the CLI (--type stride|incident|modelcard), the web UI and MCP generate_report. security.arch_view / security.severity_for are now public so the STRIDE lens reuses the same severity engine.
Quality
104 tests pass (was 80); ruff + bandit clean. Deterministic engine; the LLM remains interface/narrator only with mandatory human-in-the-loop.