[object Object]

← back to Hollywood Import

auto-save: 2026-07-08T16:06:38 (3 files) — hollywood-create-audit.jsonl hollywood-add-yard-audit.jsonl hollywood-create-resume.sh.pre-acoustic.bak

87b0b6a713e7b3040c1032669bf2f8896c3f4cf3 · 2026-07-08 16:06:39 -0700 · Steve Abrams

Files touched

Diff

commit 87b0b6a713e7b3040c1032669bf2f8896c3f4cf3
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 8 16:06:39 2026 -0700

    auto-save: 2026-07-08T16:06:38 (3 files) — hollywood-create-audit.jsonl hollywood-add-yard-audit.jsonl hollywood-create-resume.sh.pre-acoustic.bak
---
 hollywood-add-yard-audit.jsonl              | 40 +++++++++++++++
 hollywood-create-audit.jsonl                | 40 +++++++++++++++
 hollywood-create-resume.sh.pre-acoustic.bak | 80 +++++++++++++++++++++++++++++
 3 files changed, 160 insertions(+)

diff --git a/hollywood-add-yard-audit.jsonl b/hollywood-add-yard-audit.jsonl
new file mode 100644
index 0000000..c5dfa97
--- /dev/null
+++ b/hollywood-add-yard-audit.jsonl
@@ -0,0 +1,40 @@
+{"pid":"1497182666864","dw":"XP3-68067","action":"ADDED","yardSku":"XP3-68067-Yard","price":"50.39","healedSample":false}
+{"pid":"1497182830704","dw":"XP3-68069","action":"ADDED","yardSku":"XP3-68069-Yard","price":"50.39","healedSample":false}
+{"pid":"1497182961776","dw":"XP3-68070","action":"ADDED","yardSku":"XP3-68070-Yard","price":"50.39","healedSample":false}
+{"pid":"1497183060080","dw":"XP3-68071","action":"ADDED","yardSku":"XP3-68071-Yard","price":"50.39","healedSample":false}
+{"pid":"1497183223920","dw":"XP3-68072","action":"ADDED","yardSku":"XP3-68072-Yard","price":"50.39","healedSample":false}
+{"pid":"1497183387760","dw":"XP3-68073","action":"ADDED","yardSku":"XP3-68073-Yard","price":"50.39","healedSample":false}
+{"pid":"1497183551600","dw":"XP3-68074","action":"ADDED","yardSku":"XP3-68074-Yard","price":"50.39","healedSample":false}
+{"pid":"1497183682672","dw":"XP3-68075","action":"ADDED","yardSku":"XP3-68075-Yard","price":"50.39","healedSample":false}
+{"pid":"1497183748208","dw":"XP3-68076","action":"ADDED","yardSku":"XP3-68076-Yard","price":"50.39","healedSample":false}
+{"pid":"1497184043120","dw":"XP4-68080","action":"ADDED","yardSku":"XP4-68080-Yard","price":"52.71","healedSample":false}
+{"pid":"1497184174192","dw":"XP4-68081","action":"ADDED","yardSku":"XP4-68081-Yard","price":"52.71","healedSample":false}
+{"pid":"1497184338032","dw":"XP4-68083","action":"ADDED","yardSku":"XP4-68083-Yard","price":"52.71","healedSample":false}
+{"pid":"1497184501872","dw":"XP4-68084","action":"ADDED","yardSku":"XP4-68084-Yard","price":"52.71","healedSample":false}
+{"pid":"1497184698480","dw":"XP4-68085","action":"ADDED","yardSku":"XP4-68085-Yard","price":"52.71","healedSample":false}
+{"pid":"1497937150064","dw":"XWA-73265","action":"ADDED","yardSku":"XWA-73265-Yard","price":"61.90","healedSample":false}
+{"pid":"1497937379440","dw":"XWA-73266","action":"ADDED","yardSku":"XWA-73266-Yard","price":"61.90","healedSample":false}
+{"pid":"1497937510512","dw":"XWA-73267","action":"ADDED","yardSku":"XWA-73267-Yard","price":"61.90","healedSample":false}
+{"pid":"1497937707120","dw":"XWA-73268","action":"ADDED","yardSku":"XWA-73268-Yard","price":"61.90","healedSample":false}
+{"pid":"1497937903728","dw":"XWA-73269","action":"ADDED","yardSku":"XWA-73269-Yard","price":"61.90","healedSample":false}
+{"pid":"1497938002032","dw":"XWA-73270","action":"ADDED","yardSku":"XWA-73270-Yard","price":"61.90","healedSample":false}
+{"pid":"1497938133104","dw":"XWA-73271","action":"ADDED","yardSku":"XWA-73271-Yard","price":"61.90","healedSample":false}
+{"pid":"1497938428016","dw":"XWA-73272","action":"ADDED","yardSku":"XWA-73272-Yard","price":"61.90","healedSample":false}
+{"pid":"1497938591856","dw":"XWA-73273","action":"ADDED","yardSku":"XWA-73273-Yard","price":"61.90","healedSample":false}
+{"pid":"1497938722928","dw":"XWA-73274","action":"ADDED","yardSku":"XWA-73274-Yard","price":"61.90","healedSample":false}
+{"pid":"1497938854000","dw":"XWA-73275","action":"ADDED","yardSku":"XWA-73275-Yard","price":"61.90","healedSample":false}
+{"pid":"1497939083376","dw":"XWA-73276","action":"ADDED","yardSku":"XWA-73276-Yard","price":"61.90","healedSample":false}
+{"pid":"1498845118576","dw":"XJA-47017","action":"ADDED","yardSku":"XJA-47017-Yard","price":"51.04","healedSample":false}
+{"pid":"1498907836528","dw":"XJU-47288","action":"ADDED","yardSku":"XJU-47288-Yard","price":"48.29","healedSample":false}
+{"pid":"1498908033136","dw":"XJU-47289","action":"ADDED","yardSku":"XJU-47289-Yard","price":"48.29","healedSample":false}
+{"pid":"1498908262512","dw":"XJU-47290","action":"ADDED","yardSku":"XJU-47290-Yard","price":"48.29","healedSample":false}
+{"pid":"1498912784496","dw":"XJU-47291","action":"ADDED","yardSku":"XJU-47291-Yard","price":"48.29","healedSample":false}
+{"pid":"1498912981104","dw":"XJU-47292","action":"ADDED","yardSku":"XJU-47292-Yard","price":"48.29","healedSample":false}
+{"pid":"1498913341552","dw":"XJU-47293","action":"ADDED","yardSku":"XJU-47293-Yard","price":"48.29","healedSample":false}
+{"pid":"1498913505392","dw":"XJU-47294","action":"ADDED","yardSku":"XJU-47294-Yard","price":"48.29","healedSample":false}
+{"pid":"1498913669232","dw":"XJU-47295","action":"ADDED","yardSku":"XJU-47295-Yard","price":"48.29","healedSample":false}
+{"pid":"1498913833072","dw":"XJU-47296","action":"ADDED","yardSku":"XJU-47296-Yard","price":"48.29","healedSample":false}
+{"pid":"1498913964144","dw":"XJU-47297","action":"ADDED","yardSku":"XJU-47297-Yard","price":"48.29","healedSample":false}
+{"pid":"1498914226288","dw":"XJU-47298","action":"ADDED","yardSku":"XJU-47298-Yard","price":"48.29","healedSample":false}
+{"pid":"1498914488432","dw":"XJU-47299","action":"ADDED","yardSku":"XJU-47299-Yard","price":"48.29","healedSample":false}
+{"pid":"1498914586736","dw":"XJU-47300","action":"ADDED","yardSku":"XJU-47300-Yard","price":"48.29","healedSample":false}
diff --git a/hollywood-create-audit.jsonl b/hollywood-create-audit.jsonl
index d52da0e..07d2f23 100644
--- a/hollywood-create-audit.jsonl
+++ b/hollywood-create-audit.jsonl
@@ -4,3 +4,43 @@
 {"dw":"DWHD-503629","action":"CAP_ABORT","created":0}
 {"dw":"DWHD-503629","action":"CAP_ABORT","created":0}
 {"dw":"DWHD-503629","action":"CAP_ABORT","created":0}
+{"dw":"DWHD-503629","pid":7879454916659,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-503629","price":"65.16","opt":"Sold Per Yard"},{"sku":"DWHD-503629-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-500573","pid":7879454949427,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-500573","price":"60.16","opt":"Sold Per Yard"},{"sku":"DWHD-500573-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-502669","pid":7879454982195,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-502669","price":"16.58","opt":"Sold Per Yard"},{"sku":"DWHD-502669-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-500861","pid":7879455014963,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-500861","price":"62.77","opt":"Sold Per Yard"},{"sku":"DWHD-500861-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-506633","pid":7879455047731,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-506633","price":"48.29","opt":"Sold Per Yard"},{"sku":"DWHD-506633-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-507816","pid":7879455080499,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-507816","price":"80.36","opt":"Sold Per Yard"},{"sku":"DWHD-507816-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-506634","pid":7879455178803,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-506634","price":"48.29","opt":"Sold Per Yard"},{"sku":"DWHD-506634-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-501419","pid":7879455309875,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-501419","price":"61.90","opt":"Sold Per Yard"},{"sku":"DWHD-501419-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-507362","pid":7879455440947,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-507362","price":"47.78","opt":"Sold Per Yard"},{"sku":"DWHD-507362-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-500065","pid":7879455572019,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-500065","price":"51.04","opt":"Sold Per Yard"},{"sku":"DWHD-500065-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-507176","pid":7879455670323,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-507176","price":"53.21","opt":"Sold Per Yard"},{"sku":"DWHD-507176-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-504801","pid":7879455703091,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-504801","price":"68.56","opt":"Sold Per Yard"},{"sku":"DWHD-504801-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-505882","pid":7879455735859,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-505882","price":"54.01","opt":"Sold Per Yard"},{"sku":"DWHD-505882-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-502664","pid":7879455768627,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-502664","price":"16.58","opt":"Sold Per Yard"},{"sku":"DWHD-502664-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-503294","pid":7879455801395,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-503294","price":"58.93","opt":"Sold Per Yard"},{"sku":"DWHD-503294-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-507336","pid":7879455834163,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-507336","price":"44.16","opt":"Sold Per Yard"},{"sku":"DWHD-507336-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-502350","pid":7879455866931,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-502350","price":"45.03","opt":"Sold Per Yard"},{"sku":"DWHD-502350-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-507327","pid":7879455899699,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-507327","price":"44.16","opt":"Sold Per Yard"},{"sku":"DWHD-507327-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-500195","pid":7879455965235,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-500195","price":"67.40","opt":"Sold Per Yard"},{"sku":"DWHD-500195-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-504168","pid":7879455998003,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-504168","price":"58.93","opt":"Sold Per Yard"},{"sku":"DWHD-504168-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508083","pid":7879456096307,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508083","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508083-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508084","pid":7879456129075,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508084","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508084-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508085","pid":7879456161843,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508085","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508085-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508086","pid":7879456194611,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508086","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508086-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508087","pid":7879456227379,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508087","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508087-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508088","pid":7879456292915,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508088","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508088-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508089","pid":7879456325683,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508089","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508089-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508090","pid":7879456358451,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508090","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508090-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508091","pid":7879456391219,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508091","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508091-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508092","pid":7879456423987,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508092","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508092-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508093","pid":7879456456755,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508093","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508093-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508094","pid":7879456489523,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508094","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508094-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508095","pid":7879456522291,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508095","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508095-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508096","pid":7879456555059,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508096","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508096-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508097","pid":7879456587827,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508097","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508097-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508098","pid":7879456620595,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508098","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508098-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508099","pid":7879456653363,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508099","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508099-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508100","pid":7879456686131,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508100","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508100-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508101","pid":7879456784435,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508101","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508101-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
+{"dw":"DWHD-508102","pid":7879456882739,"action":"CREATED","status":"ACTIVE","variants":[{"sku":"DWHD-508102","price":"1824.43","opt":"Sold Per Box"},{"sku":"DWHD-508102-Sample","price":"4.25","opt":"Sample"}],"sampleOk":true,"varCount":2}
diff --git a/hollywood-create-resume.sh.pre-acoustic.bak b/hollywood-create-resume.sh.pre-acoustic.bak
new file mode 100755
index 0000000..58a9a42
--- /dev/null
+++ b/hollywood-create-resume.sh.pre-acoustic.bak
@@ -0,0 +1,80 @@
+#!/bin/zsh
+# hollywood-create-resume.sh — daily drip for creating the genuinely-absent Hollywood
+# products under Shopify's daily variant-creation cap. Idempotent (skips already-CREATED via
+# audit) and cap-aware (the node runner exits 3 when the daily cap is hit, resuming next run).
+# Install is Steve-gated. Mirrors the sample-split-resume / schu-build-resume pattern.
+# launchd minimal-PATH fix (node/budget.cjs need /usr/local/bin) — mirrors run-cadence-hourly.sh.
+export PATH="/usr/local/bin:/opt/homebrew/bin:/opt/homebrew/opt/postgresql@14/bin:$PATH"
+cd "$HOME/Projects/hollywood-import" || exit 1
+ts="$(date '+%Y-%m-%d %H:%M %Z')"
+echo "=== $ts drip start ===" >> hollywood-create.log
+
+# Shared kill-switch (2026-06-19): this job previously ignored it entirely.
+[ -f "$HOME/.dw-fixer-stop" ] && { echo "=== $ts kill-switch present — skip ===" >> hollywood-create.log; exit 0; }
+
+# Shared variant-budget gate (2026-06-19): draw from the live 'upload' pool (== global ~864/day
+# Shopify ceiling minus osborne) so Hollywood's create can't collectively blow the daily variant
+# cap. take returns min(req, upload-remaining, global-remaining); 0 grant = no budget → exit clean.
+# Grant (variants) → product limit (2 variants/product: Roll + Sample); --limit caps phase-1 creates.
+BUDGET="$HOME/Projects/designerwallcoverings/scripts/variant-budget/budget.cjs"
+HW_VARS=$(node "$BUDGET" take upload 40 2>/dev/null || echo 40)
+HW_PRODUCTS=$(( HW_VARS / 2 ))
+if [ "${HW_PRODUCTS:-0}" -lt 1 ]; then
+  echo "=== $ts no variant budget this run (grant=$HW_VARS) — exit clean ===" >> hollywood-create.log
+  exit 0
+fi
+echo "=== $ts budget grant=$HW_VARS variants → create up to $HW_PRODUCTS products ===" >> hollywood-create.log
+# Phase 1: create the absent products (cap-aborts exit 3 → resume tomorrow), capped at the grant.
+HW_P1_OUT=$(/usr/bin/env node hollywood-create.mjs --apply --limit="$HW_PRODUCTS" 2>&1)
+p1=$?
+echo "$HW_P1_OUT" >> hollywood-create.log
+echo "=== $ts phase1 (create) exit $p1 ===" >> hollywood-create.log
+
+# ── refund the unused phase-1 upload grant (budget-integrity, 2026-06-20; DTD verdict A) ──
+# We took HW_VARS variants UP FRONT to size --limit, but hollywood-create.mjs consumes 2 variants
+# (Roll + Sample) per product actually CREATED. It prints 'DONE: created=N' on clean exit and
+# 'CAP-ABORT: created=N this run' on the exit-3 cap, so N is reliable either way; a 429/cap slot
+# creates 0 (refund whole grant), a partial slot fewer. GUARD: refund ONLY when one of those count
+# lines was found (HW_P1_CREATED non-empty) — a crash with no summary keeps its debit (conservative).
+HW_P1_CREATED=$(printf '%s' "$HW_P1_OUT" | grep -oE '(created=[0-9]+|CAP-ABORT: created=[0-9]+)' | grep -oE '[0-9]+' | tail -1)
+if [ -n "$HW_P1_CREATED" ]; then
+  HW_P1_USED=$(( HW_P1_CREATED * 2 ))
+  HW_P1_REFUND=$(( HW_VARS - HW_P1_USED ))
+  if [ "$HW_P1_REFUND" -gt 0 ]; then
+    HW_P1_GOT=$(node "$BUDGET" refund upload "$HW_P1_REFUND" 2>/dev/null || echo 0)
+    echo "=== $ts phase1 budget refund: grant=$HW_VARS used=$HW_P1_USED (created $HW_P1_CREATED×2) → refunded $HW_P1_GOT upload variants ===" >> hollywood-create.log
+  fi
+fi
+# Phase 2 ONLY after Phase 1 fully done (exit 0) — both share the daily variant cap.
+# 2026-06-19 (budget fix): phase-2 (yard add = 1 variant/product) was previously UNBUDGETED —
+# no --limit, no budget take — so once the create backlog cleared it could add variants ABOVE the
+# recorded grant (bounded only by Shopify's own daily-cap abort, not the ledger). FIX: take a
+# remaining-aware grant from the 'upload' pool and pass it as --limit so phase-2 can never exceed
+# the shared ledger. take returns min(req, upload-remaining, global-remaining); 0 grant → skip.
+if [ "$p1" -eq 0 ]; then
+  P2_VARS=$(node "$BUDGET" take upload 40 2>/dev/null || echo 0)
+  if [ "${P2_VARS:-0}" -lt 1 ]; then
+    echo "=== $ts phase2 (add-yard) skipped — no variant budget (grant=$P2_VARS) ===" >> hollywood-create.log
+  else
+    echo "=== $ts phase2 (add-yard) budget grant=$P2_VARS variants → --limit=$P2_VARS ===" >> hollywood-create.log
+    HW_P2_OUT=$(/usr/bin/env node hollywood-add-yard.mjs --apply --limit="$P2_VARS" 2>&1)
+    echo "$HW_P2_OUT" >> hollywood-create.log
+    echo "=== $ts phase2 (add-yard) exit $? ===" >> hollywood-create.log
+
+    # ── refund the unused phase-2 upload grant (budget-integrity, 2026-06-20; DTD verdict A) ──
+    # We took P2_VARS variants UP FRONT, but hollywood-add-yard.mjs adds only 1 yard variant per
+    # product. It prints 'DONE: added=N' on clean exit and 'CAP-ABORT: added=N this run' on exit 3,
+    # so N is reliable; an empty/cap slot adds 0 (refund whole grant), a partial slot fewer. GUARD:
+    # refund ONLY when one of those count lines was found (HW_P2_ADDED non-empty) — no summary →
+    # keep the debit (conservative; never over-refunds → never over-grants).
+    HW_P2_ADDED=$(printf '%s' "$HW_P2_OUT" | grep -oE '(added=[0-9]+|CAP-ABORT: added=[0-9]+)' | grep -oE '[0-9]+' | tail -1)
+    if [ -n "$HW_P2_ADDED" ]; then
+      HW_P2_REFUND=$(( P2_VARS - HW_P2_ADDED ))   # 1 yard variant per product added
+      if [ "$HW_P2_REFUND" -gt 0 ]; then
+        HW_P2_GOT=$(node "$BUDGET" refund upload "$HW_P2_REFUND" 2>/dev/null || echo 0)
+        echo "=== $ts phase2 budget refund: grant=$P2_VARS used=$HW_P2_ADDED (added×1) → refunded $HW_P2_GOT upload variants ===" >> hollywood-create.log
+      fi
+    fi
+  fi
+fi
+exit 0

← cf62e0b acoustic go-live WIRED into existing capped drip (phase-3, c  ·  back to Hollywood Import  ·  auto-save: 2026-07-09T18:41:42 (2 files) — hollywood-add-yar 6e5f45f →