Long-Term Archive Stewardship¶
A data architect working at ecosystem scale eventually has to answer questions that span years rather than releases: "Can we restore the exact v1.2.1 vocabulary-mapping state from two years ago?"; "Is the archive retention policy aligned with Solvency II Article 44 record- keeping?"; "What happens to an archived model artifact when legal-hold is placed on its parent case?" The Long-Term Archive Steward (LTAS) persona, introduced in v1.5.0 stage 5, is the authority on all three questions.
This page is the data-architect-facing reference for LTAS. It covers the persona's Zachman cell, the POLARIS archive surface, the tar- manifest discipline that anchors bit-perfect restore, the four retention classes (hot / warm / cold / legal-hold), and the coordination with KGSE on bridge-symbol SemVer review.
The LTAS persona, in one paragraph¶
LTAS sits in the ENGINEER/WHEN cell of the Zachman matrix — the
engineer row (implementation detail), the WHEN column (temporal
discipline). The persona coordinates the POLARIS archive (the ice_ext
model-storage subsystem) across the ecosystem: tar-manifest integrity on
every push, retention-class declaration at push time, legal-hold registry
enforcement, ice_ext model-storage integration contracts, and bit-
perfect restore verification. LTAS is the liaison between IHL
(innovation handoff, which triggers archive snapshots) and the ice_ext
model-storage subsystem. Every LTAS deliverable cites the POLARIS
archive_id, the manifest SHA-256, and the retention class.
For the full R.I.S.C.E.A.R. specification, see
src/fcc/data/personas/long_term_archive_steward.yaml.
POLARIS, in one paragraph¶
POLARIS is the FCC ecosystem codename for the ice_ext model-storage
adapter — the long-term archive of model-evolution artifacts.
POLARIS — named for the North Star and its mythological role as constant
mariner's guide — is the archive that must not drift. Downstream
consumers (FCC, AOME, constellation verticals) import the stable bridge
via fcc.archive.polaris_bridge (module-level home) or
fcc.api.get_polaris_bridge() (aggregate). The mock fallback
(PolarisMockBridge) activates automatically when the live ice_ext
adapter is not importable, keeping tests and CI deterministic.
For the full origin reasoning, see the Codename Decoder entry on POLARIS.
The tar-manifest discipline¶
The core LTAS constraint is: every POLARIS push MUST have a signed tar- manifest with SHA-256 integrity. "Signed" here means detached signature, not inline — the manifest is a separate artifact co-located with the tarball. A typical archive push produces three files:
archive/
├── INV-0042_model_v1.2.1.tar
├── INV-0042_model_v1.2.1.tar.manifest.yaml
└── INV-0042_model_v1.2.1.tar.manifest.sig
The manifest YAML carries:
archive_id: INV-0042_model_v1.2.1
created_at: 2026-04-22T18:40:00Z
created_by: LTAS
retention_class: warm
sha256: 3c2f8a9e6b1d0c4a7f5b8e2d9c6f1a3e7b2d9f0c4e6a8b1d3f5c7a9e2b4d6f8a
size_bytes: 14_382_901
contents:
- path: model.yaml
sha256: a1b2c3...
size_bytes: 12_480
- path: dimensions.yaml
sha256: d4e5f6...
size_bytes: 8_192
# ... more entries ...
The detached signature covers the manifest YAML. On restore, LTAS
re-verifies the manifest signature, then re-computes each file's
SHA-256 against the manifest entry, then re-computes the tarball-level
SHA-256. Any mismatch is a tier_1 finding and blocks the restore.
The pattern is drawn from OAIS (Open Archival Information System) — ISO 14721 reference architecture — which LTAS's "role skills" spec names explicitly as a background requirement.
The four retention classes¶
LTAS's archive lifecycle has four retention classes. The class is declared at push time and cannot be changed retroactively without an owner-gated exception.
Hot¶
- Use case. Recently created artifacts that are still actively referenced by other subsystems.
- Storage tier. Primary object store with low-latency read.
- Retention window. Typically 90 days (configurable per domain).
- Cost profile. High storage cost, low retrieval cost.
- Access pattern. Read-heavy, may be re-read dozens of times.
Warm¶
- Use case. Artifacts that have aged out of hot but are still relevant to the current release window.
- Storage tier. Secondary object store with moderate read latency.
- Retention window. Typically 1 year.
- Cost profile. Moderate storage cost, moderate retrieval cost.
- Access pattern. Read-occasional, used for regression testing or cross-release comparisons.
Cold¶
- Use case. Long-term retention for audit, compliance, or research.
- Storage tier. Cold object store (Glacier-class) with multi-hour retrieval.
- Retention window. 7 years (configurable per regulatory regime).
- Cost profile. Low storage cost, high retrieval cost.
- Access pattern. Read-rare, typically triggered by audit or legal request.
Legal-hold¶
- Use case. Artifacts subject to an active legal or regulatory hold.
- Storage tier. Any tier; the class overrides normal lifecycle.
- Retention window. Indefinite until hold is released.
- Cost profile. Same as underlying tier.
- Access pattern. Read-controlled; every access is logged against the hold ID.
The critical LTAS constraint: legal-hold archives cannot be deleted
or overwritten until the hold is released. A push to an archive_id
already under legal-hold is a tier_1 finding. An LTAS attempt to
delete a legal-hold archive is a tier_1 governance violation.
The archive lifecycle¶
Under normal conditions an artifact flows: hot → warm → cold → retired. Legal-hold is orthogonal — it can be placed at any stage and freezes the artifact until released.
The lifecycle transitions are policy-driven, not LTAS-driven. LTAS
enforces the policy; it does not author the policy. The policy lives at
src/fcc/data/governance/quality_gates.yaml under the retention-
schedule section and is jointly owned by GCA and the CISO-level
persona.
On each transition, LTAS re-verifies the manifest and re-records the archive_id under the new retention class. The manifest SHA-256 does not change; only the retention class annotation does.
Restore-test readiness¶
A restore that only works on paper isn't a restore. LTAS runs periodic restore-test drills against sampled archives:
- Pick a random archive_id from each retention class.
- Request a restore via the POLARIS bridge.
- Verify the tarball SHA-256 matches the manifest.
- Verify each contained file SHA-256 matches the manifest entry.
- Load the restored artifact into FCC and confirm it parses cleanly.
The drill frequency:
| Class | Drill frequency |
|---|---|
| Hot | Weekly |
| Warm | Monthly |
| Cold | Quarterly |
| Legal-hold | On placement + annually |
A failed drill is a tier_1 finding. The failure mode is almost always
either (a) a bit-rot issue in cold storage or (b) a manifest-signature
drift after a key rotation. Both are recoverable but must be surfaced
promptly.
ice_ext model-storage integration¶
ice_ext is the internal sibling repo that provides the live POLARIS
adapter. The v1.4.x → v1.5.0 absorption arc closed all five outstanding
STATUS.md §n asks between FCC and ice_ext, the most important of
which — §4 — was the public-API elevation of the PolarisBridge
symbol.
The ice_ext-side contract is tested by the model-storage contract tests
at tests/contracts/test_polaris_bridge_contract.py. The contract
covers:
push(archive_id, payload, retention_class, manifest)— accepts a well-formed push.pull(archive_id)— returns the exact bytes pushed, verified against the manifest.list(prefix)— enumerates archive IDs matching a prefix.describe(archive_id)— returns the retention-class + SHA-256 + timestamp metadata.
Contract failures are tier_1 findings and block any FCC release that
bumps the ice_ext dependency floor.
The PolarisMockBridge fallback¶
The mock bridge lives at
src/fcc/plugins/v1_5_preview/polaris_bridge.py and implements the
same protocol as the live bridge, backed by an in-memory dict. Its
purpose is test + CI determinism — FCC's CI must run cleanly on a
runner that has no access to the private ice_ext adapter.
The mock bridge is chosen automatically when the live adapter is not
importable, via the get_polaris_bridge() sentinel factory. Data
architects designing new integrations should default to the mock for
development and test, then switch to the live adapter only when the
deployment topology requires it.
Interaction with KGSE — the SemVer review¶
Every new archive-facing symbol promoted from preview to stable passes through the KGSE ↔ LTAS review. The protocol:
- KGSE drafts the promotion migration guide.
- LTAS reviews the archive-manifest implications — does the new symbol change the manifest schema? Does it affect restore semantics?
- If LTAS finds a retention-class concern (e.g., the new symbol requires a retention-class migration), the promotion is blocked.
- If LTAS approves, KGSE finalises the
fcc.api.__all__update.
The protocol is symmetric. When LTAS proposes a new retention class, KGSE reviews for SemVer compatibility against any downstream consumer that may rely on the four-class enum.
For the KGSE side of this protocol, see the companion Graph Serialization Elevation page.
Interaction with DAR¶
DAR (Decision Archaeologist) draws archive-manifest provenance from LTAS during pre-v1.0 decision reconstruction. Early FCC history is sparse on ADRs; the LTAS archive provides the manifest-level chronology that DAR can triangulate against event-stream and commit history. The interaction is upstream-to-DAR: LTAS supplies manifest provenance on request.
For the DAR side of this protocol, see Decision Archaeology.
Worked example — restoring a v1.2.1 vocabulary snapshot¶
Suppose a data architect needs to restore the exact state of the
athenium_vocabulary_mappings.yaml file at v1.2.1, two years ago.
Step 1: Locate the archive_id.
The archive_id schema is <project>_<artifact>_<version>. Here:
athenium_vocab_v1.2.1. List against POLARIS:
from fcc.api import get_polaris_bridge
polaris = get_polaris_bridge()
results = polaris.list(prefix="athenium_vocab_v1.2")
# -> ["athenium_vocab_v1.2.0", "athenium_vocab_v1.2.1"]
Step 2: Describe the archive.
meta = polaris.describe("athenium_vocab_v1.2.1")
# -> {"retention_class": "cold",
# "sha256": "3c2f8a9e...",
# "created_at": "2024-06-01T12:00:00Z"}
Step 3: Pull the payload.
Step 4: Verify the manifest.
Compute SHA-256 of payload_bytes. Compare against meta["sha256"].
If they match, the restore is bit-perfect.
Step 5: Unpack and use. The payload is a tarball. Extract, locate the target file, parse.
Every step is cited in the LTAS role_adoption_checklist. An auditor reviewing a restore operation should be able to replay the five steps from the archive access log.
Common LTAS findings¶
manifest_mismatch¶
Computed SHA-256 does not match the manifest entry. Severity tier_1.
Remediation: investigate the storage tier for bit-rot; escalate to GCA
if the archive is under legal-hold.
missing_manifest¶
Archive was pushed without a manifest. Severity tier_1. This is rare
in practice because the push API requires the manifest; when it occurs
it usually indicates an out-of-band push that bypassed the bridge.
Remediation: quarantine the archive; re-push with a proper manifest or
purge.
retention_class_drift¶
Archive's current retention class differs from the policy-driven
expected class. Severity tier_2. Remediation: verify the lifecycle
policy; if the policy changed, update the archive; if the archive
drifted, re-apply the policy-driven class.
legal_hold_violation¶
An attempt to delete or overwrite a legal-hold archive occurred.
Severity tier_1 governance violation. Always an incident. Escalate
immediately to GCA + owner.
restore_test_failure¶
A scheduled restore drill failed. Severity tier_1 if the archive is
hot or warm; tier_2 for cold; always tier_1 for legal-hold.
Remediation: root-cause the failure, fix the storage condition, re-
schedule the drill.
Retention class mapping for regulatory regimes¶
Data architects working on regulated verticals can use this mapping as a starting point. (Every deployment must verify against counsel.)
| Regulation | Typical cold retention |
|---|---|
| Solvency II Art. 44 | 5 years from reporting |
| IFRS 17 | 7 years from contract close |
| BCBS 239 | 7 years |
| SR 11-7 (model risk) | 7 years from model retirement |
| HIPAA | 6 years from creation or last use |
| GDPR Art. 30 (records of processing) | duration of processing + 6 months |
| DCAT-US | indefinite (public record) |
The FCC governance subsystem does not author the policy — it enforces whatever class is declared at push time. Data architects working on a vertical are responsible for choosing the correct class.
LTAS does NOT own¶
- LTAS does NOT author the retention policy. GCA + CISO-level persona authors it; LTAS enforces.
- LTAS does NOT create archive_ids. Owning subsystems do; LTAS accepts what is pushed.
- LTAS does NOT operate the live adapter.
ice_extdoes. - LTAS does NOT decide on legal-hold placement. Legal + GCA do.
Keeping these lanes clean avoids the most common archive-ownership disputes.
Related personas¶
| Persona | Direction | Interaction |
|---|---|---|
| KGSE | peer | POLARIS bridge SemVer review |
| DAR | downstream | Supplies archive-manifest provenance for rationale reconstruction |
| IHL | upstream | Innovation handoffs trigger archive snapshots |
| FA | downstream | Retention-compliance findings in forensic audits |
| GCA | downstream | Retention + legal-hold compliance for governance sign-off |
Next steps¶
- Read the Graph Serialization Elevation page — KGSE is LTAS's closest peer and together they own the POLARIS bridge contract.
- Read the Decision Archaeology page — DAR draws archive-manifest provenance from LTAS.
- Consult the Codename Decoder for POLARIS origin reasoning and canonical links.
- Read ADR-008 — POLARIS absorption for the framework-level archive-adoption rationale.
- Open the LTAS persona YAML at
src/fcc/data/personas/long_term_archive_steward.yamlfor the authoritative R.I.S.C.E.A.R. spec. - Review
docs/personas/evolution/ltas.mdfor the LTAS evolution guide. - Walk
docs/tutorials/advanced-capabilities/polaris-archive-integration.md(Pool B) for a hands-on POLARIS bridge integration tutorial. - Browse
docs/tutorials/sample-prompts/persona-ltas-prompts.mdfor ready-to-run archive-steward prompts. - Consult the Data Governance guide for how retention policy interacts with QG-DGS-001 data-flow audits.