Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
191 commits
Select commit Hold shift + click to select a range
fd85932
Improve namespace ABNF integration
bernhardreiter Feb 19, 2026
d072c7b
improve ABNFpattern integration
bernhardreiter Feb 19, 2026
289719b
improve ABNF integration of ssvc namespaces
bernhardreiter Feb 20, 2026
7fd3066
codestyle: reformat with black
bernhardreiter Feb 20, 2026
af9d915
Bump tj-actions/changed-files from 47.0.1 to 47.0.4
dependabot[bot] Feb 23, 2026
a67f48b
Initial plan
Copilot Feb 27, 2026
9155ae0
Create GitHub Action to run doctools.py on pull requests
Copilot Feb 27, 2026
5ccd2ae
Bump actions/upload-artifact from 6 to 7
dependabot[bot] Mar 2, 2026
832ebc8
Initial plan
Copilot Jan 9, 2026
c9f852a
Initial plan
Copilot Jan 9, 2026
249276b
Update License for genai clause and bump years to 2026
Mar 5, 2026
288c0bf
improve ABNF integration of ssvc namespaces via runtime parsing (#1067)
ahouseholder Mar 6, 2026
43e13cb
Bump tj-actions/changed-files from 47.0.1 to 47.0.4 (#1068)
ahouseholder Mar 6, 2026
9d79f87
Bump actions/upload-artifact from 6 to 7 (#1071)
ahouseholder Mar 6, 2026
52beedb
Bump python-multipart from 0.0.20 to 0.0.22
dependabot[bot] Mar 6, 2026
eca4491
Bump orjson from 3.11.3 to 3.11.5
dependabot[bot] Mar 6, 2026
e73b9d0
Bump urllib3 from 2.5.0 to 2.6.3
dependabot[bot] Mar 6, 2026
d888203
Merge branch 'main' into copilot/add-github-action-doctools
ahouseholder Mar 6, 2026
691a6b1
Fix doctools workflow: handle fork PRs and replace [skip ci] with act…
Copilot Mar 6, 2026
6c647a2
Update license (#1073)
ahouseholder Mar 6, 2026
73c7b54
Bump python-multipart from 0.0.20 to 0.0.22 (#1074)
ahouseholder Mar 6, 2026
487626d
Bump orjson from 3.11.3 to 3.11.5 (#1075)
ahouseholder Mar 6, 2026
d31607e
Bump starlette from 0.48.0 to 0.49.1
dependabot[bot] Mar 6, 2026
39adbf7
Merge branch 'main' into dependabot/uv/urllib3-2.6.3
ahouseholder Mar 6, 2026
10c2193
Add GitHub Action to run doctools.py on pull requests and commit data…
ahouseholder Mar 6, 2026
c4c86c7
Bump urllib3 from 2.5.0 to 2.6.3 (#1077)
ahouseholder Mar 6, 2026
395478d
Bump tj-actions/changed-files from 47.0.4 to 47.0.5
dependabot[bot] Mar 9, 2026
e902192
Bump the mkdocs group across 1 directory with 2 updates
dependabot[bot] Mar 9, 2026
135389a
Bump mkdocstrings-python from 1.17.0 to 2.0.3
dependabot[bot] Mar 9, 2026
8b71a89
Bump mkdocstrings from 0.30.0 to 1.0.3
dependabot[bot] Mar 9, 2026
50c0b3e
Bump jsonschema from 4.25.1 to 4.26.0
dependabot[bot] Mar 9, 2026
bf61100
Initial plan
Copilot Mar 11, 2026
3138118
Fix test failures caused by starlette 0.49.1 upgrade
Copilot Mar 11, 2026
e14b6a8
Initial plan
Copilot Mar 11, 2026
a7ea79d
Update deployer_tree.md: replace Utility with Automatable decision point
Copilot Mar 11, 2026
dab6262
Fix test failures from starlette 0.49.1 upgrade (#1083)
ahouseholder Mar 11, 2026
ce76132
Bump starlette from 0.48.0 to 0.49.1 (#1076)
ahouseholder Mar 11, 2026
dcc914f
Bump tj-actions/changed-files from 47.0.4 to 47.0.5 (#1078)
ahouseholder Mar 11, 2026
4ac41d6
Bump the mkdocs group across 1 directory with 2 updates (#1079)
ahouseholder Mar 11, 2026
14cbf56
Bump mkdocstrings-python from 1.17.0 to 2.0.3 (#1080)
ahouseholder Mar 11, 2026
0391bbe
Bump mkdocstrings from 0.30.0 to 1.0.3 (#1081)
ahouseholder Mar 11, 2026
7347019
Bump jsonschema from 4.25.1 to 4.26.0 (#1082)
ahouseholder Mar 11, 2026
eb167ab
Merge branch 'main' into copilot/update-deployer-decision-doc
ahouseholder Mar 11, 2026
6fa7f11
Fix deployer decision points doc: Utility → Automatable (#1084)
ahouseholder Mar 11, 2026
6251416
Initial plan
Copilot Mar 12, 2026
c6074f1
Add docs build check workflow for PRs and pushes to main
Copilot Mar 12, 2026
b27d56e
resolves #1033: Add SSVC doc explaining "human-scale bottleneck" idea
ahouseholder Mar 12, 2026
8b48d44
Apply suggestions from code review
ahouseholder Mar 12, 2026
304a59b
add ssvc human scale bottleneck page to nav
ahouseholder Mar 12, 2026
702b6a6
Merge branch 'fix-1033' of https://github.com/CERTCC/SSVC into fix-1033
ahouseholder Mar 12, 2026
b2e7af7
markdownlint --fix
ahouseholder Mar 12, 2026
cdc25c2
wording
ahouseholder Mar 12, 2026
8eac547
add diagram and links to other pages
ahouseholder Mar 12, 2026
0d653ef
Bump black from 25.9.0 to 26.3.1
dependabot[bot] Mar 12, 2026
5907773
refine diagram
ahouseholder Mar 12, 2026
4cc2dc1
Bump black from 25.9.0 to 26.3.1 (#1088)
ahouseholder Mar 13, 2026
371cec9
Bump mkdocs-material in the mkdocs group across 1 directory
dependabot[bot] Mar 16, 2026
5b3c79a
Bump pytest from 8.4.2 to 9.0.2
dependabot[bot] Mar 16, 2026
3ce0a99
Bump networkx from 3.4.2 to 3.6.1
dependabot[bot] Mar 16, 2026
7df81b4
Bump pandas from 2.3.2 to 3.0.1
dependabot[bot] Mar 16, 2026
a492b8b
Bump scikit-learn from 1.6.1 to 1.8.0
dependabot[bot] Mar 16, 2026
af96922
Bump mkdocs-material from 9.7.4 to 9.7.5 in the mkdocs group across 1…
ahouseholder Mar 18, 2026
0705004
Bump pytest from 8.4.2 to 9.0.2 (#1090)
ahouseholder Mar 19, 2026
13590e3
Bump networkx from 3.4.2 to 3.6.1 (#1091)
ahouseholder Mar 19, 2026
48f49d7
Bump pandas from 2.3.2 to 3.0.1 (#1092)
ahouseholder Mar 19, 2026
4a21f05
Bump scikit-learn from 1.6.1 to 1.8.0 (#1093)
ahouseholder Mar 19, 2026
1b632b2
Add CI workflow to check mkdocs build on PRs (#1086)
ahouseholder Mar 19, 2026
bcd40c6
Bump mkdocs-material in the mkdocs group across 1 directory
dependabot[bot] Mar 23, 2026
57d0678
Bump pydantic from 2.11.7 to 2.12.5
dependabot[bot] Mar 23, 2026
723881d
Bump scipy from 1.16.1 to 1.17.1
dependabot[bot] Mar 23, 2026
7a4efcc
Bump mkdocs-material from 9.7.5 to 9.7.6 in the mkdocs group across 1…
ahouseholder Mar 23, 2026
b2b1a4b
Bump pydantic from 2.11.7 to 2.12.5 (#1096)
ahouseholder Mar 23, 2026
65f7a4d
Bump scipy from 1.16.1 to 1.17.1 (#1097)
ahouseholder Mar 23, 2026
1b0ec39
Bump requests from 2.32.5 to 2.33.0
dependabot[bot] Mar 26, 2026
a550b48
Bump requests from 2.32.5 to 2.33.0 (#1098)
ahouseholder Mar 26, 2026
b2e1644
Initial plan
Copilot Mar 27, 2026
9d2aa29
Add ADR-0014: use 'decision table' instead of 'decision tree'
Copilot Mar 27, 2026
b196a8b
Revert #1067, apply #1065: move abnf-to-regexp to dev dep with static…
ahouseholder Mar 27, 2026
9254d55
Merge commit 'd072c7beae7ff64adec5edcca11d027dabdff39f' into maybe-fi…
ahouseholder Mar 27, 2026
10cb123
format with black
ahouseholder Mar 27, 2026
c395b3c
Modify copilot's work and markdownlint
Mar 27, 2026
6d25bf6
Move abnf-to-regexp to codegen group; add --no-sync to uv run CMDs
ahouseholder Mar 27, 2026
02dd77e
Apply suggestion from @Copilot
sei-renae Mar 27, 2026
7acde68
Bump actions/configure-pages from 5 to 6
dependabot[bot] Mar 30, 2026
7962976
Bump DavidAnson/markdownlint-cli2-action from 22 to 23
dependabot[bot] Mar 30, 2026
056b628
Bump actions/deploy-pages from 4 to 5
dependabot[bot] Mar 30, 2026
427f4e0
revise ssvc-human-scale-bottleneck.md
ahouseholder Mar 30, 2026
49b1af3
Address unresolved reviewer comments on PR #1087
ahouseholder Mar 30, 2026
0e7b699
Add human-on-the-loop terminology to intro and conclusion
ahouseholder Mar 30, 2026
89dcca8
Refine terminology and formatting in ssvc-human-scale-bottleneck.md
ahouseholder Mar 30, 2026
029152a
Merge branch 'main' into fix-1033
ahouseholder Mar 30, 2026
0ee2730
Bump pygments from 2.19.2 to 2.20.0
dependabot[bot] Mar 30, 2026
507d1ea
Edits for clarity
ahouseholder Apr 2, 2026
e405ce3
Apply suggestions from code review
ahouseholder Apr 2, 2026
25b68d8
Remove emphasis from Considered Options list items in ADR-0014
Copilot Apr 3, 2026
c48f706
Edits for clarity (#1110)
sei-renae Apr 3, 2026
ffef5c7
Add ADR-0014: Terminology shift from "decision tree" to "decision tab…
sei-renae Apr 3, 2026
711448d
Add admonition box
Apr 3, 2026
88dae2a
Change footnote cite to hyperlink
Apr 3, 2026
d5fc9d3
Make admonition box an includable
Apr 3, 2026
6ffa47e
handle 991 as well
Apr 3, 2026
97b6eb3
fix brokenlink
Apr 3, 2026
c7cfd40
Update docs/topics/decision_trees.md
sei-renae Apr 3, 2026
f8027d8
really fix the link
Apr 3, 2026
3088e24
rebase
Apr 3, 2026
d5babca
Bump pandas from 3.0.1 to 3.0.2
dependabot[bot] Apr 6, 2026
0e1be84
Bump mkdocs-include-markdown-plugin
dependabot[bot] Apr 6, 2026
05f1bf1
Bump pydantic from 2.12.5 to 2.13.0
dependabot[bot] Apr 13, 2026
5da551d
Bump pytest from 9.0.2 to 9.0.3
dependabot[bot] Apr 13, 2026
be72485
Address reviewer comments on #1101
ahouseholder Apr 13, 2026
b16a2eb
Bump actions/configure-pages from 5 to 6 (#1104)
ahouseholder Apr 13, 2026
661ac7e
Bump DavidAnson/markdownlint-cli2-action from 22 to 23 (#1105)
ahouseholder Apr 13, 2026
e838fef
Bump actions/deploy-pages from 4 to 5 (#1106)
ahouseholder Apr 13, 2026
49a1b55
Bump mkdocs-include-markdown-plugin from 7.2.1 to 7.2.2 in the mkdocs…
ahouseholder Apr 13, 2026
c0bca1f
Merge branch 'main' into dependabot/uv/pygments-2.20.0
ahouseholder Apr 13, 2026
9f41d58
Bump pandas from 3.0.1 to 3.0.2 (#1112)
ahouseholder Apr 13, 2026
30e70b9
Bump pydantic from 2.12.5 to 2.13.0 (#1113)
ahouseholder Apr 13, 2026
afcaf5b
Bump pytest from 9.0.2 to 9.0.3 (#1114)
ahouseholder Apr 13, 2026
a0a3736
Apply suggestions from code review
ahouseholder Apr 13, 2026
1fca9f4
Merge branch 'main' of https://github.com/CERTCC/SSVC into fix-1033
ahouseholder Apr 13, 2026
70c28e5
Address reviewer feedback on ssvc-human-scale-bottleneck doc
ahouseholder Apr 13, 2026
c9cc2e7
Merge branch 'main' into maybe-fix-1067-with-1065
sei-renae Apr 14, 2026
7dcfa81
Resolve docker hiccups around regexp build (#1101)
sei-renae Apr 14, 2026
034301b
revise topics/decision trees for decision tables terminology shift (#…
sei-renae Apr 14, 2026
20fd1a4
Bump python-multipart from 0.0.22 to 0.0.26
dependabot[bot] Apr 15, 2026
268162b
Bump python-multipart from 0.0.22 to 0.0.26 (#1115)
ahouseholder Apr 15, 2026
614dadc
Bump tj-actions/changed-files from 47.0.5 to 47.0.6
dependabot[bot] Apr 20, 2026
f9f5331
Bump actions/upload-pages-artifact from 4 to 5
dependabot[bot] Apr 20, 2026
c98cce3
Bump mkdocstrings in the mkdocs group across 1 directory
dependabot[bot] Apr 20, 2026
706417b
Bump pydantic from 2.13.0 to 2.13.3
dependabot[bot] Apr 20, 2026
d91d032
Add ADR-0015: SSVC JSON schemas use SchemaVer for versioning
Apr 21, 2026
d0032a3
Bump python-dotenv from 1.1.1 to 1.2.2
dependabot[bot] Apr 21, 2026
a6fd369
Bump tj-actions/changed-files from 47.0.5 to 47.0.6 (#1116)
ahouseholder Apr 22, 2026
f346041
Bump actions/upload-pages-artifact from 4 to 5 (#1117)
ahouseholder Apr 22, 2026
ea4ef43
Bump mkdocstrings from 1.0.3 to 1.0.4 in the mkdocs group across 1 di…
ahouseholder Apr 22, 2026
11ef6c1
Bump pydantic from 2.13.0 to 2.13.3 (#1119)
ahouseholder Apr 22, 2026
6ff3c22
Bump python-dotenv from 1.1.1 to 1.2.2 (#1120)
ahouseholder Apr 22, 2026
0ca594d
Add SSVC doc explaining "human-scale bottleneck" idea (#1087)
sei-renae Apr 23, 2026
7a5ab4a
Change deciders' names
Apr 24, 2026
4f1a672
Merge branch 'main' into adr-0015-schemaver
sei-renae Apr 24, 2026
e0d7a63
Update 0015-ssvc-json-schemas-use-schemaver.md
ahouseholder Apr 28, 2026
ac2638b
Update 0015-ssvc-json-schemas-use-schemaver.md
ahouseholder Apr 28, 2026
705fa6f
Update 0015-ssvc-json-schemas-use-schemaver.md
ahouseholder Apr 28, 2026
e1536e4
Add ADR-0015: SSVC JSON schemas use SchemaVer for versioning (#1121)
sei-vsarvepalli May 5, 2026
a8c9105
Bump python-multipart from 0.0.26 to 0.0.27
dependabot[bot] May 8, 2026
97928e8
Bump python-multipart from 0.0.26 to 0.0.27 (#1125)
ahouseholder May 8, 2026
b46ffd5
Fix pygments 2.20.0 compatibility by upgrading pymdown-extensions to …
ahouseholder May 8, 2026
0156471
Bump pygments from 2.19.2 to 2.20.0 (#1109)
ahouseholder May 8, 2026
feb24ad
Bump urllib3 from 2.6.3 to 2.7.0
dependabot[bot] May 11, 2026
28ea20b
Bump pydantic from 2.13.3 to 2.13.4
dependabot[bot] May 11, 2026
7f0e447
Bump pandas from 3.0.2 to 3.0.3
dependabot[bot] May 11, 2026
c1ec954
Bump urllib3 from 2.6.3 to 2.7.0 (#1127)
sei-ahouseholder May 18, 2026
48bdbcc
Bump pydantic from 2.13.3 to 2.13.4 (#1128)
sei-ahouseholder May 18, 2026
e7adaf4
Bump pandas from 3.0.2 to 3.0.3 (#1129)
sei-ahouseholder May 18, 2026
66e1c09
Add /wip_notes/ to .gitignore
ahouseholder May 18, 2026
4bb268f
Bump mkdocs-include-markdown-plugin
dependabot[bot] May 19, 2026
29b5ee1
Bump pymdown-extensions from 10.21.2 to 10.21.3
dependabot[bot] May 19, 2026
2bb4bb3
Bump black from 26.3.1 to 26.5.1
dependabot[bot] May 19, 2026
3b50ba7
Bump idna from 3.10 to 3.15
dependabot[bot] May 19, 2026
4f0a5c3
Bump idna from 3.10 to 3.15 (#1150)
ahouseholder May 19, 2026
660e4ef
Bump mkdocs-include-markdown-plugin from 7.2.2 to 7.3.0 in the mkdocs…
ahouseholder May 20, 2026
3e39e20
Bump pymdown-extensions from 10.21.2 to 10.21.3 (#1147)
ahouseholder May 20, 2026
48f1d9a
Bump black from 26.3.1 to 26.5.1 (#1148)
ahouseholder May 20, 2026
9bd3deb
Bump scikit-learn from 1.8.0 to 1.9.0
dependabot[bot] Jun 2, 2026
da27307
Bump starlette from 0.49.1 to 1.0.1
dependabot[bot] Jun 4, 2026
a87bf96
Bump mkdocstrings-python in the mkdocs group across 1 directory
dependabot[bot] Jun 8, 2026
fbd02ea
Bump scikit-learn from 1.8.0 to 1.9.0 (#1157)
sei-ahouseholder Jun 8, 2026
b69b453
Bump starlette from 0.49.1 to 1.0.1 (#1158)
sei-ahouseholder Jun 8, 2026
901f966
Bump mkdocstrings-python from 2.0.3 to 2.0.4 in the mkdocs group acro…
sei-ahouseholder Jun 8, 2026
b5f6e1f
Fix calculator checkbox order dependency in tree pruning
Skalman Jun 10, 2026
41555ef
Fix calculator checkbox order dependency in tree pruning (#1160)
sei-vsarvepalli Jun 10, 2026
8002cd4
Update CODEOWNERS to include CISA-namespaced items
ahouseholder Jun 10, 2026
ef05fa9
Update CODEOWNERS to include CISA-namespaced items (#1163)
sei-vsarvepalli Jun 10, 2026
03dfc45
Add CISA BOD 26-04 decision framework and related definitions
ahouseholder Jun 10, 2026
1abde04
Rename 'Publicly Exposed' to 'Asset Exposure' in CISA BOD 26-04 docum…
ahouseholder Jun 10, 2026
5b54aaa
Updates to cisa_response.md
sei-vsarvepalli Jun 10, 2026
90303f3
rename asset_exposure.py to publicly_exposed.py
ahouseholder Jun 11, 2026
980c06c
add reference pages for cisa decision points
ahouseholder Jun 11, 2026
d0c3ccb
add cisa levels outcomes
ahouseholder Jun 11, 2026
2fdb4c8
add cisa doc
ahouseholder Jun 11, 2026
396ade5
add cisa doc
ahouseholder Jun 11, 2026
5e7ccd7
Merge commit '5b54aaa9936bd587e28ea45a59f1362401e84f85' into bod-26-04
ahouseholder Jun 11, 2026
c2abff5
add cisa doc
ahouseholder Jun 11, 2026
a0a1552
add cisa doc
ahouseholder Jun 11, 2026
d33ef44
add cisa doc
ahouseholder Jun 11, 2026
bcb606b
Update cisa_response.md
sei-ahouseholder Jun 11, 2026
430d1c5
Update cisa_response.md
sei-ahouseholder Jun 11, 2026
ca06313
reverse unintended js change
ahouseholder Jun 11, 2026
7e1ff72
Merge branch 'bod-26-04' of https://github.com/CERTCC/SSVC into bod-2…
ahouseholder Jun 11, 2026
73834c5
Add CISA BOD 26-04 decision framework with Asset Exposure decision po…
sei-ahouseholder Jun 11, 2026
5826c6c
Merge branch 'publish' into main
sei-ahouseholder Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@ mkdocs.yml @ahouseholder

# github setup
/.github/ @ahouseholder @sei-vsarvepalli

# CISA-namespaced items are kept in folders named `cisa` at various depths
**/cisa/** @j---
6 changes: 3 additions & 3 deletions .github/workflows/deploy_site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,19 @@ jobs:
uv sync --no-dev

- name: Setup Pages
uses: actions/configure-pages@v5
uses: actions/configure-pages@v6

- name: Build Site
run: |
export PYTHONPATH=src:$PYTHONPATH
uv run mkdocs build --clean --config-file mkdocs.yml

- name: Upload artifact
uses: actions/upload-pages-artifact@v4
uses: actions/upload-pages-artifact@v5
with:
# Upload entire repository
path: 'site'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
33 changes: 33 additions & 0 deletions .github/workflows/docs_build_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Docs Build Check

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]

permissions:
contents: read

jobs:
docs-build:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip uv
uv sync --no-dev --frozen

- name: Build docs
run: |
export PYTHONPATH=src:$PYTHONPATH
uv run mkdocs build --clean --config-file mkdocs.yml
4 changes: 2 additions & 2 deletions .github/workflows/lint_md_changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ jobs:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891
- uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96
id: changed-files
with:
files: '**/*.md'
separator: ","
- uses: DavidAnson/markdownlint-cli2-action@v22
- uses: DavidAnson/markdownlint-cli2-action@v23
if: steps.changed-files.outputs.any_changed == 'true'
with:
globs: ${{ steps.changed-files.outputs.all_changed_files }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
run: |
uv build
- name: Upload Artifacts
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: ssvc
path: src/dist/ssvc-*.tar.gz
Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/run_doctools.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: "Run doctools on PR"

on:
pull_request:
paths:
- 'src/ssvc/**'
- .github/workflows/run_doctools.yml

permissions:
contents: write

jobs:
run-doctools:
# Skip when the auto-commit from this workflow triggers a re-run
if: github.actor != 'github-actions[bot]'
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
fetch-depth: 0

- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip uv
uv sync --dev --frozen

- name: Run doctools
run: |
# Remove stale decision point files so doctools generates a clean set
rm -rf data/json/decision_points
export PYTHONPATH=$(pwd)/src
uv run python -m ssvc.doctools --overwrite --datadir ./data

- name: Fail if fork PR has uncommitted data/ changes
if: github.event.pull_request.head.repo.full_name != github.repository
run: |
git add data/
if git diff --cached --quiet; then
echo "No data/ changes detected."
else
echo "::error::This PR is from a fork and data/ files need to be regenerated."
echo "::error::Please run 'make regenerate_json' locally and push the resulting data/ changes to your PR branch."
exit 1
fi

- name: Commit changes to data/
if: github.event.pull_request.head.repo.full_name == github.repository
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add data/
if git diff --cached --quiet; then
echo "No changes to commit"
else
git commit -m "chore: regenerate data files via doctools"
git push
fi
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,4 @@ ssvc2-applier-wip.xlsx
_version.py
node_modules
tmp
/wip_notes/
18 changes: 18 additions & 0 deletions COPYRIGHT-code.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright (c) 2026 Carnegie Mellon University.
# NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE
# ENGINEERING INSTITUTE MATERIAL IS FURNISHED ON AN "AS-IS" BASIS.
# CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND,
# EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT
# NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR
# MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE
# OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE
# ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM
# PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.
# Licensed under a MIT (SEI)-style license, please see LICENSE or contact
# permission@sei.cmu.edu for full terms.
# [DISTRIBUTION STATEMENT A] This material has been approved for
# public release and unlimited distribution. Please see Copyright notice
# for non-US Government use and distribution.
# This Software includes and/or makes use of Third-Party Software each
# subject to its own license.
# DM24-0278
48 changes: 25 additions & 23 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,49 @@ Different directories in this repository are subject to different licenses. Plea

---

The following statement applies to markdown, pdf, bib, and text files (documentation):
Copyright 2026 Carnegie Mellon University.

This material is based upon work funded and supported by the Department of Homeland Security under Contract No. FA8702-15-D-0002 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center sponsored by the United States Department of Defense.

Copyright 2025 Carnegie Mellon University.

This material is based upon work funded and supported by the Department of Homeland Security under Contract No. FA8702-15-D-0002 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center sponsored by the United States Department of Defense.

The view, opinions, and/or findings contained in this material are those of the author(s) and should not be construed as an official Government position, policy, or decision, unless designated by other documentation.

NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING INSTITUTE MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.

[DISTRIBUTION STATEMENT A] This material has been approved for public release and unlimited distribution. Please see Copyright notice for non-US Government use and distribution.

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. Requests for permission for non-licensed uses should be directed to the Software Engineering Institute at permission@sei.cmu.edu.
CERT Coordination Center® is registered in the U.S. Patent and Trademark Office by Carnegie Mellon University.


This work product was created in part using generative AI.
CERT Coordination Center® is registered in the U.S. Patent and Trademark Office by Carnegie Mellon University.

DM24-0278

---

The following statement applies to py, json, csv, sh, toml files (software):

Copyright 2025 Carnegie Mellon University.
Copyright 2026 Carnegie Mellon University.

Licensed under a MIT (SEI)-style license, please see license.txt or contact permission@sei.cmu.edu for full terms.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

This Software includes and/or can make use of certain third party software ("Third Party Software"). The Third Party Software that is used by the software is dependent upon your system configuration, but typically includes the software identified in this license.txt file, and/or described in the documentation and/or read me file. By using this software, you agree to comply with any and all relevant Third Party Software terms and conditions contained in any such Third Party Software or separate license file distributed with such Third Party Software. The parties who own the Third Party Software ("Third Party Licensors") are intended third party beneficiaries to this License with respect to the terms applicable to their Third Party Software. Third Party Software licenses only apply to the Third Party Software and not any other portion of SEI Software or this software as a whole.
This material is based upon work funded and supported by the Department of Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center.
The view, opinions, and/or findings contained in this material are those of the author(s) and should not be construed as an official Government position, policy, or decision, unless designated by other documentation.

This material is based upon work funded and supported by the Department of Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center.

The view, opinions, and/or findings contained in this material are those of the author(s) and should not be construed as an official Government position, policy, or decision, unless designated by other documentation.

References herein to any specific commercial product, process, or service by trade name, trade mark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by Carnegie Mellon University or its Software Engineering Institute.

NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING INSTITUTE MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.


This work product was created in part using generative AI.

[DISTRIBUTION STATEMENT A] This material has been approved for public release and unlimited distribution. Please see Copyright notice for non-US Government use and distribution.

DM24-0278

DM24-0278

26 changes: 18 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,48 +10,58 @@ UV_RUN=uv run

all: help


src/ssvc/utils/namespace_patterns.py: src/ssvc/utils/ssvc_namespace_pattern.abnf COPYRIGHT-code.txt
@{ \
cat COPYRIGHT-code.txt; \
echo ''; \
echo '# AUTOGENERATED, DO NOT CHANGE manually, see Makefile'; \
} >$@
$(UV_RUN) --group codegen abnf-to-regexp --format python-nested -i $< >>$@

dev:
@echo "Set up dev environment..."
uv sync --dev
$(MAKE) src/ssvc/utils/namespace_patterns.py

mdlint_fix:
@echo "Running markdownlint..."
markdownlint --config .markdownlint.yml --fix .

test:
test: src/ssvc/utils/namespace_patterns.py
@echo "Running tests locally..."
$(UV_RUN) pytest -v

docker_test:
docker_test: src/ssvc/utils/namespace_patterns.py
@echo "Building the latest test image..."
$(DOCKER_COMPOSE) build test
@echo "Running tests in Docker..."
$(DOCKER_COMPOSE) run --rm test

docs_local:
docs_local: src/ssvc/utils/namespace_patterns.py
@echo "Building and running docs locally..."
$(UV_RUN) mkdocs serve

docs:
docs: src/ssvc/utils/namespace_patterns.py
@echo "Building and running docs in Docker..."
$(DOCKER_COMPOSE) up docs

api:
api: src/ssvc/utils/namespace_patterns.py
@echo "Building and running API in Docker..."
$(DOCKER_COMPOSE) up api

api_dev:
api_dev: src/ssvc/utils/namespace_patterns.py
$(UV_RUN) uvicorn ssvc.api.main:app --reload

up:
up: src/ssvc/utils/namespace_patterns.py
@echo "Starting Docker services..."
$(DOCKER_COMPOSE) up -d

down:
@echo "Stopping Docker services..."
$(DOCKER_COMPOSE) down

regenerate_json:
regenerate_json: src/ssvc/utils/namespace_patterns.py
@echo "Regenerating JSON files..."
rm -rf data/json/decision_points
export PYTHONPATH=$(PWD)/src && ./src/ssvc/doctools.py --datadir=./data --overwrite
Expand Down
2 changes: 1 addition & 1 deletion data/LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2025 Carnegie Mellon University.
Copyright 2026 Carnegie Mellon University.

Licensed under a MIT (SEI)-style license, please see license.txt or contact permission@sei.cmu.edu for full terms.

Expand Down
17 changes: 17 additions & 0 deletions data/csv/cisa/cisa_bod_26_04_1_0_0.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
row,In KEV v1.0.0 (cisa),Publicly Exposed v1.0.0 (cisa),Automatable v2.0.0,Technical Impact v1.0.0,CISA BOD 26-04 Remediation Timelines v1.0.0 (cisa)
0,no,no,no,partial,fix on system upgrade
1,yes,no,no,partial,14 days
2,no,yes,no,partial,60 days
3,no,no,yes,partial,60 days
4,no,no,no,total,fix on system upgrade
5,yes,yes,no,partial,14 days
6,yes,no,yes,partial,14 days
7,no,yes,yes,partial,14 days
8,yes,no,no,total,14 days
9,no,yes,no,total,14 days
10,no,no,yes,total,60 days
11,yes,yes,yes,partial,3 days
12,yes,yes,no,total,3 days & forensic investigation
13,yes,no,yes,total,3 days & forensic investigation
14,no,yes,yes,total,3 days
15,yes,yes,yes,total,3 days & forensic investigation
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"namespace": "cisa",
"key": "BOD2604",
"version": "1.0.0",
"name": "CISA BOD 26-04 Remediation Timelines",
"definition": "The CISA BOD 26-04 outcome group of remediation timelines for agencies to follow.",
"schemaVersion": "2.0.0",
"values": [
{
"key": "FSU",
"name": "Fix on system upgrade",
"definition": "The vulnerability should be remediated the next time the vulnerable asset receives a scheduled major upgrade or rebuild."
},
{
"key": "60D",
"name": "60 days",
"definition": "Remediate within 60 days."
},
{
"key": "14D",
"name": "14 days",
"definition": "Remediate within 14 days."
},
{
"key": "3D",
"name": "3 days",
"definition": "Remediate within 3 days."
},
{
"key": "3DF",
"name": "3 days & forensic investigation",
"definition": "Remediate within 3 days and carry out a forensic triage of the asset to assess whether the system is compromised."
}
]
}
20 changes: 20 additions & 0 deletions data/json/decision_points/cisa/publicly_exposed_1_0_0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"namespace": "cisa",
"key": "PE",
"version": "1.0.0",
"name": "Publicly Exposed",
"definition": "Denotes whether the asset is accessible to unauthenticated or untrusted entities via public networks.",
"schemaVersion": "2.0.0",
"values": [
{
"key": "N",
"name": "No",
"definition": "The asset is not accessible to unauthenticated or untrusted entities via public networks, such as the internet, regardless of its physical or logical location."
},
{
"key": "Y",
"name": "Yes",
"definition": "The asset is accessible to unauthenticated or untrusted entities via public networks, such as the internet, regardless of its physical or logical location."
}
]
}
Loading
Loading