parallel-implement-feature

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Parallel Implement Feature

并行实现功能

Implement an approved OpenSpec proposal using DAG-scheduled multi-agent parallel execution. Each work package runs in its own worktree with explicit scope and lock claims. Degrades to linear-implement-feature behavior when the coordinator is unavailable.
使用DAG调度的多Agent并行执行已获批的OpenSpec提案。每个工作包在独立的工作树中运行,具有明确的范围和锁声明。当协调器不可用时,会降级为线性实现功能的行为。

Arguments

参数

$ARGUMENTS
- OpenSpec change-id (required)
$ARGUMENTS
- OpenSpec变更ID(必填)

Prerequisites

前置条件

  • Approved OpenSpec proposal with
    work-packages.yaml
    at
    openspec/changes/<change-id>/
  • Contracts generated at
    openspec/changes/<change-id>/contracts/
  • Coordinator available with required capabilities
  • 已获批的OpenSpec提案,且在
    openspec/changes/<change-id>/
    路径下存在
    work-packages.yaml
  • 已在
    openspec/changes/<change-id>/contracts/
    路径下生成契约
  • 协调器可用且具备所需能力

Coordinator Capability Check

协调器能力检查

At skill start, detect coordinator capabilities:
REQUIRED (hard failure without coordinator):
  CAN_DISCOVER  — discover_agents() for agent health monitoring
  CAN_QUEUE_WORK — submit_work()/get_work()/complete_work()/get_task() for DAG dispatch
  CAN_LOCK — acquire_lock()/release_lock()/check_locks() for resource claims

REQUIRED (safety):
  CAN_GUARDRAILS — check_guardrails() for destructive operation detection

ENRICHING (degrades gracefully):
  CAN_HANDOFF — write_handoff() for orchestrator resumability
  CAN_MEMORY — remember()/recall() for procedural memories
  CAN_POLICY — check_policy() for authorization decisions
  CAN_AUDIT — query_audit() for execution summary generation
If required capabilities are unavailable, degrade to
/linear-implement-feature
behavior and emit a warning.
技能启动时,检测协调器的能力:
REQUIRED(无协调器则直接失败):
  CAN_DISCOVER  — discover_agents() 用于Agent健康监控
  CAN_QUEUE_WORK — submit_work()/get_work()/complete_work()/get_task() 用于DAG调度
  CAN_LOCK — acquire_lock()/release_lock()/check_locks() 用于资源声明

REQUIRED(安全相关):
  CAN_GUARDRAILS — check_guardrails() 用于检测破坏性操作

ENRICHING(可优雅降级):
  CAN_HANDOFF — write_handoff() 用于编排器可恢复性
  CAN_MEMORY — remember()/recall() 用于过程记忆
  CAN_POLICY — check_policy() 用于授权决策
  CAN_AUDIT — query_audit() 用于生成执行摘要
若所需能力不可用,则降级为
/linear-implement-feature
行为并发出警告。

Steps

步骤

Phase A: Feature-Level Preflight (Orchestrator)

阶段A:功能级预检(编排器)

A1. Parse and validate work-packages.yaml
    - YAML parse + validate against work-packages.schema.json
    - Lock key canonicalization check
    - File scope non-overlap for parallel packages
    - Logical lock non-overlap for parallel packages

A2. Validate contracts exist
    - Every file in contracts.openapi.files exists on disk
    - Primary OpenAPI file parses without errors

A3. Compute DAG order
    - Build directed graph from packages[].depends_on
    - Detect cycles (validation error if found)
    - Topological sort for execution order

A4. Submit work queue tasks
    - For each package in topological order:
      - Resolve depends_on package_ids to task_ids
      - Build input_data envelope with context slice
      - submit_work() with task_type, description, priority, depends_on

A5. Begin monitoring loop
    - Poll discover_agents() for agent health
    - Poll get_task(task_id) for each in-flight package
    - On each completion: dispatch newly unblocked packages
A1. 解析并验证work-packages.yaml
    - YAML解析 + 依据work-packages.schema.json进行验证
    - 锁键规范化检查
    - 并行包的文件范围无重叠
    - 并行包的逻辑锁无重叠

A2. 验证契约存在
    - contracts.openapi.files中的每个文件都存在于磁盘上
    - 主OpenAPI文件可无错误解析

A3. 计算DAG顺序
    - 基于packages[].depends_on构建有向图
    - 检测循环(若发现则视为验证错误)
    - 拓扑排序确定执行顺序

A4. 提交工作队列任务
    - 对拓扑顺序中的每个包:
      - 将depends_on的package_id解析为task_id
      - 构建包含上下文切片的input_data信封
      - 调用submit_work(),传入任务类型、描述、优先级、依赖项

A5. 启动监控循环
    - 轮询discover_agents()获取Agent健康状态
    - 轮询每个进行中包的get_task(task_id)
    - 每个包完成时:调度新解锁的包

Phase B: Package Execution Protocol (Every Worker Agent)

阶段B:包执行协议(每个Worker Agent)

Each worker agent claiming a package via
get_work
MUST execute steps B1-B11 from the execution protocol (see design.md section 2.4).
Key steps: session registration, pause-lock check, deadlock-safe lock acquisition, code generation within scope, deterministic scope check via git diff, verification steps, structured result publication.
每个通过
get_work
获取包的Worker Agent必须执行执行协议中的步骤B1-B11(详见design.md第2.4节)。
关键步骤:会话注册、暂停锁检查、死锁安全锁获取、范围内代码生成、通过git diff进行确定性范围检查、验证步骤、结构化结果发布。

Phase C: Review + Integration Sequencing

阶段C:评审与集成排序

C1. Result validation (on each package completion)
    - Validate result against work-queue-result.schema.json
    - Verify contracts_revision and plan_revision match

C2. Escalation processing
    - Execute escalation protocol for any escalations

C3. Per-package review
    - Dispatch /parallel-review-implementation on each package diff

C4. Integration gate
    - Wait for all packages COMPLETED and reviewed

C5. Integration merge (wp-integration package)
    - Merge all worktrees into feature branch
    - Run full test suite and cross-package contract verification

C6. Execution summary generation
    - DAG timeline, contract compliance, review findings
C1. 结果验证(每个包完成时)
    - 依据work-queue-result.schema.json验证结果
    - 验证contracts_revision和plan_revision匹配

C2. 升级处理
    - 对任何升级情况执行升级协议

C3. 逐包评审
    - 针对每个包的差异调度/parallel-review-implementation

C4. 集成网关
    - 等待所有包完成并通过评审

C5. 集成合并(wp-integration包)
    - 将所有工作树合并到功能分支
    - 运行完整测试套件和跨包契约验证

C6. 生成执行摘要
    - DAG时间线、契约合规性、评审结果

Final Steps

最终步骤

After integration:
  1. Run quality checks (pytest, mypy, ruff, openspec validate)
  2. Create PR with execution summary attached
  3. Write handoff if CAN_HANDOFF=true
集成完成后:
  1. 运行质量检查(pytest, mypy, ruff, openspec validate)
  2. 创建包含执行摘要的PR
  3. 若CAN_HANDOFF=true,则写入切换信息

Output

输出

  • Feature branch:
    openspec/<change-id>
  • All tests passing
  • PR created with execution summary
  • 功能分支:
    openspec/<change-id>
  • 所有测试通过
  • 创建包含执行摘要的PR

Next Step

下一步

After PR is approved:
/parallel-cleanup-feature <change-id>
PR获批后:
/parallel-cleanup-feature <change-id>