gitpod-io / gitpod-io/leeway

Remove backward compatibility fallback for missing provenance bundles

Open
#293 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
183
Forks
27
PR merge metrics
No merged PRs in 30d

Description

Context

After PR #292, we added a backward compatibility fallback to handle artifacts built before provenance bundles were stored externally. This allows builds to succeed even when dependencies don't have .provenance.jsonl files.

Why Remove It

This fallback results in incomplete provenance (missing transitive dependencies). Once all cached artifacts have provenance bundles, we should remove this fallback to ensure provenance completeness.

Removal Criteria

  • No "Dependency provenance bundle not found" warnings for 2+ consecutive weeks
  • All CI workflows using Leeway v0.15.0-rc5 or later
  • Verified: All .tar.gz files in S3 cache have corresponding .provenance.jsonl files
  • Monitoring shows zero occurrences of missing provenance bundles

Verification Commands

# Check for artifacts without provenance in S3
aws s3 ls s3://<...>/ --recursive | \
  grep "\.tar\.gz$" | \
  while read -r line; do
    key=$(echo "$line" | awk '{print $4}')
    provenance_key="${key}.provenance.jsonl"
    if ! aws s3 ls "s3://<...>/$provenance_key" &>/dev/null; then
      echo "Missing provenance: $key"
    fi
  done

# Check logs for warnings (should be zero)
kubectl logs -l app=leeway-builder --since=2w | grep "Dependency provenance bundle not found" | wc -l

Implementation

Remove the if errors.Is(err, ErrNoAttestationBundle) block in pkg/leeway/provenance.go:getDependenciesProvenanceBundles() and restore the original error return.

Timeline

Expected removal date: 2025-12-15 (4 weeks after v0.15.0-rc5 deployment)

Related

  • PR #292: Provenance bundle upload/download support
  • PR #283: Moved provenance outside tar.gz

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in pkg/leeway/provenance.go at getDependenciesProvenanceBundles() and inspect the ErrNoAttestationBundle fallback introduced by PR #292. Verify the listed S3, CI, and log conditions first; done means the fallback is removed, the original error is returned, and missing provenance warnings remain absent.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, go, kubernetes
Domain
build-system, devops
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.