{"slug":"dw-contact-us-pages","total":23,"limit":100,"offset":0,"since":null,"commits":[{"hash":"eeca80b","date":"2026-09-26 08:58:39 -0700","author":"Claude (TK-11925)","subject":"TK-11669: Maharam GMC offer join (201 sample-variant offers, 09-25 dump)","body":"Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AN49RGVcoipQ6uyTUeTuRu"},{"hash":"54216ef","date":"2026-09-26 08:58:18 -0700","author":"Claude (TK-11925)","subject":"TK-11669: cohort support for the contact-us mechanism + Maharam cohort (prep only, dry-run)","body":"- lib: --cohort <name> -> per-cohort data dir so targets/ledgers/--rollback are SCOPED (default = TK-11925, unchanged paths)\n- lib: prefer SHOPIFY_ADMIN_TOKEN (FULL_ACCESS …2ea5 is dead/401); rollbacks bypass the targets-freshness guard\n- assign-template / unpublish-channels: preimage ledgered BEFORE the first write (like harden-variants)\n- set-contact-us-vendors.mjs: add cohort vendors to the Boost-card sweep via shop metafield custom.contact_us_vendors (preimage + rollback that deletes if absent)\n- restore-map.mjs: --freeze a per-product restore map; --check live vs map (0 diffs pre-flip; --inject-fault negative test = 1 diff)\n- cohort-flip.sh / cohort-rollback.sh orchestrators; flip refuses --apply unless stock-2026-guard skips contact-us\n- cohorts/maharam.json + guard patch (NOT applied); Maharam enumerate + restore map + dry-run output\n\nCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AN49RGVcoipQ6uyTUeTuRu"},{"hash":"2d2c24b","date":"2026-09-26 08:51:08 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-26T08:50:16 (1 data files) — cohorts/maharam.json","body":""},{"hash":"f836f4d","date":"2026-09-20 12:40:15 -0700","author":"steve","subject":"TK-11925: verify.mjs honesty fixes (Cody red-team) — min_order attr-syntax; json_rolls NOT-MEASURED when public .json omits available","body":"Live store verified clean (Cody SHIP IT, 8 PDPs / 4 vendors, 0 buy-box/price/Offer leaks). verify fail=0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Q8HhtR5c44zRJA3DfKYTZQ"},{"hash":"a2b65a8","date":"2026-09-20 12:27:09 -0700","author":"steve","subject":"TK-11925: gate buy box (price/cart/sample/min-order) out of contact-us PDP; fix verify no_sample_button to match rendered element not bare JS token","body":"verify → fail=0 (WARN from honest 0-of-0 sample-only NOT-MEASURED + client-side Boost note). Live-confirmed real_sample_btn_elements=0 on DG/RL/CL samples.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Q8HhtR5c44zRJA3DfKYTZQ"},{"hash":"e4395de","date":"2026-09-20 12:17:30 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-20T12:15:15 (5 data files) — data/ledger-channels.jsonl data/ledger-variants.jsonl data/theme-preimage/145556635699/manifest.json data/theme-preimage/145556635699/templates/product.contact-us.json data/verify-latest.json","body":""},{"hash":"efa9644","date":"2026-09-20 11:43:46 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-20T11:40:52 (1 data files) — data/ledger-variants.jsonl","body":""},{"hash":"916ac7a","date":"2026-09-20 11:30:27 -0700","author":"steve","subject":"TK-11925 fix: import join in lib.mjs (assertFreshTargets crashed on --apply); harden canary green","body":"Canary --limit 1 hardened eur-80658 (3 ops, 0 fail), preimage-before-write confirmed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Q8HhtR5c44zRJA3DfKYTZQ"},{"hash":"4a9eb58","date":"2026-09-20 11:11:28 -0700","author":"steve","subject":"TK-11925: add Nina Campbell (433 active) to contact-us cohort; re-enumerate → 1218 products; dry-runs clean","body":"Alan Campbell (Quadrille-associated) deliberately excluded per Steve 'NOT Quadrille'.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Q8HhtR5c44zRJA3DfKYTZQ"},{"hash":"4c198c4","date":"2026-09-19 10:26:18 -0700","author":"Steve Abrams","subject":"approval memo copy","body":""},{"hash":"b8b6045","date":"2026-09-19 10:26:18 -0700","author":"Steve Abrams","subject":"harden-variants --limit N canary flag; README review-driven additions","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"2b12c68","date":"2026-09-19 10:25:01 -0700","author":"Steve Abrams","subject":"Review fixes (Kimi + contrarian): JSON-LD Offer carve-out in layout/theme.liquid; gate on product.template_suffix (covers quick-shop); .dw-contact-us-product CSS scope + min-order notice; null-payload = failure; per-call try/catch; qty batches of 100; template rollback restores null exactly; stale-targets guard; verify checks JSON-LD + min-order","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"942c738","date":"2026-09-19 10:21:18 -0700","author":"Steve Abrams","subject":"harden-variants: append per-variant preimage ledger BEFORE the first write; run-summary row with failures; rollback ignores summary rows","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"ef0936e","date":"2026-09-19 10:16:53 -0700","author":"Steve Abrams","subject":"TK-11925: read-only live preimage of the 785 target products (captured 2026-09-19T17:02Z) for the rollback map","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"b979aee","date":"2026-09-19 10:15:58 -0700","author":"Claude (TK-11925)","subject":"refresh live-theme preimage snapshot after layout CSS change","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"5d1534b","date":"2026-09-19 10:15:40 -0700","author":"Claude (TK-11925)","subject":"layout: contact block sits under the image via a scoped 2-col grid (float rules measured); verify.mjs scoped assertions + control flag; README evidence","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"b61f5af","date":"2026-09-19 10:11:07 -0700","author":"Claude (TK-11925)","subject":"verify.mjs (PASS/FAIL/NOT-MEASURED) + README with order of operations, rollback, residual risks","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"63acba0","date":"2026-09-19 10:11:07 -0700","author":"Claude (TK-11925)","subject":"scripts: assign-template, harden-variants (tracked-first), unpublish-channels — all dry-run default with --rollback","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"f5fc64f","date":"2026-09-19 10:11:07 -0700","author":"Claude (TK-11925)","subject":"scripts: push/rollback theme with preimage capture; refuses role=main writes without --allow-main","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"fa643c4","date":"2026-09-19 10:11:04 -0700","author":"Claude (TK-11925)","subject":"scripts: shared lib + read-only enumerate (785 targets captured)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"6ea5f05","date":"2026-09-19 10:10:53 -0700","author":"Claude (TK-11925)","subject":"grid cards: Contact us for pricing on Boost + liquid card paths","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"6660ec4","date":"2026-09-19 10:10:53 -0700","author":"Claude (TK-11925)","subject":"product.liquid: render contact block directly below the image column (additive)","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki"},{"hash":"0158453","date":"2026-09-19 10:10:53 -0700","author":"Claude (TK-11925)","subject":"contact-us product template (no price/form blocks) + dw-contact-us-block snippet","body":"Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki\n"}]}