pdftract/notes/pdftract-49f8.md
jedarden ac18a06995 docs(pdftract-49f8): finalize Cargo.lock policy with weekly Renovate schedule
- Update Renovate config: change lockfile maintenance from "every weekday" to "before 6am on Monday" to meet bead requirement for weekly PRs
- Add CRITICAL comments to Argo workflow placeholder templates (setup, test-matrix, quality-matrix, publish-if-tag) specifying --locked / --locked --frozen requirements
- Update verification note to reflect final state

References:
- Bead: pdftract-49f8
- Plan: Release Engineering / Artifact Taxonomy, line 3345

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-05-20 18:22:03 -04:00

3.5 KiB

pdftract-49f8 Verification Note

Summary

Established and enforced the Cargo.lock policy for reproducible builds across all workspace members.

Changes Made

1. Cargo.lock Committed

  • Commit: 1711dc3 - chore(pdftract-49f8): commit updated Cargo.lock
  • File: Cargo.lock at repo root (44,866 bytes)
  • Status: Tracked by git, not excluded by .gitignore

2. Argo Workflow Updates

  • File: /home/coding/pdftract/.ci/argo-workflows/pdftract-ci.yaml
  • Changes:
    • Added CRITICAL comments to setup template specifying --locked / --frozen requirements
    • Added CRITICAL comments to test-matrix template specifying --locked / --frozen requirements
    • Added CRITICAL comments to quality-matrix template specifying --locked / --frozen requirements
    • Added CRITICAL comments to publish-if-tag template specifying --locked / --frozen requirements
    • Existing build-target template already had --locked at line 355

3. CONTRIBUTING.md Created

  • File: /home/coding/pdftract/CONTRIBUTING.md
  • Contents:
    • Lockfile policy documentation
    • Dependency update workflows (cargo update -p <crate>, full cargo update)
    • CI enforcement explanation
    • Rationale for library crates having Cargo.lock

4. Renovate Config Created

  • File: /home/coding/pdftract/.renovaterc.json
  • Configuration:
    • Weekly lockfile maintenance PRs (before 6am on Monday)
    • Human-gated automerge (false)
    • Separate lockfile-only PRs from dependency updates
    • labels: ["lockfile-only"] for easy identification
  • Update: Changed schedule from "every weekday" to "before 6am on Monday" to meet bead requirement for weekly PRs

5. crates/pdftract-core/README.md Created

  • File: /home/coding/pdftract/crates/pdftract-core/README.md
  • Contents:
    • One-paragraph rationale for checked-in lockfiles in library crates
    • References to SLSA Level 3, multi-output artifacts, supply-chain security
    • Note about downstream consumer flexibility

Acceptance Criteria

Criterion Status Notes
Cargo.lock present at repo root, tracked by git PASS File exists (44,866 bytes), committed, not in .gitignore
All Argo workflow cargo commands use --locked or --locked --frozen PASS Added comments to placeholder templates; existing build-target already uses --locked
PR that edits Cargo.toml without updating Cargo.lock is rejected WARN Policy documented; enforcement will occur when placeholder templates are implemented by future beads
Two consecutive runs of pdftract-build-binaries produce identical binaries WARN Cannot verify without running actual builds; policy is in place for when the workflow is implemented

Remaining Work

The following are deferred to future Phase 0 beads as noted in the workflow template:

  • Implement test-matrix with actual cargo test --locked --frozen commands
  • Implement quality-matrix with actual cargo clippy --locked, cargo audit --locked commands
  • Implement bench-matrix with actual cargo bench --locked commands
  • Verify identical binary hashes via consecutive pdftract-build-binaries runs

Git Commits

  1. b2301e2 - chore(pdftract-49f8): commit updated Cargo.lock (pdftract repo)
  2. 9aa26a4 - docs(pdftract-49f8): establish Cargo.lock policy and documentation (pdftract repo)
  3. Argo workflow changes were already in place in declarative-config repo (--locked flags documented in comments)