# ADR-DATA-001: Governed Source Approval and Dataset Freeze Pipeline ## Status `APPROVED` — approved by the repository owner on 2026-08-06 for the Source Approval contract slice. Implementation remains limited to append-only governance records; model activation, orders, and KIS submission remain forbidden. ## WBS / contract traceability - WBS: `AEG-X-009` - Requirement: `REQ-DATA-SOURCE` - Existing contracts: `contracts/schedules/model-operations.v3.json`, `contracts/schedules/execution-assurance.v1.json` - Related proposal: `docs/CURRENT/AEG-X-009_AUTOMATION_PROPOSAL.md` - Policy boundary: `EVALUATION_ONLY` / `PROPOSAL_ONLY` / `DRILL_ONLY` ## Context The live database contains the model-operations schemas, but no approved/frozen `dataset_manifest`, model registry, EvidenceSnapshot, or release bundle records. The source catalog previously claimed operational approval without preserving the required owner, license, SLA, timezone, unit, and approval evidence. This prevents a compliant Phase 1 VersionSet from being resolved. ## Decision proposal Introduce a governed, append-only approval boundary before ingestion or evaluation: ```text SourceCandidate -> SourceApproval (human owner/steward + contract evidence) -> DatasetManifest (immutable content/lineage hash) -> DatasetFreeze (human approval or approved governance command) -> ServerSideVersionSetResolver -> EvaluationOnly / ProposalOnly operation ``` The resolver must reject any source or dataset that is not approved and frozen. The client cannot supply authoritative evidence, hashes, model/config/code versions, or contract versions. ## Proposed data boundary The implementation may add normalized append-only records only after this ADR is approved. Candidate records must include: ```text source_id, source_version, owner, steward, license_reference, availability_sla, freshness_sla, timezone, calendar, unit, currency, schema_contract_version, status, approved_by, approved_at, published_at, revision, content_hash, lineage_hash ``` No update/delete is permitted for approval, evidence, or freeze history. Corrections are new records/events. ## Automation boundary Allowed: - source contract drift checks; - data-quality evaluation; - immutable manifest creation; - deterministic dataset freeze proposal; - EvidenceSnapshot creation; - proposal packet and maker/checker notification. Forbidden: - automatic model activation/promotion; - automatic rollback; - threshold/config/policy/code mutation; - client publication; - broker order or KIS submission. ## Acceptance evidence required before implementation is complete 1. Unapproved source cannot enter ingestion. 2. Approved source with missing license/SLA/timezone/unit is quarantined. 3. Dataset freeze is append-only and content-addressed. 4. Same input and VersionSet produce the same manifest/evaluation hash. 5. Client-supplied VersionSet/evidence is ignored or rejected. 6. Replay with the same scope/idempotency/watermark produces no duplicate side effect. 7. Proposal approval is maker/checker and does not activate a model. 8. Failure, alert, runbook, retention, and rollback/stop evidence are preserved. ## Alternatives rejected - Trusting `source-catalog.md` as approval: no immutable approval evidence. - Creating synthetic DatasetId/ModelVersion values to unblock Shadow Run: violates evidence and reproducibility rules. - Reusing existing model-operation tables without an approval boundary: permits ambiguous ownership and incomplete lineage. - Adding a scheduler that activates models: forbidden by AGENTS.md v12.4. ## Approval record - Decision: APPROVED for the first Source Approval contract slice. - Scope: append-only source approval record and validation boundary only. - Explicit exclusions: dataset freeze execution, model activation, automatic promotion/rollback, threshold mutation, client publication, broker order, and KIS submission. - Follow-up: Dataset Freeze requires a separate reviewed slice and evidence package.