Files
Claude-Code-Workflow/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md
catlog22 dd72e95e4d feat: add templates for epics, product brief, and requirements PRD
- 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.
2026-02-27 13:27:27 +08:00

252 lines
8.7 KiB
Markdown

# 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**:
```javascript
{
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
```javascript
// 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](04-pipeline-coordination.md) with the ready task IDs.