{
    "format": "coaster-world-data-ready-for-data/v1",
    "platform_version": "0.4.0-dev.19",
    "generated_at": "2026-09-27T07:57:07+00:00",
    "duration_ms": 9660,
    "status": "verified",
    "ready_for_pilot": true,
    "checks": [
        {
            "key": "construction_locks",
            "status": "pass",
            "message": "All six active DATA construction locks are closed before the audit."
        },
        {
            "key": "isolated_target",
            "status": "pass",
            "message": "A disposable isolated database was created for the end-to-end audit."
        },
        {
            "key": "isolated_migrations",
            "status": "pass",
            "message": "All migrations applied successfully to the isolated audit database."
        },
        {
            "key": "isolated_reference_seed",
            "status": "pass",
            "message": "Reference providers, enrichment fields and canonical policies were seeded in the isolated database."
        },
        {
            "key": "provider_layer",
            "status": "pass",
            "message": "Executable OpenStreetMap and Wikidata collectors are registered with the expected capabilities."
        },
        {
            "key": "normalization_and_mapping",
            "status": "pass",
            "message": "Two synthetic provider records were normalized and resolved through verified external mappings."
        },
        {
            "key": "staging_to_proposals",
            "status": "pass",
            "message": "Normalized provider fields produced four pending evidence-backed proposals without canonical writes."
        },
        {
            "key": "canonical_consensus",
            "status": "pass",
            "message": "Independent providers agreeing on the official URL produced one explainable canonical candidate with consensus support."
        },
        {
            "key": "canonical_conflict",
            "status": "pass",
            "message": "Conflicting independent longitude proposals created a persistent canonical conflict instead of silently overwriting data."
        },
        {
            "key": "canonical_guard",
            "status": "pass",
            "message": "Canonical write guard rejected the candidate while the construction lock remained closed."
        },
        {
            "key": "isolated_canonical_apply",
            "status": "pass",
            "message": "The selected candidate was applied only inside the disposable database during a scoped gate simulation."
        },
        {
            "key": "public_api_contract",
            "status": "pass",
            "message": "The public API resource exposes the applied canonical value by public ULID and does not expose the internal MySQL ID."
        },
        {
            "key": "scoped_gate_restored",
            "status": "pass",
            "message": "Temporary isolated apply flags were restored; all six DATA construction locks are closed again."
        },
        {
            "key": "isolated_cleanup",
            "status": "pass",
            "message": "The disposable audit database was removed after the test."
        },
        {
            "key": "active_database_unchanged",
            "status": "pass",
            "message": "Active DATA row counts and all six construction locks are unchanged after the isolated audit."
        }
    ],
    "summary": {
        "passed": 15,
        "warnings": 0,
        "critical": 0
    },
    "cleanup_ok": true,
    "active_database_unchanged": true,
    "pilot_lock_plan": {
        "ready": true,
        "phase_1": {
            "purpose": "Small provider staging pilot with manual review only.",
            "DATA_PROVIDER_COLLECTION_ENABLED": "may_enable_for_named_pilot_only",
            "DATA_POPULATION_ENABLED": "keep_locked",
            "DATA_PROVIDER_SCHEDULES_ENABLED": "keep_locked",
            "DATA_CANONICAL_AUTO_APPLY_ENABLED": "keep_locked",
            "DATA_AI_AGENTS_ENABLED": "keep_locked",
            "DATA_RESEARCH_EXECUTION_ENABLED": "keep_locked"
        },
        "phase_2": {
            "purpose": "Canonical write pilot only after phase 1 proposals are reviewed.",
            "note": "No automatic schedules or AI. Canonical policies remain auto_apply=false and writes stay administrator-controlled."
        }
    }
}
