Repository navigation
Conversation
|
Batch compatibility receipt (2026-08-24) Built the inspectable synthetic branch
No manual merge resolution was required, including the shared Combined validation:
The stale Browserslist notice and authentication-dependent Phase C skips are unchanged environmental disclosures. #2903 remains draft because synthetic compatibility does not replace its declared live host-agent lifecycle gate and independent human review. |
|
Thanks for this contribution. We're closing outside-contributor pull requests that have had no activity for 14 days or more, so the queue reflects work that can still land. This isn't a judgment on the change itself. If it's still needed, please rebase onto |
Why this matters
ODS ships a large composable container surface, but operators and downstream forks lacked a machine-readable inventory tying runtime image references to source. The original branch generated a reproducible CycloneDX inventory, yet two commits sharing the same ODS version and image set produced indistinguishable published artifacts. A release receipt must identify the exact candidate it describes.
The published workflow now embeds the full Git object ID in CycloneDX metadata, names the artifact with that SHA, and ships a SHA-256 receipt beside it. This remains an offline source inventory; it does not claim registry attestation, image signing, or build provenance it did not perform.
Overlap check
Searched open and closed upstream PRs for SBOMs, CycloneDX, source-commit binding, checksums, runtime inventory, and provenance, plus all changed files. The only open PR changing the workflow, generator, or regression file is this canonical PR. Merged #1449 is documentation/roadmap only. No competing implementation or file owner was found.
Production and release contract
--source-commit; reject moving names and abbreviated refsods:source-commitand an exact GitHub VCS reference in metadata${{ github.sha }}Regression coverage
Public CLI tests prove deterministic stdout, one component per source image, root dependency coverage, atomic output parity, exact source-commit metadata/VCS linkage, and rejection of
mainor abbreviated references.Concrete pre-change evidence:
--source-commit <sha>exited with argparse status 2 because no source identity contract existed.Validation
python -m pytest -q tests/test_runtime_sbom.py— 5 passed.python tests/test_runtime_sbom.py— standalone CI path passed all 5 contracts.python scripts/check-dependency-pins.py— passed.git diff --check— passed.An attempt to reproduce the workflow's Bash wrapper locally used WSL against
/mnt/cand was stopped after the source scans exceeded 90 seconds due that filesystem boundary. The regression suite compares stdout and atomic file bytes directly with native Python; the Ubuntu GitHub Actions run remains the authoritative check for the literalcmp/sha256sumwrapper.Tradeoffs and rollback
--source-commitis optional for exported source trees without Git metadata, but CI always supplies the exact candidate SHA. The checksum proves transport/content equality for this generated inventory only; it is not a signature. Rollback removes the artifact/metadata contract without changing runtime images, installation behavior, or release state.