Flightdeck already has the right execution substrate for multi-agent work: clear role separation, role-scoped tool permissions, a typed task DAG, reviewer handoff, and persistent status/reporting surfaces. The main gap versus Paperclip is not orchestration power. It is operational governance.
Paperclip's strongest transferable patterns for Flightdeck are:
- First-class approval and interaction objects rather than implied "gated" states.
- Explicit blocker ownership and unblock actions rather than blocked tasks with only dependency/state visibility.
- Scoped wake context for each heartbeat or comment-triggered turn rather than generic periodic prompts.
- Mandatory run closeout that records what changed, what remains, and who acts next.
I would not copy Paperclip's full company/inbox/checkout model into Flightdeck yet. That would be overkill for a local-first orchestration product. The right move is to add a thin governance layer on top of the existing DAG/orchestrator core.
Flightdeck already distinguishes governance outcomes such as gate_human and propose_and_wait, but those outcomes do not appear to persist as a concrete review object with assignee, requested decision, return target, or wake policy. In practice that means governance exists as logic, but not yet as an operational queue.
- Evidence:
GovernanceEngine.checkGate()returnsgate_humanandpropose_and_wait, whilerecordDecision()only adjusts decision status andgetPendingDecisions()is still a stub inpackages/server/src/governance/GovernanceEngine.tslines 132-175.
Recommendation:
- Add
ApprovalandInteractionrecords in SQLite. - Include
requestedBy,currentParticipant,returnAssignee,status,requestedAction,contextRef, andwakePolicy. - Wire collaborative and supervised governance to those records instead of a bare
gatedtask state.
Why this transfers well from Paperclip:
- It creates a clean waiting state for humans.
- It gives Lead and Director deterministic resume points.
- It avoids mixing "needs approval", "blocked", and "waiting for clarification" into the same task state.
Flightdeck has internal dependency sequencing, but it lacks first-class external blocker semantics. A blocked task needs more than a state value. It needs a named owner and exact unblock action.
- Evidence: the task model includes
dependsOnand task state, but noblockedReason,blockedOwner, ornextActionfields inpackages/shared/src/core/types.tslines 61-85. - Evidence: daily reporting lists blocked tasks only by id, title, and state in
packages/server/src/reporting/DailyReport.tslines 27-37 and 69-75. - Evidence: worker delegation context tells agents "If blocked, use
flightdeck_escalate" but does not provide a structured blocker contract inpackages/server/src/api/routes/tasks.tslines 65-72.
Recommendation:
- Keep
dependsOnfor internal DAG ordering. - Add explicit blocker metadata for human approvals, secrets, external services, environment issues, or upstream tasks.
- Require every blocked task to record
blockedKind,blockedReason,blockedOwner, andblockedAction.
Why this transfers well from Paperclip:
- Paperclip's "blocked with exact unblock owner/action" rule is one of its best governance habits.
- It prevents blocked work from degrading into vague waiting.
Flightdeck uses heartbeat-driven management roles effectively, especially Scout, but the current heartbeat guidance is generic. Paperclip's better pattern is to wake an agent with a compact reason-specific context pack and require the agent to respond to the newest signal first.
- Evidence: the default heartbeat template is a general checklist in
packages/server/src/storage/ProjectStore.tslines 33-52. - Evidence: Scout is explicitly heartbeat-driven and proactive in
docs/roles/scout.mdlines 3-29.
Recommendation:
- Add a
wake-contextorheartbeat-contextAPI that returns: reasonlatest comments or messagestasks changed since last turnpending approvalsnew blockersexpected next action- For comment-triggered wakes, make the newest comment mandatory context and require the responding agent to acknowledge it before broad exploration.
Why this transfers well from Paperclip:
- It reduces blind polling.
- It keeps token use focused on deltas.
- It improves agent continuity after long-running or intermittent execution.
Flightdeck has persistent status artifacts, but those artifacts summarize system state more than execution accountability. Paperclip is stricter about every heartbeat ending with an explicit disposition and a "what changed / what remains / next owner" trail.
- Evidence:
status.mdsummarizes counts, epics, active agents, and recent completions, but not next owner/action or unblock responsibility inpackages/server/src/status/StatusFileWriter.tslines 79-140.
Recommendation:
- Require Lead, Director, Worker, and Reviewer to emit a structured closeout after each meaningful turn.
- Include:
status dispositionwhat changedwhat remainsnext ownernext action- If blocked, require the blocker owner/action fields above.
Why this transfers well from Paperclip:
- It makes asynchronous handoff auditable.
- It reduces repeated rediscovery on wake.
Flightdeck already has good role separation and messaging, but collaborative governance will become brittle if all human coordination is free-form chat.
- Evidence: the architecture and contribution docs show strong separation among Lead, Director, Scout, Workers, and Reviewers, plus channel/DM messaging, in
ARCHITECTURE.mdlines 128-178 andCONTRIBUTING.mdlines 75-96.
Recommendation:
- Model at least three human interaction types:
request_confirmationask_user_questionssuggest_tasks- Keep chat for discussion, but use typed interactions whenever the system needs a decision to resume execution.
Paperclip has assignments, checkouts, inboxes, parent/child issue trees, and company-wide routing. Flightdeck does not need all of that yet. It already has a good local project execution model.
Keep:
- role/tool boundaries
- human approval discipline
- blocker clarity
- wake-context discipline
Skip for now:
- global issue inbox semantics
- per-heartbeat checkout ownership
- company org charts and cross-agent board governance
Flightdeck already has a broad role set. The bottleneck is not missing personas. It is missing structured waiting and approval flows.
Paperclip's better idea is delta-driven wake behavior. Flightdeck should keep periodic Scout passes, but Lead and Director should increasingly wake from specific events, comments, approvals, and blockers.
- Implement
ApprovalStoreandInteractionStore, then routegate_humanandpropose_and_waitthrough them. - Extend the task schema and API with blocker metadata:
blockedKind,blockedReason,blockedOwner,blockedAction, and optional external reference fields. - Add a compact
wake-contextendpoint for Lead, Director, Scout, and reviewers so each turn starts from deltas rather than broad scans. - Extend
status.md, daily reports, and task detail views to show next owner/action, not just current state. - Add a governance lifecycle doc that defines when work should be
running,gated,blocked,in_review, or waiting on a typed human interaction.
No immediate hiring change is necessary. The repo already has enough conceptual role coverage for the next milestone.
If Flightdeck turns its governance layer into a serious product surface, the next addition should be a human-facing operator or release-manager workflow, not another AI agent role. Later, if security_sensitive approvals become common, a dedicated security reviewer role would be justified.
Flightdeck's current architecture is strong enough to support Paperclip-style governance. The right adoption path is incremental:
- keep the current role and DAG model
- add first-class approvals/interactions
- add explicit blocker ownership
- make wakes delta-scoped
- require end-of-turn closeout
That gives Flightdeck most of Paperclip's operational clarity without inheriting all of its organizational complexity.