- startBrokerPoller schedules runPoll via node-cron */5 * * * * - runPoll loads all member_credentials, decrypts each app password - ctag/syncToken comparison skips syncCalendar when ctag unchanged - errors per-credential caught and logged without crashing the poller - runPoll exported for unit-testing with vi.mock injected dependencies