- Created a new directory structure for epics and stories with templates for individual epics and an index file. - Added a product brief template for generating product brief documents in Phase 2. - Introduced a requirements PRD template for generating a Product Requirements Document as a directory of individual requirement files in Phase 3. feat: implement V2PipelineTab component for Memory V2 management - Developed the V2PipelineTab component to manage extraction and consolidation processes. - Included ExtractionCard and ConsolidationCard components to handle respective functionalities. - Added JobsList component to display job statuses and allow filtering by job kind. feat: create hooks for Memory V2 pipeline - Implemented custom hooks for managing extraction and consolidation statuses, as well as job listings. - Added mutation hooks to trigger extraction and consolidation processes with automatic query invalidation on success.
8.7 KiB
Phase 3: Task Chain Creation
COMPACT PROTECTION: This is an execution document. After context compression, phase instructions become summaries only. You MUST immediately re-read this file via
Read("~/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md")before continuing. Never execute based on summaries.
Objective
Build the full pipeline task chain based on the selected mode, write all tasks to the state file (team-session.json). Each task entry contains its ID, owner agent, dependencies, description, and inline discuss metadata. No agents are spawned in this phase.
Input
| Input | Source | Required |
|---|---|---|
| sessionId | Phase 2 output | Yes |
| sessionDir | Phase 2 output | Yes |
| state | Phase 2 output (team-session.json) | Yes |
| state.mode | Pipeline mode | Yes |
| state.scope | Project scope | Yes |
| state.spec_path | Spec file path (impl-only) | Conditional |
Execution Steps
Step 3.1: Mode-to-Pipeline Routing
Select the pipeline definition based on mode.
| Mode | Pipeline | First Task | Checkpoint |
|---|---|---|---|
| spec-only | Spec pipeline (6 tasks) | RESEARCH-001 | None |
| impl-only | Impl pipeline (4 tasks) | PLAN-001 | None |
| fe-only | FE pipeline (3 tasks) | PLAN-001 | None |
| fullstack | Fullstack pipeline (6 tasks) | PLAN-001 | None |
| full-lifecycle | Spec (6) + Impl (4) | RESEARCH-001 | After QUALITY-001 |
| full-lifecycle-fe | Spec (6) + Fullstack (6) | RESEARCH-001 | After QUALITY-001 |
Step 3.2: Build Task Entries
For each task in the selected pipeline, create a task entry object.
Task entry schema:
{
id: "<TASK-ID>",
owner: "<agent-role>",
status: "pending",
blocked_by: ["<dependency-task-id>", ...],
description: "<task description>",
inline_discuss: "<DISCUSS-NNN or null>",
agent_id: null,
artifact_path: null,
discuss_verdict: null,
discuss_severity: null,
started_at: null,
completed_at: null,
revision_of: null,
revision_count: 0,
is_checkpoint_after: false
}
Task description template (every task gets this format):
<task-description-from-pipeline-table>
Session: <session-dir>
Scope: <scope>
InlineDiscuss: <DISCUSS-NNN or none>
Step 3.3: Spec Pipeline Tasks
Used by: spec-only, full-lifecycle, full-lifecycle-fe
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|---|---|---|---|---|---|
| 1 | RESEARCH-001 | analyst | (none) | Seed analysis and context gathering | DISCUSS-001 |
| 2 | DRAFT-001 | writer | RESEARCH-001 | Generate Product Brief | DISCUSS-002 |
| 3 | DRAFT-002 | writer | DRAFT-001 | Generate Requirements/PRD | DISCUSS-003 |
| 4 | DRAFT-003 | writer | DRAFT-002 | Generate Architecture Document | DISCUSS-004 |
| 5 | DRAFT-004 | writer | DRAFT-003 | Generate Epics and Stories | DISCUSS-005 |
| 6 | QUALITY-001 | reviewer | DRAFT-004 | 5-dimension spec quality + sign-off | DISCUSS-006 |
QUALITY-001 has is_checkpoint_after: true for full-lifecycle and full-lifecycle-fe modes (signals orchestrator to pause for user confirmation before impl phase).
Step 3.4: Impl Pipeline Tasks
Used by: impl-only, full-lifecycle (PLAN-001 blockedBy QUALITY-001)
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|---|---|---|---|---|---|
| 1 | PLAN-001 | planner | (none) | Multi-angle exploration and planning | none |
| 2 | IMPL-001 | executor | PLAN-001 | Code implementation | none |
| 3 | TEST-001 | tester | IMPL-001 | Test-fix cycles | none |
| 4 | REVIEW-001 | reviewer | IMPL-001 | 4-dimension code review | none |
For full-lifecycle mode: PLAN-001 blocked_by includes QUALITY-001.
TEST-001 and REVIEW-001 both depend on IMPL-001 and can run in parallel.
Step 3.5: FE Pipeline Tasks
Used by: fe-only
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|---|---|---|---|---|---|
| 1 | PLAN-001 | planner | (none) | Planning (frontend focus) | none |
| 2 | DEV-FE-001 | fe-developer | PLAN-001 | Frontend implementation | none |
| 3 | QA-FE-001 | fe-qa | DEV-FE-001 | 5-dimension frontend QA | none |
GC loop: if QA-FE-001 verdict is NEEDS_FIX, the orchestrator dynamically creates DEV-FE-002 and QA-FE-002 during Phase 4. These are NOT pre-created here.
Step 3.6: Fullstack Pipeline Tasks
Used by: fullstack, full-lifecycle-fe (PLAN-001 blockedBy QUALITY-001)
| # | ID | Owner | BlockedBy | Description | InlineDiscuss |
|---|---|---|---|---|---|
| 1 | PLAN-001 | planner | (none) | Fullstack planning | none |
| 2 | IMPL-001 | executor | PLAN-001 | Backend implementation | none |
| 3 | DEV-FE-001 | fe-developer | PLAN-001 | Frontend implementation | none |
| 4 | TEST-001 | tester | IMPL-001 | Backend test-fix cycles | none |
| 5 | QA-FE-001 | fe-qa | DEV-FE-001 | Frontend QA | none |
| 6 | REVIEW-001 | reviewer | TEST-001, QA-FE-001 | Full code review | none |
IMPL-001 and DEV-FE-001 run in parallel (both depend only on PLAN-001). TEST-001 and QA-FE-001 run in parallel (each depends on its respective impl). REVIEW-001 is a sync barrier -- depends on both TEST-001 and QA-FE-001.
For full-lifecycle-fe: PLAN-001 blocked_by includes QUALITY-001.
Step 3.7: Composite Mode Assembly
For composite modes, concatenate pipelines and adjust cross-pipeline dependencies.
full-lifecycle = Spec (6) + Impl (4):
Spec pipeline tasks (Step 3.3)
+
Impl pipeline tasks (Step 3.4)
with: PLAN-001.blocked_by = ["QUALITY-001"]
with: QUALITY-001.is_checkpoint_after = true
full-lifecycle-fe = Spec (6) + Fullstack (6):
Spec pipeline tasks (Step 3.3)
+
Fullstack pipeline tasks (Step 3.6)
with: PLAN-001.blocked_by = ["QUALITY-001"]
with: QUALITY-001.is_checkpoint_after = true
Step 3.8: Impl-Only Pre-Check
If mode is impl-only, verify specification exists:
state.spec_path is set?
+- YES -> read spec file -> include path in PLAN-001 description
+- NO -> error: "impl-only requires existing spec"
Add to PLAN-001 description: Spec: <spec-path>
Step 3.9: Write Pipeline to State File
// Read current state
const state = JSON.parse(Read("<session-dir>/team-session.json"))
// Set pipeline
state.pipeline = taskEntries // array of task entry objects from steps above
state.tasks_total = taskEntries.length
state.updated_at = new Date().toISOString()
// Write back
Write("<session-dir>/team-session.json",
JSON.stringify(state, null, 2))
Step 3.10: Validation
Before proceeding, validate the constructed pipeline.
| Check | Criteria | On Failure |
|---|---|---|
| Task count | Matches expected count for mode | Error with mismatch details |
| Dependencies | Every blocked_by reference exists as a task ID in the pipeline | Error with dangling reference |
| No cycles | Topological sort succeeds (no circular dependencies) | Error with cycle details |
| Owner assignment | Each task owner matches a valid agent from Agent Registry | Error with unknown agent |
| Unique IDs | No duplicate task IDs | Error with duplicate ID |
| Inline discuss | Spec tasks have correct DISCUSS-NNN assignment per round config | Warning if mismatch |
| Session reference | Every task description contains Session: <session-dir> |
Fix missing references |
Step 3.11: Output Confirmation
[orchestrator] Phase 3: Task chain created
Mode: <mode>
Tasks: <count>
Pipeline:
<task-id> (<owner>) [blocked_by: <deps>]
<task-id> (<owner>) [blocked_by: <deps>]
...
First ready task(s): <task-ids with empty blocked_by>
Output
| Output | Type | Destination |
|---|---|---|
| state (updated) | Object | Written to team-session.json |
| state.pipeline | Array | Task chain with all entries |
| Ready task IDs | Array | Tasks with empty blocked_by (passed to Phase 4) |
Success Criteria
- Pipeline array written to state file with correct task count
- All dependencies are valid (no dangling, no cycles)
- Each task has owner, description, blocked_by, inline_discuss
- Composite modes have correct cross-pipeline dependencies
- Spec tasks have inline discuss metadata
- At least one task has empty blocked_by (pipeline can start)
Error Handling
| Error | Resolution |
|---|---|
| Unknown mode | Should not happen (Phase 1 validates), fail with supported mode list |
| Missing spec for impl-only | Error, suggest spec-only or full-lifecycle |
| Dependency cycle detected | Report cycle, halt pipeline creation |
| State file read/write error | Report error, suggest re-initialization |
| Duplicate task ID | Skip duplicate, log warning |
Next Phase
Proceed to Phase 4: Pipeline Coordination with the ready task IDs.