diff --git a/Future.md b/Future.md index 6a546024..741d2a65 100644 --- a/Future.md +++ b/Future.md @@ -177,9 +177,12 @@ no `auth.user().onDelete`). Deploy-day learnings + deferred items: stray, then redeploy it. Diagnose with `firebase functions:list` — healthy Firestore triggers show `google.cloud.firestore.document.v1.*`, strays show `https`. (First-ever gen-2 deploy also needs Eventarc service-agent IAM to propagate — the "retry in a few minutes" failures were this.) -- **Node runtime bump — hard deadline 2026-10-30.** Node 20 was deprecated 2026-04-30 and is **decommissioned - 2026-10-30**, after which deploys fail. Bump `functions/package.json` `engines.node` to 22 (verify the gen-1 - `onUserDelete` supports it), build, redeploy. Every deploy currently prints the warning. +- **✅ DONE (2026-07-08) — Node runtime bumped 20 → 22.** All 35 functions redeployed in-place on **nodejs22** + (incl. the gen-1 `onUserDelete` — accepted cleanly); both `backend-ci.yml` node pins bumped to match. Verified: + `functions:list` runtime column, callable cold-boot smoke (UNAUTHENTICATED JSON = our code running), clean logs. + nodejs24 was evaluated and rejected: **2nd-gen only**, and the runtime is codebase-wide (gen-1 `onUserDelete` + blocks it). **Next forced bump:** Node 22 is deprecated 2027-04-30 / decommissioned 2027-10-31 — by then either + nodejs24 supports gen 1, or `onUserDelete` needs migrating off the gen-1 auth trigger first. - **RevenueCat webhook re-enable (when billing is set up).** RevenueCat has no account yet, so the migrated v2 `revenueCatWebhook` is **not deployed** — its export is commented out in `functions/src/index.ts` because `defineSecret('REVENUECAT_SIGNING_KEY')` is validated codebase-wide at deploy (a missing secret fails *every*