Qualify CI producer closure and durable evidence retirement

Open
#360 2 comments 0 reactions 1 assignee View on GitHub

Maintainers usually reply within 1 day

@DeandreT is already working on this.

Since Oct 26, 2026.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
github-actions, rust

Research direction

Read the per-job metadata interface and the dependencies in #359 and #355 first; the issue does not name source files or tests. Define how producer closure, archive readback, durable preservation, and finite retirement will be qualified, then test the listed failure cases and reserve gates. Done means a tiny canary is qualified before any full automatic cleanup is enabled.

Written by the indexing model from the issue text.

Description

After per-job temporary roots are available, qualify an end-to-end retention provider and producer ownership boundary before automatic retirement.

Scope: managed per-job descendant closure, closed/unarchived recovery, exact artifact-ID export and strict complete archive/member readback, plus durable preservation authority and finite manifest retirement. Own a separate lifecycle helper and trusted runner containment configuration; consume the per-job metadata interface without redesigning mapping or PDF runtime behavior.

Acceptance:

  • Prove descendant/producer closure and temporary-root compliance; do not infer it from a descriptor census or an always() step.
  • Verify archive identity, every original body and metadata, exact member inventory, and fail on any mismatch.
  • Define durable preservation beyond expiring/deletable workflow artifacts before local retirement.
  • Refuse incomplete uploads, downloads, recovery and ownership ambiguity while preserving original evidence.
  • Test exact finite retirement, failed/canceled jobs, active-cache preservation and reserve gates.
  • Deploy a tiny qualified canary before enabling full automatic cleanup.

Depends on #359 and #355. Design may proceed in parallel; automatic deletion remains unqualified.

Dominant language
Rust
Stars
1
Forks
0
Avg merge
2h 50m
Merged PRs (30d)
571

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

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.

More from DeandreT/ferrule

All issues in DeandreT/ferrule

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.