← back to Wallco Ai
backfill-rooms: skip re-composite when room PNG already on disk → fast $0 re-link (heals deploy-reverted room_mockups + makes nightly cron cheaper)
fc5c3d3a1429c6a3ca1eb2aa19d406f8a6bdfa1b · 2026-06-03 15:13:11 -0700 · Steve Abrams
Files touched
M scripts/backfill-rooms.py
Diff
commit fc5c3d3a1429c6a3ca1eb2aa19d406f8a6bdfa1b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jun 3 15:13:11 2026 -0700
backfill-rooms: skip re-composite when room PNG already on disk → fast $0 re-link (heals deploy-reverted room_mockups + makes nightly cron cheaper)
---
scripts/backfill-rooms.py | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/scripts/backfill-rooms.py b/scripts/backfill-rooms.py
index 2abc23b..6839a04 100644
--- a/scripts/backfill-rooms.py
+++ b/scripts/backfill-rooms.py
@@ -54,15 +54,25 @@ def main():
return
done = 0
+ relinked = 0
for r in todo[:args.limit]:
rid = r.get('id')
try:
- prc.composite_one(rid) # writes data/rooms/design_<id>_living_room.png
- r['room_mockups'] = ['living_room'] # patch the in-memory row
- done += 1
- print(f' #{rid} rendered')
+ room_png = ROOT / 'data' / 'rooms' / f'design_{rid}_living_room.png'
+ if room_png.exists():
+ # PNG already rendered (e.g. a prior run, or a deploy reverted only
+ # the designs.json field) — just re-link it. $0, instant, no re-render.
+ r['room_mockups'] = ['living_room']
+ done += 1; relinked += 1
+ else:
+ prc.composite_one(rid) # writes data/rooms/design_<id>_living_room.png
+ r['room_mockups'] = ['living_room'] # patch the in-memory row
+ done += 1
+ print(f' #{rid} rendered')
except Exception as e:
print(f' #{rid} FAIL {e}')
+ if relinked:
+ print(f' ({relinked} re-linked from existing PNG, no re-render)')
if done:
json.dump(d, open(DESIGNS_JSON, 'w'))
print(f'patched designs.json: {done} rows now have room_mockups')
← ab10041 docs: mural-pipeline.md — Replicate gotchas playbook + revie
·
back to Wallco Ai
·
YOLO ledger: T2 re-link 2845 rooms (31%→99%) + root-cause (d 13396d1 →