← back to Designerwallcoverings

data/tk11552-imminent-rescue-20260923/RESCUE-REPORT-20260923.md

48 lines

# TK-11552 Rescue Report — 2026-09-23 (claude-run-11552)

## Verdict: RESCUED — 6 content-bearing info@ drafts protected before the drain could reach them; 2 stubs left to expire on purpose

## Trigger (verified against the canary's own output, not assumed)

george-aged-draft-canary 2026-09-23T15:20:11Z: **FAIL / IMMINENT_PERMANENT_LOSS**, transition worsening.
- info@ `imminent_permanent_delete_count: 8` — all eight dated 26–28 Aug 2026 (25.9–28.1 days old), **none keep-listed**.
- Drain 11:15Z PASS, deleted 0, `protected_lost_count 0`, `protected_verified true`, purge set = 11 (all exempt).
- Re-ran the deleter's own server-side query (`in:drafts older_than:30d`, account=info): 11 ids, none of the 8 in it yet.
- First deletion would have fired at the **2026-09-26 04:15 PDT** run (Aug 26 draft crosses 30d), then one more each day through 09-28.

## What was done (reversible · no externality · bounded · ledgered)

1. Fetched all 8 bodies READ-ONLY via George `GET /api/messages/:id?account=info` → `<id>.json` here (raw) + `decoded-summary-20260923.json`.
2. Classified by body (see MANIFEST-20260923.tsv): 6 carry live customer/vendor content, 2 are stubs.
3. Added the 6 to `george-gmail/data/drain-keep-list.json` as message-id entries **plus** `[DRAFT-ID PIN]` entries (12 keys, 31 → 43). Commit c06e511.
4. Re-ran `scan.mjs` (no --alert): info imminent **8 → 2** (the two stubs), keep-list exempt **17 → 23**, unresolved unchanged (1).
5. Ledger row in `~/.claude/yolo-queue/executed-reversible/ledger.jsonl` (2026-09-23T18:50:02Z) with undo = restore PRESTATE.

Undo: `cp keep-list-snapshot-20260923-PRESTATE.json ~/Projects/george-gmail/data/drain-keep-list.json`

## The 6 protected (all now Steve's send / rewrite / drop call — appended to the TK-11552 memo)

| id | what | to | purge date if unprotected |
|---|---|---|---|
| 1a0493e3d40fd54b | Marburg Papis Loveday 2 #35883 quote — 7 rolls, $470.58 retail / $400 net, +$115 tariff, ~$65 ship | GC Design Team (gruvercooley.com) | 2026-09-27 |
| 1a04958a7c46e4ca | MADRAS OPAL LB2-4143 — $26.25 retail / $22.30 net per yd, stock 375 yd, 4–5 wk | (in-thread body, no To:) | 2026-09-27 |
| 1a0441d7e857c0c8 | Tweed fabric $104/lin yd budgetary, 8–12 wk lead | (in-thread body, no To:) | 2026-09-26 |
| 1a0441a7ab4859a0 | 7-pattern production notes: ticket #s + DIMS + MATCH | (standalone note) | 2026-09-26 |
| 1a03e31edd9e00f7 | "Will do" reply + 1 attachment re Lincrusta sample request | federico.contigiani@lincrusta.com | 2026-09-25 |
| 1a0457a6f800515c | OVERNIGHT shipping estimate ask, unfinished mid-sentence | Koroseal customerservice@ + areynoso@ | 2026-09-26 |

## Deliberately left to expire (backed up here, nothing lost)

- 1a04027f6fba4ab2 — footer-only body, no To:, no subject (in-thread). Expires ~2026-09-26.
- 1a0490e21b668171 — body is the single SKU code `0522G3401`. Expires ~2026-09-28.

Policy source: the memo's own "Deliberately left to expire" section and the 2026-09-17 rescue report. Note the 2026-09-18 pass keep-listed four footer-only stubs (1a035d2cdc9deaa6, 1a039ebd08670675, 1a039b18b3e5dfd5, 1a03aafa58766de8) — that is inconsistent with this policy; left untouched, it's Steve's list.

**Proceeded on the assumed answer: protect content-bearing, let stubs expire — reverse if wrong** (add the 2 stub ids to the keep-list, or remove the 6).

## Still open — Steve-only, unchanged

- The 11 original + 6 new info@ drafts: send / rewrite-and-send / drop. Sending is a customer email → hard-gated, never agent-fired.
- Stale keep-list entry 1a06db2978dd029e (Innovations price-list ask; trashed 2026-09-12 per TRASHED-*.json in the w23 backup) — remove or leave.
- The class recurs every time drafts age past 23 days; the canary re-nags every 12h. A standing "auto-backup + auto-keep-list content-bearing imminent drafts" job would close the recurrence but is a policy change Steve should rule on (it would make the info@ drain effectively never purge real content).