Skip to content

Handoff: CreatorTrack prod follow-ups (2026-07-03)

URL: https://mkdocs.justinsforge.com/memory/handoffs/creatortrack-prod-followups-2026-07-03/

You are an Opus Remote Control session picking up CreatorTrack follow-ups. Justin drives priorities live.

Context

  • App repo /home/justinwieb/forge-suite (Next 16 + RLS Postgres on CT109 lifeos). main -> dev.creatortrack.ai :3060 (creatortrack-dev) and prod app.creatortrack.ai :3070 (creatortrack-prod). Both systemd units run Node 22 (/home/justinwieb/.nvm/versions/node/v22.22.2/bin).
  • The full 12-app suite + chat + mobile PWA overhaul shipped to PROD tonight. Full session context: creatortrack-suite-build-handoff-2026-07-02 + memory/daily/2026-07-02.md.

Rig (how to work)

  • Isolated slot: ~/forge/scripts/forge_suite_agent_bootstrap.sh <branch> <port> --no-server (worktree ~/forge-suite-wt/<branch>, DB clone ct_<branch>). Worktree dev servers MUST use next dev --webpack (Turbopack panics on the symlinked node_modules).
  • Migrations: python3 ~/forge/scripts/forge_workspace_new_migration.py "<desc>" in the worktree; validate on a fresh creatortrack_dev_base clone (create as postgres, then alter database ... owner to lifeos_admin) before applying to LIVE lifeos.
  • Merge: git merge <branch>, resolve the registration-file unions if any, git rm INTENT.md, npx tsc --noEmit clean, restart creatortrack-dev. Prod: npm run build + sudo systemctl restart creatortrack-prod; verify curl -s -o /dev/null -w "%{http_code}" https://app.creatortrack.ai/login == 200.

PRIORITY 1 (start here): Account-deletion 500

core.auth_delete_user (Auth.js adapter deleteUser) FK-violates: app.nodes.created_by/updated_by (and probably other created_by/updated_by audit FKs across app. / core.) have no ON DELETE rule, so deleting any user who authored content fails (repro: user creates a page -> delete user -> nodes_updated_by_fkey violation). ROOT-CAUSE which FKs are involved (grep the schema + migrations for created_by/updated_by references to core.users), then implement a real strategy via an idempotent migration + adapter fix. Options: reassign authored content to a sentinel "deleted user", or ON DELETE SET NULL on the audit FKs (audit columns can be nullable), or soft-delete the user. Pick one, justify, make it correct before broader multi-user. QA: create a user, author content, delete the account, confirm no FK error and content integrity is sane.

PRIORITY 2: Mobile "+" Quick Note sublabel copy

lib/mobile-tabs.ts QUICK_CREATE: the mobile "+" Quick Note sublabel says "Jot into your Knowledge inbox" but it actually writes to a plain standalone "Quick Notes" page (NOT the Knowledge app inbox, unlike the gated Topbar quick-note). Fix the sublabel to describe what it really does.

STANDING BACKLOG (after 1+2, or as Justin directs)

  • Bot-API capstone: machine-auth shipped personal access tokens (core.api_tokens, Bearer ctk_...) + docs/API-BOTS.md. Mint a token (via POST /api/tokens, session-auth) and wire the forge Telegram inbox-capture + LifeOS coordinator bots to create tasks/projects/pages/habits/notes as Justin in his workspace, pointed at prod.
  • Worktree/DB-clone teardown: ~30 finished slots under ~/forge-suite-wt/ + their ct_<branch> clones on CT109. git -C ~/forge-suite worktree remove <path> --force + DROP DATABASE ct_<branch> (as lifeos_admin). Base creatortrack_dev_base persists. Reclaims disk (Console root hit 100% tonight; keep it under control).

[Claude Code]