Build Log · August 30, 2026

MedinaCHF 2026-2027 Roster Reconciliation & Load

Reconciled two roster CSVs against live production, previewed the load, then loaded 31 new families with real Clerk accounts and patched 17 existing ones — catching and fixing a wrong-org-id mistake and a real webhook bug along the way.

  • MedinaCHF
  • Data Migration
  • Bug Fix
families now in production
49

families now in production

new families created
31

new families created

existing families patched
17

existing families patched

real webhook bug found and fixed
1

real webhook bug found and fixed

Timeline

  1. Start

    Reconciliation Charge received

    Reconcile two roster CSVs against production, preview before running, report gaps after

  2. ~1h

    Concurrency blocker

    Other live session owned main checkout; worktree creation also broken; resolved once the other session wrapped and force-release was confirmed

  3. ~1.5h

    Reconciliation report published

    32 new / 17 existing / 4 items needing Zeb's call, all resolved

  4. ~2h

    First load attempt — wrong org_id

    Guessed org_mchf_placeholder instead of confirming the real org_id; bypassed real Clerk account creation

  5. ~2.25h

    Caught, deleted, redone correctly

    31 wrong-org rows deleted; redo used the real org_id and the real createUser Clerk flow

  6. ~2.5h

    Case-sensitivity webhook bug found

    2 of 31 new Clerk accounts never linked — fixed ilike() in the webhook, linked both stranded accounts

  7. ~3h

    Gap report published, deployed, wrapped

    Final missing-data report shipped; webhook fix deployed to production

What shipped

  • Reconciliation preview report (artifact) — new vs. existing families, field diffs, child diffs, 4 flagged review items

  • One-time load scripts: products/medinaCHF/scripts/_export-current-members.mjs, _load-new-families-corrected.mjs, _delete-wrong-org-families.mjs, _link-stranded-clerk-accounts.mjs

  • Fixed products/medinaCHF/app/api/webhooks/clerk/route.ts — case-insensitive email match (ilike instead of eq) for the user.created webhook

  • Final missing-data gap report (artifact, filterable by gap type) — 20 of 48 real families have at least one gap, mostly missing child birthdays

  • 31 new production families with real Clerk accounts (no invitation emails sent, per instruction), 17 existing families patched (address/phone/spouse diffs + 23 missing children added), 3 confirmed data corrections applied (Knupp Maddie->Madeline rename, Meyer Braden/Bryce birth_year swap fix, Brooks upgraded to exact_date twin-of-Bryce)

“We don't use org id for medinachf. We don't use it. Look at my id.”
— Zeb, redirecting from an abstract org-id discussion to checking real, known-good production data directly
MedinaCHF 2026-2027 Roster Reconciliation & Load — August 30, 2026 · ForgeKit