← 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"
}