Skip to content

Handoff: CreatorTrack + LifeOS autonomous overhaul (2026-07-03)

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

Ran overnight while Justin was offline. 10 workstreams built by parallel worktree agents, merged behind a tsc --noEmit gate, deployed to dev.creatortrack.ai. Plan: creatortrack-autonomous-overhaul-2026-07-03.

Status: everything merged + on dev

  • forge-suite main head feb13c4, tsc --noEmit clean, dev serving (/login 200, /api/changes live).
  • Bots restarted clean (5/5 active, watchdog ok); new tool surface loaded.
  • Prod is untouched (still on the pre-overhaul build), per "restart dev".
  • Nothing is runtime-QA'd through the UI (agents verified compile + I smoke-tested the APIs). The UI features need your click-through on dev before prod.

What shipped (all on dev)

Workstream What Notes
Bot API 1+2 Narrow verbs widened + NEW journal/CRM/pages/projects tools + a generic creatortrack escape-hatch tool on all 3 bots All 7 new tools registered+handlered; generic tool + journal/crm/task-with-time/page all smoke-tested live on dev, landed in ws 67, cleaned up
Task times+reminders Optional time on Due; reminder = set time OR offset (5m default / 30m / 1h / 1d / at / none); timed tasks render at their hour on the calendar DST-correct Chicago compose; Today/Overdue counts unchanged
Habits UX Multi-check auto-apply (Save button removed); Overview click-to-open page; color-offset fix Color fix = changed Overview default from flat-green ramp to per-habit color. EYEBALL THIS in case "offset" meant something else
Task views filter/sort Filter by tag/priority, sort by due-time/priority/created/title, persisted in prefs
Knowledge->task popup Convert-to-task opens a modal for due/priority/list/tags/notes reused shared Modal
Fitness overview New default Overview tab aggregating readiness/sleep/garmin/training/food/body/strength/sessions read-only, composes existing /api/fitness/data
Live polling Cheap /api/changes?workspaceId= cursor + useWorkspaceChanges hook; wired into Habits + Tasks clients only refetches when the cursor advances
Habits<->Tasks Per-habit "push to tasks" (opt-in, defaults OFF) files a tagged task under a "Habits" list; task Done -> habit done inert until you enable it on a habit
Sharing + live collab Invite-by-email + role on the Share menu; router.refresh() on workspace-cursor change (editing-guarded) presence NOT built (deferred)

Commits: bots in forge 8dc76bc (branch workspace-lifeos-spine-phase01); everything else merged into forge-suite main (branch commits: a-bots-api 7c77af1, b-task-times 7c9b0be, c-habits-ux 28b949d, d-task-views a43eb61, f-knowledge-task a9b580b, g-fitness-overview 111e554, h-live-polling f6b961d, w2-polish 6f86e89, w2-habittask ceb731b, w2-collab ad2e4dd).

IMPORTANT: bots point at DEV tonight

~/.forge-secrets/creatortrack-bot.env CREATORTRACK_BASE_URL=http://localhost:3060 (was :3070). Dev + prod share the SAME lifeos DB, so your captures still land in the real justin workspace (id 67) and show on prod too. Reason: the new capture verbs (journal/crm) only exist on the dev build. To promote: click through the dev UI, then deploy prod (cd ~/forge-suite && npm run build && sudo systemctl restart creatortrack-prod), flip that env back to :3070, restart bots. Rollback of any bot behavior: WORKSPACE_WRITE_TARGET=notion in the bot's drop-in.

Follow-ups / needs your eyes

  1. All UI is unverified at runtime. Drive it on dev: habits auto-apply + color, task time picker + reminder, filter/sort, knowledge->task modal, fitness Overview, share dialog, live-refresh with two tabs.
  2. In-app edit live-poll gap: the cursor bump was fixed for the capture path, but lib/{habits,meals,goals,crm}.ts have their own setCell copies that still don't bump nodes.updated_at, so a MANUAL in-app re-edit of an existing cell won't live-refresh other tabs. Scoped follow-up (4 files, additive).
  3. Habits->tasks reverse direction (task Done marks habit done when no log exists) is best-effort; confirm it doesn't surprise you.
  4. Collab: node-share caller gating relies on RLS (not a handler owner-check); confirm the intended "who can share" policy. Presence indicator not built.
  5. Color-offset fix is a judgment call (see table).

Still open from earlier tonight (unrelated to the overhaul)

  • Hydrate 15 vs 12: the migrated Hydrate habit kept its Notion goal of 15 cups; you made a separate 12-cup goal. Reconcile if you want them to match.
  • Notion decommission Phases 2-4 (notion-decommission-2026-07-02): repoint remaining read tools + pipelines/crons, delete the Notion client. Phase 1 (habit + goal defs) done.

[Claude Code]