|
2 | 2 | sidebar_position: 3 |
3 | 3 | title: Spec-driven Development |
4 | 4 | description: Use Spec-driven Development (SDD) with Backlog.md to define tasks as structured markdown specs, then let the LLM agent implement them autonomously within your IDE. |
5 | | -keywords: [devoxxgenie, spec-driven development, sdd, backlog.md, task specs, agent mode, acceptance criteria, milestones] |
| 5 | +keywords: [devoxxgenie, spec-driven development, sdd, backlog.md, task specs, agent mode, acceptance criteria, milestones, parallel execution, cli runners] |
6 | 6 | image: /img/devoxxgenie-social-card.jpg |
7 | 7 | --- |
8 | 8 |
|
@@ -454,9 +454,69 @@ For running multiple tasks sequentially with dependency ordering, progress track |
454 | 454 |
|
455 | 455 | Both the built-in LLM provider and external [CLI Runners](cli-runners.md) support batch execution. |
456 | 456 |
|
| 457 | +## Parallel Task Execution with CLI Runners |
| 458 | + |
| 459 | +When using [CLI Runners](cli-runners.md), you can run **independent tasks in parallel** — multiple CLI processes execute concurrently, each working on a separate task. This can dramatically speed up batch runs when your backlog contains tasks that don't depend on each other. |
| 460 | + |
| 461 | + |
| 462 | + |
| 463 | +### How It Works |
| 464 | + |
| 465 | +The runner uses the same dependency graph as sequential execution (topological sort via Kahn's algorithm), but instead of executing tasks one at a time, it groups them into **layers**: |
| 466 | + |
| 467 | +- **Layer 0**: Tasks with no dependencies — all run in parallel |
| 468 | +- **Layer 1**: Tasks whose dependencies are all in Layer 0 — run in parallel after Layer 0 completes |
| 469 | +- **Layer 2**: Tasks whose dependencies are all satisfied by Layers 0–1 — and so on |
| 470 | + |
| 471 | +Within each layer, all tasks are independent of each other and execute concurrently as separate CLI processes. |
| 472 | + |
| 473 | +``` |
| 474 | +Example: Diamond dependency graph |
| 475 | + |
| 476 | + TASK-1 ← Layer 0 (runs alone) |
| 477 | + / \ |
| 478 | + TASK-2 TASK-3 ← Layer 1 (run in parallel) |
| 479 | + \ / |
| 480 | + TASK-4 ← Layer 2 (runs after both complete) |
| 481 | +``` |
| 482 | +
|
| 483 | +### Running Tasks in Parallel |
| 484 | +
|
| 485 | +The **DevoxxGenie Specs** toolbar provides two dedicated parallel run buttons (the green parallel-lines icons): |
| 486 | +
|
| 487 | +- **Run Selected (Parallel)** — runs only the checked tasks in parallel |
| 488 | +- **Run All (Parallel)** — runs all "To Do" tasks in parallel |
| 489 | +
|
| 490 | +These buttons are enabled when a CLI Runner is selected as the execution mode. Each CLI process streams its output into the **Run** tool window console, with output lines prefixed by the task ID (e.g., `[TASK-3] ...`) so you can distinguish which task produced which output. |
| 491 | +
|
| 492 | +### Configuration |
| 493 | +
|
| 494 | +Open **Settings** > **Tools** > **DevoxxGenie** > **Spec Driven Dev** to configure parallel execution: |
| 495 | +
|
| 496 | +| Setting | Description | Default | |
| 497 | +|---------|-------------|---------| |
| 498 | +| **Execution mode** | Choose between Sequential and Parallel | Sequential | |
| 499 | +| **Max concurrency** | Maximum number of CLI processes running at the same time (1–8) | 4 | |
| 500 | +
|
| 501 | +The max concurrency setting caps how many tasks within a single layer can run simultaneously. If a layer contains more tasks than the concurrency limit, excess tasks wait for a slot to open up. |
| 502 | +
|
| 503 | +:::note |
| 504 | +Parallel execution is designed for **CLI Runners** (Claude Code, Copilot, Codex, Gemini, Kimi). When using the built-in LLM provider, the message bus is single-threaded so tasks still execute sequentially regardless of the execution mode setting. |
| 505 | +::: |
| 506 | +
|
| 507 | +### When to Use Parallel Execution |
| 508 | +
|
| 509 | +Parallel execution works best when: |
| 510 | +
|
| 511 | +- You have **multiple independent tasks** that don't depend on each other's output |
| 512 | +- You're using **CLI Runners** — each task gets its own CLI process |
| 513 | +- Your tasks are **self-contained** — they modify different files or different parts of the codebase |
| 514 | +
|
| 515 | +Be cautious with parallel execution when tasks might modify the same files, as concurrent edits can lead to merge conflicts. Use `dependencies` in your task frontmatter to enforce ordering when tasks touch overlapping code. |
| 516 | +
|
457 | 517 | ## CLI Runners |
458 | 518 |
|
459 | | -Instead of using the built-in LLM provider, you can execute spec tasks via **external CLI tools** — such as Claude Code, GitHub Copilot CLI, OpenAI Codex CLI, or Google Gemini CLI. See the dedicated [CLI Runners](cli-runners.md) page for setup instructions, supported tools, and configuration details. |
| 519 | +Instead of using the built-in LLM provider, you can execute spec tasks via **external CLI tools** — such as Claude Code, GitHub Copilot CLI, OpenAI Codex CLI, Google Gemini CLI, or Kimi CLI. See the dedicated [CLI Runners](cli-runners.md) page for setup instructions, supported tools, and configuration details. |
460 | 520 |
|
461 | 521 | ## Tips and Best Practices |
462 | 522 |
|
|
0 commit comments