Reid Witlin Onboarding

repo: ~/Projects/reid-witlin-onboarding · 36 commits · 0 in last 24h, 1 in last 7d · █

Search the build

36 commits indexed

  1. bb0a80a 2026-09-24 backfill-rwltd-mfr: namespace-scoped idempotency + HTTP status check & retry
  2. 97382b2 2026-09-04 TK-11256: fix Reid Witlin/Architectural Fabrics onboarder dropping description on the floor
  3. 4d7b594 2026-09-03 auto-data-snapshot: 2026-09-03T17:39:42 (1 data files) — rwltd-mfr-rollback-ledger.jsonl
  4. 47569c9 2026-09-03 auto-data-snapshot: 2026-09-03T17:01:36 (1 data files) — rwltd-mfr-rollback-ledger.jsonl
  5. b036eec 2026-09-03 auto-data-snapshot: 2026-09-03T16:23:17 (2 data files) — backfill-rwltd-mfr.mjs.bak rwltd-mfr-mapping-clean.csv
  6. 761eab8 2026-09-03 auto-data-snapshot: 2026-09-03T15:07:41 (1 data files) — rwltd-mfr-mapping.csv
  7. ef19926 2026-09-03 Reid Witlin/Architectural Fabrics: rename titles to Pattern/Town - Colorway Fabric
  8. b4d14f1 2026-09-03 auto-data-snapshot: 2026-09-03T11:10:51 (1 data files) — rename-titles-fabric-results.json
  9. 83290a6 2026-09-03 Reid Witlin/Architectural Fabrics: publish to 12 sales channels
  10. a401b87 2026-09-03 auto-data-snapshot: 2026-09-03T09:53:05 (1 data files) — publish-results.json
  11. a5b4a18 2026-09-03 Reid Witlin/Architectural Fabrics: activate all 1,005 DRAFT products live
  12. b205e69 2026-09-03 Verify Reid Witlin recovery end to end
  13. a8724f1 2026-09-03 auto-data-snapshot: 2026-09-03T06:39:23 (1 data files) — verification/tk10066-recovery-results.jsonl
  14. 6f38500 2026-09-02 auto-data-snapshot: 2026-09-02T23:42:20 (1 data files) — verification/tk10066-recovery-results.jsonl
  15. 884a4e8 2026-09-02 Refresh retained canonical owners during recovery
  16. 039d074 2026-09-02 Add guarded Reid Witlin recovery executor
  17. 1541f4d 2026-09-02 Build immutable Reid Witlin recovery manifest
  18. 8d6bbce 2026-09-02 Reid Witlin v2 batch: execute Steve-approved 1,005-item onboarding
  19. 39ea379 2026-09-02 Record and gate Reid Witlin draft race recovery
  20. de8a372 2026-09-02 Build deduplicated Reid Witlin onboarding batch
  21. c95e6e2 2026-09-02 auto-data-snapshot: 2026-09-02T16:03:42 (4 data files) — create-results.json summary_v2.json targets_image_held_v2.csv targets_ready_v2.csv
  22. 6f25029 2026-09-02 Reid Witlin v2 batch: corrected onboarding scope post re-scrape
  23. 7aca80f 2026-07-30 Cycle 3 log + loop PAUSE idle-on-gated (safe backlog exhausted, 5/5 SHIP)
  24. 9dd09fa 2026-07-30 Fix preview.py %-format crash (width:100% broke str%); token-replace; regen clean preview.html
  25. 72892c7 2026-07-30 Cody-gate cycle3: <img> lazy+onerror (404->red card, perf), real confidence-rank sort, search incl town/colorway; dropped phantom rwltd-403 (all imgs are cdn.shopify.com/200)
  26. 267c9f8 2026-07-30 Cycle 3: QA preview grid (preview.py -> preview.html) — 859 ready + 22 held, sort+density per standing rule
  27. 709bf28 2026-07-30 Cycle 2 log: ledger (spec enrichment + 3 Cody fixes, 5/5 SHIP)
  28. e62d940 2026-07-30 Cody-gate cycle2: care->specs.care (custom.cleaning was a dead wire), drop specs.type/end_use noise, single-line newline guard; keys verified vs live read-chain
  29. e59eb0f 2026-07-30 Cycle 2: enrich create.py spec metafields (verified types) + fix latent custom.content product_reference 422 bug; origin->tag
  30. 6aa815f 2026-07-30 Cycle 1 log: memo + ledger (ready 859 / held 22, 5/5 SHIP)
  31. 223c348 2026-07-30 Cody-gate fixes: create.py idempotent write-back; drop mis-keyed color_name tag; vendor-JS verify all fuzzy matches (curl fetch, 403-robust); authoritative summary
  32. 888650d 2026-07-30 recover_held.py: vendor-JS image recovery — 167 held -> 19 (recovered 156, ready now 862)
  33. b05424c 2026-07-30 rename.py: also strip 'Reid Witlin' PL-leak tag (5 products) during unification
  34. 3736261 2026-07-30 Add gated rename.py: unify existing 312 live Reid Witlin DWRW-210xxx -> DWDQ-210xxx
  35. b6f5dcd 2026-07-30 Switch new-product SKU prefix to DWDQ (dedicated Reid Witlin band, DWDQ-100001..100881)
  36. 87adb75 2026-07-30 Reid Witlin onboarding: dry-run batch (714 ready + 167 held), image recovery, gated create.py

Authors

Agents used

  • none detected

Skills used

  • /tk10066-recovery-results2
  • /quote-only1
  • /discontinued1
  • /colorway1

Creative ideas + design notes

Commits with substantial prose (≥120 chars) — the rationale behind each move.

bb0a80a · 2026-09-24 · backfill-rwltd-mfr: namespace-scoped idempotency + HTTP status check & retry
Two live-Shopify-path fixes on the 1,195-row backfill: (1) liveHasMfr now matches
the EXACT target metafield custom.manufacturer_sku (namespace + key), not any
namespace with that key — a same-keyed metafield elsewhere could previously mask a
genuinely-missing custom one and get counted "already had"; (2) added a fetchRetry
wrapper (429/5xx backoff, 6 tries) and res.ok checks in gql() and liveHasMfr(), so
a transient throttle no longer kills the batch mid-run or makes liveHasMfr return
false on an error body (which would trigger a needless write). Re-runs resume
safely via the live idempotency read.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
97382b2 · 2026-09-04 · TK-11256: fix Reid Witlin/Architectural Fabrics onboarder dropping description on the floor
Root cause of dw-five-field-canary cadence-regression FAIL (1005 recent products,
2026-09-03 batch): build_batch2.py never SELECTed rwltd_catalog.description/
ai_description and never emitted a description field in the CSV; create2.py never
sent descriptionHtml to Shopify at all. Also: activate_batch.py had no
description-present gate before flipping DRAFT->ACTIVE, unlike every other DW
onboarder's go-live.mjs (which holds as draft on empty descriptionHtml).

Fixes (code-only, no data/Shopify writes fired):
- build_batch2.py: SELECT description, ai_description in both pool queries; rec_common()
  now emits description (description || ai_description, may still be empty if the
  scraper never captured either -- separate data gap, not this bug).
- create2.py: sends descriptionHtml when row['description'] is non-empty.
- activate_batch.py: holds any product with empty descriptionHtml as DRAFT (writes
  held-no-description.json) instead of activating it -- protects future runs against
  repeating this regression.

Note: the single-Sample-variant/quote-only shape is NOT a bug -- Steve explicitly
approved activating this batch in that shape (git a5b4a18), matching the precedent of
190 prior same-shape ACTIVE Reid Witlin products. Not touched.

Already-live 1,005 products still missing descriptions is a Shopify write -- gated,
see pending-approval memo.
ef19926 · 2026-09-03 · Reid Witlin/Architectural Fabrics: rename titles to Pattern/Town - Colorway Fabric
Steve approved live: title format "{Pattern-or-Town} - {Colorway} Fabric"
(e.g. "Ashburn Cassis" -> "Ashburn - Cassis Fabric"). Rebuilt titles from
structured catalog data (pattern_name/virginia_town + mfr_sku-derived
colorway) rather than string-splitting rendered titles, with a casing
fix for ALL-CAPS raw vendor pattern names (e.g. "A ZILLION RUBS" ->
"A Zillion Rubs"). Scoped to ACTIVE products only (live status-checked
per row) -- 16 archived/discontinued rows correctly skipped.

Dry-run verified clean, live run: 1179 renamed, 16 skipped (not active),
0 errors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
83290a6 · 2026-09-03 · Reid Witlin/Architectural Fabrics: publish to 12 sales channels
Steve approved live: "post to all 13 channels". Excluded "Fabricut" as
a documented vendor-dedicated channel (TK-10762: published via its own
full-pattern daily poster, never the shared rotation) -- publishing a
different vendor's line there would be a mismatch, flagged to Steve.

Two-step publish: first the 5 channels matching the existing 190 live
products' pattern (Online Store, POS, Buy Button, FB&IG, Houzz), then
the remaining 7 (Google&YouTube, Pinterest, Rakuten, Shop, Inbox,
TikTok, DWAutoPostBlog). Idempotent per-product missing-channel diff.
Verified: 1005/1005 confirmed on exactly 12 channels each, 0 errors.

Inventory: confirmed with Steve these are correctly untracked
(inventoryItem.tracked=false) -- always-purchasable by design, no
change needed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
a5b4a18 · 2026-09-03 · Reid Witlin/Architectural Fabrics: activate all 1,005 DRAFT products live
Steve approved live in conversation 2026-09-03: "make them active with
our pl - architectural fabrics line". These are quote-only, single-
Sample-variant products (same shape as the original 190 already-ACTIVE
products), structurally excluded from the automatic rotation-activator
cadence (SKU matches SAMPLE_SKU_REGEX -(sample|s)$), so this was a
direct one-time scripted activation, not a cadence fix.

Fetched the live DRAFT set fresh via GraphQL (1,005, matching post
codex overnight race-twin cleanup) rather than any local file.
DRY_RUN verified clean, live run: 1005/1005 activated, 0 errors.
Independently re-verified via GraphQL nodes() against the exact set:
all 1005 confirmed ACTIVE.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
8d6bbce · 2026-09-02 · Reid Witlin v2 batch: execute Steve-approved 1,005-item onboarding
Live create complete: rwltd_catalog live-pid count 190 -> 1193 (1003
net new DRAFT products across Pool A reconfirmed-old + Pool B new-gap).
Verified 0 duplicate mfr_sku products despite a concurrent-write
overlap with a sibling agent's process during the run -- Shopify's
productSet upsert-by-handle safely merged the races.

2 residual handle-collision failures (DWKR-190830, DWKR-190420) from a
pre-existing vendor-data town-mislabeling issue, non-urgent fix-later.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
6f25029 · 2026-09-02 · Reid Witlin v2 batch: corrected onboarding scope post re-scrape
build_batch2.py + create2.py supersede the quarantined 2026-07-30 plan
(stale DWDQ prefix, 1071-row catalog). Two verified pools reconfirmed
live by the 2026-09-01 re-scrape, neither overlapping the 190 already-
live products:

- Pool A (623 ready / 779 total): original Feb-2026 full-detail rows,
  already carry a minted DWKR-19xxxx dw_sku, reused as-is.
- Pool B (382 ready): brand-new colorways from the re-scrape, minted
  DWKR-191394..191775 continuing the live band.

DRY_RUN verified clean (1005 would-create, 0 errors). No Shopify or
DB writes fired. Live create stays Steve-gated.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

File tree

43 files tracked. Click any to browse the source at HEAD.

Other build journals

← Recycledwallpaper  ·  all 4 projects  ·  Reidwitlin Landing →

Export

commits.csv · feed.atom · project.json · commits.json

rendered in 0ms