DORA RoI Retention Policy

Status: implemented operator policy for sprint SPRINT_20260430_124_DOCS_dora_roi_runbook.md.

Purpose

This document defines the Evidence Locker retention behavior expected for annual DORA Register of Information (RoI) snapshots. It is operator-facing: financial-entity tenants own their filing, legal review, and effective retention setting. Stella supplies a conservative default, bounded tenant overrides, immutable storage, and audit evidence.

The governing local decision is DORA-Q6 in the EU compliance decisions log.

Policy

SettingValue
Policy iddora-roi-annual-v1
Default retention7 years
Tenant overrideAllowed
Minimum override5 years
Maximum override10 years
Override auditRequired
Shortening ruleDo not shorten retention below an already committed regulatory or customer period without counsel approval.

Retention is expressed in years at the operator-policy layer. Implementations may persist an absolute retainUntil timestamp or days for storage backends, but the resolved period must not be shorter than the approved year value.

Resolution Order

When an annual RoI snapshot is sealed, the effective retention is resolved in this order:

  1. Active legal hold or compliance hold, if present.
  2. Tenant DORA RoI retention override in the inclusive 5 to 10 year range.
  3. Platform default of 7 years.

Invalid override values must be rejected. Do not silently clamp 4 to 5 or 12 to 10; the operator must correct the tenant policy and produce an audit record.

Snapshot Metadata

Every annual RoI capsule or bundle should carry these retention fields in its metadata:

{
  "retentionPolicyId": "dora-roi-annual-v1",
  "retentionYears": 7,
  "retainUntil": "2033-12-31T23:59:59Z",
  "retentionSource": "platform-default",
  "tenantOverride": null,
  "legalHold": false,
  "previousYearBundleHash": "sha256:<64 lowercase hex>",
  "auditEventIds": ["evt-..."]
}

When a tenant override applies, tenantOverride must include:

{
  "years": 10,
  "previousYears": 7,
  "ticket": "DORA-RET-2026-0042",
  "reason": "Tenant policy requires ten-year RoI evidence retention",
  "requestedBy": "operator@example.com",
  "approvedBy": "compliance-owner@example.com",
  "approvedAt": "2026-12-15T10:00:00Z",
  "auditEventId": "evt-..."
}

Audit Events

Retention override changes and annual snapshot sealing must produce auditable events. The expected event vocabulary is:

EventRequired fields
dora.roi.retention.override.settenantId, previousYears, newYears, ticket, reason, requestedBy, approvedBy, effectiveAt
dora.roi.retention.override.clearedtenantId, previousYears, newYears=7, ticket, reason, requestedBy, approvedBy, effectiveAt
dora.roi.snapshot.retention.appliedtenantId, reportingYear, bundleHash, retentionYears, retainUntil, retentionSource, overrideAuditEventId
dora.roi.snapshot.retention.rejectedtenantId, reportingYear, requestedYears, reason, ticket

The audit payload must allow an offline reviewer to answer who changed the tenant setting, why it changed, which annual snapshot used it, and what retain-until date resulted.

Storage Behavior

Retention sweep (non-RoI decision capsules)

Sprint SPRINT_20260520_089 adds an automatic background retention sweep for ordinary (non Records-of-Importance) decision capsules, closing the TOPO-110 gap where retention was enforced only at write/seal time.

Operator Workflow

  1. Review the tenant DORA retention setting during the annual filing window.
  2. Keep the default 7 years unless the customer/operator compliance owner approves a 5 to 10 year override.
  3. Record the override ticket, reason, requester, approver, and effective date.
  4. Generate the annual RoI bundle with the resolved retention setting.
  5. Verify that the Evidence Locker record and exported metadata show the same retention years and retain-until date.
  6. Capture the audit event IDs in the filing ticket.

For command-level filing steps, see the DORA RoI export runbook.

Current Implementation Status

EvidenceLocker implements this slice without adding new external schema assets: