← back to Maya Width Fix

verification/CYF-TK11029-e2e-proof.json

43 lines

{
  "ticket": "TK-11029",
  "task": "Maya width-pollution: read-only diagnosis, authoritative-field mapping, deterministic dry-run correction pipeline, rollback artifacts, tests, E2E handoff",
  "agent": "iterm-tk11029-maya-width",
  "chain": "/root -> iterm-tk11029-maya-width (depth=1)",
  "finalizer": "/root",
  "risk_tier": "R1 (read-only + dry-run; zero canonical writes)",
  "environment": "Mac2 local dw_unified via /tmp socket; mayaromanoff.com $0 plain-fetch GETs",
  "build_identity": "3b407f5",
  "timestamp": "2026-09-02T20:57:00Z",
  "baseline": "At ticket open all 224 DWMR-8% rows in maya_catalog.width held the scraped meta-tag leak '=device-width, initial-scale=1\">' (0 clean). Prior agent (vp-dw-commerce) applied a one-time re-scrape backfill.",
  "affected_counts": {
    "total_dwmr8_rows": 224,
    "originally_polluted": 224,
    "current_still_polluted": 2,
    "current_clean_width": 222,
    "current_null_width_inches": 17,
    "residual_unrecoverable_rows": ["DWMR-80026 (MR-CC-1506-H, cozy-bed-fellow)", "DWMR-80211 (MR-CZ-2511, cozy-nestle)"]
  },
  "assertions": [
    {"boundary": "unit", "result": "PASS", "evidence": "python3 test_widthlib.py -> OK: 17 classify cases (fixtures = live DB distinct width strings + negatives) + focused asserts pass; SINGLE/MULTI_WIDTH/META_POLLUTION/EMPTY/UNPARSEABLE all correct"},
    {"boundary": "diagnosis", "result": "PASS", "evidence": "diagnose.py (read-only) -> total=224 still_polluted=2 clean=222 null_width=0 null_width_inches=17; residual=[DWMR-80026, DWMR-80211]; evidence/diagnosis.json"},
    {"boundary": "source-proof", "result": "PASS", "evidence": "authoritative_source.py re-scrape: 18x HTTP 200, 2x 404 (cozy-*), 14 SINGLE, 4 MULTI_WIDTH; all_single_slugs_match_db=True -> every applied single-width value equals the live mayaromanoff.com spec-table Width; evidence/source-proof.json"},
    {"boundary": "dry-run-current", "result": "PASS", "evidence": "pipeline.py (polluted-only scope) -> 2 rows, 0 actionable, tally UNRECOVERABLE_404=2; deterministic; writes nothing; evidence/dryrun-plan-polluted.json"},
    {"boundary": "dry-run-full", "result": "PASS", "evidence": "pipeline.py --simulate-all -> 224 rows: NO_CHANGE=219, KEEP_MULTI_WIDTH=3 (montauk cosmetic string drift only), UNRECOVERABLE_404=2; proves convergence/idempotency of the applied fix; evidence/dryrun-plan-all.json"},
    {"boundary": "negative-cases", "result": "PASS", "evidence": "2 collection 404s -> UNRECOVERABLE (needs Maya rep, not guessed); 4 genuine multi-width patterns -> width_inches NULL (ambiguous by design, not guessed); meta-pollution string -> 0 width measurements -> flagged, not parsed"},
    {"boundary": "rollback", "result": "PASS", "evidence": "each pipeline run emits restore-map-dryrun-<ts>.json (current-state snapshot of every row a plan would touch); restore.py <map> is the one-command UNDO; prior applied backfill's restore-map-2026-*.json left intact"},
    {"boundary": "apply-guard", "result": "PASS", "evidence": "pipeline.py --apply -> REFUSED (exit 3): canonical maya_catalog writes owned by finalizer under approval"},
    {"boundary": "side-effects", "result": "PASS", "evidence": "Zero DB writes, zero Shopify/deploy/restart/spend/send/DNS/delete/remote-push. Network egress = read-only GETs of public mayaromanoff.com pages ($0). Local commits only (no push)."}
  ],
  "artifacts": [
    "~/Projects/maya-width-fix/evidence/diagnosis.json",
    "~/Projects/maya-width-fix/evidence/source-proof.json",
    "~/Projects/maya-width-fix/evidence/dryrun-plan-polluted.json",
    "~/Projects/maya-width-fix/evidence/dryrun-plan-all.json",
    "~/Projects/maya-width-fix/README.md"
  ],
  "handoff_to_finalizer": "No apply required: 222/224 already correct; 2 residual are 404-unrecoverable (rep width-request drafted, Steve-gated send); the only --simulate-all diff is 3 wisping-weaves-montauk rows where the DB value ('137.2 cm') is cleaner than the live vendor typo ('137.2 m') -> keep DB value. If a future re-pollution occurs, run pipeline.py --simulate-all, review plan[].sql, apply in one txn, undo via restore.py.",
  "rollback": "No writes made this task. Repo revert: git revert 3b407f5 (+ the e2e commit). Any future apply reversible via restore.py <restore-map>.",
  "cleanup": "No test DB rows, no external side effects. Generated timestamped JSON churn gitignored; stable copies in evidence/.",
  "verdict": "PASS"
}