From geas
Protocol for orchestrator to manage multiple tasks simultaneously. Defines batch construction, pipeline interleaving, checkpoint management, and recovery. Task-level parallelism only. Step-level parallelism is defined in the execution pipeline.
npx claudepluginhub choam2426/geasThis skill uses the workspace's default tool permissions.
This skill is a protocol document — the orchestrator reads it and executes directly. There is no separate scheduling agent.
Executes pending tasks in dependency order with wave-based concurrent execution via Agent Teams. Orchestrates via 3-tier hierarchy: Orchestrator, Wave Leads, Context Managers. Supports task filtering, parallelism, retries, dry runs.
Orchestrates multi-step workflows using Claude Code's native Task system (TaskCreate, TaskUpdate, TaskGet, TaskList) for lifecycle management, parallel execution, crash recovery, and progress visibility. Use for 3+ step workflows with dependencies.
Orchestrates consensus-loop sessions: reads handoffs, identifies unblocked tasks, distributes to parallel workers/agents, tracks assignments, manages corrections via SendMessage.
Share bugs, ideas, or general feedback.
This skill is a protocol document — the orchestrator reads it and executes directly. There is no separate scheduling agent.
The orchestrator assigns multiple tasks to run simultaneously. Each task progresses through its pipeline sequentially (as defined in the execution pipeline). The orchestrator interleaves agent spawns across tasks, spawning agents for different tasks in the same message when possible.
isolation: "worktree" for implementation steps.When the orchestrator reaches a point where new tasks could start (Phase 2 entry, or after a task/batch resolves):
.geas/missions/{mission_id}/tasks/.status == "ready" AND every ID in depends_on has a task file with status == "passed".base_commit with tip(integration_branch).
base_commit == tip: eligiblebase_commit != tip: run revalidation procedure
clean_sync: eligible (update base_commit first)review_sync: eligible (flag for re-review after implementation)replan_required or blocking_conflict: exclude from batch. Rewind or block as appropriate. Write revalidation-record.json.scope.paths — if any paths overlap, they have a path lock conflict. Remove the later task (by ID order) from the batch.After filtering, the batch contains only tasks that can safely run in parallel.
For each task in the batch:
"status": "implementing", write back..geas/state/locks.json.task_started event for each task.Update run.json checkpoint:
{
"pipeline_step": "batch_active",
"agent_in_flight": null,
"pending_evidence": [],
"retry_count": 0,
"parallel_batch": ["STORY-003", "STORY-009"],
"completed_in_batch": [],
"remaining_steps": [],
"last_updated": "<timestamp>"
}
Note: during batch execution, remaining_steps is empty at the batch level. Each task's pipeline progress is tracked by the orchestrator internally (in context) and by evidence file presence.
The orchestrator manages each task's pipeline independently:
orchestrating/references/pipeline.md.Agent(implementer, "implement STORY-003") and Agent(implementer, "implement STORY-009") in one message.Checkpoint during batch: Before each agent spawn, update last_updated in run.json. agent_in_flight stays null during batches (multiple agents active). The authoritative progress record is the evidence files and task file statuses.
When a task's pipeline finishes (orchestrator commits, retro done):
"status": "passed", write back. No exceptions.completed_in_batch in run.json, write back.completed_tasks in run.json, write back.task_resolved event.If other tasks in the batch are still running, the orchestrator continues managing them.
When completed_in_batch contains all IDs from parallel_batch:
null in run.json.When a session resumes and run.json has parallel_batch set (non-null):
parallel_batch and completed_in_batch.parallel_batch but not in completed_in_batch..geas/missions/{mission_id}/tasks/{task-id}/final-verdict.json exists AND .geas/missions/{mission_id}/tasks/{task-id}/retrospective.json exists → task is complete. Set task file status to "passed", add to completed_in_batch.final-verdict.json exists but no retro → resume from retrospective step only.completed_in_batch.All of the following must be satisfied for two tasks to run in parallel (per doc 04):
.geas/state/run.json, .geas/rules.md, project-wide config)Speculative execution MAY be allowed when ALL of the following are true:
risk_level = lowreviewed or later stateconfidence is 4 or aboveSpeculative execution is PROHIBITED for:
risk_level of normal, high, or criticalNote: Actual speculative dispatch is deferred to Phase 6. This section documents the conditions only. The scheduler currently treats all tasks as non-speculative.
paused and parked are scheduler execution flags, not task states. The task's state (doc 03) does not change.
paused: short suspension. On resume: baseline check only. If base_commit is 10+ commits behind tip(integration_branch), run full revalidation.parked: longer hold. On resume: mandatory revalidation. Parking reason must be recorded in run.json.task_id, preemption reason, task state at preemption time.If two tasks hold mutually conflicting locks, the state transitions to manual_repair_required. No automatic resolution is attempted. The orchestration_authority or a human operator must intervene to release a lock or rewind a task.