← back to Wallco Ai
curate-monterey-batch: exclude already-built masters + batch-2 manifest (12 new hue-spread Monterey)
3ca5a95744568de6bac395cb93855cca3a239a78 · 2026-06-03 20:32:39 -0700 · Steve Abrams
Files touched
A data/mural-batch-monterey-2.jsonM scripts/curate-monterey-batch.py
Diff
commit 3ca5a95744568de6bac395cb93855cca3a239a78
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jun 3 20:32:39 2026 -0700
curate-monterey-batch: exclude already-built masters + batch-2 manifest (12 new hue-spread Monterey)
---
data/mural-batch-monterey-2.json | 93 ++++++++++++++++++++++++++++++++++++++++
scripts/curate-monterey-batch.py | 17 ++++++++
2 files changed, 110 insertions(+)
diff --git a/data/mural-batch-monterey-2.json b/data/mural-batch-monterey-2.json
new file mode 100644
index 0000000..c5ea5c5
--- /dev/null
+++ b/data/mural-batch-monterey-2.json
@@ -0,0 +1,93 @@
+{
+ "category": "monterey-mural",
+ "n": 12,
+ "spec": {
+ "print_ft": 12,
+ "height_ft": 11,
+ "bleed_in": 6,
+ "panels": [
+ 24,
+ 36,
+ 54
+ ]
+ },
+ "selection": "hue-spread across published Monterey (visual range)",
+ "ids": [
+ 20774,
+ 31866,
+ 33427,
+ 14124,
+ 35652,
+ 14302,
+ 12201,
+ 14972,
+ 30823,
+ 27806,
+ 25668,
+ 34576
+ ],
+ "items": [
+ {
+ "id": 20774,
+ "dominant_hex": "#3b251c",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779279406349_1761239685.png"
+ },
+ {
+ "id": 31866,
+ "dominant_hex": "#423328",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779297327224_383564080.png"
+ },
+ {
+ "id": 33427,
+ "dominant_hex": "#c0996a",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779298985600_171913157.png"
+ },
+ {
+ "id": 14124,
+ "dominant_hex": "#d7c39e",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779272594989_1988053788.png"
+ },
+ {
+ "id": 35652,
+ "dominant_hex": "#746c56",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779301271665_1018451784.png"
+ },
+ {
+ "id": 14302,
+ "dominant_hex": "#615f45",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779272775706_1194218692.png"
+ },
+ {
+ "id": 12201,
+ "dominant_hex": "#919e6e",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779270590520_1743878687.png"
+ },
+ {
+ "id": 14972,
+ "dominant_hex": "#8eb99d",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779273463681_1458301185.png"
+ },
+ {
+ "id": 30823,
+ "dominant_hex": "#3c7985",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779296208586_830889448.png"
+ },
+ {
+ "id": 27806,
+ "dominant_hex": "#878f85",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779293051748_84301667.png"
+ },
+ {
+ "id": 25668,
+ "dominant_hex": "#353029",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779290938533_1712523307.png"
+ },
+ {
+ "id": 34576,
+ "dominant_hex": "#29211a",
+ "local_path": "/Users/stevestudio2/Projects/wallco-ai/data/generated/1779300170220_659215985.png"
+ }
+ ],
+ "batch_command": "for id in 20774 31866 33427 14124 35652 14302 12201 14972 30823 27806 25668 34576; do python3 scripts/build-mural-master.py $id; done",
+ "estimate_command": "python3 scripts/build-mural-master.py --estimate 12"
+}
\ No newline at end of file
diff --git a/scripts/curate-monterey-batch.py b/scripts/curate-monterey-batch.py
index 6045d0b..0d470c0 100644
--- a/scripts/curate-monterey-batch.py
+++ b/scripts/curate-monterey-batch.py
@@ -56,6 +56,23 @@ def main():
rows = [r for r in cur.fetchall() if Path(r["local_path"]).exists()]
conn.close()
+ # Exclude designs that ALREADY have a 12x11ft master built (on Henry / the
+ # masters dir) so a "build more" batch never re-builds what's done.
+ built = set()
+ try:
+ mdir = _bt.ROOT / "data" / "mural-masters"
+ henry = Path("/Volumes/Henry/wallco-ai-archive/mural-masters")
+ scan = henry if henry.is_dir() else mdir
+ for d in scan.iterdir():
+ if (d / "summary.json").exists():
+ try: built.add(int(d.name))
+ except ValueError: pass
+ except Exception:
+ pass
+ before = len(rows)
+ rows = [r for r in rows if r["id"] not in built]
+ print(f"excluding {before - len(rows)} already-built masters; {len(rows)} candidates remain")
+
# Spread across the hue wheel: bucket into N hue slots, take the newest
# (already id-DESC) per slot, then fill any short slots from the remainder.
rows.sort(key=lambda r: hue(r["dominant_hex"]))
← 5e97709 Session freeze: compliance actions done locally, prod deploy
·
back to Wallco Ai
·
admin/mural-masters: show in-progress builds as live 'buildi 7513978 →