The Org Charter
The Charter is governance for the Papercup org. It defines how departments talk to each other, not what they work on.
The canonical charter lives at ~/.restart-org/charter.md and is editable from the Papercup Organization page (charter button). Each department harness reads it via symlink at ~/org-{slug}/.harness/charter.md, so any edit is live for the next director run.
Immutable principles
Section titled “Immutable principles”These cannot be changed without a code change:
- Five fixed departments. Business, R&D, Technology, Management, Marketing. Adding or retiring requires editing
~/.restart-org/departments.json. - No veto authority. No director can override another. Coordination happens through messages.
- All actions live in the context of a project. Every Message carries a
projectId. Reserved projectsplatformandorg-opsexist for cross-cutting work that doesn’t belong to a specific initiative. - Cyclic by design. Marketing’s
MarketSignalfeeds back into Business and R&D. There is no terminal stage. - Every cross-department interaction is a typed message. No ad-hoc channels, no shared mutable state outside the message log.
The five departments
Section titled “The five departments”| Slug | Mandate | Inbox kinds | Outbox kinds |
|---|---|---|---|
business | Decide which proposals to pursue. Allocate budget. Own P&L. | Directive, Proposal, MarketSignal, ProgressUpdate, PlatformUpdate | Decision, Priority, BudgetAllocation |
rd | Generate and refine ideas into proposals. | MarketSignal, Decision, FeasibilityResponse, PlatformUpdate | Proposal, FeasibilityQuery |
technology | Build shared platform + libs. Answer feasibility. Promote spinouts. | BuildRequest, FeasibilityQuery, ProjectSpinout | Capability, CapabilityDeprecation, FeasibilityResponse, PlatformUpdate, BuildRequestResponse |
management | Execute approved projects. Coordinate Tech. Declare launch-ready. | Decision, Priority, Capability, MarketSignal, BuildRequestResponse | BuildRequest, ProgressUpdate, LaunchReady, ProjectSpinout, ProjectKickoff |
marketing | Acquire customers within budget. Surface market signals. | LaunchReady, Capability, Priority, BudgetAllocation | MarketSignal, Campaign |
Message types
Section titled “Message types”Every cross-department interaction is one of these typed kinds:
| Kind | From → To | Purpose |
|---|---|---|
Directive | user → business | Top-level user direction; CEO mode routes from here |
Proposal | rd → business | Idea submission |
Decision | business → rd, management | Approve / reject / defer with rationale |
Priority | business → management, marketing | Active initiatives, ranked |
BudgetAllocation | business → any | Spend authority |
ProgressUpdate | management → business | Project status; can carry metadata.statusUpdate to advance project state |
BuildRequest | management → technology | Project needs a platform capability |
BuildRequestResponse | technology → management | Accept / reject with rationale |
Capability | technology → all | New platform capability ready |
CapabilityDeprecation | technology → all | Mark a capability deprecated; refId points at the original Capability |
PlatformUpdate | technology → all | Breaking changes, deprecations, shared lib news |
FeasibilityQuery | rd → technology | ”Is this buildable? Constraints?” |
FeasibilityResponse | technology → rd | Answer with constraints |
LaunchReady | management → marketing | Project ready for acquisition push |
MarketSignal | marketing → rd, business, management | Customer voice |
Campaign | marketing → broadcast | Active acquisition record |
ProjectKickoff | management → all | New project started |
ProjectSpinout | management → technology | Propose in-project work for platform promotion |
Charter validation
Section titled “Charter validation”Every POST /api/org/messages is server-validated:
frommust be one of the 5 dept slugs (or'user'for the specialDirectivecase)kindmust be in the sender’soutboxKinds- Each
toslug must be valid projectIdmust reference an existing project (defaulted to reservedplatformororg-opsif absent, depending on kind)
Charter violations return HTTP 400. The autonomous loop’s executeAction runs the same validation, so a worker that emits an illegal message fails the loop iteration rather than corrupting state.
Editing the charter
Section titled “Editing the charter”Open the charter editor from the Organization page hero. The editor is a full-screen textarea backed by PUT /api/org/charter (rejects content under 100 chars). Every edit is recorded in the audit log (~/.restart-org/audit.jsonl).
Department directors read the charter live via the symlink — no restart needed.