Skip to content

feat(x): Phase 6 — schedulers & sync services boot in the standalone server - #905

Merged
Gagancreates merged 1 commit into
arch/server-client-separationfrom
feat/schedulers-server-side
Aug 25, 2026
Merged

feat(x): Phase 6 — schedulers & sync services boot in the standalone server#905
Gagancreates merged 1 commit into
arch/server-client-separationfrom
feat/schedulers-server-side

Conversation

@Gagancreates

Copy link
Copy Markdown
Collaborator

Phase 6 of SEPARATION_PLAN.md: the headless-safe half of boot extracts to core (boot/services.ts) — Electron main and the standalone server now run the identical service set in the identical order.

In the shared module: data repairs (runs migration, code-session backfill) · retention sweep · mobile channels · live-note + bg-task schedulers · skills watcher · event processor + consumers · every knowledge sync (gmail/outlook/calendars/fireflies/granola) · graph builder · note tagging · inline tasks · agent runner · agent notes · calendar notifications · meeting prep · chrome-extension sync.

Stays in main: windows/tray/quick-ask/updater, meeting detection (mic monitor), capture permissions, and the window fan-out watchers.

The standalone entrypoint is no longer a stub — it runs full core. This is the exact child process the Phase 7 flip spawns.

Verified:

  • Standalone on an isolated ROWBOAT_WORKDIR: every scheduler/sync boots with no Electron, health + RPC answer, clean shutdown
  • Electron main boots identically on the shared module (services started exactly once)
  • Bonus: the split-brain lock from fix(x): rowboat-server hardening (review follow-ups #879–882) #887 correctly refused a second host mid-test
  • 18 server + 717 core tests green; typecheck + lint clean

🤖 Generated with Claude Code

…e server

SEPARATION_PLAN.md Phase 6: the headless-safe half of Rowboat's boot
moves into core (boot/services.ts) — data repairs (runs migration,
code-session backfill), retention sweep, mobile channels, live-note +
bg-task schedulers, skills watcher, event processor + consumers, all
knowledge sync services (gmail/outlook/calendars/fireflies/granola),
graph builder, note tagging, inline tasks, agent runner, agent notes,
calendar notifications, meeting prep, chrome-extension sync.

Electron main and the standalone rowboat-server now call the same
prepareCoreData()/initCoreServices() in the same order — main keeps only
client-machine concerns (windows, tray, meeting detection, quick-ask,
updater, capture) plus its window fan-out watchers. The standalone
entrypoint is no longer a stub: it runs the full core, which is the
child process the Phase 7 flip will spawn.

Verified: standalone server on an isolated ROWBOAT_WORKDIR boots every
scheduler/sync with no Electron (health + RPC answering, clean
shutdown); Electron main boots identically to before on the shared
module; split-brain lock correctly refused a second host during
testing.
@Gagancreates
Gagancreates merged commit 7141599 into arch/server-client-separation Aug 25, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant