← back to Pattern Vault
deco-01 v4: chartreuse-anchored regen lands yellow-green ground (v4a/v4b), settlement PASS
e73596c205d554821d2cef842546afcb50b952b6 · 2026-07-02 12:13:45 -0700 · Steve Abrams
Files touched
A assets/generated/BRIEF-2026-deco-01_v4a.pngA assets/generated/BRIEF-2026-deco-01_v4b.pngA assets/generated/_postgen_vision_v4_deco.jsonA assets/generated/_regen_v4_deco_manifest.jsonA scripts/_regen_v4_deco.py
Diff
commit e73596c205d554821d2cef842546afcb50b952b6
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jul 2 12:13:45 2026 -0700
deco-01 v4: chartreuse-anchored regen lands yellow-green ground (v4a/v4b), settlement PASS
---
assets/generated/BRIEF-2026-deco-01_v4a.png | Bin 0 -> 2102939 bytes
assets/generated/BRIEF-2026-deco-01_v4b.png | Bin 0 -> 1565095 bytes
assets/generated/_postgen_vision_v4_deco.json | 32 +++++++++
assets/generated/_regen_v4_deco_manifest.json | 26 +++++++
scripts/_regen_v4_deco.py | 99 ++++++++++++++++++++++++++
5 files changed, 157 insertions(+)
diff --git a/assets/generated/BRIEF-2026-deco-01_v4a.png b/assets/generated/BRIEF-2026-deco-01_v4a.png
new file mode 100644
index 0000000..b94b839
Binary files /dev/null and b/assets/generated/BRIEF-2026-deco-01_v4a.png differ
diff --git a/assets/generated/BRIEF-2026-deco-01_v4b.png b/assets/generated/BRIEF-2026-deco-01_v4b.png
new file mode 100644
index 0000000..d40f7ea
Binary files /dev/null and b/assets/generated/BRIEF-2026-deco-01_v4b.png differ
diff --git a/assets/generated/_postgen_vision_v4_deco.json b/assets/generated/_postgen_vision_v4_deco.json
new file mode 100644
index 0000000..4e6bcb7
--- /dev/null
+++ b/assets/generated/_postgen_vision_v4_deco.json
@@ -0,0 +1,32 @@
+[
+ {
+ "file": "BRIEF-2026-deco-01_v4a.png",
+ "verdict": "PASS",
+ "why": "no Part B prohibited element",
+ "vision": {
+ "birds": false,
+ "butterflies": false,
+ "bananas": false,
+ "grapes": false,
+ "foliage_directional": true,
+ "open_space": false,
+ "multiple_ink_colors": false,
+ "describe": "Repeating green leaf-like motifs in a dense, intricate pattern."
+ }
+ },
+ {
+ "file": "BRIEF-2026-deco-01_v4b.png",
+ "verdict": "PASS",
+ "why": "no Part B prohibited element",
+ "vision": {
+ "birds": false,
+ "butterflies": false,
+ "bananas": false,
+ "grapes": false,
+ "foliage_directional": true,
+ "open_space": false,
+ "multiple_ink_colors": false,
+ "describe": "Repeating geometric floral motifs in a single color."
+ }
+ }
+]
\ No newline at end of file
diff --git a/assets/generated/_regen_v4_deco_manifest.json b/assets/generated/_regen_v4_deco_manifest.json
new file mode 100644
index 0000000..70056bd
--- /dev/null
+++ b/assets/generated/_regen_v4_deco_manifest.json
@@ -0,0 +1,26 @@
+{
+ "results": [
+ {
+ "tag": "BRIEF-2026-deco-01_v4a",
+ "brief": "BRIEF-2026-deco-01",
+ "path": "/Users/stevestudio2/Projects/pattern-vault/assets/generated/BRIEF-2026-deco-01_v4a.png",
+ "status": "ok",
+ "predict_time": 4.32209551,
+ "prompt": "flat solid CHARTREUSE yellow-green background color #B0C000 filling the entire canvas, Art-Deco geometric wallpaper printed on top in thin METALLIC GOLD linework - fan and sunburst arcs, stepped chevrons, concentric semicircles, crisp 1920s Gatsby symmetry, seamless tile, flat vector poster art.",
+ "seed": 505,
+ "guidance_scale": 9.5
+ },
+ {
+ "tag": "BRIEF-2026-deco-01_v4b",
+ "brief": "BRIEF-2026-deco-01",
+ "path": "/Users/stevestudio2/Projects/pattern-vault/assets/generated/BRIEF-2026-deco-01_v4b.png",
+ "status": "ok",
+ "predict_time": 4.514379506,
+ "prompt": "flat solid CHARTREUSE yellow-green background color #B0C000 filling the entire canvas, Art-Deco geometric wallpaper printed on top in thin METALLIC GOLD linework - fan and sunburst arcs, stepped chevrons, concentric semicircles, crisp 1920s Gatsby symmetry, seamless tile, flat vector poster art.",
+ "seed": 606,
+ "guidance_scale": 9.5
+ }
+ ],
+ "total_predict_secs": 8.836475016,
+ "est_cost_usd": 0.0064
+}
\ No newline at end of file
diff --git a/scripts/_regen_v4_deco.py b/scripts/_regen_v4_deco.py
new file mode 100644
index 0000000..f47d879
--- /dev/null
+++ b/scripts/_regen_v4_deco.py
@@ -0,0 +1,99 @@
+#!/usr/bin/env python3
+"""Targeted _v4 regen for ONE brief (deco-01) to finally land a CHARTREUSE ground.
+Prior v1/v2/v3 rendered dark olive/near-black. Reuses gen_briefs.py machinery
+(same Replicate SDXL model, poll loop, cost accounting) with a color-anchored prompt
+that front-loads the flat ground color HARD + strong dark-background negatives +
+guidance_scale bumped to 9.5 so the color prompt binds harder.
+NEVER overwrites v1/v2/v3. Curator-mode, is_published untouched (no publish here)."""
+import os, re, json, time, urllib.request, urllib.error
+
+ROOT = "/Users/stevestudio2/Projects/pattern-vault"
+OUT = f"{ROOT}/assets/generated"
+os.makedirs(OUT, exist_ok=True)
+
+tok = None
+with open(os.path.expanduser("~/Projects/secrets-manager/.env")) as f:
+ m = re.search(r"REPLICATE_API_TOKEN=([A-Za-z0-9_-]+)", f.read())
+ if m: tok = m.group(1)
+assert tok, "no replicate token"
+
+# Color-anchored prompt: front-load the flat ground color HARD (verbatim from task).
+JOBS = {
+ "BRIEF-2026-deco-01": {
+ "prompt": ("flat solid CHARTREUSE yellow-green background color #B0C000 filling the entire canvas, "
+ "Art-Deco geometric wallpaper printed on top in thin METALLIC GOLD linework - "
+ "fan and sunburst arcs, stepped chevrons, concentric semicircles, crisp 1920s Gatsby symmetry, "
+ "seamless tile, flat vector poster art."),
+ "negative": ("black background, dark background, navy, charcoal, palm, fronds, leaves, botanical, "
+ "flowers, birds, animals, photorealistic, gradient background"),
+ "w": 1024, "h": 1024,
+ },
+}
+
+UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
+def post(url, payload):
+ hdr = {"Authorization": f"Bearer {tok}", "Content-Type": "application/json", "User-Agent": UA}
+ req = urllib.request.Request(url, data=json.dumps(payload).encode(), headers=hdr, method="POST")
+ with urllib.request.urlopen(req, timeout=120) as r:
+ return json.load(r)
+
+def get(url):
+ req = urllib.request.Request(url, headers={"Authorization": f"Bearer {tok}", "User-Agent": UA})
+ with urllib.request.urlopen(req, timeout=60) as r:
+ return json.load(r)
+
+MODEL = "stability-ai/sdxl"
+VERSION = get(f"https://api.replicate.com/v1/models/{MODEL}")["latest_version"]["id"]
+print(f"using {MODEL}@{VERSION[:12]}", flush=True)
+
+results = []
+total_secs = 0.0
+
+# Exactly 2 variants, tagged _v4a/_v4b. Fresh seeds 505/606. guidance_scale 9.5.
+VARIANTS = [("v4a", 505), ("v4b", 606)]
+for bid, spec in JOBS.items():
+ for vlabel, seed in VARIANTS:
+ tag = f"{bid}_{vlabel}"
+ payload = {"version": VERSION, "input": {
+ "prompt": spec["prompt"], "negative_prompt": spec["negative"],
+ "width": spec["w"], "height": spec["h"], "num_inference_steps": 30,
+ "guidance_scale": 9.5, "seed": seed, "refine": "no_refiner"
+ }}
+ ok = False
+ for attempt in range(4):
+ try:
+ pred = post("https://api.replicate.com/v1/predictions", payload); ok = True; break
+ except urllib.error.HTTPError as e:
+ body = e.read().decode()[:150]
+ if e.code == 429:
+ print(f"[{tag}] 429 throttled, backoff {6*(attempt+1)}s", flush=True)
+ time.sleep(6*(attempt+1)); continue
+ print(f"[{tag}] HTTP {e.code}: {body}", flush=True); break
+ if not ok:
+ results.append({"tag": tag, "status": "error"}); continue
+ for _ in range(60):
+ if pred.get("status") in ("succeeded", "failed", "canceled"): break
+ time.sleep(2); pred = get(pred["urls"]["get"])
+ st = pred.get("status")
+ secs = (pred.get("metrics") or {}).get("predict_time", 0) or 0
+ total_secs += secs
+ if st == "succeeded":
+ out = pred["output"]
+ imgurl = out[0] if isinstance(out, list) else out
+ dest = f"{OUT}/{tag}.png"
+ urllib.request.urlretrieve(imgurl, dest)
+ sz = os.path.getsize(dest)
+ print(f"[{tag}] OK {secs:.1f}s -> {dest} ({sz//1024}KB)", flush=True)
+ results.append({"tag": tag, "brief": bid, "path": dest, "status": "ok",
+ "predict_time": secs, "prompt": spec["prompt"], "seed": seed,
+ "guidance_scale": 9.5})
+ else:
+ print(f"[{tag}] {st}: {pred.get('error')}", flush=True)
+ results.append({"tag": tag, "brief": bid, "status": st})
+ time.sleep(1.5)
+
+RATE = 0.000725
+cost = total_secs * RATE
+print(f"\n=== TOTAL predict_time {total_secs:.1f}s est cost ${cost:.4f} (rate ${RATE}/s A40) ===", flush=True)
+json.dump({"results": results, "total_predict_secs": total_secs, "est_cost_usd": round(cost, 4)},
+ open(f"{OUT}/_regen_v4_deco_manifest.json", "w"), indent=2)
← 58fe9d9 regen v3: texture-01 grasscloth fixed (lane hit) + added to
·
back to Pattern Vault
·
deco-01 v4: chartreuse ground achieved (RGB ~174,205,37), se 50fa4f0 →