← back to Discontinued Fix

README.md

24 lines

# Discontinued-but-sellable fix (PREP — nothing live)

23 products are tagged `Discontinued-2026-04` yet still ACTIVE with a purchasable roll variant
(`inventory_policy=continue` → a customer can order the unfulfillable). Built 2026-08-01.

## Work-list (`data/worklist.json`) — all 23 live-verified ACTIVE (23/23)
- Jeffrey Stevens 11, Ronald Redding 7, LA Walls 4, Thibaut 1 (a `-SAMPLE` edge, lower risk).

## Fix
- `fix.py` — sets each product `status -> draft` (default) or `archived` (`--archive`). DRAFT hides it
  from the storefront (no purchase possible), keeps the product + sample variant intact, instantly
  reversible. Writes `data/restore-map.json` (num → prev_status=active) BEFORE any write.
- `reverse.py` — restores the batch to active from the restore-map (one-command undo).

## Safety
- DRY-RUN is default. LIVE requires BOTH `--apply` AND `DISC_FIX_CONFIRM=YES`.
- `--canary N` limits to first N. ~0.4s paced.

## Gated — go-live when Steve approves
Recommended: `DISC_FIX_CONFIRM=YES python3 fix.py --apply --canary 5` → verify 5 are off the
storefront → widen to all 23. Undo anytime: `DISC_FIX_CONFIRM=YES python3 reverse.py --apply`.
Root-cause follow-up (separate): make the discontinue flow (discontinued-agent) draft-on-discontinue.
Memo: `~/.claude/yolo-queue/pending-approval/2026-08-01-discontinued-but-still-sellable.md`.