feat: add deterministic Defender report skeleton (synthetic fixture pipeline) #1
Loading…
Reference in a new issue
No description provided.
Delete branch "fm/dse-security-reports-skeleton"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Create a basic skeleton for deterministic security reports over the two Microsoft Defender vulnerability exports, modeled on the deterministic Typst approach of cli-cloud-bi.
A Justfile drives a synthetic-fixture -> derive -> render pipeline, a stdlib-only Python derivation turns the export CSVs into canonical sorted JSON, and a German, data-driven Typst template renders byte-identical PDFs with
typst compile --root . --creation-timestamp 0.The skeleton runs entirely on a clearly-marked synthetic fixture; real Defender data never leaves gitignored
.local/.What changed
Justfile: recipesfixture,derive,report,all,repro(byte-identical PDF check), andlocal.scripts/make_fixture.sh: generates small synthetic CSVs of both export shapes under.local/samples/with fakeSYNTH-*devices and impossibleCVE-0000-*ids.scripts/derive_findings.py: deterministic CSV -> JSON derivation (stdlib only): canonical, sorted findings plus aggregates (per system, exploit availability, CVSS, severity, per software), no timestamps, no locale-dependent formatting, stable key order, atomic writes.reports/defender-findings.typ: German report in the cli-cloud-bi header-block style, standard library only (no@previewimports); per export it shows totals, findings per system, exploit availability, CVSS/severity distribution with bar visualization, and per-software aggregation; it always states that the two exports use different filters (no temporal comparison) and that findings may be false positives pending triage.README.md: documents the pipeline, sensitive-data handling, and planned follow-ups (real-data analysis/triage, dse-ansible/dse-opentofu challenge, Azure API integration).AGENTS.md+CLAUDE.md: project agent notes (pipeline, determinism, sensitive-data, DSE forge/fj rules).Behaviour change
The repository now contains a working, reproducible report pipeline that renders a 4-page German analysis/triage template from the synthetic fixture without any real data; identical inputs produce identical PDF bytes, verified by
just repro.Instructions-PR: none