Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
725204f
test(release): define exact-artifact SBOM attestation boundary
seonghobae Aug 6, 2026
6cd51e4
ci(release): run exact-artifact attestation contract
seonghobae Aug 6, 2026
a0633f3
test(release): bind immutable artifact metadata before signing
seonghobae Aug 6, 2026
e8bc952
release: add exact sealed SBOM attestation workflow
seonghobae Aug 6, 2026
d3695f6
release: verify inert exact artifact SBOM handoffs
seonghobae Aug 6, 2026
93769e9
docs: doctor exact artifact SBOM attestation boundary
seonghobae Aug 6, 2026
6fe81cd
test: distinguish executable commands from workflow prose
seonghobae Aug 6, 2026
817ec37
test: exercise exact artifact handoff verifier boundaries
seonghobae Aug 6, 2026
3ea54af
ci: enforce complete exact handoff verifier coverage
seonghobae Aug 6, 2026
02246d5
ci: repair exact artifact handoff contracts
seonghobae Aug 6, 2026
f12ab1d
ci: publish PR 797 test-only repair before cleanup
seonghobae Aug 6, 2026
3ed7c05
ci: trigger PR 797 repair from pull-request synchronize
seonghobae Aug 6, 2026
31c6e79
fix(ci): verify PR 797 contract repair through immutable Git objects
seonghobae Aug 6, 2026
d8328ce
chore(ci): trigger exact PR 797 repair
seonghobae Aug 6, 2026
53a4e7b
ci: verify and materialize final PR 797 coverage repair
seonghobae Aug 6, 2026
55ebb77
ci: cover final PR 797 verifier branches
seonghobae Aug 6, 2026
6665e0c
ci: retrigger final PR 797 verifier repair
seonghobae Aug 6, 2026
38ba7c4
ci: finalize PR 797 verifier coverage on ready
seonghobae Aug 6, 2026
e126a26
ci: install final PR 797 coverage repair workflow
seonghobae Aug 6, 2026
bfa2e41
test(attestation): bind intake to runtime run identifier
seonghobae Aug 6, 2026
3d8761c
ci: add minimal PR 797 finalizer
seonghobae Aug 7, 2026
bfae7f3
ci: trigger minimal PR 797 finalizer
seonghobae Aug 7, 2026
6c377ab
ci: add corrected PR 797 finalizer
seonghobae Aug 7, 2026
f1c7c70
ci: trigger corrected PR 797 finalizer
seonghobae Aug 7, 2026
b155e6a
test: complete exact artifact handoff coverage
github-actions[bot] Aug 7, 2026
05e8363
docs(release): record exact artifact SBOM attestation
seonghobae Aug 7, 2026
6177ffc
test(attestation): capture current review regressions
seonghobae Aug 7, 2026
1d4b61c
test(attestation): harden strict SBOM evidence contracts
seonghobae Aug 7, 2026
07a7756
fix(attestation): enforce strict CycloneDX subject identity
seonghobae Aug 7, 2026
30b40bb
test(attestation): bound shell-run contract parsing
seonghobae Aug 7, 2026
6f59479
ci(attestation): pin supported runner image
seonghobae Aug 7, 2026
4aa5caf
fix(attestation): isolate inputs and seal offline evidence
seonghobae Aug 7, 2026
bf0a64b
docs(attestation): document strict identity and offline sealing
seonghobae Aug 7, 2026
182e857
chore(changelog): record attestation hardening
seonghobae Aug 7, 2026
b92b30d
test(release): capture remaining SBOM attestation review findings
seonghobae Aug 7, 2026
16d5445
test(release): execute exact-head SBOM review regressions
seonghobae Aug 7, 2026
1a80025
test(release): isolate symlink-ancestor regression failure
seonghobae Aug 7, 2026
75457ca
fix(release): reject symlinked evidence-root ancestors
seonghobae Aug 7, 2026
ea59bf4
fix(release): export exact attestation verification commands
seonghobae Aug 7, 2026
01a617c
test(sbom): reject resealed non-CycloneDX predicate
seonghobae Aug 7, 2026
2142dc7
fix(sbom): constrain attestation predicate before signing
seonghobae Aug 7, 2026
b1ffdcd
test(sbom): complete canonical predicate regression fixture
seonghobae Aug 7, 2026
1d6c7e6
docs(attestation): preserve current-main changelog without overlap
seonghobae Aug 9, 2026
17412b0
docs(attestation): cite RFC 8259 for sealed SBOM JSON
seonghobae Aug 13, 2026
150395c
fix(coverage): accept only bounded relative requirement includes
seonghobae Aug 13, 2026
e3a990e
guard
seonghobae Aug 15, 2026
12a1ecb
chore(release): remove rebase sentinel
seonghobae Aug 20, 2026
adb8ec9
Merge branch 'main' into release/exact-artifact-sbom-attestation
opencode-agent[bot] Aug 20, 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
119 changes: 119 additions & 0 deletions .github/workflows/exact-artifact-sbom-attestation-quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Exact Artifact SBOM Attestation Quality

on:
pull_request:
branches: [main]
paths:
- ".github/workflows/exact-artifact-sbom-attestation.yml"
- ".github/workflows/exact-artifact-sbom-attestation-quality.yml"
- "scripts/ci/verify_exact_artifact_sbom_handoff.py"
- "tests/test_exact_artifact_sbom_attestation_contract.py"
- "tests/test_exact_artifact_sbom_review_regressions.py"
- "tests/test_verify_exact_artifact_sbom_handoff.py"
- "docs/doctoring/exact-artifact-sbom-attestation.md"
- "CHANGELOG.md"
push:
branches: [main]
paths:
- ".github/workflows/exact-artifact-sbom-attestation.yml"
- ".github/workflows/exact-artifact-sbom-attestation-quality.yml"
- "scripts/ci/verify_exact_artifact_sbom_handoff.py"
- "tests/test_exact_artifact_sbom_attestation_contract.py"
- "tests/test_exact_artifact_sbom_review_regressions.py"
- "tests/test_verify_exact_artifact_sbom_handoff.py"
- "docs/doctoring/exact-artifact-sbom-attestation.md"
- "CHANGELOG.md"

concurrency:
group: exact-artifact-sbom-attestation-quality-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
minimum-python-contract:
name: Python 3.10 contract
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Harden runner
uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0
with:
egress-policy: audit

- name: Checkout exact contributor head
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Verify exact workflow source checkout
env:
EXPECTED_SOURCE_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: test "$(git rev-parse HEAD)" = "$EXPECTED_SOURCE_SHA"

- name: Set up minimum supported Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.10"

- name: Compile production and contracts on Python 3.10
run: |
python -m compileall -q \
scripts/ci/verify_exact_artifact_sbom_handoff.py \
tests/test_exact_artifact_sbom_attestation_contract.py \
tests/test_exact_artifact_sbom_review_regressions.py \
tests/test_verify_exact_artifact_sbom_handoff.py

exact-contract:
name: Python 3.14 exact contract and complete coverage
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Harden runner
uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0
with:
egress-policy: audit

- name: Checkout exact contributor head
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Verify exact workflow source checkout
env:
EXPECTED_SOURCE_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: test "$(git rev-parse HEAD)" = "$EXPECTED_SOURCE_SHA"

- name: Set up current stable Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.14"
cache: pip
cache-dependency-path: requirements-opencode-review-ci-hashes.txt

- name: Install hash-locked quality tooling
run: python -m pip install --disable-pip-version-check --require-hashes -r requirements-opencode-review-ci-hashes.txt

- name: Run exact contracts with complete verifier branch coverage
run: |
python -m coverage erase
python -m coverage run --branch -m pytest -q \
tests/test_exact_artifact_sbom_attestation_contract.py \
tests/test_exact_artifact_sbom_review_regressions.py \
tests/test_verify_exact_artifact_sbom_handoff.py
python -m coverage report \
--include=scripts/ci/verify_exact_artifact_sbom_handoff.py \
--show-missing \
--fail-under=100
python -m interrogate --fail-under=100 scripts/ci/verify_exact_artifact_sbom_handoff.py

- name: Compile production and contract files
run: |
python -m compileall -q \
scripts/ci/verify_exact_artifact_sbom_handoff.py \
tests/test_exact_artifact_sbom_attestation_contract.py \
tests/test_exact_artifact_sbom_review_regressions.py \
tests/test_verify_exact_artifact_sbom_handoff.py
Loading
Loading