Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
363e4e0
test(release): define exact-artifact SBOM attestation boundary
seonghobae Aug 6, 2026
a26f09a
ci(release): run exact-artifact attestation contract
seonghobae Aug 6, 2026
0beb249
test(release): bind immutable artifact metadata before signing
seonghobae Aug 6, 2026
3fce2aa
release: add exact sealed SBOM attestation workflow
seonghobae Aug 6, 2026
ecd1983
release: verify inert exact artifact SBOM handoffs
seonghobae Aug 6, 2026
04ded8e
docs: doctor exact artifact SBOM attestation boundary
seonghobae Aug 6, 2026
c0f149c
test: distinguish executable commands from workflow prose
seonghobae Aug 6, 2026
27a82aa
test: exercise exact artifact handoff verifier boundaries
seonghobae Aug 6, 2026
33ebfe6
ci: enforce complete exact handoff verifier coverage
seonghobae Aug 6, 2026
1a41d33
ci: repair exact artifact handoff contracts
seonghobae Aug 6, 2026
e2347d8
ci: publish PR 797 test-only repair before cleanup
seonghobae Aug 6, 2026
de26f34
ci: trigger PR 797 repair from pull-request synchronize
seonghobae Aug 6, 2026
00717aa
fix(ci): verify PR 797 contract repair through immutable Git objects
seonghobae Aug 6, 2026
3a7fe24
chore(ci): trigger exact PR 797 repair
seonghobae Aug 6, 2026
9d0cf60
ci: verify and materialize final PR 797 coverage repair
seonghobae Aug 6, 2026
631bd93
ci: cover final PR 797 verifier branches
seonghobae Aug 6, 2026
4200326
ci: retrigger final PR 797 verifier repair
seonghobae Aug 6, 2026
7e8556b
ci: finalize PR 797 verifier coverage on ready
seonghobae Aug 6, 2026
7070628
ci: install final PR 797 coverage repair workflow
seonghobae Aug 6, 2026
bade6d2
test(attestation): bind intake to runtime run identifier
seonghobae Aug 6, 2026
2a49e1a
Merge branch 'main' into release/exact-artifact-sbom-attestation
opencode-agent[bot] Aug 7, 2026
2ddec17
ci: add minimal PR 797 finalizer
seonghobae Aug 7, 2026
aa0f160
ci: trigger minimal PR 797 finalizer
seonghobae Aug 7, 2026
4068640
ci: add corrected PR 797 finalizer
seonghobae Aug 7, 2026
056f57c
ci: trigger corrected PR 797 finalizer
seonghobae Aug 7, 2026
ef996aa
test: complete exact artifact handoff coverage
github-actions[bot] Aug 7, 2026
5295b56
docs(release): record exact artifact SBOM attestation
seonghobae Aug 7, 2026
122e892
test(attestation): capture current review regressions
seonghobae Aug 7, 2026
ea605d8
test(attestation): harden strict SBOM evidence contracts
seonghobae Aug 7, 2026
90f7251
fix(attestation): enforce strict CycloneDX subject identity
seonghobae Aug 7, 2026
66bada3
test(attestation): bound shell-run contract parsing
seonghobae Aug 7, 2026
39c21f7
ci(attestation): pin supported runner image
seonghobae Aug 7, 2026
d271372
fix(attestation): isolate inputs and seal offline evidence
seonghobae Aug 7, 2026
391fb3d
docs(attestation): document strict identity and offline sealing
seonghobae Aug 7, 2026
888e6f9
chore(changelog): record attestation hardening
seonghobae Aug 7, 2026
d656778
test(release): capture remaining SBOM attestation review findings
seonghobae Aug 7, 2026
a489c3a
test(release): execute exact-head SBOM review regressions
seonghobae Aug 7, 2026
083004d
test(release): isolate symlink-ancestor regression failure
seonghobae Aug 7, 2026
e0fc7d1
fix(release): reject symlinked evidence-root ancestors
seonghobae Aug 7, 2026
a8a25cf
fix(release): export exact attestation verification commands
seonghobae Aug 7, 2026
9bd80c6
chore(stack): reconcile exact SBOM attestation with main
seonghobae Aug 7, 2026
b2fd40b
test(sbom): reject resealed non-CycloneDX predicate
seonghobae Aug 7, 2026
4ad152a
fix(sbom): constrain attestation predicate before signing
seonghobae Aug 7, 2026
42ebb82
test(sbom): complete canonical predicate regression fixture
seonghobae Aug 7, 2026
46fb216
docs(attestation): preserve current-main changelog without overlap
seonghobae Aug 9, 2026
86dbe72
Merge branch 'main' into release/exact-artifact-sbom-attestation
opencode-agent[bot] Aug 9, 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