{"slug":"maya-width-fix","total":4,"limit":100,"offset":0,"since":null,"commits":[{"hash":"4044134","date":"2026-09-02 13:57:52 -0700","author":"Steve Abrams","subject":"TK-11029: E2E proof (PASS) + gitignore pycache","body":"Verification packet CYF-TK11029: unit/diagnosis/source-proof/dry-run(current+full)/negative-cases/rollback/apply-guard/side-effects all PASS. Read-only + dry-run; zero canonical writes.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Q8Z4wTw69YbodS8A2FkQj4"},{"hash":"3b407f5","date":"2026-09-02 13:57:01 -0700","author":"Steve Abrams","subject":"TK-11029: read-only diagnosis + deterministic dry-run correction pipeline + tested widthlib + source proof","body":"- widthlib.py: pure width classifier (SINGLE/MULTI_WIDTH/META_POLLUTION), 17 unit tests (fixtures=live DB distinct values + negatives), all pass\n- diagnose.py: read-only DB diagnosis -> 224 total, 2 residual polluted (DWMR-80026/80211, both 404), 222 clean\n- authoritative_source.py: $0 read-only re-scrape + DB reconciliation; all 14 single-width slugs match DB exactly, 2x404, 4 multi-width\n- pipeline.py: deterministic DRY-RUN correction plan (never writes; --apply refused); rollback artifact per run\n- evidence/: committed stable JSON proofs; README with finalizer gated-apply path\n\nNo canonical DB/Shopify writes, no deploy/restart/spend/send/DNS/delete/remote-push. Prior applied backfill + restore-maps left intact.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Q8Z4wTw69YbodS8A2FkQj4"},{"hash":"9397433","date":"2026-08-31 11:04:45 -0700","author":"Steve Abrams","subject":"TK-11029 phase2: recover 17 multi-width Maya widths (verified vendor multi-width strings); 2 cozy 404s left needs-rep; reversible restore-map","body":""},{"hash":"64817d4","date":"2026-08-31 10:57:51 -0700","author":"vp-dw-commerce","subject":"TK-11029: fix polluted maya_catalog.width via specsTable re-scrape (205 fixed, 19 still-unknown); reversible restore-map + restore.py","body":""}]}