mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-01 15:03:57 +08:00
- 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.
252 lines
8.7 KiB
Markdown
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.
|