Skip to content

Handoff: CreatorTrack University/Gamification/Tasks/Assets build (2026-07-10, session-limit interrupted)

Status

SHIPPED. Justin approved merge+deploy on 2026-07-11: merged to main at 3306ade (2 conflicts resolved, no security or feature regression), 9 pending migrations applied to prod lifeos (catalog dedup 14->7 courses, zero progress-row loss, pre-migration backup forge/data/backups/lifeos_prod_pre_university_catalog_migration_20260711T143555Z.dump), deployed ~09:42 CDT (unit healthy, zero 500s), pushed to GitHub (main + feature branch). Durable facts moved to reference_creatortrack_university_gamification; open follow-ups listed there (soft-deleted accounts on leaderboards, three human-QA items, deploy heap-cap debt).

Historical status (pre-ship)

BUILD COMPLETE 2026-07-11 ~02:10 CDT. All waves and all 7 phases on branch feat/ct-university-tasks-assets, verified on :3061. - Wave 1: d20bf2f instant delete + drag-to-trash, b5c2e93 tasks popup cleanup, 1e2f320 creatorpedia decouple + install gate, 3508131 asset-library block. - Wave 2 sequential: 08bfc59 global catalog + account-scoped progress/notes, d7ed5bd multi-creator + resources + creator directory, b9e48e1 Home/Explore/My-Courses tabs, 702e68e CT Points ledger + levels + badges + streaks + opt-out, 09774ea connections + connections leaderboard + activity feed. - P6/P7 parallel Fable (per Justin's mid-run instruction), merged back: 101e1e5 profile gamification/connections/certs + timestamped video notes; 5a0c1be Notion-style subtasks. Temp worktrees removed, both migrations applied to slot DB, merge agent reported zero problems. - Runtime QA still open (flagged by the P6 worker as untested at runtime): youtube time-capture bridge on lesson video marks, certificate issue on a 100% complete course, signed-out certificate share URL. Note: proxy.ts PUBLIC_PATHS gained /certificates (token-gated public page); review before any prod merge.

Environment (already set up, do not recreate)

  • Branch/worktree: feat/ct-university-tasks-assets @ /home/justinwieb/forge-suite-wt/feat/ct-university-tasks-assets, off main 822e272. Clean (nothing committed).
  • Dev server: LIVE on :3061 (http://100.97.43.104:3061 tailscale, http://localhost:3061 on Console). Slot DB ct_feat_ct_university_tasks_assets (already migrated up to main).
  • Note: creatortrack_dev_base template is 22 migrations behind main; rebuild with forge_creatortrack_dev_base.sh --force sometime (not blocking).

The plan

Full build plan: creatortrack-university-gamification-2026-07-10. Wave 1 = 4 clear-cut UX fixes; Wave 2 = 7 phases (global catalog + account-scoped progress, multi-creator/resources, Home/Explore/My-Courses tabs, gamification core, connections+leaderboard+feed, profile+notes+certificates, subtasks).

Justin's locked decisions

Mutual "add each other" connections (by email + accept); ALL extra features (streaks+daily goal, timestamped in-video notes/bookmarks, completion certificates, activity feed); platform-wide CT Points with a profile opt-out toggle + show both combined total and University-only subtotal; connections-scoped leaderboard (week/month/lifetime); University only visible where installed.

NEXT STEPS (build done; this replaces resume duty)

  1. Justin reviews on :3061 (restart if down: scripts/forge_creatortrack_agent_bootstrap.sh feat/ct-university-tasks-assets 3061, idempotent).
  2. Runtime QA the three flagged P6 surfaces (video-mark capture/seek, cert issue, signed-out cert URL).
  3. On approval: merge to main is a HUMAN-triggered step; prod deploy does NOT run migrations, so the three new migrations (20260711T011516 catalog, P2 creators, 20260711T024xxx gamification-era files, 20260711T065946 marks/certs, 20260711T070409 subtasks index; ls db/migrations for exact list) must be applied to prod DB lifeos explicitly, catalog-reconcile first.

RESUME RUNBOOK (historical, superseded 2026-07-11)

Coordinator pattern: Fable plans/synthesizes, Sonnet/Opus workers do token-heavy work (model set EXPLICITLY per worker; never inherit Fable). Wave 1 is complete; do NOT re-run it. 1. Confirm limit reset: one cheap git probe, then a tiny agent(..., {model:'sonnet'}) "reply OK". 2. Check worktree state: if the dying phase left uncommitted work, save it (git add -A && git diff --cached --binary HEAD > /tmp/.../pN-partial.patch), then reset the tree clean (avoid git stash, known empty-dir wipe gotcha). Check whether its migration was half-applied to slot DB ct_feat_ct_university_tasks_assets (ledger + tables) and pass that to the re-run worker as recovery context. 3. If :3061 is down, re-run scripts/forge_creatortrack_agent_bootstrap.sh feat/ct-university-tasks-assets 3061 (idempotent for an existing slot: rewrites .env.local, restarts next dev --webpack). 4. Wave 2 resume (same session b139ce18-... only): Workflow({scriptPath: "/home/justinwieb/.claude-sub2/projects/-home-justinwieb-forge/b139ce18-7200-4a5f-8e66-4053e3b89be2/workflows/scripts/ct-university-wave2-wf_b7558f63-c6a.js", resumeFromRunId: "wf_b7558f63-c6a"}); completed phases replay from cache. From a FRESH session, relaunch that same scriptPath with no resumeFromRunId, after first editing the script to slice the PHASES array down to the phases not yet committed on the branch (check git log --oneline 822e272..HEAD). 5. After the wave, report to Justin: what's on :3061 to review. Do NOT merge to main or deploy.

Guardrails

One worktree only, commit often (dev-slot reaper eats uncommitted work; idle 45m/cap 4). Idempotent migrations applied to slot DB via forge_workspace_migrate.py. Never full prod build (OOM). Never --no-verify. Never delete rows with progress. Verify on :3061.