WIP: Task #126 core handlers deployed — Frank (Chronicler #80)

This commit is contained in:
Claude
2026-04-11 23:05:58 +00:00
parent 388db52d6c
commit 2d7c158c64

View File

@@ -161,3 +161,30 @@ The books are balanced. The tasks are accounted for. The vision for The Forge is
Chronicler #79 — The Reconciler
April 11, 2026
---
## Task #126 Update (Chronicler #80 — Frank, April 11, 2026, 18:05 UTC)
**Status:** Core lifecycle handlers DEPLOYED to Command Center. Branch `task-126-lifecycle-handlers` merged to `main`.
**Key discovery:** Policy correction from Michael — "We Don't Kick People Out." Awakened ($1) is lifetime. Cancellation/payment failure → demote to Awakened. Only chargebacks and refunds → hard ban (both with Trinity appeal process).
**Code changes:**
- `customer.subscription.deleted` now demotes to Awakened via existing `downgradeToAwakened()` function (uses existing `lifetime` status + `is_lifetime=TRUE` — no schema changes, no downstream filter breakage)
- New `charge.refunded` case: hard ban with `appeal_eligible: true` in banned_users.notes
- `invoice.payment_failed` left alone — Stripe retry logic handles it
- Backup preserved: `/opt/arbiter-3.0/src/routes/stripe.js.backup-task126-20260411-180439`
**Verified after deploy:**
- Service active, clean startup
- Discord Role Sync initialized
- Webhook endpoint reachable (HTTP 400 on unsigned, as expected)
**Still needed for full Task #126 completion:**
1. Email notifications (post-launch polish — not a blocker)
2. Reconciliation cron (safety net — not a blocker)
3. **NEW:** Cancellation policy page on firefrostgaming.com (launch-adjacent, legally important)
4. **NEW:** Trinity Appeal procedure doc (can be rough-drafted before launch, refined after)
5. Update project instructions to document Trinity Core SSH access (was documented as unavailable)