Skip to content

Handoff: merge branch campaigns (CreatorTrack Campaigns app)

URL: https://mkdocs.justinsforge.com/memory/handoffs/campaigns-branch-merge-2026-07-06/

Date: 2026-07-06 For: integrator agent (single AI-reconciled merge, WDA doctrine)

Intent (what this branch does)

Adds the read-only Campaigns app: cross-brand Mautic+Resend email analytics. New campaigns.* PG schema (migration 20260706T145955_campaigns_campaigns_schema.sql), ingest jobs + token route (CAMPAIGNS_JOBS_TOKEN, already in ~/.forge-secrets/creatortrack-auth.env), app registration in lib/apps.ts, pages under app/(suite)/campaigns/. 7 commits, 4c55b80..062904e, worktree ~/forge-suite-wt/campaigns, dev slot :3063 / DB ct_campaigns. Everything verified against live Mautic/Resend; full detail + deploy checklist in reference_creatortrack_campaigns_app.

Merge watch-points

  1. lib/apps.ts is the ONLY shared file touched: one entry appended at the APPS array tail (marker-fenced ==== BEGIN campaigns app ====) plus "campaigns" added to OWNER_ONLY_APP_IDS. The email-ops / other branches also append here; reconcile by keeping all entries.
  2. Migration is timestamp-named (no collision) and idempotent; validate on a fresh base clone per doctrine, then apply to live lifeos after merge.
  3. Post-merge deploy: restart creatortrack-prod with CAMPAIGNS_JOBS_TOKEN in env, systemctl enable --now forge-creatortrack-campaigns-sync.timer, then teardown slot (worktree + DROP DATABASE ct_campaigns).

[Claude Code]