← back to Wallco Ai
seam-wave: retire 54076+54266 (glassware-dominant, unrescuable) — exclude list auto-subtracted + animal-forward pre-filter documented
1dc9a01b38d81439eb2536ed28c5dc061d30cf93 · 2026-06-11 18:37:23 -0700 · Steve Abrams
Files touched
M SEAM-WAVE-RUNBOOK.mdA data/seam-wave-exclude.txtM scripts/seam-wave.sh
Diff
commit 1dc9a01b38d81439eb2536ed28c5dc061d30cf93
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jun 11 18:37:23 2026 -0700
seam-wave: retire 54076+54266 (glassware-dominant, unrescuable) — exclude list auto-subtracted + animal-forward pre-filter documented
---
SEAM-WAVE-RUNBOOK.md | 9 +++++++++
data/seam-wave-exclude.txt | 12 ++++++++++++
scripts/seam-wave.sh | 16 ++++++++++++++--
3 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/SEAM-WAVE-RUNBOOK.md b/SEAM-WAVE-RUNBOOK.md
index 0f8e1d7..0a2a7ba 100644
--- a/SEAM-WAVE-RUNBOOK.md
+++ b/SEAM-WAVE-RUNBOOK.md
@@ -40,6 +40,15 @@ The 85 roots already in the curator each have a PASS candidate — they're **don
Generate the list from a seam scan of published roots, then write the FAIL ids
(one per line), excluding any root that already has a PASS candidate in
`data/seam-fix-queue.jsonl`:
+
+> **Pre-filter for ANIMAL-FORWARD roots (proven, 2026-06-12).** The
+> ControlNet-anchored pipeline only rescues roots where the animal is the
+> *dominant* structure. Glassware-dominant / animal-minority roots are
+> unrescuable — every clean-seamless roll loses the animal (subject-gate=NO over
+> 24+ attempts on 54076 orangutan + 54266 frog, now retired). When building the
+> manifest, drop roots where the animal isn't the dominant element. Retired roots
+> live in `data/seam-wave-exclude.txt` and `seam-wave.sh` auto-subtracts them, but
+> pre-filtering at manifest-build time saves wasted waves.
```bash
# example — confirm the right scanner + exact output format next session
python3 scripts/edges-batch-scan.py # or fuzzy_seam_scan.py / seam_break_scan.py
diff --git a/data/seam-wave-exclude.txt b/data/seam-wave-exclude.txt
new file mode 100644
index 0000000..08fd18c
--- /dev/null
+++ b/data/seam-wave-exclude.txt
@@ -0,0 +1,12 @@
+# seam-wave-exclude.txt — roots RETIRED from the seam-fix redo set.
+# scripts/seam-wave.sh subtracts these from the manifest before every wave.
+# One root id per line; '#'-comments and blanks ignored.
+#
+# WHY these are here: the ControlNet-anchored pipeline can only rescue roots
+# where the ANIMAL is the dominant structure. These roots are glassware-dominant
+# / animal-minority — the canny anchor locks onto the glassware, so every
+# clean-seamless roll loses the animal (subject-gate=NO across 24+ attempts).
+# Steve retired them 2026-06-12. See SEAM-WAVE-RUNBOOK.md "Build the manifest".
+
+54076 # orangutan — wine-glass-dominant; best roll PASS-seamless but no animal
+54266 # tree frog — champagne-coupe-dominant; best roll PASS-seamless but no animal
diff --git a/scripts/seam-wave.sh b/scripts/seam-wave.sh
index 96972c7..a598691 100755
--- a/scripts/seam-wave.sh
+++ b/scripts/seam-wave.sh
@@ -33,6 +33,7 @@ cd "$(dirname "$0")/.."
WAVE_SIZE="${WAVE_SIZE:-20}"
GEN="${SEAM_GENERATOR:-scripts/controlnet-anchored-redo.py}"
MANIFEST="data/seam-wave-roots.txt" # one root id per line; '#'-comments ok
+EXCLUDE="data/seam-wave-exclude.txt" # retired roots — subtracted from manifest
STATE="data/seam-wave-state.json" # {"nextIndex":N} — how far we've gotten
LEDGER="data/seam-wave-ledger.jsonl" # append-only audit of every wave
FLAG="data/seam-sample-approved.flag" # you create this after curating the sample
@@ -45,9 +46,19 @@ read_roots() {
[ -f "$MANIFEST" ] || return 0
grep -vE '^\s*(#|$)' "$MANIFEST" | tr -d ' \t' || true
}
+# retired roots to subtract (glassware-dominant / unrescuable — see exclude file)
+declare -A EXCL=()
+if [ -f "$EXCLUDE" ]; then
+ while IFS= read -r e; do [ -n "$e" ] && EXCL["$e"]=1; done < <(grep -vE '^\s*(#|$)' "$EXCLUDE" | sed 's/[[:space:]]*#.*//' | tr -d ' \t')
+fi
ALL_ROOTS=()
-while IFS= read -r r; do [ -n "$r" ] && ALL_ROOTS+=("$r"); done < <(read_roots)
+while IFS= read -r r; do
+ [ -z "$r" ] && continue
+ [ -n "${EXCL[$r]:-}" ] && continue # skip retired roots
+ ALL_ROOTS+=("$r")
+done < <(read_roots)
TOTAL="${#ALL_ROOTS[@]}"
+EXCL_N="${#EXCL[@]}"
NEXT=0
[ -f "$STATE" ] && NEXT="$(node -e 'try{process.stdout.write(String((require("./'"$STATE"'").nextIndex)||0))}catch(e){process.stdout.write("0")}' 2>/dev/null || echo 0)"
@@ -58,7 +69,8 @@ if [ "$MODE" = "--status" ]; then
echo "seam-wave status"
echo " generator : $GEN"
echo " wave size : $WAVE_SIZE"
- echo " manifest : $MANIFEST ($TOTAL roots)"
+ echo " manifest : $MANIFEST ($TOTAL roots after exclude)"
+ echo " retired : $EXCL_N roots excluded ($EXCLUDE)"
echo " done so far : $NEXT"
echo " remaining : $REMAINING"
echo " waves left : $(( (REMAINING + WAVE_SIZE - 1) / WAVE_SIZE ))"
← 46f0778 TODO: reroll-2 STOP/REPORT — 54076+54266 structurally unreco
·
back to Wallco Ai
·
seam-wave: bash-3.2 compat — replace declare -A (unsupported d08b86e →