Board Programs
Before Board Programs, the Board's only standing work was the intake-draft pair review, plus two one-off engines — the roadmap cycle and the X feature spotlight — that shared no machinery and had no memory of their own past cycles. Board Programs is a single generic registry that both of those now ride, plus twelve new standing assignments for the Product Owner, Head of Marketing, and Auditor. Every program follows the same shape — a role explores, proposes once, and everything it proposes sits held until you decide — so a new program is a registry entry and a prompt, not a bespoke engine file.
Registered programs are individually off by default. There is no single master switch: each one has its own toggle on the Business → Programs tab.
What it does
Every program — old or new — runs the same six-stage lifecycle:
- TRIGGER. Three kinds. Cron programs open a cycle once their interval has elapsed since the last one closed — the shortest registered cadence sets the orchestrator's wake-up floor, capped at once an hour, so a newly-armed program is picked up within the hour without a restart. Metric programs can also fire off-schedule when a predicate crosses a threshold (today, only Pest Control: a 7-day rework-rate spike). Event programs (Coroner, War Room, Dogfood) never fire off the cron loop at all — they open only when their specific hook runs (a bounce, a cancel, a budget-block, a release publish) or you hit Run now.
- EXPLORE. A real, one-shot cloud-LLM spawn of the program's role — Product Owner, Head of Marketing, or Auditor — with read tools scoped to what that program needs (project git/docs read, web search, KB/journal search, or Playwright for Dogfood). The engine itself never authors a word of content.
- PROPOSE. The agent calls the program's one structured verb exactly once —
propose_bug_hunt,propose_market_brief,propose_postmortem, and so on. One call, one cycle; the agent can't trickle out items one at a time. - DECIDE. What you see and where depends on the program's materializer — see the queue column in the catalog below. Some programs (Pest Control, Spackle, Scales, Mirror, Dogfood, Roadmap) hold several individually-decidable items in one cycle; others (Periscope, Sentinel, Coroner, Megaphone) complete the moment the agent proposes, because a report or a single postmortem has nothing left to decide item-by-item.
- MATERIALIZE. Approval is the only path to a real effect: a
BACKLOGtask, a live task getting reprioritized or cancelled, a drafted X post, a playbook draft, or nothing at all for a report (you just read it). Nothing here starts on its own — a materialized backlog task still needs ordinary PM activation. - LEARN — the genuinely new stage. A
board_program_cyclesrow per cycle (program key, items proposed/approved/rejected, your rejection reasons) feeds straight into the next cycle's exploration prompt: "last cycle you proposed X, it was rejected because Y." The old roadmap and spotlight engines had no memory of their own history; every program gets one now.
Each program dedupes against its own non-terminal exploration task — a new cycle never opens while the last one is still waiting on either the agent's proposal or your decisions. Coroner calls this an "autopsy" instead of a "cycle," but the same one-at-a-time rule applies.
The program catalog
Fourteen programs are registered: the two migrated engines (Roadmap and the X feature spotlight, unchanged in behavior) plus twelve new ones, four per Board role.
Product Owner
| Program | Trigger | What it explores | Where you decide |
|---|---|---|---|
| Pest Control | Weekly, or off-schedule when the trailing 7-day rework rate crosses pest_rework_threshold (default 0.3) | The findings ledger, revision_count hotspots, and QA-note flake patterns in one opted-in project at a time | Command Center → Pest Control Review Queue — approve/reject each bug task individually |
| Spackle | Biweekly | Gaps between what's shipped and what's surfaced — API routes with no panel page, armed flags with no docs, dead-end tabs — in one opted-in project at a time | Command Center → Spackle Review Queue — approve/reject each gap-fill task individually |
| Scales | Monthly | The live backlog against your charter, across every project | Command Center → Scales Review Queue — approving reprioritizes or cancels a real, already-existing task; rejecting leaves it untouched |
| Dogfood | A release publishing, or Run now — never the cron loop | Walks one opted-in project's live surfaces (the panel, the docs site) with browser tools, the way a user would | Command Center → Dogfood Review Queue — approve/reject each friction-fix task individually |
Head of Marketing
| Program | Trigger | What it explores | Where you decide |
|---|---|---|---|
| Periscope | Weekly | Competitor and adjacent-tool web research plus the knowledge base | Business → Market Briefs tab — a report you read; there's no per-item decision |
| Megaphone | Every 3 days | The org's own shipped-task and changelog history, for editorial angles beyond release posts | Social → X Post Queue — edit / approve & post / reject, same as any other X draft |
| Mirror | Quarterly | One opted-in project's messaging surfaces (README, docs site) against the charter and shipped reality | Command Center → Mirror Review Queue — approve/reject each docs task individually |
| Barfly | Every 2 days | X search for conversations where RoboCo is relevant but unmentioned | Social → X Post Queue — same review as a mention reply |
| War Room | A release publishing, or Run now — never the cron loop | Plans a release campaign: an ordered set of draft posts | Social → X Post Queue — each draft carries a recommended publish_after time as guidance only; you approve every draft individually and nothing auto-schedules |
Auditor
| Program | Trigger | What it explores | Where you decide |
|---|---|---|---|
| Coroner | Event only — a task's 3rd bounce into needs_revision, a cancel after work started, or a budget-block | One incident task: what failed, which stage, the root cause | Business → Programs tab → Postmortems card — a report with one proposed process change; read-only, no per-item decision |
| Librarian | Biweekly | Journals and learnings, mined for a recurring pattern worth a playbook | Knowledge Base's playbook review queue — it drafts 1-3 real playbook drafts directly, for the normal curate/approve flow |
| Sentinel | Weekly | Org-wide drift: waiver accumulation, conventions-violation hotspots, docs/map staleness, budget anomalies | Business → Quality Reports tab — a report you read; there's no per-item decision |
Coroner's registry entry carries a trigger kind for bookkeeping consistency, but a cycle only ever opens through its incident hooks — Run now on the Programs tab is a no-op for it specifically, unlike Dogfood and War Room (also event-triggered, but with a real off-schedule path).
Per-project participation
A program's scope decides how a project opts in, and the polarity is deliberately different in each direction:
- Project-scoped programs (Pest Control, Spackle, Mirror, Dogfood) read one repository directly, so they need an affirmative opt-in before they'll even open a cycle. A project with nothing listed participates in none of them. Each cycle then rotates to whichever opted-in project has gone longest without a turn.
- Org-scoped programs (everything else, including Roadmap) run company-wide regardless of any project's settings — there's nothing to opt into. Roadmap's items, though, still each target a specific project, so a project can be excluded as an output target with a
!-prefixed entry (e.g.!roadmap) without touching whether the program itself runs.
Both directions live in the same field, projects.board_programs — a plain key opts a project into a project-scoped program's cycles; a !-prefixed key opts a project out of an org-scoped program's output. It's set from the project's own Settings → Budget & Ops card, next to the CI-watch and video-engine opt-ins: a "participates in" checkbox list for the project-scoped programs, and an "excluded from" checkbox list for the org-scoped ones.
The !key exclusion form validates for every org-scoped program, but as of this release only Roadmap actually checks it when proposing or materializing an item. The other org-scoped programs either resolve against a fixed anchor project rather than an arbitrary target (Periscope, Sentinel, Scales, Librarian) or don't produce project-targeted artifacts at all (Megaphone, Barfly, War Room, Coroner post to the X queue or write a report) — so excluding a project from those has no effect yet.
Enable it
Business → Programs lists every registered program as a card: its role, trigger kind, scope, an Enabled switch, a Run now button (disabled while a cycle is already open, and — for Coroner — always inert), and a one-line summary of its last cycle. Flipping a switch persists immediately; there's no separate save step and, unlike most feature flags on this site, no backend restart is needed — the change is visible to the loop on its next tick, at most an hour later.
Project participation is set per project, on that project's own Settings → Budget & Ops card — see Per-project participation above.
ROBOCO_ROADMAP_ENGINE_ENABLED and ROBOCO_X_ENGINE_ENABLED + ROBOCO_X_FEATURE_SPOTLIGHT_ENABLED still work — they're what a program's switch on the Programs tab falls back to until you've touched it there. Once you flip the panel switch for roadmap or x_feature, that per-program value wins regardless of the environment setting.
Guardrails
- Every artifact is held. You are the only path to materialization — nothing a program proposes starts work, posts to X, or changes a task on its own.
- Nothing auto-starts, auto-posts, or auto-merges, no exceptions, including War Room's
publish_aftertimestamps (guidance only) and Librarian's drafted playbooks (still go through the normal curate/approve flow). - Dispatchers skip every program's exploration task the same way they already skip the old Roadmap and X-spotlight tasks — a program's held task never gets picked up as ordinary delivery work.
- Caps everywhere. One open cycle per program, per-cycle item caps baked into the registry, and the exploration spawn itself only ever happens on a due cron tick, a qualifying event, or your own Run now — never more than one at a time.
- External text is screened. Barfly's X search results cross the same
injection_guard.screen_external_textgate that X mentions and vault notes already go through, before anything reaches a prompt. - The Auditor stays silent to agents. Coroner, Librarian, and Sentinel report to you; none of them message the fleet — that boundary is unchanged.
What changes when it's on
- Arming a program on the Business → Programs tab starts its cron/metric cycle (or, for the three event-triggered ones, arms its hooks) within the hour, no restart required.
- Opting a project into a project-scoped program's
board_programslist makes it eligible for that program's rotation; opting a project out of an org-scoped program's!keylist (Roadmap only, today) keeps it out of that program's proposed items. - New CEO decision surfaces appear only when there's something to decide: five new Command Center review queues (Pest Control, Spackle, Scales, Mirror, Dogfood), two new read-only Business tabs (Market Briefs, Quality Reports), a Postmortems card on Business → Programs, and three programs feeding drafts into the X Post Queue you already know from the X engine.
Next
→ Board roadmap engine and X (Twitter) engine — the two programs that migrated onto this registry, still documented on their own pages for their program-specific settings. → Business for the Programs tab and the two new report tabs. → Command Center for the five new review queues. → Workstation for the per-project participation checkboxes. → Org & roles for what the Product Owner, Head of Marketing, and Auditor do day to day. → back to Optional subsystems.