← back to Pattern Vault
wpb-uploaders/STATUS.md
28 lines
# WPB Uploaders — build status (2026-07-09)
Honest state of each platform. NONE is armed. Real uploads flow only after the per-platform
blocker clears AND Steve arms it (`touch platforms/<key>.ARMED`).
| Platform | Code state | Exact blocker to arming | Type |
|----------|-----------|--------------------------|------|
| **Spoonflower** (Fernwick) | ✅ **WORKS — PROVEN** (real design id 22723313 landed) | NONE for the upload itself. Fix chain: filechooser registers the file → a late "Agree & Continue" consent gate (appears AFTER staging) is dismissed → fail-loud id capture. The armed daily cron will now upload for real. Remaining: for-sale flip still OFF (payout/tax gated). | web (armed) |
| **Etsy** (SteveAbramsStudios) | `createDraftListing` payload mapping ✓ (38 built, `--dry-run` proves it) | **(1) ETSY_OAUTH_TOKEN** (Steve-gated OAuth for the shop); **(2) taxonomy_id unresolved** (`plan.taxonomyIdResolved` is null — resolve via getSellerTaxonomyNodes once authed) | API |
| **Creative Market** | disarmed stub (navigates to upload URL, fail-loud) | **Session capture** — need Steve to log in once → `sessions/creativemarket-state.json`; then live DOM calibration | web |
| **Redbubble** | disarmed stub, fail-loud | **Session capture** + calibration; **AI-hostile** → anti-bot cadence critical (ban risk) | web |
| **Society6** | disarmed stub, fail-loud | **Account still PENDING confirmation** — cannot even session-capture yet | web |
| **Patternbank** | disarmed stub, fail-loud | **Account still PENDING confirmation** — cannot even session-capture yet | web |
## Calibration artifact
- Spoonflower design **22723313** ("…fix-test PRIVATE") is a REAL private design created to prove the
fix. It's a real generated pattern with a test title — Steve can delete it or keep it; it's PRIVATE.
## What's autonomously reversible from here
- Spoonflower: DONE — upload works; the armed cron now lands real ids. (Was: "needs headed session".)
- Etsy: once Steve provides OAuth, wire the real `fetch` POST behind the token check + resolve taxonomy — the mapping is done.
- CM/Redbubble: once Steve captures a session, calibrate each `uploadFn` against the live DOM.
- Society6/Patternbank: blocked on account confirmation — nothing to do until then.
## Standing safeguards (never loosened)
Fail-loud (real id or `failed[]`), ≤4/day cap, human-typed fields, dry-run-unless-`.ARMED`,
for-sale stays OFF until payout/tax per platform. Arming is drafted to `~/.claude/yolo-queue/pending-approval/`.