Most teams don't have an evidence problem when they're small. One program, a shared drive, maybe a wiki, and if an auditor asks for something, someone digs it out in an afternoon. It works because one person still remembers where everything lives.
That memory is the thing that breaks first.
Scale a portfolio to eight, twelve, twenty programs and the informal system quietly collapses. Nobody agrees how long to keep release evidence. Half the teams zip artifacts into a folder named finalv2ACTUAL. The other half link to Confluence pages that get archived by an IT cleanup script nobody warned them about. Then a customer contract triggers a security review, and you discover the sign-off evidence for a release from fourteen months ago is technically still "somewhere" — spread across three tools, two of which have rotated their retention windows.
An evidence retention policy portfolio isn't a filing rule. It's the operating system that decides what evidence exists, how it's packaged, how long it survives, who owns it, and — the part everyone forgets — how anyone finds it again two years later. This is a systems article, not a tips list. The goal is to show how the whole thing connects and where it tends to snap.
Why portfolio evidence rots differently than project evidence
Single-project evidence rots slowly and predictably. You know the shape of it. Portfolio evidence rots in a way that's harder to see because the failure lives between teams, not inside them.
Each program is individually fine. Team A keeps clean release bundles. Team B has great decision records. Team C documents every security control. But there's no shared contract for format, duration, or location. So when you try to answer a portfolio-level question — "show me all the accessibility evidence across every program shipped in Q3" — you're not querying a system. You're interviewing people.
Three forces make this worse at scale:
Divergent retention clocks. Legal wants seven years for some artifacts, engineering wants to purge CI logs after 90 days for cost reasons, and nobody reconciled the two. Both are "right." The conflict just sits there until an audit forces it.
Ownership drift. The person who owned the evidence left. The team reorged. The program got renamed. The evidence is still there — orphaned, unmaintained, and slowly becoming untrustworthy because nobody can attest to its integrity.
Format entropy. With no packaging standard, every team invents their own. Ten programs means ten different ideas of what "a complete evidence bundle" actually contains. Reassembling a portfolio view means normalizing ten formats by hand.
One thing most teams miss: retention and discoverability are the same problem wearing two hats. Evidence you can't find is functionally identical to evidence you deleted. Keeping something for seven years is meaningless if the query to locate it takes three days and a Slack manhunt.
The four layers of a portfolio evidence lifecycle
Think of the lifecycle as four connected layers. When one layer is weak, the others compensate with human effort — which is exactly the effort that stops scaling around program number five or six.
Stop losing track of critical project requirements.
GoReqly helps you capture, organize, and track every requirement with precision and clarity.
- Centralized requirements repository
- Collaborative editing & commenting
- Traceability & version control
No credit card required
| Layer | What it governs | Common failure at scale | What "good" looks like |
|---|---|---|---|
| Packaging | The shape of an evidence bundle | Every team invents its own structure | One manifest schema all programs conform to |
| Retention | How long each artifact class lives | Conflicting clocks, silent purges | Retention tied to artifact class, not team habit |
| Ownership | Who is accountable for each bundle | Orphaned evidence after reorgs | Owner rules that survive people leaving |
| Discoverability | How anyone finds evidence later | Tribal knowledge, manual search | Indexed metadata, predictable query patterns |
The layers stack. Packaging feeds retention — you can't retain consistently what isn't structured consistently. Retention feeds discoverability — an index of things that got silently deleted is worse than useless. Ownership sits underneath all of it, because without a clear owner, the other three degrade the moment the org chart shifts.
Packaging: the manifest is the contract
Everything downstream depends on evidence being packaged in a predictable way. If you fix nothing else, fix this.
A manifest is a small, machine-readable file that travels with the evidence and describes what the bundle contains, who owns it, when it was created, how long it should live, and what it links back to. It's the contract between the team that produced the evidence and every future person who has to trust it. Without one, you're relying on folder names and memory. With one, you can automate everything else.
| manifest_yaml |
|---|
| manifest_version: 1.2 |
| bundle_id: prog-atlas-rel-2025.09-a1c4 |
| program: atlas |
| release: 2025.09 |
| created: 2025-09-14T18:22:00Z |
| owner: |
| role: release-manager # role, not a person's name |
| team: atlas-platform |
| contact: atlas-releases@company.internal |
| retention: |
| class: release-evidence # class drives the clock, not this bundle |
| expires: 2032-09-14 # computed from class policy at packaging time |
| legal_hold: false |
| artifacts: |
| - type: signoff |
| ref: approvals/atlas-2025.09-signoffs.pdf |
| sha256: 7f3a...9b21 |
| - type: test-results |
| ref: qa/regression-run-8841.json |
| sha256: c012...44de |
| - type: security-scan |
| ref: security/scan-2025-09-13.sarif |
| sha256: aa19...0f7c |
| - type: decision-record |
| ref: adr/ADR-0142-ratelimit.md |
| sha256: 88bd...1a30 |
| links: |
| requirements: [REQ-4412, REQ-4419, NFR-221] |
| tickets: [ATL-9981, ATL-10032] |
| tags: [pci-relevant, accessibility-reviewed, external-facing] |
Two design choices in there matter more than they look.
Owner is a role, not a name. The single biggest cause of orphaned evidence is naming a person as owner. People leave. Roles don't. When release-manager for team atlas-platform changes hands, the manifest stays valid and accountability transfers automatically.
Retention is driven by an artifact class, not decided per bundle. Nobody at packaging time should be guessing how long to keep something. They tag the class, and a central policy table computes the expiry. Change the policy once, and every future bundle inherits it — that's what keeps retention consistent across twenty programs instead of producing twenty different interpretations.
Treat the manifest owner as a role, not a person's name.
If you've already built structured release bundles, this is the natural next step. The mechanics of assembling those bundles are covered in Build automated release evidence bundles: recipes to collect linked artifacts for demos and audits — the manifest is what turns a single team's bundle into something a whole portfolio can query.
Retention: tie the clock to the artifact, not the team
A mistake that shows up constantly: teams set retention at the storage level — "the release-evidence bucket keeps things for 3 years." Then a different artifact class that legally needs 7 years ends up in the same bucket, and either everything gets over-retained (cost, bigger discovery surface in litigation) or something important gets purged early.
Retention has to attach to the class of artifact, because different classes have genuinely different obligations:
-
Sign-off and approval records — long horizon, often 5–7 years, sometimes tied to contract terms
-
Security scan results — medium, but jumps to long if the release is externally facing or handles regulated data
-
Regression / test run logs — short by default (90–180 days), unless linked to a release that's under a retention obligation
-
Decision records — effectively permanent; they're cheap and they're the thing everyone wishes they'd kept
-
Raw CI artifacts — shortest, because they're bulky and regenerable
The subtle part is the cascade. A regression log that's normally 90-day disposable becomes long-lived the moment it's referenced by a release-evidence manifest under a 7-year hold. Your retention system has to respect links, not just classes. This is the single most common place automated purges cause damage — a cleanup job deletes a "disposable" log that was actually load-bearing evidence for a retained release.
A retention SLA table that survives audits
| Artifact class | Default retention | Extends when... | Legal hold behavior |
|---|---|---|---|
| Sign-off / approval | 7 years | contract requires longer | Never auto-purge |
| Security scan | 2 years | external-facing or regulated data → 7 years | Freeze on hold |
| Regression logs | 180 days | linked to retained release → inherits release clock | Freeze on hold |
| Decision records | Permanent | — | N/A |
| Raw CI artifacts | 90 days | referenced by a manifest → 180 days | Freeze on hold |
The legal_hold: true flag in the manifest overrides everything. When a hold lands, no automated process touches that bundle regardless of expiry date. Teams that skip this discover during litigation that their nightly cleanup job destroyed evidence they had a legal duty to preserve. That's not a cost problem anymore — that's spoliation.
Ownership rules that don't rot when people leave
Ownership is where evidence lifecycles quietly die. Everything works while the original owner is around, then a reorg happens and half your evidence becomes "whose is this?"
-
Owner is always a role bound to a team, never an individual. Individuals are a lookup, not an owner.
-
Every bundle must resolve to a live owner. If the role or team no longer exists, the bundle surfaces on an orphan report — automatically, weekly, in front of a human.
-
Reorgs trigger reassignment, not deletion. When team
atlas-platformbecomesatlas-core, there's a mapping step. Nothing gets purged just because a name changed. -
Owners attest, they don't just possess. Once a period (quarterly works), owners confirm their retained bundles are intact and still correctly classified. This is what keeps evidence trustworthy, not just present.
That last point is underrated. Evidence you've held for four years without anyone checking it is evidence an auditor can challenge. Periodic attestation — even a lightweight "yes, this is still valid" confirmation — is the difference between evidence and a pile of old files you hope are fine.
This ties directly into who actually needs to sign what. Different approvers need different evidence, and the retention policy should reflect that rather than keeping everything for everyone. The breakdown in Stakeholder signoff by archetype: the minimal evidence each approver actually needs pairs well here — it tells you what to retain, and this article tells you how long and where.
Discoverability: retention is pointless if nobody can find it
You can keep evidence for a decade and still fail an audit if finding it takes a week. Discoverability is the layer teams invest in last and regret most.
The core move: the manifest's metadata becomes an index, separate from the evidence blobs themselves. You don't crawl storage looking for things. You query a lightweight index of manifests, which points you to exactly the bundles you need.
-
"All bundles tagged
pci-relevantcreated in the last 24 months" -
"Every bundle owned by
atlas-corecurrently under legal hold" -
"All release evidence linked to requirement
NFR-221across every program" -
"Bundles whose retention expires in the next 60 days" (so owners can review before purge)
-
"Orphaned bundles with no live owner"
Those last two are operational queries, not audit queries. Discoverability isn't only for auditors — it's how you run the lifecycle. The "expiring in 60 days" query is what lets a human review before an automated purge runs, instead of finding out afterward.
-
Every bundle has a manifest with consistent, required metadata fields
-
Manifests are indexed separately from bulk artifacts
-
Tags come from a controlled vocabulary, not free text (free-text tags fragment instantly across teams)
-
Links to requirements and tickets are captured at packaging time, never backfilled
-
Every artifact carries a hash so you can prove integrity, not just existence
-
The index is queryable by owner, class, tag, date, link, and retention status
-
Expiry and orphan reports run on a schedule and reach a human
The controlled-vocabulary point causes real pain when ignored. One team tags a11y, another accessibility, a third wcag-review. A portfolio query for accessibility evidence now misses two-thirds of it. A small governance step — a fixed tag list — prevents a large discovery failure later.
Automated archival and packaging recipes that scale
The reason all of this holds together at portfolio scale is that packaging and archival get automated at the point of release, not reconstructed manually afterward.
-
On release, the pipeline assembles the bundle — pulls sign-offs, test results, scans, and linked decision records into one place.
-
It generates the manifest automatically — computes hashes, resolves the current owner role, reads the retention class table to set the expiry.
-
It validates the manifest against the schema — a missing required field fails the packaging step, so incomplete evidence never enters the system.
-
It writes the manifest to the index and the artifacts to appropriately-tiered storage — hot for recent, cold/cheap for long-retention.
-
Scheduled jobs handle the tail — expiry review notices to owners, orphan detection, legal-hold enforcement, and attestation prompts.
Step 3 is the one that quietly saves you. When the manifest schema is enforced at packaging time, you never accumulate half-formed evidence. The alternative — accepting whatever gets thrown in and cleaning it up during audit prep — is the workflow that turns audit prep into a three-week fire drill.
Here's a simple visual of the automated packaging and archival workflow.
This is where the right operational tooling earns its keep. Doing manifest generation, retention computation, and index updates by hand across twenty programs is a full-time job nobody has. Workflow platforms with AI-assisted automation can handle the repetitive assembly — collecting linked artifacts, computing retention from class rules, flagging orphaned or expiring bundles before a human has to go looking — so the lifecycle runs continuously instead of being reconstructed under deadline pressure. The point isn't automation for its own sake; it's that consistent packaging and reliable discovery are only realistic at scale when the boring parts run themselves.
A real scenario: portfolio audit prep, before and after
A mid-sized product org running about a dozen programs got a customer-driven SOC-style security review with a two-week window to produce evidence across several releases.
Before. No shared manifest. Retention set per storage bucket, inconsistently. Evidence spread across a wiki, two artifact stores, and a shared drive. The team assigned three people nearly full-time for the two weeks. They found most of what they needed, but roughly 15% of requested artifacts were either missing, expired from a bucket-level purge, or couldn't be tied confidently to the right release. The gaps became findings.
After. They standardized on a manifest schema, moved retention onto artifact classes with a documented SLA table, and made packaging part of the release pipeline. Owners became roles. The next review, they ran a handful of index queries and had the evidence set assembled in about a day and a half — one person, with hashes to prove integrity. The remaining time went to actually reviewing the evidence instead of hunting for it. No missing-evidence findings that cycle.
The change wasn't heroics. It was moving the work from after the fact to at the moment of creation.
When this makes sense — and when it doesn't
When a full portfolio evidence lifecycle is worth it:
-
You're running roughly five or more programs and portfolio-level queries have started requiring human interviews
-
You operate under real retention obligations — regulated data, contractual commitments, recurring audits
-
Reorgs have already orphaned evidence at least once
When it's overkill:
-
One or two programs where a single person genuinely still knows where everything is
-
Early-stage products with no external audit exposure and no retention obligations
-
Evidence volumes small enough that manual assembly takes an afternoon, not a week
Teams that haven't yet standardized their per-team release bundles should hold off on the portfolio layer. It sits on top of consistent packaging — if your individual programs can't produce a clean bundle yet, build that first. The manifest layer has nothing to standardize until then. And if your evidence lifecycle is going to feed investment and governance decisions, get the governance model straight in parallel; the connection between evidence and portfolio decisions is worked through in Portfolio requirements governance that ties investment gates to requirement evidence.
Pulling it together
Portfolio evidence doesn't fail because teams are careless. It fails because a system built on individual memory and per-team habits can't answer portfolio-level questions — and nobody notices until an audit forces it.
The fix is structural: one manifest contract every program conforms to, retention tied to artifact class rather than storage location or team habit, ownership expressed as roles that outlive people, and discoverability treated as a first-class requirement rather than an afterthought. Get those four layers connected and the difference is stark. Audit prep stops being a scramble and becomes a query. Evidence stops rotting into "somewhere on the drive" and becomes something you can actually stand behind two years later, hashes and all. That's the whole point of a retention policy — not to hoard everything forever, but to keep exactly what matters, only as long as it matters, in a form anyone can find and trust.
Ready to transform your product delivery?
Join 2,000+ teams using GoReqly to improve requirements accuracy, reduce rework, and accelerate time to market.