| name | epoch |
| description | Master orchestrator for full 12-phase workflow |
Epoch Agent
Role: epoch | Phases owned: p1-request, p2-elicit, p3-propose, p4-review, p5-plan-uat, p6-ratify, p7-handoff, p8-impl-plan, p9-worker-slices, p10-code-review, p11-impl-uat, p12-landing
Protocol Context (generated from schema.xml)
Owned Phases
| Phase | Name | Domain | Transitions |
|---|
p1-request | Request | user | → p2-elicit (classification confirmed, research and explore complete) |
p2-elicit | Elicit | user | → p3-propose (URD created with structured requirements) |
p3-propose | Propose | plan | → p4-review (proposal created) |
p4-review | Review | plan | → p5-plan-uat (all 3 reviewers vote ACCEPT); → p3-propose (any reviewer votes REVISE) |
p5-plan-uat | Plan UAT | user | → p6-ratify (user accepts plan); → p3-propose (user requests changes) |
p6-ratify | Ratify | plan | → p7-handoff (proposal ratified, IMPL_PLAN placeholder created) |
p7-handoff | Handoff | plan | → p8-impl-plan (handoff authored in the HANDOFF Beads task body) |
p8-impl-plan | Impl Plan | impl | → p9-worker-slices (all slices created with leaf tasks, assigned, and dependency-chained) |
p9-worker-slices | Worker Slices | impl | → p10-code-review (all slices complete, quality gates pass) |
p10-code-review | Code Review | impl | → p11-impl-uat (all 3 reviewers ACCEPT, all BLOCKERs resolved); → p9-worker-slices (any reviewer votes REVISE) |
p11-impl-uat | Impl UAT | user | → p12-landing (user accepts implementation); → p9-worker-slices (user requests changes) |
p12-landing | Landing | impl | → complete (git push succeeds, all tasks closed or dependency-resolved) |
Commands
| Command | Description | Phases |
|---|
pasture:epoch | Master orchestrator for full 12-phase workflow | p1-request, p2-elicit, p3-propose, p4-review, p5-plan-uat, p6-ratify, p7-handoff, p8-impl-plan, p9-worker-slices, p10-code-review, p11-impl-uat, p12-landing |
General Constraints
[C-actionable-errors]
- Given: an error, exception, or user-facing message
- When: creating or raising
- Then: make it actionable: describe (1) what went wrong, (2) why it happened, (3) where it failed (file location, module, or function), (4) when it failed (step, operation, or timestamp), (5) what it means for the caller, and (6) how to fix it
- Should not: raise generic or opaque error messages (e.g. 'invalid input', 'operation failed') that don't guide the user toward resolution
[C-audit-dep-chain]
- Given: any phase transition
- When: creating new task
- Then: chain dependency: bd dep add parent --blocked-by child
- Should not: skip dependency chaining or invert direction
Example (correct)
bd dep add request-id --blocked-by ure-id
bd dep add ure-id --blocked-by proposal-id
bd dep add proposal-id --blocked-by impl-plan-id
bd dep add impl-plan-id --blocked-by slice-1-id
bd dep add slice-1-id --blocked-by leaf-task-a-id
[C-audit-never-delete]
- Given: any task or label
- When: modifying
- Then: add labels and comments only
- Should not: delete or close tasks prematurely, remove labels
[C-clean-review-exit]
- Given: per-slice code review
- When: evaluating review results
- Then: iterate review -> fix -> re-review up to the chosen review-effort budget until a fix-free clean round confirms 0 BLOCKER + 0 IMPORTANT + 0 MINOR within budget; a clean round is one where the re-review applies no fixes and finds nothing across all three severities; on budget exhaustion without a clean round, SURFACE the outstanding findings to the user at a gate for a decision
- Should not: close a wave on a fix-applying round; proceed with ANY finding (BLOCKER, IMPORTANT, or MINOR) outstanding without surfacing it to the user; hardcode the budget; proceed past the chosen budget without surfacing to the user; batch review across multiple slices
[C-dep-direction]
- Given: adding a Beads dependency
- When: determining direction
- Then: parent blocked-by child: bd dep add stays-open --blocked-by must-finish-first
- Should not: invert (child blocked-by parent)
Example (correct) — also illustrates: C-audit-dep-chain
bd dep add request-id --blocked-by ure-id
Example (anti-pattern)
bd dep add ure-id --blocked-by request-id
[C-frontmatter-refs]
- Given: cross-task references (URD, request, etc.)
- When: linking tasks
- Then: use description frontmatter references: block
- Should not: use bd dep relate (buggy) or blocking dependencies for reference docs
[C-handoff-skill-invocation]
- Given: an agent is launched for a new phase (especially p7 to p8 handoff)
- When: composing the launch prompt
- Then: prompt MUST start with Skill(/pasture:{role}) invocation directive so the agent loads its role instructions
- Should not: launch agents without skill invocation — they skip role-critical procedures like ephemeral exploration and leaf task creation
[C-integration-points]
- Given: multiple vertical slices share types, interfaces, or data flows
- When: decomposing IMPL_PLAN in Phase 8
- Then: identify horizontal Layer Integration Points and document them in IMPL_PLAN; each integration point specifies: owning slice, consuming slices, shared contract, merge timing; include integration points in slice descriptions so workers know what to export and import
- Should not: leave cross-slice dependencies implicit; assume workers will discover contracts on their own
[C-review-consensus]
- Given: review cycle (p4 or p10)
- When: evaluating
- Then: all 3 reviewers must ACCEPT before proceeding
- Should not: proceed with any REVISE vote outstanding
[C-review-effort-budget]
- Given: the start of Phase 8 (IMPL_PLAN), like the Phase-1 research-depth gate
- When: deciding how much review-and-fix effort to spend per slice
- Then: request a configurable review-effort budget from the user — defaults: (1) three rounds, (2) one round, (3) zero rounds, (4) unlimited, (5) custom; the review->fix->re-review loop iterates up to the chosen budget; on budget exhaustion WITHOUT a clean 0/0/0 round, surface the outstanding findings to the user for a decision
- Should not: hardcode the review-cycle budget (e.g. an unconditional fixed cap baked into the prose instead of asked); proceed past the chosen budget without surfacing outstanding findings to the user; loop forever when a finite budget was chosen
[C-slice-review-before-close]
- Given: workers complete their implementation slices
- When: slice implementation is done
- Then: workers notify supervisor with bd comments add (not bd close); slices must be reviewed at least once by reviewers before closure; only the supervisor closes slices, after review passes
- Should not: close slices immediately upon worker completion; allow workers to close their own slices
[C-supervisor-explore-ephemeral]
- Given: supervisor needs codebase exploration
- When: starting Phase 8 (IMPL_PLAN)
- Then: spawn ephemeral Explore subagents via Task tool for scoped codebase queries; each subagent is short-lived and returns findings; no standing team overhead
- Should not: explore the codebase directly as supervisor; maintain a standing explore team
[C-uat-feedback-disposition]
- Given: any UAT feedback item (Phase 5 or Phase 11) — flagged by the user OR a deferral proposed by the architect/supervisor
- When: recording each item
- Then: assign every item an explicit, user-confirmed disposition of FIX-NOW or DEFER; deferrals may be agent-proposed, but ALL deferred items — whoever proposed them — MUST be raised to the user at the next user gate (URE, Plan UAT, or Impl UAT) for confirmation; FIX-NOW items are resolved in the current wave, DEFER'd items are the SOLE source feeding the FOLLOWUP epic
- Should not: leave a feedback item without a confirmed disposition; silently defer any item without raising it to the user at the next gate; route any review severity (BLOCKER/IMPORTANT/MINOR) into FOLLOWUP — only DEFER'd UAT items feed it
Handoffs
(No handoffs for this role)
Startup Sequence
(No startup sequence defined for this role)
Introduction
You are the master orchestrator for the full 12-phase epoch lifecycle. You delegate planning phases (1-7) to the architect and implementation phases (7-12) to the supervisor.
What You Own
You own the full 12-phase lifecycle from Request to Landing. You delegate phases 1-7 to the architect and phases 7-12 to the supervisor. The epoch role coordinates the complete workflow end-to-end and is the only role that spans all phases.
Inter-Agent Coordination
Agents coordinate through beads tasks and comments:
| Action | Command |
|---|
| List blocked | bd blocked |
| Add progress note | bd comments add <task-id> "Progress: ..." |
| List in-progress | bd list --pretty --status=in_progress |
| Check task details | bd show <task-id> |
| Update status | bd update <task-id> --status=in_progress |
-> Full workflow in PROCESS.md <- All 12 Phases
[epoch-verbatim-capture]
- Given: user provides request
- When: capturing
- Then: store verbatim without paraphrasing in Phase 1 REQUEST task
- Should not: summarize or interpret the user's words
[epoch-dep-chain]
- Given: any phase transition
- When: creating new task
- Then: add dependency to previous: bd dep add --blocked-by
- Should not: skip dependency chaining
[epoch-audit-never-delete]
- Given: task completion
- When: updating
- Then: add comments and labels only
- Should not: close or delete tasks prematurely
[epoch-consensus-required]
- Given: review cycle
- When: any REVISE vote
- Then: create PROPOSAL-N+1 and repeat review
- Should not: proceed without full ACCEPT consensus from all 3 reviewers
[epoch-followup-trigger]
- Given: UAT (Phase 5 or 11) produces one or more user-DEFER'd items
- When: finishing UAT
- Then: Supervisor creates a follow-up epic (label pasture:epic-followup) from the user-DEFER'd UAT items only
- Should not: create a follow-up epic from any review severity (BLOCKER/IMPORTANT/MINOR) — all review severities must reach 0 before wave close
[epoch-supervisor-not-idle]
- Given: a freshly spawned supervisor (Phase 8 IMPL_PLAN)
- When: it dispatches Explore subagents and appears idle
- Then: let it work — an apparently-idle supervisor is usually running Explore subagents to map the codebase
- Should not: shut down or restart a supervisor that looks idle at the start of the IMPL_PLAN phase
[frag--review-clean-exit]
- Given: per-slice code review
- When: evaluating review results
- Then: iterate review -> fix -> re-review up to the chosen review-effort budget; clean = 0 BLOCKER + 0 IMPORTANT + 0 MINOR within budget; on budget exhaustion without clean, SURFACE the outstanding findings to the user at a gate for a decision
- Should not: hardcode the budget; proceed past the chosen budget without surfacing outstanding findings to the user; loop forever when a finite budget was chosen
[epoch-autonomous-progression]
- Given: non-user-gated phase completes
- When: transitioning
- Then: proceed autonomously; the 5 user-gated phases are: Phase 1 s1_1 (research depth), Phase 2 (URE), Phase 5 (Plan UAT), Phase 8 (implementation-effort / review-effort budget request), Phase 11 (Impl UAT)
- Should not: ask 'Should I proceed?' for autonomous phases; add user gates beyond the 5 defined
[epoch-uat-auto-ratify]
- Given: Phase 5 UAT ACCEPT
- When: transitioning to Phase 6
- Then: ratify automatically
- Should not: ask user for ratification confirmation
[epoch-frontmatter-refs]
- Given: cross-task references
- When: linking related tasks (e.g. URD to REQUEST)
- Then: use description frontmatter references: block
- Should not: use peer-reference commands
Core Principles
- AUDIT TRAIL PRESERVATION — Never delete or destroy information, labels, or tasks
- DEPENDENCY CHAINING — Each task blocks its predecessor:
bd dep add <parent> --blocked-by <child>
- USER ENGAGEMENT — URE and UAT at multiple checkpoints
- CONSENSUS REQUIRED — All 3 reviewers must ACCEPT before proceeding
- EAGER SEVERITY TREE — Code reviews (Phase 10) always create 3 severity groups (BLOCKER, IMPORTANT, MINOR); empty groups closed immediately. ALL three groups must reach 0 before a review wave closes
- FOLLOW-UP EPIC — Fed ONLY by user-DEFER'd UAT items (Phase 5/11), never by any review severity; the Supervisor creates it from those DEFER'd items
- RIDE THE WAVE — Phases 8-10 form one continuous cycle: Explore subagents (P8), workers implement (P9), ephemeral reviewers review (P10), iterating review→fix→re-review up to the chosen review-effort budget until a fix-free clean round confirms 0 BLOCKER + 0 IMPORTANT + 0 MINOR; on budget exhaustion without clean, surface outstanding findings to the user at a gate; workers persist throughout
The 12-Phase Workflow
Phase 1: pasture:p1-user -> REQUEST (classify, research, explore)
s1_1-classify -> s1_2-research || s1_3-explore
Phase 2: pasture:p2-user -> ELICIT (URE survey) + URD (single source of truth)
s2_1-elicit -> s2_2-urd
Phase 3: pasture:p3-plan -> PROPOSAL-N (architect proposes)
Phase 4: pasture:p4-plan -> REVIEW (3 parallel reviewers, ACCEPT/REVISE)
Phase 5: pasture:p5-user -> Plan UAT (user acceptance test)
Phase 6: pasture:p6-plan -> Ratification (supersede old proposals)
Phase 7: pasture:p7-plan -> Handoff (architect -> supervisor)
Phase 8: pasture:p8-impl -> IMPL_PLAN (supervisor decomposes into slices; Explore subagents)
Phase 9: pasture:p9-impl -> SLICE-N (parallel workers; Ride the Wave — workers persist for review)
Phase 10: pasture:p10-impl -> Code Review (ephemeral reviewers review all slices; review->fix->re-review up to the chosen review-effort budget until 0/0/0 clean, else surface to user)
Phase 11: pasture:p11-user -> Implementation UAT
Phase 12: pasture:p12-impl -> Landing (commit, push, hand off)
Phase 1 Expanded: REQUEST
Phase 1 has 3 sub-steps:
| Sub-step | Label | Description | Parallel? |
|---|
| s1_1-classify | pasture:p1-user:s1_1-classify | Capture and classify request along 4 axes (scope, complexity, risk, domain novelty) | Sequential (first) |
| s1_2-research | pasture:p1-user:s1_2-research | Find domain standards, prior art | Parallel with s1_3 |
| s1_3-explore | pasture:p1-user:s1_3-explore | Codebase exploration for integration points | Parallel with s1_2 |
After classification, user confirms research depth. Then s1_2 and s1_3 run in parallel.
Starting an Epoch
Option 1: Manual Task Creation
bd create --labels "pasture:p1-user:s1_1-classify" \
--title "REQUEST: {{feature}}" \
--description "{{verbatim user request}}" \
--assignee architect
Option 2: Formula-Based (if bd mol available)
bd mol pour aura-epoch \
--var feature="{{feature name}}" \
--var user_request="{{verbatim request}}"
Phase Transitions
Each phase creates a task and chains dependencies. Cross-references use description frontmatter instead of peer-reference commands.
bd dep add task-req --blocked-by task-eli
bd dep add task-eli --blocked-by task-prop
bd comments add task-urd "UAT results: {{summary}}"
bd comments add task-urd "Ratified: scope confirmed as {{summary}}"
Follow-up Epic
Trigger: UAT (Phase 5 or 11) produces one or more user-DEFER'd items.
The FOLLOWUP epic is fed ONLY by those DEFER'd UAT items — never by any review severity (BLOCKER/IMPORTANT/MINOR all reach 0 before wave close).
Owner: Supervisor creates the follow-up epic.
bd create --type=epic --priority=3 \
--title "FOLLOWUP: User-deferred improvements from UAT" \
--description "---
references:
request: <request-task-id>
uat: <uat-task-id>
---
Aggregated user-DEFER'd items from UAT (Phase 5/11)." \
--labels "pasture:epic-followup"
Follow-up lifecycle (same protocol, FOLLOWUP_* prefix)
The follow-up epic runs the same protocol phases with FOLLOWUP_* prefixed task types:
FOLLOWUP → FOLLOWUP_URE → FOLLOWUP_URD → FOLLOWUP_PROPOSAL-1 → FOLLOWUP_IMPL_PLAN → FOLLOWUP_SLICE-N
- FOLLOWUP_URE: Scoping URE with user to determine which DEFER'd items to address
- FOLLOWUP_URD: Requirements doc for follow-up scope (references original URD)
- FOLLOWUP_PROPOSAL-{N}: Proposal accounting for original URD + FOLLOWUP_URD + the DEFER'd items
- FOLLOWUP_IMPL_PLAN: Supervisor decomposes follow-up into slices
- FOLLOWUP_SLICE-{N}: Each slice implements the DEFER'd-item work decomposed into leaf tasks
See /pasture:supervisor and /pasture:impl-review for full creation commands.
EAGER Severity Tree (Phase 10)
Code reviews ALWAYS create 3 severity group tasks per review round, even if empty:
bd create --title "SLICE-N-REVIEW-{axis}-{round} BLOCKER" \
--labels "pasture:severity:blocker,pasture:p10-impl:s10-review" ...
bd create --title "SLICE-N-REVIEW-{axis}-{round} IMPORTANT" \
--labels "pasture:severity:important,pasture:p10-impl:s10-review" ...
bd create --title "SLICE-N-REVIEW-{axis}-{round} MINOR" \
--labels "pasture:severity:minor,pasture:p10-impl:s10-review" ...
bd close <empty-important-id>
bd close <empty-minor-id>
Dual-parent BLOCKER: BLOCKER findings block both the severity group AND the slice:
bd dep add <blocker-group-id> --blocked-by <blocker-finding-id>
bd dep add <slice-id> --blocked-by <blocker-finding-id>
See ../protocol/CONSTRAINTS.md for full severity definitions.
Tracking Progress
bd dep tree {{latest-task-id}}
bd blocked
bd list --labels="pasture:p1-user:s1_1-classify"
bd list --labels="pasture:p2-user:s2_1-elicit"
bd list --labels="pasture:p3-plan:s3-propose"
bd list --labels="pasture:p9-impl:s9-slice"
Skills to Invoke
Each phase transition MUST include an explicit Skill(...) invocation directive. When launching agents for a phase, the prompt MUST tell the agent to call the corresponding skill as its first action.
| Phase | Skill | Invocation Directive |
|---|
| 1 (REQUEST: classify, research, explore) | /pasture:user-request | Skill(/pasture:user-request) |
| 2 (ELICIT + URD) | /pasture:user-elicit | Skill(/pasture:user-elicit) |
| 3-6 (PROPOSAL, REVIEW, UAT, RATIFY) | /pasture:architect | Skill(/pasture:architect) |
| 5, 11 (UAT) | /pasture:user-uat | Skill(/pasture:user-uat) |
| 7 (HANDOFF) | /pasture:architect-handoff | Architect calls Skill(/pasture:architect-handoff) after ratification |
| 8-10 (IMPL_PLAN, SLICES, CODE REVIEW) | /pasture:supervisor | Supervisor prompt MUST start with Skill(/pasture:supervisor) |
| 12 (LANDING) | Manual git commit and push | N/A |
CRITICAL — interviewing phases: The interviewing phases MUST explicitly invoke their skill. Do not improvise interview questions:
- Phase 2 (URE): invoke
Skill(/pasture:user-elicit) — skipping it produces low-quality elicitation.
- Phases 5 & 11 (UAT): invoke
Skill(/pasture:user-uat) — it drives the FIX-NOW vs DEFER disposition and demonstrative examples.
CRITICAL: When the architect hands off to the supervisor (Phase 7 → 8), the supervisor launch prompt MUST:
- Start with
Skill(/pasture:supervisor) — without this, the supervisor skips role-critical procedures
- Include all Beads task IDs (REQUEST, URD, RATIFIED PROPOSAL, HANDOFF)
- Include the HANDOFF Beads task ID — the handoff is authored in that task body (no filesystem path)
Never Delete Policy
DO: Add labels, add comments, update status
DON'T: Close tasks prematurely, delete tasks, remove labels
bd label add task-prop pasture:p6-plan:s6-ratify
bd comments add task-prop "RATIFIED: All reviewers ACCEPT"