Commit 91b13e3
doc: add security documentation pipeline flow diagram (#1276)
* doc: add security documentation pipeline flow diagram
Adds a PlantUML component diagram (security_doc_flow.puml) showing
how the three security documentation pipelines produce their output
artifacts — threat model RSTs (via tm_render.py + pytm), compliance
RST and OSCAL JSON (via compliance.py), and runtime outputs (SARIF,
SBOM, Code Climate, Jenkins JSON from dfetch check/report).
References the diagram from a new "Security Documentation Pipeline"
section in security.rst with prose explaining each pipeline.
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
* doc: add GitHub links to source files in security pipeline description
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
* doc: restructure security doc flow diagram after EU Blue Guide fig 4.1.2.2
Rebuilds security_doc_flow.puml to follow the four-column structure of
figure 4.1.2.2 from the EU Blue Guide on product rules (OJ 2022/C 247):
col 1 all requirements (CRA ECR-a…m + STRIDE catalog)
col 2 risk & threat assessment step (dashed box, filter)
col 3 applicable to dfetch (threats + controls + N/A gaps)
col 4 output paths — solid arrows where STRIDE methodology or
CRA compliance analysis provides coverage, dashed arrow
for gaps with no harmonised standard
Updates the security.rst prose to explain the Blue Guide analogy and
links to the official EU Blue Guide PDF on EUR-Lex.
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
* doc: add artifact quick-reference table and runtime output cross-links
Replaces the plain "Runtime outputs" sentence with proper :ref: cross-links
to check-ci-github (SARIF), sbom (CycloneDX), check-ci-gitlab (Code Climate),
and check-ci-jenkins (Jenkins JSON).
Adds an "Artifacts at a glance" list-table covering all ten security
documentation outputs — generated RST pages, manually maintained RST page,
two OSCAL JSON files, and the four runtime reporting formats — with
direct doc cross-references or GitHub source links for each.
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
* doc: add Further Reading section with references to CRA, EN 40000, OSCAL, STRIDE
Adds a structured Further Reading section covering:
- CRA: official text, EU overview, March 2026 draft guidance, BSI TR-03183-1
- EN 40000: CEN/CENELEC cybersecurity page, March 2025 webinar slides,
EU Blue Guide 2022 (fig 4.1.2.2), OSCAL catalog provenance note
- Threat modelling: STRIDE docs, pytm, BSI TR-03183-1, ENISA playbook
- OSCAL: NIST OSCAL project, Catalog model, Component Definition model
- Output formats: SARIF 2.1.0 (OASIS), CycloneDX, Code Climate spec
Also updates the EN 40000 inline link from a single webinar PDF to the
CEN/CENELEC cybersecurity overview page, and adds an explicit STRIDE link.
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
* doc: correct SBOM scope — release attestations about dfetch, not dfetch report
The SBOMs relevant to dfetch's security model are the CycloneDX SBOM
attestations generated by GitHub Actions about dfetch itself (signed by
Sigstore, verifiable via gh attestation verify), not the SBOM output
that dfetch generates for users' vendored dependencies.
- diagram: replace "Runtime evidence (dfetch check/report)" with two
separate clusters: "Release attestations (GitHub Actions, about dfetch)"
containing CycloneDX SBOM · SLSA Build Provenance · Source Provenance ·
VSA · in-toto Test Results, connected from tm_out via controls
C-026/C-037/C-039/C-040; and "Dependency-scanning outputs (dfetch check)"
containing only SARIF · Code Climate · Jenkins JSON
- prose: replace single "Runtime outputs" paragraph with "Release
attestations" (five types, Sigstore-signed, gh attestation verify) and
"Dependency-scanning outputs" (dfetch check formats for users)
- artifacts table: replace dfetch report --sbom row with a "Release
attestations" row referencing verify-integrity and the four controls
- Further Reading: update CycloneDX note to clarify it is dfetch's own
CI-generated SBOM, not a user-facing report --sbom output
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
* doc: add attestation, provenance and security standard terms to glossary
New entries:
Attestation — Sigstore-signed claims about dfetch release artifacts;
links the five attestation types and verify-integrity
Build Provenance — SLSA attestation for source-to-binary traceability
CRA — Cyber Resilience Act (EU 2024/2847), 13 ECRs
EN 40000 — CEN/CENELEC harmonised standard family under the CRA
OSCAL — NIST Open Security Controls Assessment Language; both
OSCAL artifacts (catalog + component-definition) explained
SARIF — Static Analysis Results Interchange Format; links check-ci
Sigstore — transparency-log code-signing infrastructure for attestations
SLSA — Supply-chain Levels for Software Artifacts framework
Source Provenance — SLSA attestation for governance controls on main
STRIDE — threat-classification framework; links both threat model pages
VSA — Verification Summary Attestation for binary installers
Updated:
SBOM — notes both user-facing dfetch report output and dfetch's
own CI-generated CycloneDX release attestation
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
* doc: fix three accuracy issues in glossary and flow diagram
Attestation entry (glossary): clarified that four attestation types are
published per release (Build Provenance, SBOM, VSA, in-toto Test Results)
and Source Provenance is published on every push to main — not per release.
Verified against verify-integrity.rst line 239.
Diagram producer nodes: replaced misleading arrows (tm_out→sc_out and
appl_c→rt_out) with explicit producer nodes inside each output package:
- "GitHub Actions release workflow" → sc_out and src_prov (Source
Provenance split out as a separate node to reflect different trigger)
- "dfetch check" → rt_out
Arrows from the documentation pipeline are now dashed "requires/documents"
links to the producer nodes, not solid "produces" arrows to the artifacts.
control_register.rst removed from comp_out: the file is manually maintained
and not generated by compliance.py (which outputs only compliance_track.rst
and dfetch.component-definition.json). Verified by inspection of compliance.py
output path and README commands.
https://claude.ai/code/session_01P1dbJRTSn9LooBhp9Xwt7X
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent baba2ce commit 91b13e3
3 files changed
Lines changed: 405 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
103 | 104 | | |
104 | 105 | | |
105 | 106 | | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
106 | 220 | | |
107 | 221 | | |
108 | 222 | | |
| |||
149 | 263 | | |
150 | 264 | | |
151 | 265 | | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
74 | 77 | | |
75 | 78 | | |
76 | 79 | | |
| |||
95 | 98 | | |
96 | 99 | | |
97 | 100 | | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
98 | 187 | | |
99 | 188 | | |
100 | 189 | | |
101 | 190 | | |
102 | 191 | | |
103 | 192 | | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
0 commit comments