← back to Designerwallcoverings
stout-onboard: fix stale docs — double-roll (not single), Gemini 2.5 model/cost, live collection-rule reality note
16717b2284ccae318ff53a3ee043c41c78b7e5b3 · 2026-07-26 19:27:56 -0700 · Steve Abrams
Files touched
M scripts/stout-onboard/build-payloads.mjsM scripts/stout-onboard/go-live.mjsM scripts/stout-onboard/settlement-gate.mjs
Diff
commit 16717b2284ccae318ff53a3ee043c41c78b7e5b3
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sun Jul 26 19:27:56 2026 -0700
stout-onboard: fix stale docs — double-roll (not single), Gemini 2.5 model/cost, live collection-rule reality note
---
scripts/stout-onboard/build-payloads.mjs | 13 ++++++++-----
scripts/stout-onboard/go-live.mjs | 5 ++++-
scripts/stout-onboard/settlement-gate.mjs | 4 ++--
3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/scripts/stout-onboard/build-payloads.mjs b/scripts/stout-onboard/build-payloads.mjs
index b7f1e5f..cd8a05d 100644
--- a/scripts/stout-onboard/build-payloads.mjs
+++ b/scripts/stout-onboard/build-payloads.mjs
@@ -2,12 +2,15 @@
/**
* Build Stout Textiles DRAFT payloads from dw_unified.stout_catalog → out/payloads.jsonl.
* Mirrors maharam-onboard/build-payloads.mjs, but Stout Textiles is a PRICED line (real
- * price_retail per single roll / mural set), so each product carries TWO variants — a
- * sellable "Priced Per Single Roll" variant at price_retail AND a {DW_SKU}-Sample $4.25
- * memo — exactly matching the 6 Wave-1 products already live on the store.
+ * price_retail per DOUBLE ROLL — the vendor prices "Wholesale: $X / DOUBLE ROLL"), so each
+ * product carries TWO variants — a sellable "Double Roll" variant at price_retail AND a
+ * {DW_SKU}-Sample $4.25 memo. unit_of_measure metafield = "Priced Per Double Roll".
*
- * vendor='Stout Textiles' drives the SMART collection `stout-wallcoverings` (rule vendor EQUALS
- * Stout Textiles), so activation alone auto-populates the (currently empty) collection.
+ * vendor='Stout Textiles' auto-populates whichever SMART collection carries the rule
+ * vendor EQUALS 'Stout Textiles'. LIVE STATE (2026-07-26): that is the `stout-wallpaper`
+ * collection; the clean-handle `stout-wallcoverings` currently carries rule vendor='Stout'
+ * (matches nothing) — a consolidation to a single collection is drafted for Steve in
+ * ~/.claude/yolo-queue/pending-approval/ (both collections are empty today, zero-risk).
*
* Eligible pool = NOT discontinued AND price_retail IS NOT NULL AND ≥1 image AND not
* already pushed (shopify_product_id IS NULL). Dedup is by mfr_sku. Every emitted title
diff --git a/scripts/stout-onboard/go-live.mjs b/scripts/stout-onboard/go-live.mjs
index ff69e86..5506553 100644
--- a/scripts/stout-onboard/go-live.mjs
+++ b/scripts/stout-onboard/go-live.mjs
@@ -9,7 +9,10 @@
* (roll + $4.25 sample) so the memo AND the mural are orderable.
* 4. Publish to the 12 DW sales channels — Google & YouTube EXCLUDED (per Steve's rule +
* GMC $4.25-leak protection; the sample variant would otherwise disapprove).
- * 5. status = ACTIVE. vendor='Stout Textiles' → SMART collection `stout-wallcoverings` auto-fills.
+ * 5. status = ACTIVE. vendor='Stout Textiles' auto-fills the SMART collection whose rule is
+ * vendor EQUALS 'Stout Textiles' — LIVE that is `stout-wallpaper` (the clean-handle
+ * `stout-wallcoverings` has rule vendor='Stout' and stays empty until the pending
+ * consolidation lands; see ~/.claude/yolo-queue/pending-approval/).
* 6. PG-first write-back: shopify_product_id + on_shopify on stout_catalog, and flip
* dw_sku_registry → active.
* Idempotent: skips products already ACTIVE or already in golive-done.jsonl.
diff --git a/scripts/stout-onboard/settlement-gate.mjs b/scripts/stout-onboard/settlement-gate.mjs
index de7e7be..2b58744 100644
--- a/scripts/stout-onboard/settlement-gate.mjs
+++ b/scripts/stout-onboard/settlement-gate.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/**
* Wave-2 settlement image-vision gate for Stout Textiles.
- * Runs the settlement post-gen-vision check (Gemini 2.0 Flash) over each payload's
+ * Runs the settlement post-gen-vision check (Gemini 2.5 Flash) over each payload's
* primary image and writes out/settlement-verdicts.jsonl: { sku, verdict, a1..b, reason }.
*
* Binding combinator (settlement-verdict, defendant-favorable, fail-closed):
@@ -10,7 +10,7 @@
* A BLOCK never gets a Shopify row (create-drafts skips it); OK is eligible for go-live.
*
* Idempotent: skips any sku already in settlement-verdicts.jsonl.
- * Metered: ~$0.0006 / image (Gemini 2.0 Flash vision). Cost printed per-batch.
+ * Metered: ~$0.0011 / image (Gemini 2.5 Flash vision, MODEL below). Cost printed per-batch.
*
* node settlement-gate.mjs # DRY: show how many need a verdict
* node settlement-gate.mjs --apply # gate all ungated payloads
← eb3b887 Stroheim onboard: read-only price/coverage canary (auto-resu
·
back to Designerwallcoverings
·
recover wiped scripts/ tree: restore 325 untracked source fi 999aac3 →