fix: export .intoto.jsonl provenance for OpenSSF Scorecard#456
fix: export .intoto.jsonl provenance for OpenSSF Scorecard#456
Conversation
Scorecard's Signed-Releases check classifies .sigstore.json as a signature artifact but not as provenance. Extract the DSSE envelope from the Sigstore bundle and upload it as checksums.txt.intoto.jsonl, which Scorecard recognises as SLSA provenance.
|
Note Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported. |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe CLI release workflow now extracts the DSSE envelope from an attestation bundle into Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
📝 Coding Plan
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/cli.yml:
- Line 342: The jq extraction of .dsseEnvelope from "$BUNDLE" should fail fast
if the key is missing or null; change the call that writes to
cli/dist/checksums.txt.intoto.jsonl to use jq -e -c '.dsseEnvelope' "$BUNDLE"
and ensure the workflow exits non‑zero when jq returns a non‑truthy value (so
the upload step won't run with a null/invalid checksums.txt.intoto.jsonl);
reference the existing jq invocation and the $BUNDLE variable and the output
path cli/dist/checksums.txt.intoto.jsonl to locate and update the command.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: dfa97048-c840-4444-8029-26ecf33bd07e
📒 Files selected for processing (1)
.github/workflows/cli.yml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Analyze (python)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T11:48:14.867Z
Learning: Applies to .github/workflows/docker.yml : CI Docker: build → scan → push to GHCR + cosign sign + SLSA L3 provenance via attest-build-provenance (images only pushed after Trivy/Grype scans pass).
📚 Learning: 2026-03-15T11:48:14.867Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T11:48:14.867Z
Learning: Applies to .github/workflows/docker.yml : CI Docker: build → scan → push to GHCR + cosign sign + SLSA L3 provenance via attest-build-provenance (images only pushed after Trivy/Grype scans pass).
Applied to files:
.github/workflows/cli.yml
🔇 Additional comments (1)
.github/workflows/cli.yml (1)
345-346: Good release-asset expansion for Scorecard compatibility.Uploading both
.sigstore.jsonand.intoto.jsonlis the right direction for downstream provenance detection tooling.
Add -e flag to jq so the step exits non-zero if .dsseEnvelope is null or absent, preventing upload of an invalid .intoto.jsonl to an immutable release.
🤖 I have created a release *beep* *boop* --- ## [0.2.5](v0.2.4...v0.2.5) (2026-03-15) ### Features * default sandbox to enabled, polish CLI output, add sandbox CI build ([#455](#455)) ([a4869b6](a4869b6)) ### Bug Fixes * export .intoto.jsonl provenance for OpenSSF Scorecard ([#456](#456)) ([2feed09](2feed09)) ### Maintenance * add pyrightconfig.json and fix all pyright errors ([#448](#448)) ([f60746a](f60746a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Summary
checksums.txt.intoto.jsonlalongside the existing.sigstore.jsonrelease asset.sigstore.jsonas a signature but not as provenance —.intoto.jsonlis the filename pattern it recognizes for SLSA provenanceContext
OpenSSF Scorecard warns "release artifact does not have provenance" for v0.2.4 even though SLSA L3 attestations exist in GitHub's attestation store. The root cause is that Scorecard looks for
.intoto.jsonlfiles in release assets for provenance detection, while our.sigstore.jsonbundle (which contains the same SLSA provenance data) is only recognized as a signature artifact.Changes
.github/workflows/cli.yml— Addedjq -c '.dsseEnvelope'extraction step in the existing "Upload provenance bundle to release" step to producechecksums.txt.intoto.jsonland upload it as a release asset.Test plan
jqis available onubuntu-latestrunners (pre-installed).sigstore.jsonand.intoto.jsonlrelease assets🤖 Generated with Claude Code