Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
72913f4
chore: Merge back version tags and changelog into develop.
oscal-compass-bot[bot] Jul 2, 2026
0be880f
Merge pull request #2283 from oscal-compass/dependabot/github_actions…
dependabot[bot] Jul 13, 2026
e4dd715
fix(deps): bump actions/stale from 10.3.0 to 10.4.0 (#2288)
dependabot[bot] Jul 13, 2026
5b7e3ea
fix(deps): bump github/codeql-action/analyze from 4.36.2 to 4.37.0 (#…
dependabot[bot] Jul 13, 2026
225ea54
fix(deps): bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (#2…
dependabot[bot] Jul 22, 2026
0b3873b
fix(deps): bump SonarSource/sonarqube-scan-action from 8.2.0 to 8.2.1…
dependabot[bot] Jul 22, 2026
8923d2c
fix(deps): bump actions/setup-python from 6.3.0 to 7.0.0 (#2292)
dependabot[bot] Jul 22, 2026
6f6d31d
fix(deps): bump github/codeql-action/analyze from 4.37.0 to 4.37.3 (#…
dependabot[bot] Jul 22, 2026
7042f00
fix: attest-build-provenance (#2291)
degenaro Jul 23, 2026
187cc78
feat: add signed package manifest flow (#2287)
MatteoFari Jul 23, 2026
7a41929
fix: is_ordered_sublist matching substrings across list items (#2286)
arpitjain099 Jul 27, 2026
676c38e
fix(deps): bump ossf/scorecard-action from 2.4.3 to 2.4.4 (#2301)
dependabot[bot] Jul 27, 2026
e3536c7
fix(deps): bump actions/checkout from 7.0.0 to 7.0.1 (#2300)
dependabot[bot] Jul 27, 2026
1dd2eaf
fix(deps): bump actions/attest-build-provenance from 2.4.0 to 4.1.1 (…
dependabot[bot] Jul 27, 2026
e51981c
fix: correct error path in assemble command (#2118)
rishi-jat Jul 29, 2026
5f22dc7
feat: pydantic v2 mode (#2249)
degenaro Jul 31, 2026
0db090b
fix: new version updates (#2303)
degenaro Jul 31, 2026
9ecc2e7
fix: nolog (#2307)
degenaro Aug 3, 2026
c794d32
fix: htmlproofer ignore transient errors (#2314)
degenaro Aug 3, 2026
0fc7b51
fix(deps): bump github/codeql-action/analyze from 4.37.3 to 4.37.4 (#…
dependabot[bot] Aug 3, 2026
59f10e4
fix(deps): bump sigstore/gh-action-sigstore-python from 3.4.0 to 3.5.…
dependabot[bot] Aug 3, 2026
6bc07ef
fix(deps): bump actions/stale from 10.4.0 to 11.0.0 (#2311)
dependabot[bot] Aug 3, 2026
4fa5f11
fix(deps): bump pypa/gh-action-pypi-publish from 1.14.1 to 1.14.2 (#2…
dependabot[bot] Aug 3, 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
2 changes: 1 addition & 1 deletion .github/workflows/act-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
if: contains(github.event.pull_request.labels.*.name, 'github_actions')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/actionlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Add problem matcher
run: echo "::add-matcher::.github/actionlint-matcher.json"
- name: Check workflow files
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,11 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
uses: github/codeql-action/init@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
Expand Down Expand Up @@ -91,6 +91,6 @@ jobs:
exit 1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
uses: github/codeql-action/analyze@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4
with:
category: "/language:${{matrix.language}}"
2 changes: 1 addition & 1 deletion .github/workflows/conventional-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Install dependencies
run: npm install @commitlint/cli @commitlint/config-conventional
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/docs-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
min: ${{ steps.versions.outputs.min }}
max: ${{ steps.versions.outputs.max }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- id: versions
run: |
min_version=$(jq '.PYTHON_MIN' -r version.json)
Expand All @@ -33,9 +33,9 @@ jobs:
outputs:
mver: ${{ steps.versions.outputs.mver }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Python ${{ needs.set-versions.outputs.max }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
# This is deliberately not using a custom credential as it relies on native github actions token to have push rights.
with:
python-version: ${{ needs.set-versions.outputs.max }}
Expand All @@ -54,13 +54,13 @@ jobs:
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
fetch-depth: 0
token: ${{ steps.app-token.outputs.token }}
- name: Set up Python ${{ needs.set-versions.outputs.max }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
# This is deliberately not using a custom credential as it relies on native github actions token to have push rights.
with:
python-version: ${{ needs.set-versions.outputs.max }}
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/python-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
min: ${{ steps.versions.outputs.min }}
max: ${{ steps.versions.outputs.max }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- id: versions
run: |
min_version=$(jq '.PYTHON_MIN' -r version.json)
Expand Down Expand Up @@ -52,11 +52,11 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down Expand Up @@ -134,12 +134,12 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
submodules: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down Expand Up @@ -194,13 +194,13 @@ jobs:
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
fetch-depth: 0
token: ${{ steps.app-token.outputs.token }}
- name: Set up Python ${{ needs.set-versions.outputs.max }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ needs.set-versions.outputs.max }}
- name: Install build tools
Expand Down Expand Up @@ -265,7 +265,7 @@ jobs:

- name: Python Semantic Release
id: release
uses: python-semantic-release/python-semantic-release@350c48fcb3ffcdfd2e0a235206bc2ecea6b69df0 # v10.5.3
uses: python-semantic-release/python-semantic-release@39dd2052f2ce8282a5d932c31d58a2ca06d2550e # v10.6.1
with:
github_token: ${{ steps.app-token.outputs.token }}

Expand All @@ -281,18 +281,18 @@ jobs:

- name: Generate SLSA build provenance
if: steps.release.outputs.released == 'true'
uses: actions/attest@a1948c3f048ba23858d222213b7c278aabede763 # v4.1.1
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
with:
subject-path: "dist/*"

- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
# NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true.
# See https://github.com/actions/runner/issues/1173
if: steps.release.outputs.released == 'true'

# Sign artifacts to be uploaded to github releases after pypi. Pypi signs it's own
- uses: sigstore/gh-action-sigstore-python@5b79a39c381910c090341a2c9b0bf022c8b387e1 # v3.4.0
- uses: sigstore/gh-action-sigstore-python@790bc6befb9d733738f18d8f895854b453640ec9 # v3.5.0
if: steps.release.outputs.released == 'true'
with:
inputs: "dist/*"
Expand All @@ -318,7 +318,7 @@ jobs:
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
ref: main
Expand Down
28 changes: 14 additions & 14 deletions .github/workflows/python-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
min: ${{ steps.versions.outputs.min }}
max: ${{ steps.versions.outputs.max }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- id: versions
run: |
min_version=$(jq '.PYTHON_MIN' -r version.json)
Expand All @@ -28,11 +28,11 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ needs.set-versions.outputs.max }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down Expand Up @@ -82,11 +82,11 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ needs.set-versions.outputs.max }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down Expand Up @@ -121,12 +121,12 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
submodules: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down Expand Up @@ -177,12 +177,12 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
submodules: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down Expand Up @@ -234,11 +234,11 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ needs.set-versions.outputs.max }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand All @@ -255,7 +255,7 @@ jobs:
with:
name: coverage
- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@713881670b6b3676cda39549040e2d88c70d582e # v8.2.0
uses: SonarSource/sonarqube-scan-action@22918119ff8e1ca75a623e15c8296b6ea4fbe28f # v8.2.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
Expand Down Expand Up @@ -284,11 +284,11 @@ jobs:
- name: Don't mess with line endings
run: |
git config --global core.autocrlf false
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ needs.set-versions.outputs.max }}
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ jobs:

steps:
- name: "Checkout Code"
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: "Run Analysis"
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
with:
results_file: results.sarif
results_format: sarif
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
STALE_WARNING_DAYS: 90
STALE_CLOSURE_DAYS: 30
steps:
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v9
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v9
with:
stale-issue-label: stale
exempt-issue-labels: good-first-issue, help-wanted, exempt-from-stale
Expand Down
12 changes: 6 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,13 @@ pre-commit-update: ## Update pre-commit hooks to latest versions
.PHONY: code-format code-lint code-lint-fix code-typing code-check mdformat

code-format: ## Format code with ruff
hatch fmt --formatter
hatch check fmt --fix

code-lint: ## Check code style with ruff (no fixes)
hatch fmt --linter --check
hatch check code

code-lint-fix: ## Fix code style issues with ruff
hatch fmt --linter
hatch check code --fix

code-typing: ## Run mypy type checking
hatch run -- mypy --pretty trestle
Expand All @@ -79,18 +79,18 @@ mdformat: ## Format markdown files
# Testing (via hatch test)
# ============================================================================

.PHONY: test test-all test-cov test-cov-xml test-bdist
.PHONY: test test-all test-cov test-cov-seq test-cov-xml test-cov-xml-seq test-bdist

test: ## Run tests (stops on first failure)
hatch test

test-all: ## Run all tests in parallel
hatch test --all

test-cov: ## Run tests with coverage report
test-cov: ## Run tests with coverage report (parallel)
hatch test --cover

test-cov-xml: test-cov ## Run tests with coverage and generate XML report
test-cov-xml: test-cov ## Run tests with coverage and generate XML report (parallel)
hatch run coverage xml

test-bdist: clean ## Test binary distribution (wheel install)
Expand Down
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,21 @@ A collection of demos utilizing trestle can be found in the related project [com

## Development status

### v4: stable (actively developed)
### v5: stable (actively developed)

- supports NIST OSCAL 1.2.1 as well as previous versions
- uses pydantic in v2 mode

### v4: stable (maintenance mode)

- supports NIST OSCAL 1.2.1 as well as previous versions
- supports newly released Mapping Model
- limited support until December 31, 2026

### v3: stable (maintenance mode)
### v3: stable (deprecated)

- supports NIST OSCAL 1.1.3 as well as previous versions
- limited support until June 30, 2026
- no longer supported

### v2: stable (deprecated)

Expand Down
Loading
Loading