Directives & CEO mode
A directive is the top-of-stack input to the org. It’s how an operator (the human, you) tells the company “work on this.” The directive enters the system as a Directive message kind from user to business, where the CEO sub-role inside Business decides how many projects to spawn and routes work to other departments.
Directives sit above the charter — the charter says how departments interact; directives say what they should work on.
Lifecycle
Section titled “Lifecycle”- Author via the Papercup UI (
/papercup/directives→ ”+ New directive”) or the API (POST /api/org/directives). Title, body (markdown), optional priority/budget/deadline. - Auto-emit as a
Directivemessage into Business’s inbox. - Route by clicking “Route directive” (or letting Business’s auto-loop do it). Business’s CEO mode handles
Directivekind specifically:- Decides how many projects this needs (1:N)
- Calls
POST /api/org/directives/:id/projectsfor each - Each call creates a project, fires
ProjectKickoff,Priority, optionalBudgetAllocation— all carrying the directive’s id
- Track progress via the directive’s summary log + linked projects + linked messages. CEO appends a summary entry on every spinup.
- Status transitions through
active → paused → complete | cancelled.
A directive’s full record lives at ~/.restart-org/directives.json; its summary log at ~/.restart-org/directive-summaries.jsonl.
CEO sub-role
Section titled “CEO sub-role”CEO is not a department. It’s a prompt variant of Business’s worker, activated only when processing a Directive message kind.
The base charter rules still apply: CEO has no veto authority, sends only kinds in Business’s outboxKinds, and persists every routed message with directiveId for traceability.
The prompt resolution chain for CEO mode:
prompts/base/worker.mdprompts/department/worker.mdprompts/department/departments/business/ceo.md(replaces the dept worker layer)
1:N: a directive can spawn many projects
Section titled “1:N: a directive can spawn many projects”Earlier versions auto-created a single project per directive. The current contract allows arbitrary additional projects via repeated calls to POST /api/org/directives/:id/projects:
- First call: empty body → creates initial project from directive title
- Subsequent calls:
{projectName, projectVertical, projectBudgetCents, additionalContext, departments[]}to scope each new project - The directive’s
linkedProjectIds[]accumulates
Real example: directive “Launch music platform $20k” → CEO splits into music-backend (platform, $9k), music-ios-app (apps, $7k), music-creator-dashboard (apps, $4k). Each is independently tracked, has its own kickoff broadcast, and appears in Business’s outbox + Management’s inbox separately.
GET /api/org/directives?status=POST /api/org/directivesGET /api/org/directives/:idPATCH /api/org/directives/:idDELETE /api/org/directives/:id # soft-cancelGET /api/org/directives/:id/summariesPOST /api/org/directives/:id/summaries # user or CEO can appendGET /api/org/directives/:id/timelinePOST /api/org/directives/:id/projects # spin up another project (1:N)POST /api/org/directives/:id/route # back-compat: creates first project/papercup/directives— index, expand-to-inline-detail, route, spin-up-project, status transitions/directives/:id— dedicated detail page with linked projects, summary log, linked messages