← back to Reid Witlin Onboarding
verification/recovery-e2e-proof.json
31 lines
{
"intent": "Prepare a fail-closed, read-only recovery manifest for TK-10066 without performing gated Shopify or canonical writes.",
"risk_tier": "R4-preflight",
"environment": "live Shopify read API plus local canonical dw_unified read replica",
"timestamp": "2026-09-03T05:24:18Z",
"entry_state": "All Reid Witlin writers stopped; recovery remains gated; products remain DRAFT.",
"actions": [
"Compiled build_recovery_manifest.py",
"Fetched the complete live Architectural Fabrics vendor product set read-only",
"Read matching rwltd_catalog and dw_sku_registry rows",
"Generated two immutable manifests 77 seconds apart"
],
"assertions": {
"duplicate_sku_count_is_89": "PASS",
"same_identity_count_is_34": "PASS",
"cross_identity_count_is_55": "PASS",
"all_archive_targets_are_draft": "PASS",
"all_55_fresh_skus_are_unique": "PASS",
"both_handle_link_repairs_resolve": "PASS",
"two_read_state_is_stable_ignoring_generated_at": "PASS",
"shopify_or_database_mutation": "SKIP - prohibited until Steve approves the recovery memo"
},
"evidence": [
"verification/recovery-manifests/20260903T052301Z.json",
"verification/recovery-manifests/20260903T052418Z.json"
],
"negative_behavior": "The first run failed closed at DWKR-191406 because no registry owner existed. The tool was corrected to require exactly one B-new-gap mover and one pre-existing Pool-A owner; ambiguous ownership raises without writing a manifest.",
"side_effects": "Two local immutable JSON evidence files only; zero Shopify and zero PostgreSQL writes.",
"verdict": "PARTIAL - recovery preflight is verified; live recovery remains approval-gated."
}