Automation Readiness
A schedule is active only when its commands, local data, authentication, and canonical definition are available. Missing credentials pause a job; they do not become a fake successful run.
Current State
Run the executable audit for current truth:
npm run audit:automations
The machine-readable result is wiki/meta/automation-readiness.json. It contains only capability booleans and scheduler metadata, never tokens or account identifiers.
As of 2026-08-12, eight Automation V2 jobs are explicit: three active and five
paused. The active, dependency-ready, checkout-pinned Codex schedules are
source-compile every four hours, cross-project-learning weekly, and
system-health-brief daily. Calendar, Gmail, Circleback, Slack, and voice import are retained
as paused proposal-only connector definitions rather than ambiguous legacy
jobs. Every V2 definition delivers through Daily Brief and none may approve,
apply, commit, or merge. The scheduler project currently opens the main wiki
checkout, so every prompt contains and the audit verifies an explicit
/Users/kevinliu/repos/Kevin-Wiki work boundary. Source: npm run audit:automations, 2026-08-12
All three active jobs now also have proof-bound run receipts and current
freshness. A receipt is evidence of one completed research/delivery run, not
permission to mutate an owner: it records the definition digest, authority,
output, delivery proposal, proof, and state transition. Failed delivery, failed
proof, and no-op runs cannot silently advance the wrong clock. Source: .brain/automation-runs/; scripts/lib/automation-run.ts; npm run status,
2026-08-12
Source readiness is separately registered in brain/source-connectors.json.
npm run status reports runnable stale or never-run work under NEEDS ATTENTION, but reports missing credentials, browser sessions, runtimes, or
adapters under CONNECTOR SETUP. This preserves desired sources without
pretending they are currently executable.
Paused Integrations
| Automation | Missing setup | Reactivation gate |
|---|---|---|
calendar-sync |
OAuth client plus at least one account with the exact Calendar read-only scope | Authorize Calendar only, complete every requested account/window chunk, then reactivate. |
email-sync |
OAuth client plus at least one account with the exact Gmail read-only scope | Authorize Gmail only, prove account-scoped cursors/output and complete message fetches, then reactivate. |
meeting-sync |
Circleback OAuth login plus stable account/workspace authority | Run circleback login, set CIRCLEBACK_ACCOUNT_ID, then complete a read-only paged search + detail + full-transcript fixture. |
slack-sync |
Dedicated Slack OAuth token plus exact read scopes | Configure SLACK_READ_TOKEN and all public/private/DM/MPIM read/history scopes plus files:read; then prove a complete, no-mutation workspace fixture. |
voice-sync |
Authorized local export path plus explicit consent attestation | Set VOICE_CALL_EXPORT_PATH, verify its private manifest and consent scope, set VOICE_CALL_CONSENT_ATTESTATION=confirmed, then run the manual import. |
Do not advance syncs.* freshness while one of these integrations is paused or blocked.
Google Takeout is a local import rather than a scheduled account API. Its
adapter is runnable and tested, but readiness requires GOOGLE_TAKEOUT_PATH to
name an authorized unzipped archive. The importer preserves relative paths,
hash-verifies every atomic copy, writes a private manifest without the source's
absolute path, and advances the sync clock after a successful changed or
no-change scan. Missing path remains connector setup, not stale work.
Cursor Cloud Boundary
The .cursor-automation.md files are cloud prompt templates, not evidence that a Cursor cloud schedule is enabled. Firecrawl and GitHub MCP access must be verified in Cursor's automation portal before any cloud prompt that declares those MCPs is activated. Local Codex schedules use their installed local CLIs and built-in web access instead.
Daily Brief Activation Boundary
The V2 parser, runner gate, definition-derived readiness audit, and Daily Brief
control plane are implemented. The active research jobs declare proposal-only
authority and daily-brief delivery, and their live schedules are distinct from
their definitions. File presence alone remains insufficient.
The next authority step is deliberately absent: there is no live
approved-mutation worker. It must consume the exact durable approval receipt,
check the expected owner digest, apply only the approved patch, run owner-specific
doctors, and record writeback/verification receipts before it can be activated.
Retirement Rule
Deleting an automation means deleting its live schedule, canonical definition, cloud prompt, state key, and active routing references. Historical log entries remain historical evidence.
Timeline
-
2026-08-12 | Migrated Calendar, Gmail, Circleback, and Slack from legacy direct-enrichment prompts into paused V2, proposal-only source adapters. Added exact Google service-scope readiness, account-scoped Gmail/Calendar storage and clocks, failure-held freshness, and a hash-verified, path-preserving Takeout importer with seven connector tests. Source:
automations/*-sync.md;scripts/lib/google-*.ts;npm run sync:connectors:test;npm run audit:automations -
2026-08-12 | Replaced the voice-source placeholder with a consent-gated, local-export-only adapter. It preserves every regular source byte, rejects symlinks, verifies atomic copies, omits absolute source paths, and keys replay to the complete snapshot digest; recording, transcription, inference, and direct wiki mutation remain outside its authority. Source:
scripts/lib/voice-call-import.ts;automations/voice-sync.md;npm run sync:connectors:test -
2026-08-12 | Migrated Circleback from an obsolete direct bearer-token call to the pinned official CLI and OAuth route. The collector now pages search, completes each identity with detailed meeting and full transcript reads, versions corrections by joined-payload digest, and holds freshness unless the complete cohort receipt succeeds. Source:
@circleback/cli@0.2.3;scripts/lib/circleback-import.ts; Circleback CLI -
2026-08-12 | Replaced Slack's unimplemented scheduled browser capture with a read-only Web API connector. It validates exact scopes, derives workspace identity, cursor-pages all conversation classes and threads, preserves edits, freezes attachments, and writes immutable source/run receipts. Browser inspection stays manual because navigation can change read state. Source:
scripts/lib/slack-read.ts;scripts/sync-slack.ts; Slack Conversations API -
2026-08-12 | Added proof-bound automation run receipts, separated runnable sync freshness from connector setup state, and registered the retained Calendar, Gmail, Slack, Circleback, and voice blockers explicitly. Source:
.brain/automation-runs/;brain/source-connectors.json;npm run status -
2026-08-11 | Activated and audited three checkout-pinned, dependency-ready, proposal-only Codex schedules for source compile, cross-project conversation learning, and Daily Brief system health. Added V2 validation and made missing schedules/invalid definitions doctor failures. Source: Codex automation registry;
npm run audit:automations -
2026-08-10 | Verified the local Daily Brief store/CLI/review slice and kept the automation family inactive because Automation V2 parsing, delivery, and authority enforcement are still absent. Source:
apps/briefd/; local doctor -
2026-07-16 | Added the Daily Brief activation gate: automation V2 lifecycle/delivery/authority semantics and a healthy control plane must exist before the new research/approval family is defined as active. private page
-
2026-07-14 | Added executable readiness auditing, installed the missing browser/runtime dependencies, paused four unauthenticated integrations, and removed the obsolete Hawaii and offsites schedules and definitions. private page