Skip to main content

Orchestrator Protocol Specification

Version: 1.1.0 Status: ACTIVE Created: 2026-01-18 Updated: 2026-01-26 Author: Protocol Specification Subagent Epic: T1575 Session: session_20260118_132917_801b75 See Also: Version Guide for version relationships

RFC 2119 Conformance

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in BCP 14 RFC 2119 RFC 8174 when, and only when, they appear in all capitals.

Part 1: Overview

1.1 Purpose

Vision Document: See ORCHESTRATOR-VISION.md for the foundational philosophy: “Stay high-level. Delegate everything. Read only manifests. Spawn in order.”
This specification defines the behavioral protocol for orchestrating multi-agent research workflows in CLEO. It establishes immutable rules for orchestrator behavior, subagent delegation, manifest-based coordination, and session startup procedures.

1.2 Authority

This specification is AUTHORITATIVE for:
  • Orchestrator behavioral constraints and delegation rules
  • Subagent output protocol and CLEO task integration
  • Manifest schema and query patterns
  • Session startup protocol for conversation continuity
  • Task linking and research-to-task cross-referencing
This specification DEFERS TO:

1.3 Scope

This protocol governs:
  1. Orchestrator behavior - High-level coordination without implementation
  2. Subagent delegation - Work assignment and output collection
  3. Manifest coordination - Lightweight state passing between agents
  4. Session continuity - Resuming work across conversation boundaries

Part 2: Orchestrator Behavior Rules

2.1 Core Constraints

The orchestrator agent is the conversation-level coordinator. It MUST adhere to these immutable constraints:
Rule IDConstraintRationale
ORC-001MUST stay high-level; MUST NOT implement codeContext preservation; delegation efficiency
ORC-002MUST delegate ALL work to subagentsSeparation of concerns; parallel execution
ORC-003MUST NOT read full research files into contextToken efficiency; context window protection
ORC-004MUST spawn agents in dependency orderCorrectness; avoid wasted work
ORC-005MUST use manifest for research summariesO(1) lookup vs O(n) file reading
ORC-006MUST verify protocol injection before spawnEnsures subagent compliance
ORC-007MUST check context thresholds before spawnPrevents context overflow
ORC-008MUST verify previous agent compliance before next spawnMaintains protocol chain integrity
ORC-009MUST auto-stop when context reaches critical thresholdGraceful session handoff

2.2 Delegation Decision Tree

USER REQUEST RECEIVED


┌───────────────────────────────────────┐
│ Is this a coordination/planning task? │
└───────────────────┬───────────────────┘

        ┌───────────┴───────────┐
        │ YES                   │ NO
        ▼                       ▼
┌───────────────────┐   ┌───────────────────────────┐
│ Orchestrator      │   │ Spawn subagent for task   │
│ handles directly  │   │ via Task tool             │
└───────────────────┘   └───────────────────────────┘
        │                       │
        │                       ▼
        │               ┌───────────────────────────┐
        │               │ Wait for subagent         │
        │               │ completion message        │
        │               └───────────────────────────┘
        │                       │
        └───────────┬───────────┘

            ┌───────────────────┐
            │ Read MANIFEST.jsonl│
            │ for results summary│
            └───────────────────┘

2.3 Permitted Orchestrator Actions

The orchestrator MAY perform these actions directly:
ActionToolExample
Check task statecleo session list, cleo list, cleo showcleo session list --status active
Query manifestcat MANIFEST.jsonl | jqjq -s '.[-1]' MANIFEST.jsonl
Plan task sequenceNone (internal reasoning)Dependency analysis
Spawn subagentTask tool<task>Research X</task>
Create epic/taskscleo addcleo add "Epic" --type epic

2.4 Prohibited Orchestrator Actions

The orchestrator MUST NOT perform these actions:
Prohibited ActionWhyDelegate To
Read full research filesToken explosionSubagent with targeted Read
Implement code changesContext pollutionCoder subagent
Run testsSpecialized knowledgeTesting subagent
Write documentationDetailed workDocs subagent
Merge/commit codeHITL gateHuman or authorized agent

Part 3: Subagent Protocol

3.1 Subagent Injection Block

Every research subagent prompt MUST include this instruction block:
## SUBAGENT PROTOCOL (RFC 2119 - MANDATORY)

OUTPUT REQUIREMENTS:
1. MUST write findings to: claudedocs/agent-outputs/YYYY-MM-DD_{topic-slug}.md
2. MUST append ONE line to: claudedocs/agent-outputs/MANIFEST.jsonl
3. MUST return ONLY: "Research complete. See MANIFEST.jsonl for summary."
4. MUST NOT return research content in response.

CLEO INTEGRATION:
1. MUST read task details: `cleo show <task-id>`
2. MUST set focus: `cleo focus set <task-id>`
3. MUST complete task when done: `cleo complete <task-id>`
4. SHOULD link research: `cleo research link <task-id> <research-id>`

Manifest entry format (single JSON line):
{"id":"topic-YYYY-MM-DD","file":"YYYY-MM-DD_topic.md","title":"Title","date":"YYYY-MM-DD","status":"complete|partial|blocked","topics":["t1"],"key_findings":["Finding 1"],"actionable":true,"needs_followup":["T1234"]}

3.2 Subagent Workflow

SUBAGENT SPAWNED


┌───────────────────────────────────────┐
│ 1. Read task: cleo show <task-id>     │
└───────────────────────────────────────┘


┌───────────────────────────────────────┐
│ 2. Set focus: cleo focus set <task-id>│
└───────────────────────────────────────┘


┌───────────────────────────────────────┐
│ 3. Execute research/implementation    │
│    Write findings to output file      │
└───────────────────────────────────────┘


┌───────────────────────────────────────┐
│ 4. Append manifest entry              │
│    Set needs_followup to next tasks   │
└───────────────────────────────────────┘


┌───────────────────────────────────────┐
│ 5. Complete task: cleo complete <id>  │
└───────────────────────────────────────┘


┌───────────────────────────────────────┐
│ 6. Return: "Research complete. See    │
│    MANIFEST.jsonl for summary."       │
└───────────────────────────────────────┘

3.3 Subagent Return Contract

RequirementRule LevelValidation
Output file existsMUSTtest -f <path>
Manifest entry appendedMUSTgrep <id> MANIFEST.jsonl
Response is completion message onlyMUSTString match
Task completed in CLEOSHOULDcleo show <id> status=done
Research linked to taskSHOULDTask notes contain research ID

Part 4: Session Startup Protocol

4.1 Every New Conversation

When a new conversation starts, the orchestrator MUST execute this startup sequence:
# Step 1: Check for active sessions
cleo session list --status active

# Step 2: Check manifest for pending work
cat claudedocs/agent-outputs/MANIFEST.jsonl | jq -s '[.[] | select(.needs_followup | length > 0)]'

# Step 3: Check focused task
cleo focus show

# Step 4: Review epic status
cleo dash --compact

4.2 Decision Matrix

Based on startup checks, orchestrator MUST take one of these actions:
ConditionAction
Active session exists with focusResume session; continue from focused task
Active session exists, no focusQuery manifest for needs_followup; spawn next agent
No active session, manifest has followupCreate session; spawn agent for first followup task
No active session, no manifest followupAsk user for direction

4.3 Session Resume Flow

CONVERSATION STARTS


┌───────────────────────────────────────┐
│ cleo session list --status active     │
└───────────────────────────────────────┘

        ├──── No active sessions ────▶ CREATE NEW SESSION

        ▼ Active session found
┌───────────────────────────────────────┐
│ cleo session resume <session-id>      │
│   OR                                  │
│ cleo session resume --last            │
└───────────────────────────────────────┘


┌───────────────────────────────────────┐
│ cleo focus show                       │
└───────────────────────────────────────┘

        ├──── Focus exists ────▶ CONTINUE FOCUSED TASK

        ▼ No focus
┌───────────────────────────────────────┐
│ Query MANIFEST.jsonl for              │
│ needs_followup arrays                 │
└───────────────────────────────────────┘

        ├──── Followup tasks found ────▶ SPAWN NEXT AGENT

        ▼ No followup
┌───────────────────────────────────────┐
│ cleo analyze --parent <epic-id>       │
│ Find next unblocked task              │
└───────────────────────────────────────┘

Part 5: Manifest Schema

5.1 Required Fields

FieldTypeRequiredConstraintPurpose
idstringMUSTUnique slug with dateLookup key
filestringMUSTMatches output filenameFile reference
titlestringMUSTHuman-readableDisplay name
datestringMUSTISO 8601 (YYYY-MM-DD)Temporal ordering
statusenumMUSTcomplete|partial|blockedProgress tracking
topicsarrayMUST1+ string itemsCategorization
key_findingsarrayMUST3-7 string itemsExecutive summary
actionablebooleanMUSTtrue/falseRequires action?
needs_followuparrayMUSTTask IDs or emptyHandoff coordination

5.2 Optional Fields

FieldTypePurpose
timestampstringISO 8601 datetime for precise ordering
linked_tasksarrayCLEO task IDs this research relates to
agent_typestringSubagent role identifier (see 5.2.1)
tokens_spentnumberToken usage estimate (informational only)

5.2.1 agent_type Field

The agent_type field categorizes subagent output by role, enabling filtering and analysis of research by agent specialization.
ValueDescriptionUse Case
researchDefault. Investigative/exploratory workTopic research, competitive analysis
implementationCode implementation tasksFeature development, bug fixes
validationTesting and verificationTest writing, compliance checks
documentationDocumentation creationDocs writing, README updates
analysisTechnical analysisArchitecture review, code review
Validation Rule: When present, agent_type MUST be one of the above values. If not present, defaults to "research". Filtering by agent_type:
# CLI filter
cleo research list --type implementation

# jq pattern
jq -s '[.[] | select((.agent_type // "research") == "implementation")]' MANIFEST.jsonl
Subagent Integration: Subagents SHOULD set agent_type in their manifest entries to enable orchestrators and users to filter research by work type.

5.3 needs_followup Semantics

The needs_followup array is the primary handoff mechanism:
{
  "needs_followup": ["T1578", "T1580"]
}
ValueMeaningOrchestrator Action
Empty array []No downstream workMove to next independent task
Task IDs ["T1234"]Specific tasks readySpawn agents for listed tasks
["BLOCKED:<reason>"]Work blockedFlag for human review

5.4 Manifest Query Patterns

Orchestrator SHOULD use these jq patterns for manifest queries:
# Get latest entry
jq -s '.[-1]' MANIFEST.jsonl

# Find entries with pending followup
jq -s '[.[] | select(.needs_followup | length > 0)]' MANIFEST.jsonl

# Filter by topic
jq -s '[.[] | select(.topics | contains(["orchestrator"]))]' MANIFEST.jsonl

# Get all key_findings for an epic's research
jq -s '[.[] | select(.linked_tasks | contains(["T1575"])) | .key_findings] | flatten' MANIFEST.jsonl

# List actionable items
jq -s '[.[] | select(.actionable == true) | {id, title, needs_followup}]' MANIFEST.jsonl

Part 6: Task Linking Protocol

6.1 Research-to-Task Linking

When research relates to a CLEO task, subagents SHOULD establish the link: Method 1: CLEO research link command
cleo research link <task-id> <research-id>
Method 2: Direct task note
cleo update <task-id> --notes "Linked research: <research-id> - <brief context>"
Method 3: Manifest field
{
  "linked_tasks": ["T1575", "T1576"]
}

6.2 Bidirectional Traceability

DirectionStorageQuery
Task → ResearchTask notes fieldcleo show <task-id>
Research → TaskManifest linked_tasksjq 'select(.linked_tasks)' MANIFEST.jsonl
EventLink Action
Subagent starts taskFocus task; no link yet
Research completeAdd task to manifest linked_tasks
Task completeAdd research ID to task notes

Part 7: Dependency Resolution

7.1 Dependency Order Enforcement

Orchestrator MUST spawn agents in dependency order:
EPIC T1575

    ├── T1576 (no deps) ────────────────▶ WAVE 0 (spawn first)

    ├── T1578 (deps: T1576) ────────────▶ WAVE 1 (after T1576 complete)
    ├── T1580 (deps: T1576) ────────────▶ WAVE 1 (parallel with T1578)

    ├── T1582 (deps: T1576) ────────────▶ WAVE 1
    ├── T1584 (deps: T1576) ────────────▶ WAVE 1
    ├── T1588 (deps: T1576) ────────────▶ WAVE 1

    ├── T1586 (deps: T1582,T1584,T1588) ─▶ WAVE 2 (wait for all wave 1)
    ├── T1590 (deps: T1584) ────────────▶ WAVE 2

    ├── T1592 (deps: T1586,T1590) ──────▶ WAVE 3

    └── T1594 (deps: T1592) ────────────▶ WAVE 4

7.2 Parallel Spawn Rules

RuleConstraint
Parallel OKTasks in same wave with no inter-dependencies
Serial REQUIREDTask depends on another in same or later wave
Overlap PROHIBITEDSame task claimed by multiple agents

7.3 Spawn Decision

def should_spawn(task_id, completed_tasks):
    task = cleo_show(task_id)
    deps = task.get('depends', [])

    # All dependencies must be completed
    for dep in deps:
        if dep not in completed_tasks:
            return False

    return True

Part 8: Error Handling

8.1 Subagent Failure Modes

FailureDetectionRecovery
No output filetest -f <path> failsRe-spawn with clearer instructions
No manifest entrygrep <id> failsManual entry or rebuild
Wrong return messageString mismatchAccept but log warning
Task not completedStatus != doneOrchestrator completes manually
Partial statusstatus: partialSpawn continuation agent
Blocked statusstatus: blockedFlag for human review

8.2 Orchestrator Recovery

# Rebuild manifest from files (disaster recovery)
for f in claudedocs/agent-outputs/*.md; do
  # Extract metadata and append to manifest
  cleo research show --file "$f" --format jsonl >> MANIFEST.jsonl.new
done
mv MANIFEST.jsonl.new MANIFEST.jsonl

8.3 Session Recovery

# Find orphaned work
cleo session list --status suspended

# Resume specific session
cleo session resume <session-id>

# Clean stale sessions
cleo session close <session-id> --force

Part 9: Context Protection

9.1 Token Budget Allocation

ComponentMax TokensStrategy
Orchestrator context10KManifest summaries only
Subagent prompt4KTask description + injection block
Subagent research50KFull file reading permitted
Return message100Fixed completion message

9.2 Context Protection Rules

Rule IDConstraint
CTX-001Orchestrator MUST NOT read research files > 100 lines
CTX-002Orchestrator MUST use cleo research list over raw manifest read
CTX-003Orchestrator MUST use cleo show --brief for task summaries
CTX-004Subagent MUST NOT return content in response message
CTX-005Manifest key_findings MUST be 3-7 items, one sentence each

9.3 Context-Driven Pause Protocol

The orchestrator MUST implement context-driven pausing to prevent context overflow and ensure graceful session handoffs.

9.3.1 Context Thresholds

ThresholdPercentageStatusAction
OK0-69%okContinue orchestration
Warning70-79%warningWrap up current work, spawn final subagents
Critical80-100%criticalSTOP immediately, generate HITL summary
Configuration (config.json):
{
  "orchestrator": {
    "contextThresholds": {
      "warning": 70,
      "critical": 80
    },
    "autoStopOnCritical": true,
    "hitlSummaryOnPause": true
  }
}

9.3.2 Pre-Spawn Context Check

Before spawning any subagent, orchestrator MUST call orchestrator_should_pause():
# Check if should pause before spawning
result=$(cleo orchestrator should-pause)
pause_status=$(echo "$result" | jq -r '.result.pauseStatus')

case "$pause_status" in
    ok)
        # Safe to spawn
        ;;
    warning)
        # Spawn final agents, prepare to wrap up
        ;;
    critical)
        # STOP - do not spawn, generate HITL summary
        ;;
esac

9.3.3 Pre-Spawn Compliance Check

Before spawning the next agent, orchestrator MUST verify the previous agent’s compliance:
# Verify previous agent before spawning next
result=$(cleo orchestrator pre-spawn-check --task T1235 --previous T1234)
can_spawn=$(echo "$result" | jq -r '.result.canSpawn')

if [[ "$can_spawn" != "true" ]]; then
    # Block spawn, handle violations
    echo "$result" | jq '.result.reasons'
fi
The pre-spawn check validates:
  1. Context threshold: Not at critical level
  2. Task status: Target task is pending
  3. Previous compliance: Previous agent created manifest entry (if previous_task_id provided)

9.3.4 Protocol Injection Validation

All spawn prompts MUST contain the SUBAGENT PROTOCOL injection block. The orchestrator validates this via orchestrator_verify_protocol_injection():
# Validation function used by spawn commands
if ! orchestrator_verify_protocol_injection "$prompt"; then
    echo "PROTOCOL VIOLATION: Missing SUBAGENT PROTOCOL marker"
    echo "FIX: cleo research inject"
    return 60  # EXIT_PROTOCOL_MISSING
fi
Enforcement Rules:
  • ORC-006: MUST verify protocol injection before spawn
  • E_PROTOCOL_MISSING (exit 60): Returned when marker not found
  • Auto-fix available: cleo research inject provides the protocol block

9.3.5 Auto-Stop Procedure

When context reaches critical threshold with autoStopOnCritical: true:
  1. Generate HITL Summary: Progress, remaining tasks, resume command
  2. End Session: Clean session end with summary note
  3. Return Handoff: JSON with complete resume instructions
# Auto-stop function
result=$(cleo orchestrator check-and-stop --epic T1575)
action=$(echo "$result" | jq -r '.result.action')

if [[ "$action" == "stopped" ]]; then
    echo "Orchestrator auto-stopped. Resume with:"
    echo "$result" | jq -r '.result.autoStop.resumeCommand'
fi

9.3.6 HITL Summary Format

Human-in-the-Loop summary provides complete context for resumption:
{
  "timestamp": "2026-01-26T12:00:00Z",
  "stopReason": "context-limit",
  "session": {
    "id": "session_20260126_...",
    "epicId": "T1575",
    "focusedTask": "T1580",
    "progressNote": "Completed wave 1 tasks"
  },
  "progress": {
    "completed": 5,
    "pending": 8,
    "active": 1,
    "blocked": 0,
    "percentComplete": 36
  },
  "readyToSpawn": [
    {"id": "T1582", "title": "...", "priority": "high"}
  ],
  "handoff": {
    "resumeCommand": "cleo session resume session_20260126_...",
    "nextSteps": [
      "Run: cleo session resume session_20260126_...",
      "Check progress: cleo list --parent T1575",
      "Review dashboard: cleo dash"
    ]
  }
}

Part 10: Integration Points

10.1 CLEO Commands for Orchestration

CommandPurposeWhen Used
cleo session start --scope epic:T1575Begin orchestrationFirst agent spawn
cleo focus set <id>Mark active workSubagent start
cleo complete <id>Mark task doneSubagent finish
cleo research link <tid> <rid>Link research to taskAfter research complete
cleo analyze --parent <epic>Find next workOrchestrator planning
cleo deps <id>Check dependenciesBefore spawn decision
cleo research listList research entries (context-efficient)Manifest query
cleo research list --type <type>Filter by agent_typeFind specific research types
cleo research show <id>Get research entry detailsDeep-dive on specific research
cleo research pendingGet entries with needs_followupFind next agent work
cleo research links <task-id>Get research linked to taskTraceability check
cleo orchestrator should-pauseCheck context thresholdBefore each spawn
cleo orchestrator pre-spawn-checkCombined pre-spawn validationBefore spawning next agent
cleo orchestrator check-and-stopCheck and auto-stop if criticalSpawn decision point
cleo research injectGet protocol injection blockBuilding subagent prompts

10.2 File Locations

FilePurposeCreated By
claudedocs/agent-outputs/Research output directorycleo research init
MANIFEST.jsonlResearch indexSubagents (append)
SUBAGENT_PROTOCOL.mdProtocol referencecleo research init
INJECT.mdCopy-paste injection blockcleo research init
SpecRelationship
ORCHESTRATOR-SPEC.mdtmux-based multi-agent spawning
IMPLEMENTATION-ORCHESTRATION-SPEC.md7-agent implementation pipeline
MULTI-SESSION-SPEC.mdSession scope isolation
SUBAGENT_PROTOCOL.mdResearch output format

Part 11: Compliance Checklist

11.1 Orchestrator Compliance

Core Behavior (ORC-001 to ORC-005):
  • Never reads full research files (ORC-003)
  • Always spawns in dependency order (ORC-004)
  • Uses manifest for summaries (ORC-005)
  • Delegates all implementation work (ORC-002)
  • Executes session startup protocol
Pre-Spawn Verification (ORC-006 to ORC-009):
  • Verifies protocol injection in spawn prompt (ORC-006)
  • Checks context thresholds before spawn (ORC-007)
  • Verifies previous agent compliance (ORC-008)
  • Auto-stops at critical threshold (ORC-009)
Verification Functions:
FunctionRulePurpose
orchestrator_verify_protocol_injection()ORC-006Validates SUBAGENT PROTOCOL marker in prompt
orchestrator_should_pause()ORC-007, ORC-009Checks context percentage against thresholds
orchestrator_verify_compliance()ORC-008Verifies previous agent created manifest entry
orchestrator_pre_spawn_check()AllCombined validation before spawn

11.2 Subagent Compliance

  • Writes output file to correct path
  • Appends manifest entry with all required fields
  • Returns only completion message (no content in response)
  • Sets focus before work (cleo focus set <id>)
  • Completes task when done (cleo complete <id>)
  • Sets needs_followup for handoff
  • Sets agent_type appropriately (research|implementation|validation|documentation|analysis)

11.3 Manifest Compliance

  • All required fields present (id, file, title, date, status, topics, key_findings, actionable, needs_followup)
  • Status is valid enum value (complete|partial|blocked)
  • key_findings is 3-7 items, one sentence each
  • Date is ISO 8601 format (YYYY-MM-DD)
  • needs_followup contains valid task IDs or BLOCKED: entries
  • agent_type (if present) is valid enum value

11.4 Compliance Verification Gates

Pre-spawn compliance verification ensures the orchestration chain maintains integrity:
┌─────────────────────────────────────────────────────────────────────────┐
│                     PRE-SPAWN COMPLIANCE GATES                          │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  GATE 1: Protocol Injection                                             │
│  ├── Check: Prompt contains "SUBAGENT PROTOCOL" marker                  │
│  ├── Function: orchestrator_verify_protocol_injection()                 │
│  └── Exit Code: 60 (E_PROTOCOL_MISSING) if failed                       │
│                                                                         │
│  GATE 2: Context Threshold                                              │
│  ├── Check: Context percentage < critical threshold (80%)               │
│  ├── Function: orchestrator_should_pause()                              │
│  └── Exit Code: 2 if critical, 1 if warning, 0 if OK                    │
│                                                                         │
│  GATE 3: Previous Agent Compliance                                      │
│  ├── Check: Previous agent created valid manifest entry                 │
│  ├── Function: orchestrator_verify_compliance()                         │
│  └── Exit Code: 62 (E_MANIFEST_ENTRY_MISSING) or 6 (E_VALIDATION)       │
│                                                                         │
│  GATE 4: Task Status                                                    │
│  ├── Check: Target task exists and has status "pending"                 │
│  ├── Function: orchestrator_pre_spawn_check()                           │
│  └── Exit Code: 4 (E_NOT_FOUND) if task missing or wrong status         │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘
Combined Check Pattern:
# Use pre_spawn_check for all gates in one call
result=$(orchestrator_pre_spawn_check "$task_id" "$epic_id" "$previous_task_id")
can_spawn=$(echo "$result" | jq -r '.result.canSpawn')

if [[ "$can_spawn" != "true" ]]; then
    # Log violations and halt
    echo "$result" | jq -r '.result.reasons[] | .code + ": " + .message'
    exit 1
fi

# All gates passed - safe to spawn
orchestrator_spawn "$task_id"

Appendix A: Quick Reference

A.1 Orchestrator Mantra

Stay high-level. Delegate everything. Read only manifests. Spawn in order.

A.2 Subagent Mantra

Focus. Execute. Write file. Append manifest. Complete task. Return message.

A.3 Manifest Query Cheatsheet

# Latest entry
jq -s '.[-1]' MANIFEST.jsonl

# Pending followups
jq -s '[.[] | select(.needs_followup | length > 0)]' MANIFEST.jsonl

# By topic
jq -s '[.[] | select(.topics | contains(["X"]))]' MANIFEST.jsonl

# Actionable items
jq -s '[.[] | select(.actionable)]' MANIFEST.jsonl

# By agent_type (defaults to "research" if missing)
jq -s '[.[] | select((.agent_type // "research") == "implementation")]' MANIFEST.jsonl

# All implementation entries (CLI preferred)
cleo research list --type implementation

A.4 Pre-Spawn Check Cheatsheet

# Check if should pause before spawn
cleo orchestrator should-pause | jq '.result.pauseStatus'

# Combined pre-spawn validation
cleo orchestrator pre-spawn-check --task T1235 --previous T1234

# Check and auto-stop if critical
cleo orchestrator check-and-stop --epic T1575

# Verify protocol injection in prompt
orchestrator_verify_protocol_injection "$prompt" "true"

Appendix B: Revision History

VersionDateChanges
1.0.02026-01-18Initial specification
1.1.02026-01-26Added ORC-006 to ORC-009 enforcement rules; Context-driven pause protocol (9.3); agent_type field documentation (5.2.1); Compliance verification gates (11.4); Pre-spawn check functions

Specification v1.1.0 - Orchestrator Protocol Epic: T1575 - Orchestrator Protocol Implementation Task: T2379 - Update Specification Documents