From ad48cdfc571045246de8911b85408daf5e3edd34 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 09:22:20 +0200 Subject: [PATCH 01/27] refactor(framework): move SDLC orchestration --- .claude-plugin/marketplace.json | 6 ++-- README.md | 12 +++---- UPGRADE.md | 6 ++-- aidd_docs/README.md | 13 ++++---- aidd_docs/memory/codebase-map.md | 3 +- docs/CATALOG.md | 12 +++---- .../skills/00-onboard/references/flow.md | 2 +- .../00-onboard/references/order/idle-menu.md | 2 +- .../skills/00-onboard/references/run/tiers.md | 2 +- .../12-cook/assets/recipes/ship-a-feature.md | 2 +- .../12-cook/assets/recipes/start-a-project.md | 2 +- plugins/aidd-dev/.claude-plugin/plugin.json | 3 +- plugins/aidd-dev/CATALOG.md | 12 ------- plugins/aidd-dev/README.md | 5 ++- plugins/aidd-dev/skills/00-sdlc/SKILL.md | 31 ----------------- .../.claude-plugin/plugin.json | 6 ++-- plugins/aidd-orchestrator/CATALOG.md | 12 +++++++ plugins/aidd-orchestrator/README.md | 10 ++++-- .../skills/00-async-dev/SKILL.md | 2 +- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 33 +++++++++++++++++++ .../skills/01-sdlc}/actions/01-spec.md | 0 .../skills/01-sdlc}/actions/02-plan.md | 7 ++-- .../skills/01-sdlc}/actions/03-implement.md | 13 ++++---- .../skills/01-sdlc}/actions/04-review.md | 13 ++++---- .../skills/01-sdlc}/actions/05-ship.md | 0 scripts/sync-skill-argument-hints.mjs | 7 +++- 26 files changed, 116 insertions(+), 100 deletions(-) delete mode 100644 plugins/aidd-dev/skills/00-sdlc/SKILL.md create mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md rename plugins/{aidd-dev/skills/00-sdlc => aidd-orchestrator/skills/01-sdlc}/actions/01-spec.md (100%) rename plugins/{aidd-dev/skills/00-sdlc => aidd-orchestrator/skills/01-sdlc}/actions/02-plan.md (58%) rename plugins/{aidd-dev/skills/00-sdlc => aidd-orchestrator/skills/01-sdlc}/actions/03-implement.md (56%) rename plugins/{aidd-dev/skills/00-sdlc => aidd-orchestrator/skills/01-sdlc}/actions/04-review.md (62%) rename plugins/{aidd-dev/skills/00-sdlc => aidd-orchestrator/skills/01-sdlc}/actions/05-ship.md (100%) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index f76db6599..01dc64c14 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -17,7 +17,7 @@ { "name": "aidd-dev", "source": "./plugins/aidd-dev", - "description": "Code transformation: Dev SDLC orchestrator (code-shipping pipeline), plan, assert, audit, review, test, refactor, debug, for-sure. Hosts engineering agents.", + "description": "Code transformation: plan, implement, assert, audit, review, test, refactor, debug, for-sure. Hosts engineering agents.", "strict": true, "recommended": true }, @@ -38,9 +38,9 @@ { "name": "aidd-orchestrator", "source": "./plugins/aidd-orchestrator", - "description": "Async development orchestration: turn ready issues into pull requests, then iterate on review feedback until a human takes over.", + "description": "Orchestration: synchronous SDLC code-shipping pipeline and async issue-to-PR automation.", "strict": true, - "recommended": false + "recommended": true }, { "name": "aidd-refine", diff --git a/README.md b/README.md index cfafe29fb..f07ae4800 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ The **AI-Driven Dev Framework** installs a working SDLC (Software Development Life Cycle) into your AI coding tool — **skills, agents, commands, rules** — that turns a rough idea into a reviewed, shipped pull request: ```text -/aidd-dev:00-sdlc "add rate limiting to the /login endpoint" +/aidd-orchestrator:01-sdlc "add rate limiting to the /login endpoint" → spec → plan → implement → review → ship (commit + PR opened) ``` @@ -183,7 +183,7 @@ Three ways in — pick one: | --- | --- | --- | | 🧭 **Guided onboarding** | `/aidd-context:00-onboard` | First time, or unsure what to run — it inspects the project and routes you. | | 🧠 **Project memory** | `/aidd-context:02-project-memory` | Build the project memory bank by hand. | -| ⚙️ **Feature flow** | `/aidd-dev:00-sdlc` | Ship a feature end to end (plan → implement → review → PR). | +| ⚙️ **Feature flow** | `/aidd-orchestrator:01-sdlc` | Ship a feature end to end (plan → implement → review → PR). | The full loop, and how onboarding sets it up: @@ -229,9 +229,9 @@ Project init, memory bank, context-artifact generation, diagrams, learning, expl ### ⚙️ [aidd-dev](plugins/aidd-dev/README.md) -`11 skills` · stable +`10 skills` · stable -SDLC loop: plan, implement, assert, audit, review, test, refactor, debug. +Code transformation: plan, implement, assert, audit, review, test, refactor, debug. @@ -267,9 +267,9 @@ Brainstorm, challenge, condense, shadow-areas, fact-check. ### 🎼 [aidd-orchestrator](plugins/aidd-orchestrator/README.md) -`1 skill` · stable +`2 skills` · stable -Async dev: label an issue → get a PR. +Synchronous feature flow and async issue-to-PR automation. diff --git a/UPGRADE.md b/UPGRADE.md index 941f0bf64..751b1e606 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -31,11 +31,11 @@ This guide tells you exactly what disappears, what each old command becomes, and | Plugin | Purpose | Recommended | |---|---|---| | `aidd-context` | Project bootstrap, onboarding, memory bank, learn, mermaid, context-artifact generation, explore. | yes | -| `aidd-dev` | The SDLC loop: plan, implement, assert, audit, review, test, refactor, debug, plus the `00-sdlc` orchestrator. Hosts the engineering agents. | yes | +| `aidd-dev` | Code transformation: plan, implement, assert, audit, review, test, refactor, debug. Hosts the engineering agents. | yes | | `aidd-vcs` | Commit, pull request, release tag, issue creation. | yes | | `aidd-pm` | Ticket info, user stories, PRD, spec. | yes | | `aidd-refine` | Brainstorm, challenge, condense, shadow-area gap analysis, fact-check. | yes | -| `aidd-orchestrator` | Async dev: turn labelled GitHub issues into PRs and iterate on review feedback. | no (opt-in) | +| `aidd-orchestrator` | Synchronous SDLC flow plus optional async issue-to-PR automation. | yes | Each plugin ships: @@ -152,7 +152,7 @@ Invocation in v4 is `plugin:NN-action`. Where a column says "sub-flow", the old | v4 skill | What it does | Added in | |---|---|---| | `aidd-context:11-explore` | Surveys the project across tooling, context, and codebase, then drills into one axis and points to the best match for a goal. | 4.0 | -| `aidd-dev:00-sdlc` | Orchestrates the full plan to ship loop (auto or interactive). | 4.0 | +| `aidd-orchestrator:01-sdlc` | Orchestrates the full plan to ship loop (auto or interactive). | 4.0 | | `aidd-dev:09-for-sure` | Loops and retries a task until an explicit success condition is met. | 4.0 | | `aidd-orchestrator:00-async-dev` | Async, label/comment-driven runs from GitHub issues (setup / run / review). | 4.0 | | `aidd-pm:03-prd` | Builds a PRD from a feature description or user stories. | 4.0 | diff --git a/aidd_docs/README.md b/aidd_docs/README.md index aac1bf1e0..c897e8c86 100644 --- a/aidd_docs/README.md +++ b/aidd_docs/README.md @@ -40,9 +40,9 @@ Skills are grouped into plugins by domain. Install only the plugins you need. | aidd-context | Bootstrap, project init, generation of context artifacts (skills, agents, rules, commands, hooks, plugins, marketplaces), mermaid diagrams, learn, discovery | `02-project-memory`, `03-context-generate`, `09-mermaid` | | aidd-refine | Meta-cognition: brainstorm, challenge prior work, condensed communication mode | `01-brainstorm`, `02-challenge`, `03-condense` | | aidd-pm | Product management: ticket info, user stories, PRD, spec | `01-ticket-info`, `02-user-stories`, `03-prd`, `04-spec` | -| aidd-dev | Code transformation: Dev SDLC orchestrator, plan, implement, assert, audit, review, test, refactor, debug, for-sure | `00-sdlc`, `01-plan`, `02-implement`, `05-review`, `06-test` | +| aidd-dev | Code transformation: plan, implement, assert, audit, review, test, refactor, debug, for-sure | `01-plan`, `02-implement`, `05-review`, `06-test` | | aidd-vcs | VCS workflows: commit, pull/merge request, release tag, issue creation | `01-commit`, `02-pull-request`, `04-issue-create` | -| aidd-orchestrator | Async orchestration of the SDLC on labeled issues (optional, extra) | `00-async-dev` (router with setup / run / review sub-flows) | +| aidd-orchestrator | Synchronous SDLC orchestration and optional async issue-to-PR automation | `00-async-dev`, `01-sdlc` | > See the [CATALOG](../docs/CATALOG.md) for the exhaustive list of skills and actions. @@ -102,7 +102,8 @@ AIDD is delivered as a plugin marketplace. Pick what you need; do not install ev | ------------ | ------------------------------------------------------------------------------------------------------------------- | | aidd-context | 00-onboard, 01-bootstrap, 02-project-memory, 03-context-generate, 09-mermaid, 10-learn, 11-explore | | aidd-refine | 01-brainstorm, 02-challenge, 03-condense, 04-shadow-areas, 05-fact-check | -| aidd-dev | 00-sdlc, 01-plan, 02-implement, 03-assert, 04-audit, 05-review, 06-test, 07-refactor, 08-debug, 09-for-sure | +| aidd-dev | 01-plan, 02-implement, 03-assert, 04-audit, 05-review, 06-test, 07-refactor, 08-debug, 09-for-sure, 10-todo | +| aidd-orchestrator | 00-async-dev, 01-sdlc | | aidd-vcs | 01-commit, 02-pull-request, 03-release-tag, 04-issue-create | | aidd-pm | 01-ticket-info, 02-user-stories, 03-prd, 04-spec | @@ -123,15 +124,13 @@ A typical change cycles through skills from several plugins. The order below is 9. **Ship**: `aidd-vcs:01-commit`, `aidd-vcs:02-pull-request`, then `aidd-vcs:03-release-tag` when the work is in production. File issues with `aidd-vcs:04-issue-create`. 10. **Refactor and maintain**: `aidd-dev:07-refactor` for performance or security, `aidd-dev:04-audit` for technical-debt sweeps, `aidd-dev:08-debug` to reproduce and fix bugs. -When you want the whole synchronous pipeline run in one go (spec, plan, implementation, finalize), invoke `aidd-dev:00-sdlc`. +When you want the whole synchronous pipeline run in one go (spec, plan, implementation, finalize), invoke `aidd-orchestrator:01-sdlc`. --- ## Optional: Async Automation -Beyond the synchronous path above, `aidd-orchestrator` runs the SDLC asynchronously on labeled issues (webhook or cron). This is extra: most projects do not need it. Use only when you want the AI to pick up `to-implement` issues without a human pressing a key. - -Inside the synchronous path, `aidd-dev:00-sdlc` is the Dev SDLC orchestrator that drives spec, plan, implementation, finalize in one go when you want the whole pipeline at once. +Beyond the synchronous path above, `aidd-orchestrator:00-async-dev` runs the SDLC asynchronously on labeled issues (webhook or cron). This capability is optional. Use it only when you want the AI to pick up `to-implement` issues without a human pressing a key. --- diff --git a/aidd_docs/memory/codebase-map.md b/aidd_docs/memory/codebase-map.md index 7a289ec71..4b48155bb 100644 --- a/aidd_docs/memory/codebase-map.md +++ b/aidd_docs/memory/codebase-map.md @@ -18,6 +18,7 @@ flowchart TD AiddContext --> CtxSkills["skills/ (onboard, bootstrap, project-memory, context-generate, mermaid, learn, discovery)"] AiddContext --> CtxHooks["hooks/update_memory.js"] - AiddDev --> DevSkills["skills/ (00-sdlc, 01-plan, 02-implement, 03-assert, 04-audit, 05-review, 06-test, 07-refactor, 08-debug, 09-for-sure)"] + AiddDev --> DevSkills["skills/ (01-plan, 02-implement, 03-assert, 04-audit, 05-review, 06-test, 07-refactor, 08-debug, 09-for-sure, 10-todo)"] AiddDev --> DevAgents["agents/ (planner, implementer, reviewer)"] + Orchestrator --> OrchestratorSkills["skills/ (00-async-dev, 01-sdlc)"] ``` diff --git a/docs/CATALOG.md b/docs/CATALOG.md index 6f5dfe715..4a398471b 100644 --- a/docs/CATALOG.md +++ b/docs/CATALOG.md @@ -34,11 +34,10 @@ Bootstrap, project init, context-artifact generation, diagrams, learning, and ex ## 💻 aidd-dev -The development SDLC: plan, implement, assert, audit, review, test, refactor, debug, for-sure, todo. +Code transformation: plan, implement, assert, audit, review, test, refactor, debug, for-sure, todo. | Skill | Role | Actions | | --------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `00-sdlc` | Pure orchestrator driving the full dev flow end to end | `01-spec`, `02-plan`, `03-implement`, `04-review`, `05-ship` | | `01-plan` | Turn a request, ticket, or file into a phased implementation plan: gather, explore, wireframe, plan | `01-gather`, `02-explore`, `03-wireframe`, `04-plan` | | `02-implement` | Execute a plan phase by phase until 100% complete | `01-implement` | | `03-assert` | Assert features work - general, architecture, frontend UI | `01-assert`, `02-assert-architecture`, `03-assert-frontend` | @@ -87,11 +86,12 @@ Version-control workflows: repo init, commit, pull/merge request, release tag, i ## 🎼 aidd-orchestrator -Optional. Runs the SDLC asynchronously on labeled issues (webhook or cron). Most projects do not need it. +Runs synchronous feature delivery and optional async issue automation. -| Skill | Role | Sub-flows | -| ---------------- | ----------------------------------------------------- | ------------------------- | -| `00-async-dev` | Single entry point for the async-dev pipeline | `setup`, `run`, `review` | +| Skill | Role | Actions / sub-flows | +| ---------------- | ----------------------------------------------------- | -------------------------------------------------------- | +| `00-async-dev` | Single entry point for the async-dev pipeline | `setup`, `run`, `review` | +| `01-sdlc` | Drive the full development flow end to end | `01-spec`, `02-plan`, `03-implement`, `04-review`, `05-ship` | ## 🎨 aidd-ui diff --git a/plugins/aidd-context/skills/00-onboard/references/flow.md b/plugins/aidd-context/skills/00-onboard/references/flow.md index c8dac4c07..88a9eb697 100644 --- a/plugins/aidd-context/skills/00-onboard/references/flow.md +++ b/plugins/aidd-context/skills/00-onboard/references/flow.md @@ -24,4 +24,4 @@ ## Run it -`[1]` walk with me, step by step · `[2]` hand the whole flow to `aidd-dev:00-sdlc` +`[1]` walk with me, step by step · `[2]` hand the whole flow to `aidd-orchestrator:01-sdlc` diff --git a/plugins/aidd-context/skills/00-onboard/references/order/idle-menu.md b/plugins/aidd-context/skills/00-onboard/references/order/idle-menu.md index 1601a00e3..3358ed8ad 100644 --- a/plugins/aidd-context/skills/00-onboard/references/order/idle-menu.md +++ b/plugins/aidd-context/skills/00-onboard/references/order/idle-menu.md @@ -4,7 +4,7 @@ When ranks 1-3 are clear, the idle menu offers four choices. | Slot | Choice | Opens (installed members) | | ---- | ------------------- | -------------------------------------------------------------------- | -| 1 | start new work | `aidd-dev:00-sdlc`, or `aidd-refine:01-brainstorm` for a fuzzy idea | +| 1 | start new work | `aidd-orchestrator:01-sdlc`, or `aidd-refine:01-brainstorm` for a fuzzy idea | | 2 | improve the project | `aidd-dev:` `04-audit` · `06-test` · `07-refactor` | | 3 | customize the AI | the **missing** `aidd-context:` generators: rule `05-rule-generate`, workflow `04-skill-generate`, agent `06-agent-generate`, command `07-command-generate`, hook `08-hook-generate` | | 4 | explore | `aidd-context:11-explore` + anything not in 1-3 | diff --git a/plugins/aidd-context/skills/00-onboard/references/run/tiers.md b/plugins/aidd-context/skills/00-onboard/references/run/tiers.md index 94ce4345d..336234d0e 100644 --- a/plugins/aidd-context/skills/00-onboard/references/run/tiers.md +++ b/plugins/aidd-context/skills/00-onboard/references/run/tiers.md @@ -8,5 +8,5 @@ The tier is a default, overridable. | GUIDED | (it will ask you a few questions) | launch, hand to the user, resume on return (see `return.md`) | | MANUAL | (you run this one yourself) | show the command, run nothing, leave it for the user | -- A dual-mode skill (interactive by default, unattended on request, e.g. `aidd-dev:00-sdlc`) runs the other way when the user asks and the skill supports it. +- A dual-mode skill (interactive by default, unattended on request, e.g. `aidd-orchestrator:01-sdlc`) runs the other way when the user asks and the skill supports it. - On the `OK` walk, state up front how many steps it covers and which need input. diff --git a/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md b/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md index de5a4f7b5..cdbbece6f 100644 --- a/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md +++ b/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md @@ -70,7 +70,7 @@ The pull-request step opens the PR. /aidd-vcs:02-pull-request ``` -> One command for the whole loop: `/aidd-dev:00-sdlc` runs plan → implement → review → ship. +> One command for the whole loop: `/aidd-orchestrator:01-sdlc` runs plan → implement → review → ship. ## Verify diff --git a/plugins/aidd-context/skills/12-cook/assets/recipes/start-a-project.md b/plugins/aidd-context/skills/12-cook/assets/recipes/start-a-project.md index 85fe9c4d8..056fa9707 100644 --- a/plugins/aidd-context/skills/12-cook/assets/recipes/start-a-project.md +++ b/plugins/aidd-context/skills/12-cook/assets/recipes/start-a-project.md @@ -57,7 +57,7 @@ The feature recipe takes the project through the per-feature loop. 1. Follow [Ship a feature](ship-a-feature.md). ```text -/aidd-dev:00-sdlc +/aidd-orchestrator:01-sdlc ``` ## Verify diff --git a/plugins/aidd-dev/.claude-plugin/plugin.json b/plugins/aidd-dev/.claude-plugin/plugin.json index ae392460a..65986834a 100644 --- a/plugins/aidd-dev/.claude-plugin/plugin.json +++ b/plugins/aidd-dev/.claude-plugin/plugin.json @@ -2,13 +2,12 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "aidd-dev", "version": "2.3.1", - "description": "Code transformation: Dev SDLC orchestrator (code-shipping pipeline), plan, assert, audit, review, test, refactor, debug, for-sure. Hosts engineering agents.", + "description": "Code transformation: plan, implement, assert, audit, review, test, refactor, debug, for-sure. Hosts engineering agents.", "author": { "name": "AI-Driven Dev", "url": "https://github.com/ai-driven-dev" }, "skills": [ - "./skills/00-sdlc", "./skills/01-plan", "./skills/02-implement", "./skills/03-assert", diff --git a/plugins/aidd-dev/CATALOG.md b/plugins/aidd-dev/CATALOG.md index 399feb29a..0251fa754 100644 --- a/plugins/aidd-dev/CATALOG.md +++ b/plugins/aidd-dev/CATALOG.md @@ -9,7 +9,6 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai - [`.claude-plugin`](#claude-plugin) - [`agents`](#agents) - [`skills`](#skills) - - [`skills/00-sdlc`](#skills00-sdlc) - [`skills/01-plan`](#skills01-plan) - [`skills/02-implement`](#skills02-implement) - [`skills/03-assert`](#skills03-assert) @@ -38,17 +37,6 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai ### `skills` -#### `skills/00-sdlc` - -| Group | File | Description | -|-------|------|---| -| `actions` | [01-spec.md](skills/00-sdlc/actions/01-spec.md) | - | -| `actions` | [02-plan.md](skills/00-sdlc/actions/02-plan.md) | - | -| `actions` | [03-implement.md](skills/00-sdlc/actions/03-implement.md) | - | -| `actions` | [04-review.md](skills/00-sdlc/actions/04-review.md) | - | -| `actions` | [05-ship.md](skills/00-sdlc/actions/05-ship.md) | - | -| `-` | [SKILL.md](skills/00-sdlc/SKILL.md) | `Orchestrate the full dev flow, a free-form request to shipped code, every step delegated. Use to take a request end to end, not a single step. Interactive by default; say auto for unattended.` | - #### `skills/01-plan` | Group | File | Description | diff --git a/plugins/aidd-dev/README.md b/plugins/aidd-dev/README.md index c214a1cc0..9ed4d3d75 100644 --- a/plugins/aidd-dev/README.md +++ b/plugins/aidd-dev/README.md @@ -6,15 +6,14 @@ Code transformation plugin for the AI-Driven Development framework. > Status: stable. -First time? Install with `/plugin install aidd-dev@aidd-framework`, then run `aidd-dev:00-sdlc`. +First time? Install with `/plugin install aidd-dev@aidd-framework`, then run `aidd-dev:01-plan`. -Covers the full SDLC coding loop: orchestrator, planning, implementation, assertions, audits, code review, testing, refactoring, debugging, for-sure, and parallel todo fan-out. Also hosts AI agents. +Covers code transformation: planning, implementation, assertions, audits, code review, testing, refactoring, debugging, for-sure, and parallel todo fan-out. Also hosts AI agents. ## Skills | Bracket ID | Skill | Description | |---|---|---| -| [2.0] | [sdlc](skills/00-sdlc/SKILL.md) | Dev SDLC orchestrator (code-shipping pipeline): spec, plan, implement, test, review, commit, PR. | | [2.1] | [plan](skills/01-plan/SKILL.md) | Turn a request, ticket, or file into a phased implementation plan, gathering the source first and optionally wireframing a screen before planning. | | [2.2] | [implement](skills/02-implement/SKILL.md) | Execute an implementation plan phase by phase, recipe-style, iterating until 100% completeness. | | [2.3] | [assert](skills/03-assert/SKILL.md) | Assert features work as intended - general assertions, architecture conformance, and frontend UI validation. | diff --git a/plugins/aidd-dev/skills/00-sdlc/SKILL.md b/plugins/aidd-dev/skills/00-sdlc/SKILL.md deleted file mode 100644 index 62f1f5740..000000000 --- a/plugins/aidd-dev/skills/00-sdlc/SKILL.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -name: 00-sdlc -description: Orchestrate the full dev flow, a free-form request to shipped code, every step delegated. Use to take a request end to end, not a single step. Interactive by default; say auto for unattended. -argument-hint: spec | plan | implement | review | ship ---- - -# Skill: sdlc - -Take a request from idea to shipped code, delegating every step. Interactive by default, autonomous when you say `auto`. - -## Actions - -| # | Action | Role | Delegate | -| --- | ----------- | ------------------------------------- | --------------------------------------- | -| 01 | `spec` | Consolidate sources into the contract | a spec capability | -| 02 | `plan` | Produce the plan file | self, via `aidd-dev:01-plan` | -| 03 | `implement` | Build the plan's code, gating on the assertions | `executor`, via `aidd-dev:02-implement` | -| 04 | `review` | Verdict `ship` or `iterate` | `checker`, via `aidd-dev:05-review` | -| 05 | `ship` | Open the change request | a commit and change-request capability | - -Run `01 → 02 → 03 → 04 → 05`. On `04 = iterate`, loop to `03` then re-run `04`. -Before running an action, read its file in `actions/`, not only the table or assets. - -## Transversal rules - -- Delegate every step; never write or judge code yourself. -- Mode: default `interactive`, pausing for approval at each step; switch to `auto` only when the caller says so, then decide alone and never ask. -- Every step runs; only `01-spec` self-skips when the source already states an objective and acceptance criteria. -- Drive the plan status `pending → in-progress → implemented → reviewed`, or `blocked`. -- Every artifact (spec, plan, phases, review) lands in one feature folder, `aidd_docs/tasks//_/`, resolved at entry. -- Never auto-branch; the caller sets a non-default branch before shipping. diff --git a/plugins/aidd-orchestrator/.claude-plugin/plugin.json b/plugins/aidd-orchestrator/.claude-plugin/plugin.json index 3f27cb937..95e38538e 100644 --- a/plugins/aidd-orchestrator/.claude-plugin/plugin.json +++ b/plugins/aidd-orchestrator/.claude-plugin/plugin.json @@ -2,16 +2,18 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "aidd-orchestrator", "version": "2.1.1", - "description": "Orchestration plugin. v1 use case: async development - turn ready issues into pull requests, then iterate on review feedback until a human takes over. Designed to host more orchestration use cases (refactoring, docs, audits) in future versions.", + "description": "Orchestration plugin for the synchronous SDLC code-shipping pipeline and async issue-to-PR automation.", "author": { "name": "AI-Driven Dev", "url": "https://github.com/ai-driven-dev" }, "skills": [ - "./skills/00-async-dev" + "./skills/00-async-dev", + "./skills/01-sdlc" ], "keywords": [ "orchestration", + "sdlc", "async", "pipeline", "pull-request", diff --git a/plugins/aidd-orchestrator/CATALOG.md b/plugins/aidd-orchestrator/CATALOG.md index 3b881985d..c4655d4f6 100644 --- a/plugins/aidd-orchestrator/CATALOG.md +++ b/plugins/aidd-orchestrator/CATALOG.md @@ -9,6 +9,7 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai - [`.claude-plugin`](#claude-plugin) - [`skills`](#skills) - [`skills/00-async-dev`](#skills00-async-dev) + - [`skills/01-sdlc`](#skills01-sdlc) --- @@ -27,3 +28,14 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai | `references` | [routing.md](skills/00-async-dev/references/routing.md) | - | | `-` | [SKILL.md](skills/00-async-dev/SKILL.md) | `Drive the async-dev pipeline from one entry point, whether setup, run, or review. Use when the user wants to install async dev, run a ready issue, or address PR review comments, or on a webhook trigger. Not for plain status checks.` | +#### `skills/01-sdlc` + +| Group | File | Description | +|-------|------|---| +| `actions` | [01-spec.md](skills/01-sdlc/actions/01-spec.md) | - | +| `actions` | [02-plan.md](skills/01-sdlc/actions/02-plan.md) | - | +| `actions` | [03-implement.md](skills/01-sdlc/actions/03-implement.md) | - | +| `actions` | [04-review.md](skills/01-sdlc/actions/04-review.md) | - | +| `actions` | [05-ship.md](skills/01-sdlc/actions/05-ship.md) | - | +| `-` | [SKILL.md](skills/01-sdlc/SKILL.md) | `Orchestrates a request from specification to shipped code, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step.` | + diff --git a/plugins/aidd-orchestrator/README.md b/plugins/aidd-orchestrator/README.md index e525323d6..ccb70e8b2 100644 --- a/plugins/aidd-orchestrator/README.md +++ b/plugins/aidd-orchestrator/README.md @@ -4,14 +4,20 @@ Orchestration plugin for the AI-Driven Development framework. -> Status: stable for use case `async-dev`; other use cases on the roadmap are experimental. +> Status: stable for synchronous SDLC and `async-dev`. -First time? Install with `/plugin install aidd-orchestrator@aidd-framework`, then run `aidd-orchestrator:00-async-dev` with `action=setup` (or just describe what you want; the router decides). New to the framework? See the [quick start](../../README.md#-quick-start). +First time? Install with `/plugin install aidd-orchestrator@aidd-framework`, then run `aidd-orchestrator:01-sdlc`. For async automation, run `aidd-orchestrator:00-async-dev` with `action=setup`. New to the framework? See the [quick start](../../README.md#-quick-start). Composes capabilities into deterministic, auditable flows. Each skill is one orchestration brick; several use cases coexist inside the same plugin. ## Skills +### Use case: `sdlc` + +| Bracket ID | Skill | Description | +|------------|-------|-------------| +| [6.1] | [sdlc](skills/01-sdlc/SKILL.md) | Synchronous code-shipping pipeline: spec, plan, implement, review, commit, PR. | + ### Use case: `async-dev` | Bracket ID | Skill | Description | diff --git a/plugins/aidd-orchestrator/skills/00-async-dev/SKILL.md b/plugins/aidd-orchestrator/skills/00-async-dev/SKILL.md index 8798ee07d..75b6ffe82 100644 --- a/plugins/aidd-orchestrator/skills/00-async-dev/SKILL.md +++ b/plugins/aidd-orchestrator/skills/00-async-dev/SKILL.md @@ -78,7 +78,7 @@ Executes one orchestration cycle on a fresh issue. Reads ready issues, resolves | 01 | `poll-ready` | Find the next issue with `to-implement`, no `claude/working`, no open closing PR | | 02 | `resolve-deps` | Check linked issues / dependencies; abort if blocked | | 03 | `acquire-lock` | Apply `claude/working` label; refuse if already held | -| 04 | `check-sdlc` | Verify an SDLC orchestrator is loaded (`aidd-dev:00-sdlc` or equivalent) | +| 04 | `check-sdlc` | Verify an SDLC orchestration capability is loaded | | 05 | `delegate-sdlc` | Hand the issue to the SDLC capability; observe outcome | | 06 | `write-audit` | Emit `run-result.json` for the workflow's post-job | diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md new file mode 100644 index 000000000..6354f3c04 --- /dev/null +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -0,0 +1,33 @@ +--- +name: 01-sdlc +description: Orchestrates a request from specification to shipped code, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step. +argument-hint: interactive | auto +--- + +# Skill: sdlc + +```mermaid +flowchart LR + spec --> plan --> implement --> review --> ship + review -->|iterate| implement +``` + +## Actions + +Read only the next action's file before running it. + +| # | Action | Does | +| --- | ----------- | -------------------------------------------- | +| 01 | `spec` | Consolidate sources into the contract | +| 02 | `plan` | Produce the plan file | +| 03 | `implement` | Build the plan's code and gate on assertions | +| 04 | `review` | Return a `ship` or `iterate` verdict | +| 05 | `ship` | Open the change request | + +## Transversal rules + +- Delegate implementation and review; never write or judge code yourself. +- Mode: default `interactive`, pausing for approval at each step; switch to `auto` only when the caller says so, then decide alone and never ask. +- Every step runs; only `01-spec` self-skips when the source already states an objective and acceptance criteria. +- Drive the plan status `pending → in-progress → implemented → reviewed`, or `blocked`. +- Every artifact (spec, plan, phases, review) lands in one feature folder, `aidd_docs/tasks//_/`, resolved at entry. diff --git a/plugins/aidd-dev/skills/00-sdlc/actions/01-spec.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/01-spec.md similarity index 100% rename from plugins/aidd-dev/skills/00-sdlc/actions/01-spec.md rename to plugins/aidd-orchestrator/skills/01-sdlc/actions/01-spec.md diff --git a/plugins/aidd-dev/skills/00-sdlc/actions/02-plan.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/02-plan.md similarity index 58% rename from plugins/aidd-dev/skills/00-sdlc/actions/02-plan.md rename to plugins/aidd-orchestrator/skills/01-sdlc/actions/02-plan.md index 4e170e54e..927cd38ac 100644 --- a/plugins/aidd-dev/skills/00-sdlc/actions/02-plan.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/actions/02-plan.md @@ -12,9 +12,10 @@ The plan path and its phase paths, plus the decisions you made and any you could ## Process -1. **Author.** Run `aidd-dev:01-plan` end to end in your own context. You own the plan: it is the contract the executor may not rewrite, so you write it, never a worker. Never inline a raw ticket or spec as the plan body. -2. **Capture.** Read the plan path, the phase paths, and the decisions the plan records. -3. **Return.** Surface them for the next step. +1. **Discover.** Find the phased implementation planning capability at runtime by description. +2. **Author.** Run that capability end to end in your own context. You own the plan: it is the contract the executor may not rewrite, so you write it, never a worker. Never inline a raw ticket or spec as the plan body. +3. **Capture.** Read the plan path, the phase paths, and the decisions the plan records. +4. **Return.** Surface them for the next step. ## Test diff --git a/plugins/aidd-dev/skills/00-sdlc/actions/03-implement.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/03-implement.md similarity index 56% rename from plugins/aidd-dev/skills/00-sdlc/actions/03-implement.md rename to plugins/aidd-orchestrator/skills/01-sdlc/actions/03-implement.md index bb37df2bc..57b35278a 100644 --- a/plugins/aidd-dev/skills/00-sdlc/actions/03-implement.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/actions/03-implement.md @@ -1,6 +1,6 @@ # 03 - Implement -Build the plan's code by spawning the `executor` agent to run the `aidd-dev:02-implement` recipe, which loops the phases, drives status, and validates. Mandatory. +Build the plan's code by spawning the `executor` agent to run the implementation recipe, which loops the phases, drives status, and validates. Mandatory. ## Input @@ -12,14 +12,15 @@ The plan reaches `status: implemented`, every phase `done`, validation green. Or ## Process -1. **Implement.** Spawn the `executor` agent and brief it to run the `aidd-dev:02-implement` recipe on `plan_path`. The agent branches, codes every phase, commits the code and the status transitions, and validates. -2. **Iterate.** After an `iterate` verdict, spawn `executor` again with the findings as a fix list. It codes them against the current diff, then asserts and validates, gating like a phase: done only when it passes. Never edit the plan; the loop fixes the diff, not the plan. -3. **Resolve.** Read the plan's final `status`. +1. **Discover.** Find the phased plan implementation capability at runtime by description. +2. **Implement.** Spawn the `executor` agent and brief it to run that capability on `plan_path`. The agent branches, codes every phase, commits the code and the status transitions, and validates. +3. **Iterate.** After an `iterate` verdict, spawn `executor` again with the findings as a fix list. It codes them against the current diff, then asserts and validates, gating like a phase: done only when it passes. Never edit the plan; the loop fixes the diff, not the plan. +4. **Resolve.** Read the plan's final `status`. - `implemented`: the step is done. - `blocked`: a human-only condition stopped the run. Do not continue. Escalate to a human. ## Test - The plan `status` is `implemented`, or `blocked` when a human-only condition stopped it. -- Every phase reads `status: done`. -- The validation commands return exit code 0. +- When the plan is `implemented`, every phase reads `status: done`. +- When the plan is `implemented`, the validation commands return exit code 0. diff --git a/plugins/aidd-dev/skills/00-sdlc/actions/04-review.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/04-review.md similarity index 62% rename from plugins/aidd-dev/skills/00-sdlc/actions/04-review.md rename to plugins/aidd-orchestrator/skills/01-sdlc/actions/04-review.md index ec01fd66b..cb65883e1 100644 --- a/plugins/aidd-dev/skills/00-sdlc/actions/04-review.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/actions/04-review.md @@ -8,15 +8,16 @@ The working diff or paths produced by `03`, the validator (the plan path and acc ## Output -A `ship` or `iterate` verdict with the reviewed items, findings, completion and quality scores, and the reviewed `HEAD` SHA (the commit the checker saw), from `05-review`. The plan reaches `status: reviewed` on ship, and stays `implemented` on iterate. +A `ship` or `iterate` verdict with the reviewed items, findings, completion and quality scores, and the reviewed `HEAD` SHA (the commit the checker saw), from the review capability. The plan reaches `status: reviewed` on ship, and stays `implemented` on iterate. ## Process -1. **Capture.** Record the current `HEAD` sha as the reviewed SHA. This is the exact code the checker judges, and the anchor `05-ship` checks against. -2. **Spawn.** Spawn the `checker` agent with the inputs above. Brief it to run `aidd-dev:05-review` on that diff, let that skill write and own its report, and return the verdict and findings. -3. **Map.** When every check passes, the verdict is `ship`. On any blocking finding, the verdict is `iterate`. -4. **Mark.** On `ship`, set the plan frontmatter `status: reviewed` and commit it. Carry the reviewed SHA in the verdict. On `iterate`, leave the plan `implemented`: the loop fixes the diff, not the plan. -5. **Iterate.** On `iterate`, return the findings as the fix list for `03`. The next `04` re-captures the SHA on the fixed diff; ship is reached only when a review of the current diff passes. +1. **Discover.** Find the diff review capability at runtime by description. +2. **Capture.** Record the current `HEAD` sha as the reviewed SHA. This is the exact code the checker judges, and the anchor `05-ship` checks against. +3. **Spawn.** Spawn the `checker` agent with the inputs above. Brief it to run the review capability on that diff, let that skill write and own its report, and return the verdict and findings. +4. **Map.** When every check passes, the verdict is `ship`. On any blocking finding, the verdict is `iterate`. +5. **Mark.** On `ship`, set the plan frontmatter `status: reviewed` and commit it. Carry the reviewed SHA in the verdict. On `iterate`, leave the plan `implemented`: the loop fixes the diff, not the plan. +6. **Iterate.** On `iterate`, return the findings as the fix list for `03`. The next `04` re-captures the SHA on the fixed diff; ship is reached only when a review of the current diff passes. ## Test diff --git a/plugins/aidd-dev/skills/00-sdlc/actions/05-ship.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/05-ship.md similarity index 100% rename from plugins/aidd-dev/skills/00-sdlc/actions/05-ship.md rename to plugins/aidd-orchestrator/skills/01-sdlc/actions/05-ship.md diff --git a/scripts/sync-skill-argument-hints.mjs b/scripts/sync-skill-argument-hints.mjs index 1b4d19101..186126383 100755 --- a/scripts/sync-skill-argument-hints.mjs +++ b/scripts/sync-skill-argument-hints.mjs @@ -95,7 +95,12 @@ function syncArgumentHint(content, hint) { // Skills whose argument-hint is written by hand, because it names the user's // entrypoint or cases rather than one token per action. The hook leaves these // untouched. This is the base pattern for a pipeline or case-based router. -const MANUAL_ARGUMENT_HINT = new Set(["01-brainstorm", "02-project-memory", "04-skill-generate"]); +const MANUAL_ARGUMENT_HINT = new Set([ + "01-brainstorm", + "01-sdlc", + "02-project-memory", + "04-skill-generate", +]); const stale = []; for (const dir of await skillDirs()) { From aa55f35bfcf2776e4e67522832028eb322ee164a Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 09:27:57 +0200 Subject: [PATCH 02/27] refactor(orchestrator): replace SDLC actions with protocols --- docs/ARCHITECTURE.md | 21 ++++----- docs/CATALOG.md | 8 ++-- plugins/aidd-dev/agents/checker.md | 1 + plugins/aidd-orchestrator/CATALOG.md | 10 ++-- plugins/aidd-orchestrator/README.md | 2 +- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 46 ++++++++++++------- .../skills/01-sdlc/actions/01-spec.md | 25 ---------- .../skills/01-sdlc/actions/02-plan.md | 22 --------- .../skills/01-sdlc/actions/03-implement.md | 26 ----------- .../skills/01-sdlc/actions/04-review.md | 27 ----------- .../skills/01-sdlc/actions/05-ship.md | 27 ----------- .../skills/01-sdlc/references/01-frame.md | 34 ++++++++++++++ .../skills/01-sdlc/references/02-deliver.md | 38 +++++++++++++++ .../skills/01-sdlc/references/03-check.md | 35 ++++++++++++++ scripts/sync-skill-argument-hints.mjs | 1 - 15 files changed, 156 insertions(+), 167 deletions(-) delete mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/actions/01-spec.md delete mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/actions/02-plan.md delete mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/actions/03-implement.md delete mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/actions/04-review.md delete mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/actions/05-ship.md create mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md create mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md create mode 100644 plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index b355fc578..d5325a39e 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -118,7 +118,7 @@ Three rules follow: ## 🔀 Skills are routers -A skill's `SKILL.md` is a manifest plus an actions table. Claude Code loads the SKILL.md when the skill is invoked; the body decides which action(s) to run. +A skill's `SKILL.md` is a manifest plus a router. Claude Code loads the SKILL.md when the skill is invoked; the body decides which local action or orchestration protocol to run. ```mermaid --- @@ -127,21 +127,20 @@ title: skill router pattern flowchart LR User["User: 'Use skill aidd-X:NN-name'"] Skill["SKILL.md (router)"] - Action1["actions/01-step.md"] - Action2["actions/02-step.md"] - ActionN["actions/NN-step.md"] + Action["Recipe action"] + Protocol["Reference protocol"] + Agent["Agent running a capability"] Out["Outputs: files, labels, PRs, audit logs"] User --> Skill - Skill -->|"choose 1..N"| Action1 - Skill -->|"choose 1..N"| Action2 - Skill -->|"choose 1..N"| ActionN - Action1 --> Out - Action2 --> Out - ActionN --> Out + Skill -->|"domain work"| Action + Skill -->|"orchestration zone"| Protocol + Protocol --> Agent + Action --> Out + Agent --> Out ``` -Each action is a self-contained markdown file with inputs, outputs, depends-on, process steps, and a test checklist. Actions can call other skills via the `Skill` tool, so a skill discovers a capability it needs at runtime (by matching skill descriptions, never by hardcoded plugin name) and delegates to it. +Recipe skills route to self-contained actions with inputs, outputs, process steps, and tests. Orchestrators with no domain logic may instead route through numbered reference protocols that define handoffs and delegate the work to capabilities discovered at runtime. ## 🤖 Skills and agents diff --git a/docs/CATALOG.md b/docs/CATALOG.md index 4a398471b..13c6c1385 100644 --- a/docs/CATALOG.md +++ b/docs/CATALOG.md @@ -88,10 +88,10 @@ Version-control workflows: repo init, commit, pull/merge request, release tag, i Runs synchronous feature delivery and optional async issue automation. -| Skill | Role | Actions / sub-flows | -| ---------------- | ----------------------------------------------------- | -------------------------------------------------------- | -| `00-async-dev` | Single entry point for the async-dev pipeline | `setup`, `run`, `review` | -| `01-sdlc` | Drive the full development flow end to end | `01-spec`, `02-plan`, `03-implement`, `04-review`, `05-ship` | +| Skill | Role | Protocols | +| ---------------- | ----------------------------------------------------- | ------------------------ | +| `00-async-dev` | Single entry point for the async-dev pipeline | `setup`, `run`, `review` | +| `01-sdlc` | Drive the full development flow end to end | `frame`, `deliver`, `check` | ## 🎨 aidd-ui diff --git a/plugins/aidd-dev/agents/checker.md b/plugins/aidd-dev/agents/checker.md index cd71e924a..f2a954d91 100644 --- a/plugins/aidd-dev/agents/checker.md +++ b/plugins/aidd-dev/agents/checker.md @@ -43,3 +43,4 @@ This is the behavioral baseline. Apply it to every code or diff, and extend it w - `aidd-dev:05-review` - `aidd-dev:04-audit` +- `aidd-dev:06-test` (`test-journey` only) diff --git a/plugins/aidd-orchestrator/CATALOG.md b/plugins/aidd-orchestrator/CATALOG.md index c4655d4f6..61a939ffb 100644 --- a/plugins/aidd-orchestrator/CATALOG.md +++ b/plugins/aidd-orchestrator/CATALOG.md @@ -32,10 +32,8 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai | Group | File | Description | |-------|------|---| -| `actions` | [01-spec.md](skills/01-sdlc/actions/01-spec.md) | - | -| `actions` | [02-plan.md](skills/01-sdlc/actions/02-plan.md) | - | -| `actions` | [03-implement.md](skills/01-sdlc/actions/03-implement.md) | - | -| `actions` | [04-review.md](skills/01-sdlc/actions/04-review.md) | - | -| `actions` | [05-ship.md](skills/01-sdlc/actions/05-ship.md) | - | -| `-` | [SKILL.md](skills/01-sdlc/SKILL.md) | `Orchestrates a request from specification to shipped code, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step.` | +| `references` | [01-frame.md](skills/01-sdlc/references/01-frame.md) | - | +| `references` | [02-deliver.md](skills/01-sdlc/references/02-deliver.md) | - | +| `references` | [03-check.md](skills/01-sdlc/references/03-check.md) | - | +| `-` | [SKILL.md](skills/01-sdlc/SKILL.md) | `Orchestrates a request from framing to a draft pull request, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step.` | diff --git a/plugins/aidd-orchestrator/README.md b/plugins/aidd-orchestrator/README.md index ccb70e8b2..45b0b72c1 100644 --- a/plugins/aidd-orchestrator/README.md +++ b/plugins/aidd-orchestrator/README.md @@ -16,7 +16,7 @@ Composes capabilities into deterministic, auditable flows. Each skill is one orc | Bracket ID | Skill | Description | |------------|-------|-------------| -| [6.1] | [sdlc](skills/01-sdlc/SKILL.md) | Synchronous code-shipping pipeline: spec, plan, implement, review, commit, PR. | +| [6.1] | [sdlc](skills/01-sdlc/SKILL.md) | Synchronous orchestration through framing, delivery, independent review, and PR creation. | ### Use case: `async-dev` diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index 6354f3c04..e08a297de 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -1,33 +1,45 @@ --- name: 01-sdlc -description: Orchestrates a request from specification to shipped code, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step. -argument-hint: interactive | auto +description: Orchestrates a request from framing to a draft pull request, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step. --- # Skill: sdlc ```mermaid +--- +title: SDLC orchestration +--- flowchart LR - spec --> plan --> implement --> review --> ship - review -->|iterate| implement + Request["Request"] + Ready{"Ready contract?"} + Frame["01 Frame"] + Deliver["02 Deliver"] + Check["03 Check"] + PullRequest["Draft pull request"] + + Request --> Ready + Ready -- "no" --> Frame + Ready -- "yes" --> Deliver + Frame --> Deliver + Deliver --> Check + Check -- "iterate" --> Deliver + Check -- "ship" --> PullRequest ``` -## Actions +## References -Read only the next action's file before running it. +Read only the current zone's reference before delegating it. -| # | Action | Does | -| --- | ----------- | -------------------------------------------- | -| 01 | `spec` | Consolidate sources into the contract | -| 02 | `plan` | Produce the plan file | -| 03 | `implement` | Build the plan's code and gate on assertions | -| 04 | `review` | Return a `ship` or `iterate` verdict | -| 05 | `ship` | Open the change request | +| # | Reference | Does | +| --- | ---------------------------------------------- | ------------------------------------- | +| 01 | [Frame](references/01-frame.md) | Resolve a planning-ready contract | +| 02 | [Deliver](references/02-deliver.md) | Build and validate a committed change | +| 03 | [Check](references/03-check.md) | Review independently and open the PR | ## Transversal rules -- Delegate implementation and review; never write or judge code yourself. +- Own routing and verify every handoff against the current reference. +- Discover cross-plugin capabilities by description, never by plugin name. +- Run planning in the orchestrator context. Isolate implementation in `executor` and independent review in `checker`. - Mode: default `interactive`, pausing for approval at each step; switch to `auto` only when the caller says so, then decide alone and never ask. -- Every step runs; only `01-spec` self-skips when the source already states an objective and acceptance criteria. -- Drive the plan status `pending → in-progress → implemented → reviewed`, or `blocked`. -- Every artifact (spec, plan, phases, review) lands in one feature folder, `aidd_docs/tasks//_/`, resolved at entry. +- Stop on `blocked`. Loop `check → deliver` on `iterate`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/actions/01-spec.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/01-spec.md deleted file mode 100644 index 0abcbcf42..000000000 --- a/plugins/aidd-orchestrator/skills/01-sdlc/actions/01-spec.md +++ /dev/null @@ -1,25 +0,0 @@ -# 01 - Spec - -Consolidate every available source into the normalized contract consumed downstream. - -**Skip condition:** when the source ticket already carries an explicit objective and at least one acceptance criterion, set `spec_status = skipped`, surface them verbatim, and jump to `02`. - -## Input - -The raw arguments (free-form text or a ticket URL), any available sources (ticket body, existing PRD, in-session conversation, prior checker findings), and the repo root. - -## Output - -The spec path on disk with its status (`drafted`, `refined`, or `skipped`), the one-sentence objective, and the acceptance criteria. The path is null when skipped. - -## Process - -1. **Collect.** Resolve every non-empty source: fetch ticket bodies, read PRD files, snapshot checker findings, capture conversation turns. Concatenate them into one brief. -2. **Skip.** Apply the skip condition above. If it holds, return the extracted objective and criteria. -3. **Delegate.** Hand the consolidated brief and the repo root to a spec capability, discovered at runtime by description. Let it own contract generation and refinement. -4. **Return.** Surface the spec path, status, objective, and acceptance criteria. - -## Test - -- When the status is `drafted` or `refined`, the spec file exists and its frontmatter carries the same objective and non-empty acceptance criteria this action returns. -- When `skipped`, the path is null and both fields are taken verbatim from the source ticket. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/actions/02-plan.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/02-plan.md deleted file mode 100644 index 927cd38ac..000000000 --- a/plugins/aidd-orchestrator/skills/01-sdlc/actions/02-plan.md +++ /dev/null @@ -1,22 +0,0 @@ -# 02 - Plan - -Turn the spec, or the raw request when spec was skipped, into a validated plan file. Mandatory. - -## Input - -The spec path from `01` (null when skipped), the objective and acceptance criteria from `01`, the raw arguments (needed when there is no spec), and the repo root. - -## Output - -The plan path and its phase paths, plus the decisions you made and any you could not make alone. - -## Process - -1. **Discover.** Find the phased implementation planning capability at runtime by description. -2. **Author.** Run that capability end to end in your own context. You own the plan: it is the contract the executor may not rewrite, so you write it, never a worker. Never inline a raw ticket or spec as the plan body. -3. **Capture.** Read the plan path, the phase paths, and the decisions the plan records. -4. **Return.** Surface them for the next step. - -## Test - -- The plan file exists, its frontmatter carries `objective` and `status: pending`, and the plan's objective matches the spec's (or the request when spec was skipped). diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/actions/03-implement.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/03-implement.md deleted file mode 100644 index 57b35278a..000000000 --- a/plugins/aidd-orchestrator/skills/01-sdlc/actions/03-implement.md +++ /dev/null @@ -1,26 +0,0 @@ -# 03 - Implement - -Build the plan's code by spawning the `executor` agent to run the implementation recipe, which loops the phases, drives status, and validates. Mandatory. - -## Input - -The plan path from `02` (required), and on an `iterate` loop-back the review findings to hand over as a fix list (optional). - -## Output - -The plan reaches `status: implemented`, every phase `done`, validation green. Or it stops at `status: blocked` when a human is needed. - -## Process - -1. **Discover.** Find the phased plan implementation capability at runtime by description. -2. **Implement.** Spawn the `executor` agent and brief it to run that capability on `plan_path`. The agent branches, codes every phase, commits the code and the status transitions, and validates. -3. **Iterate.** After an `iterate` verdict, spawn `executor` again with the findings as a fix list. It codes them against the current diff, then asserts and validates, gating like a phase: done only when it passes. Never edit the plan; the loop fixes the diff, not the plan. -4. **Resolve.** Read the plan's final `status`. - - `implemented`: the step is done. - - `blocked`: a human-only condition stopped the run. Do not continue. Escalate to a human. - -## Test - -- The plan `status` is `implemented`, or `blocked` when a human-only condition stopped it. -- When the plan is `implemented`, every phase reads `status: done`. -- When the plan is `implemented`, the validation commands return exit code 0. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/actions/04-review.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/04-review.md deleted file mode 100644 index cb65883e1..000000000 --- a/plugins/aidd-orchestrator/skills/01-sdlc/actions/04-review.md +++ /dev/null @@ -1,27 +0,0 @@ -# 04 - Review - -Judge the completed work against an explicit validator and emit a ship-or-iterate verdict. - -## Input - -The working diff or paths produced by `03`, the validator (the plan path and acceptance criteria), and any related context the checker needs. - -## Output - -A `ship` or `iterate` verdict with the reviewed items, findings, completion and quality scores, and the reviewed `HEAD` SHA (the commit the checker saw), from the review capability. The plan reaches `status: reviewed` on ship, and stays `implemented` on iterate. - -## Process - -1. **Discover.** Find the diff review capability at runtime by description. -2. **Capture.** Record the current `HEAD` sha as the reviewed SHA. This is the exact code the checker judges, and the anchor `05-ship` checks against. -3. **Spawn.** Spawn the `checker` agent with the inputs above. Brief it to run the review capability on that diff, let that skill write and own its report, and return the verdict and findings. -4. **Map.** When every check passes, the verdict is `ship`. On any blocking finding, the verdict is `iterate`. -5. **Mark.** On `ship`, set the plan frontmatter `status: reviewed` and commit it. Carry the reviewed SHA in the verdict. On `iterate`, leave the plan `implemented`: the loop fixes the diff, not the plan. -6. **Iterate.** On `iterate`, return the findings as the fix list for `03`. The next `04` re-captures the SHA on the fixed diff; ship is reached only when a review of the current diff passes. - -## Test - -- The verdict is `ship` or `iterate`, and the scores are integers between 0 and 100. -- The verdict carries the reviewed `HEAD` SHA. -- The findings are non-empty on `iterate`. -- The plan frontmatter reads `status: reviewed` only after a `ship` verdict on the current diff. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/actions/05-ship.md b/plugins/aidd-orchestrator/skills/01-sdlc/actions/05-ship.md deleted file mode 100644 index 27727fc46..000000000 --- a/plugins/aidd-orchestrator/skills/01-sdlc/actions/05-ship.md +++ /dev/null @@ -1,27 +0,0 @@ -# 05 - Ship - -Commit and open a change request (pull or merge request) via the project's VCS once the review verdict is `ship`. - -## Input - -The `ship` verdict from `04` including its reviewed `HEAD` SHA, the plan path from `02`, and the phase results from `03` that drive the commit and the change-request body. - -## Output - -The commit SHA and the change-request URL on the project's VCS host. - -## Process - -1. **Gate.** Confirm `04` returned a `ship` verdict and HEAD is on a non-default branch. Without a `ship` verdict, or on `iterate`, stop and re-run `04` (looping to `03` on `iterate`). On the default branch, stop with `contract_violation: on_default_branch` and commit nothing. -2. **Freshness.** Confirm no code landed after the reviewed SHA: `git diff --name-only HEAD` must list only plan-tracking files. Any source change means the review is stale, so stop and re-run `04`. Never ship unreviewed code. -3. **Commit.** Invoke a commit capability, discovered at runtime, with the plan's objective. It picks the message format; never dictate one here. -4. **Open.** Invoke a change-request capability, discovered at runtime, to push the branch and open the request. Reference the plan path in the body. -5. **Return.** Surface the commit SHA and the change-request URL. - -## Test - -- `git diff --name-only HEAD` lists only plan-tracking files: no source change shipped unreviewed. -- The commit SHA exists in `git log` of the working branch. -- The change-request URL is non-empty and points to the project's VCS host. -- The change-request body references the plan path. -- On the default branch, the action stops with `contract_violation: on_default_branch` and makes no commit. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md new file mode 100644 index 000000000..6fb9be87a --- /dev/null +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -0,0 +1,34 @@ +# 01 - Frame + +Decide whether the source is ready for planning. + +```mermaid +--- +title: Frame the delivery contract +--- +sequenceDiagram + participant Orchestrator + participant Ticket as Ticket capability + participant Brainstorm as Brainstorm capability + participant Spec as Specification capability + + opt Ticket reference + Orchestrator->>Ticket: Retrieve source + Ticket-->>Orchestrator: Ticket + end + alt Objective and acceptance criteria exist + Orchestrator->>Orchestrator: Keep source as contract + else Scope is ambiguous + Orchestrator->>Brainstorm: Clarify scope + Brainstorm-->>Orchestrator: Clarified scope + Orchestrator->>Spec: Build specification + Spec-->>Orchestrator: spec.md + else Scope is clear but contract is incomplete + Orchestrator->>Spec: Build specification + Spec-->>Orchestrator: spec.md + end +``` + +- The orchestrator owns the readiness decision. +- A ready contract has an explicit objective and observable acceptance criteria. +- Return the source contract or `spec.md` to `02-deliver`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md new file mode 100644 index 000000000..632de9398 --- /dev/null +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -0,0 +1,38 @@ +# 02 - Deliver + +Produce a validated candidate from the contract. + +```mermaid +--- +title: Deliver the candidate +--- +sequenceDiagram + participant Orchestrator + participant Plan as Planning capability + participant Executor + participant Implement as Implementation capability + participant Assert as Assertion capability + participant Test as Test capability + participant Commit as Commit capability + + Orchestrator->>Plan: Build plan from contract + Plan-->>Orchestrator: plan.md + Orchestrator->>Executor: Deliver plan and findings + Executor->>Implement: Implement plan or fixes + Implement-->>Executor: Candidate + Executor->>Assert: Validate candidate + Assert-->>Executor: Verdict + opt User journey is required + Executor->>Test: Validate journey + Test-->>Executor: Journey report + end + opt Delivery leaves uncommitted changes + Executor->>Commit: Commit remaining changes + Commit-->>Executor: Commit SHA + end + Executor-->>Orchestrator: Clean candidate SHA +``` + +- The orchestrator owns `plan.md`; the executor never rewrites it. +- The executor implements and self-validates. It does not perform the independent review. +- Return only a clean candidate with green validation to `03-check`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md new file mode 100644 index 000000000..002e2808a --- /dev/null +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -0,0 +1,35 @@ +# 03 - Check + +Review the candidate in a fresh context and route the verdict. + +```mermaid +--- +title: Check independently +--- +sequenceDiagram + participant Orchestrator + participant Checker + participant Review as Review capability + participant Journey as Journey test capability + participant PullRequest as Pull request capability + + Orchestrator->>Checker: Review contract, plan, and SHA + Checker->>Review: Review current diff + Review-->>Checker: review.md and verdict + opt UI journey exists + Checker->>Journey: Validate pages + Journey-->>Checker: Journey report + end + Checker-->>Orchestrator: Ship or iterate + alt Iterate + Orchestrator->>Orchestrator: Route findings to 02 deliver + else Ship + Orchestrator->>Orchestrator: Verify reviewed SHA is current + Orchestrator->>PullRequest: Open draft request + PullRequest-->>Orchestrator: Pull request URL + end +``` + +- The checker is fresh and read-only. +- Any blocking review finding or failed journey returns `iterate`. +- Only the orchestrator opens the pull request after verifying the reviewed SHA. diff --git a/scripts/sync-skill-argument-hints.mjs b/scripts/sync-skill-argument-hints.mjs index 186126383..f0cf5ef03 100755 --- a/scripts/sync-skill-argument-hints.mjs +++ b/scripts/sync-skill-argument-hints.mjs @@ -97,7 +97,6 @@ function syncArgumentHint(content, hint) { // untouched. This is the base pattern for a pipeline or case-based router. const MANUAL_ARGUMENT_HINT = new Set([ "01-brainstorm", - "01-sdlc", "02-project-memory", "04-skill-generate", ]); From 28654f5accd6e1204f19376f1ab70c0e354c07d1 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 09:35:38 +0200 Subject: [PATCH 03/27] refactor(orchestrator): parallelize review fixes --- plugins/aidd-dev/agents/checker.md | 1 - .../skills/01-sdlc/references/02-deliver.md | 11 +++++---- .../skills/01-sdlc/references/03-check.md | 23 +++++++++++++------ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/plugins/aidd-dev/agents/checker.md b/plugins/aidd-dev/agents/checker.md index f2a954d91..cd71e924a 100644 --- a/plugins/aidd-dev/agents/checker.md +++ b/plugins/aidd-dev/agents/checker.md @@ -43,4 +43,3 @@ This is the behavioral baseline. Apply it to every code or diff, and extend it w - `aidd-dev:05-review` - `aidd-dev:04-audit` -- `aidd-dev:06-test` (`test-journey` only) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index 632de9398..8a245fff5 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -12,8 +12,8 @@ sequenceDiagram participant Executor participant Implement as Implementation capability participant Assert as Assertion capability - participant Test as Test capability participant Commit as Commit capability + participant Test as E2E test capability Orchestrator->>Plan: Build plan from contract Plan-->>Orchestrator: plan.md @@ -22,17 +22,18 @@ sequenceDiagram Implement-->>Executor: Candidate Executor->>Assert: Validate candidate Assert-->>Executor: Verdict - opt User journey is required - Executor->>Test: Validate journey - Test-->>Executor: Journey report - end opt Delivery leaves uncommitted changes Executor->>Commit: Commit remaining changes Commit-->>Executor: Commit SHA end + opt User journey is required + Executor->>Test: Run final E2E journey + Test-->>Executor: Journey report + end Executor-->>Orchestrator: Clean candidate SHA ``` - The orchestrator owns `plan.md`; the executor never rewrites it. - The executor implements and self-validates. It does not perform the independent review. +- Run E2E only after implementation, assertions, and commits are complete. A failure re-enters delivery before one final E2E run. - Return only a clean candidate with green validation to `03-check`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 002e2808a..46ad92fa0 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -10,19 +10,26 @@ sequenceDiagram participant Orchestrator participant Checker participant Review as Review capability - participant Journey as Journey test capability + participant Todo as Todo capability + participant ExecutorA as Executor + participant ExecutorN as Executor participant PullRequest as Pull request capability Orchestrator->>Checker: Review contract, plan, and SHA Checker->>Review: Review current diff Review-->>Checker: review.md and verdict - opt UI journey exists - Checker->>Journey: Validate pages - Journey-->>Checker: Journey report - end Checker-->>Orchestrator: Ship or iterate alt Iterate - Orchestrator->>Orchestrator: Route findings to 02 deliver + Orchestrator->>Todo: Dispatch independent findings + par Finding A + Todo->>ExecutorA: Implement finding + and Finding N + Todo->>ExecutorN: Implement finding + end + ExecutorA-->>Todo: Fix result + ExecutorN-->>Todo: Fix result + Todo-->>Orchestrator: Consolidated results + Orchestrator->>Orchestrator: Route results to 02 deliver else Ship Orchestrator->>Orchestrator: Verify reviewed SHA is current Orchestrator->>PullRequest: Open draft request @@ -31,5 +38,7 @@ sequenceDiagram ``` - The checker is fresh and read-only. -- Any blocking review finding or failed journey returns `iterate`. +- Any blocking review finding returns `iterate`. +- Dispatch only independent findings through the todo capability, one executor per finding in parallel. +- Re-enter `02-deliver` to integrate, validate, commit, and run the final E2E gate. - Only the orchestrator opens the pull request after verifying the reviewed SHA. From e95c08e1e6e91b3b2198388a0697703b6590b210 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 09:46:22 +0200 Subject: [PATCH 04/27] fix(orchestrator): align SDLC protocol notation --- docs/ARCHITECTURE.md | 23 +++++---- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 6 +-- .../skills/01-sdlc/references/01-frame.md | 38 +++++++------- .../skills/01-sdlc/references/02-deliver.md | 51 ++++++++++--------- .../skills/01-sdlc/references/03-check.md | 48 ++++++++--------- 5 files changed, 86 insertions(+), 80 deletions(-) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index d5325a39e..4ef7cd6be 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -125,22 +125,23 @@ A skill's `SKILL.md` is a manifest plus a router. Claude Code loads the SKILL.md title: skill router pattern --- flowchart LR - User["User: 'Use skill aidd-X:NN-name'"] - Skill["SKILL.md (router)"] - Action["Recipe action"] - Protocol["Reference protocol"] - Agent["Agent running a capability"] + User["User: '/skill-name'"] + Skill["/skill-name"] + Action1["actions/01-step.md"] + Action2["actions/02-step.md"] + ActionN["actions/NN-step.md"] Out["Outputs: files, labels, PRs, audit logs"] User --> Skill - Skill -->|"domain work"| Action - Skill -->|"orchestration zone"| Protocol - Protocol --> Agent - Action --> Out - Agent --> Out + Skill -->|"choose 1..N"| Action1 + Skill -->|"choose 1..N"| Action2 + Skill -->|"choose 1..N"| ActionN + Action1 --> Out + Action2 --> Out + ActionN --> Out ``` -Recipe skills route to self-contained actions with inputs, outputs, process steps, and tests. Orchestrators with no domain logic may instead route through numbered reference protocols that define handoffs and delegate the work to capabilities discovered at runtime. +Recipe skills route to self-contained actions with inputs, outputs, process steps, and tests. An orchestrator with no domain logic may instead route through numbered reference protocols that define handoffs and delegate the work to capabilities discovered at runtime. ## 🤖 Skills and agents diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index e08a297de..1ee9a70f6 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -10,12 +10,12 @@ description: Orchestrates a request from framing to a draft pull request, isolat title: SDLC orchestration --- flowchart LR - Request["Request"] - Ready{"Ready contract?"} + Request["$request"] + Ready{"$contract ready?"} Frame["01 Frame"] Deliver["02 Deliver"] Check["03 Check"] - PullRequest["Draft pull request"] + PullRequest["$pull_request"] Request --> Ready Ready -- "no" --> Frame diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 6fb9be87a..8efef7026 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -7,28 +7,28 @@ Decide whether the source is ready for planning. title: Frame the delivery contract --- sequenceDiagram - participant Orchestrator - participant Ticket as Ticket capability - participant Brainstorm as Brainstorm capability - participant Spec as Specification capability + participant Sdlc as /sdlc + participant Ticket as /ticket-info + participant Brainstorm as /brainstorm + participant Spec as /spec - opt Ticket reference - Orchestrator->>Ticket: Retrieve source - Ticket-->>Orchestrator: Ticket + opt $ticket_reference exists + Sdlc->>Ticket: Retrieve $ticket_reference + Ticket-->>Sdlc: $ticket end - alt Objective and acceptance criteria exist - Orchestrator->>Orchestrator: Keep source as contract - else Scope is ambiguous - Orchestrator->>Brainstorm: Clarify scope - Brainstorm-->>Orchestrator: Clarified scope - Orchestrator->>Spec: Build specification - Spec-->>Orchestrator: spec.md - else Scope is clear but contract is incomplete - Orchestrator->>Spec: Build specification - Spec-->>Orchestrator: spec.md + alt $source has objective and acceptance criteria + Sdlc->>Sdlc: Keep $source as $contract + else $scope is ambiguous + Sdlc->>Brainstorm: Clarify $scope + Brainstorm-->>Sdlc: $clarified_scope + Sdlc->>Spec: Build $spec from $clarified_scope + Spec-->>Sdlc: $spec + else $scope is clear but $contract is incomplete + Sdlc->>Spec: Build $spec from $source + Spec-->>Sdlc: $spec end ``` -- The orchestrator owns the readiness decision. +- `/sdlc` owns the readiness decision. - A ready contract has an explicit objective and observable acceptance criteria. -- Return the source contract or `spec.md` to `02-deliver`. +- Return `$contract` or `$spec` to `02-deliver`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index 8a245fff5..8ef975306 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -7,33 +7,38 @@ Produce a validated candidate from the contract. title: Deliver the candidate --- sequenceDiagram - participant Orchestrator - participant Plan as Planning capability - participant Executor - participant Implement as Implementation capability - participant Assert as Assertion capability - participant Commit as Commit capability - participant Test as E2E test capability + participant Sdlc as /sdlc + participant Plan as /plan + participant Executor as @executor + participant Implement as /implement + participant Assert as /assert + participant Commit as /commit + participant Test as /test - Orchestrator->>Plan: Build plan from contract - Plan-->>Orchestrator: plan.md - Orchestrator->>Executor: Deliver plan and findings - Executor->>Implement: Implement plan or fixes - Implement-->>Executor: Candidate - Executor->>Assert: Validate candidate - Assert-->>Executor: Verdict - opt Delivery leaves uncommitted changes - Executor->>Commit: Commit remaining changes - Commit-->>Executor: Commit SHA + Sdlc->>Plan: Build $plan from $contract + Plan-->>Sdlc: $plan + Sdlc->>Executor: Deliver $plan and $findings + Executor->>Implement: Implement $plan or $fixes + Implement-->>Executor: $candidate + Executor->>Assert: Validate $candidate + Assert-->>Executor: $assert_report + opt $architecture exists + Executor->>Assert: Validate $candidate against $architecture + Assert-->>Executor: $architecture_report end - opt User journey is required - Executor->>Test: Run final E2E journey - Test-->>Executor: Journey report + opt $candidate has uncommitted changes + Executor->>Commit: Commit $candidate + Commit-->>Executor: $commit_sha end - Executor-->>Orchestrator: Clean candidate SHA + opt $journey is required + Executor->>Test: Run final E2E for $journey + Test-->>Executor: $journey_report + end + Executor-->>Sdlc: $candidate_sha ``` -- The orchestrator owns `plan.md`; the executor never rewrites it. -- The executor implements and self-validates. It does not perform the independent review. +- `/sdlc` owns `$plan`; `@executor` never rewrites it. +- `@executor` implements and self-validates. It does not perform the independent review. +- `@executor` runs the architecture facet of `/assert` when architecture documentation applies. - Run E2E only after implementation, assertions, and commits are complete. A failure re-enters delivery before one final E2E run. - Return only a clean candidate with green validation to `03-check`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 46ad92fa0..8779dfaa1 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -7,38 +7,38 @@ Review the candidate in a fresh context and route the verdict. title: Check independently --- sequenceDiagram - participant Orchestrator - participant Checker - participant Review as Review capability - participant Todo as Todo capability - participant ExecutorA as Executor - participant ExecutorN as Executor - participant PullRequest as Pull request capability + participant Sdlc as /sdlc + participant Checker as @checker + participant Review as /review + participant Todo as /todo + participant ExecutorA as @executor A + participant ExecutorN as @executor N + participant PullRequest as /pull-request - Orchestrator->>Checker: Review contract, plan, and SHA - Checker->>Review: Review current diff - Review-->>Checker: review.md and verdict - Checker-->>Orchestrator: Ship or iterate + Sdlc->>Checker: Review $contract, $plan, and $candidate_sha + Checker->>Review: Review $candidate_diff + Review-->>Checker: $review and $verdict + Checker-->>Sdlc: $verdict alt Iterate - Orchestrator->>Todo: Dispatch independent findings + Sdlc->>Todo: Dispatch $findings par Finding A - Todo->>ExecutorA: Implement finding + Todo->>ExecutorA: Implement $finding_a and Finding N - Todo->>ExecutorN: Implement finding + Todo->>ExecutorN: Implement $finding_n end - ExecutorA-->>Todo: Fix result - ExecutorN-->>Todo: Fix result - Todo-->>Orchestrator: Consolidated results - Orchestrator->>Orchestrator: Route results to 02 deliver + ExecutorA-->>Todo: $fix_a + ExecutorN-->>Todo: $fix_n + Todo-->>Sdlc: $fixes + Sdlc->>Sdlc: Route $fixes to 02 deliver else Ship - Orchestrator->>Orchestrator: Verify reviewed SHA is current - Orchestrator->>PullRequest: Open draft request - PullRequest-->>Orchestrator: Pull request URL + Sdlc->>Sdlc: Verify $reviewed_sha is current + Sdlc->>PullRequest: Open draft for $reviewed_sha + PullRequest-->>Sdlc: $pull_request_url end ``` -- The checker is fresh and read-only. +- `@checker` is fresh and read-only. - Any blocking review finding returns `iterate`. -- Dispatch only independent findings through the todo capability, one executor per finding in parallel. +- Dispatch only independent findings through `/todo`, one `@executor` per finding in parallel. - Re-enter `02-deliver` to integrate, validate, commit, and run the final E2E gate. -- Only the orchestrator opens the pull request after verifying the reviewed SHA. +- Only `/sdlc` calls `/pull-request` after verifying the reviewed SHA. From cc358769b4327b7b0d93d0df83aae753e0d539af Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 09:53:10 +0200 Subject: [PATCH 05/27] fix(orchestrator): name SDLC providers explicitly --- docs/ARCHITECTURE.md | 4 +- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 4 +- .../skills/01-sdlc/references/01-frame.md | 28 +++++------ .../skills/01-sdlc/references/02-deliver.md | 40 ++++++++-------- .../skills/01-sdlc/references/03-check.md | 46 +++++++++---------- 5 files changed, 61 insertions(+), 61 deletions(-) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 4ef7cd6be..27d0aeed6 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -159,9 +159,9 @@ Composition rules: ## 🔗 Cross-plugin orthogonality -Plugins never reference each other by name — **orchestrators included**. When skill A needs a capability skill B owns, it discovers a candidate at runtime through description matching, never a hardcoded `aidd-:…` address. This keeps the marketplace forkable, the plugins swappable, and the docs maintainable. +Recipe plugins never hardcode a sibling provider. They discover cross-plugin capabilities at runtime through description matching. An orchestration reference may show the current provider with its canonical `/plugin:folder` or `@plugin:agent` address when the document maps responsibilities; the orchestrator must verify that provider is installed before calling it. -The rule is social (PR template checklist), not yet mechanically enforced — a lefthook grep for cross-plugin literals would catch violations (an orchestrator hardcoding a sibling skill name still slips through today). +This distinction keeps recipe plugins swappable while making orchestration handoffs explicit and auditable. ## 🔎 See also diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index 1ee9a70f6..5105e2d31 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -11,7 +11,7 @@ title: SDLC orchestration --- flowchart LR Request["$request"] - Ready{"$contract ready?"} + Ready{"Contract ready?"} Frame["01 Frame"] Deliver["02 Deliver"] Check["03 Check"] @@ -39,7 +39,7 @@ Read only the current zone's reference before delegating it. ## Transversal rules - Own routing and verify every handoff against the current reference. -- Discover cross-plugin capabilities by description, never by plugin name. +- Treat the canonical plugin addresses in the references as the responsibility map. Verify that each named provider is installed before calling it. - Run planning in the orchestrator context. Isolate implementation in `executor` and independent review in `checker`. - Mode: default `interactive`, pausing for approval at each step; switch to `auto` only when the caller says so, then decide alone and never ask. - Stop on `blocked`. Loop `check → deliver` on `iterate`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 8efef7026..2f04bf39f 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -7,28 +7,28 @@ Decide whether the source is ready for planning. title: Frame the delivery contract --- sequenceDiagram - participant Sdlc as /sdlc - participant Ticket as /ticket-info - participant Brainstorm as /brainstorm - participant Spec as /spec + participant Sdlc as /aidd-orchestrator:01-sdlc + participant Ticket as /aidd-pm:01-ticket-info + participant Brainstorm as /aidd-refine:01-brainstorm + participant Spec as /aidd-pm:04-spec - opt $ticket_reference exists - Sdlc->>Ticket: Retrieve $ticket_reference + opt "A ticket reference exists" + Sdlc->>Ticket: "Retrieve the source" Ticket-->>Sdlc: $ticket end - alt $source has objective and acceptance criteria - Sdlc->>Sdlc: Keep $source as $contract - else $scope is ambiguous - Sdlc->>Brainstorm: Clarify $scope + alt "Objective and acceptance criteria exist" + Sdlc->>Sdlc: "Keep the source as contract" + else "Scope is ambiguous" + Sdlc->>Brainstorm: "Clarify the scope" Brainstorm-->>Sdlc: $clarified_scope - Sdlc->>Spec: Build $spec from $clarified_scope + Sdlc->>Spec: "Build the specification" Spec-->>Sdlc: $spec - else $scope is clear but $contract is incomplete - Sdlc->>Spec: Build $spec from $source + else "Scope is clear but contract is incomplete" + Sdlc->>Spec: "Build the specification" Spec-->>Sdlc: $spec end ``` -- `/sdlc` owns the readiness decision. +- `/aidd-orchestrator:01-sdlc` owns the readiness decision. - A ready contract has an explicit objective and observable acceptance criteria. - Return `$contract` or `$spec` to `02-deliver`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index 8ef975306..f087dc60b 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -7,38 +7,38 @@ Produce a validated candidate from the contract. title: Deliver the candidate --- sequenceDiagram - participant Sdlc as /sdlc - participant Plan as /plan - participant Executor as @executor - participant Implement as /implement - participant Assert as /assert - participant Commit as /commit - participant Test as /test + participant Sdlc as /aidd-orchestrator:01-sdlc + participant Plan as /aidd-dev:01-plan + participant Executor as @aidd-dev:executor + participant Implement as /aidd-dev:02-implement + participant Assert as /aidd-dev:03-assert + participant Commit as /aidd-vcs:01-commit + participant Test as /aidd-dev:06-test - Sdlc->>Plan: Build $plan from $contract + Sdlc->>Plan: "Build the implementation plan" Plan-->>Sdlc: $plan - Sdlc->>Executor: Deliver $plan and $findings - Executor->>Implement: Implement $plan or $fixes + Sdlc->>Executor: "Deliver the plan or review findings" + Executor->>Implement: "Implement the plan or fixes" Implement-->>Executor: $candidate - Executor->>Assert: Validate $candidate + Executor->>Assert: "Validate the candidate" Assert-->>Executor: $assert_report - opt $architecture exists - Executor->>Assert: Validate $candidate against $architecture + opt "Architecture documentation exists" + Executor->>Assert: "Run assert-architecture" Assert-->>Executor: $architecture_report end - opt $candidate has uncommitted changes - Executor->>Commit: Commit $candidate + opt "The candidate has uncommitted changes" + Executor->>Commit: "Commit the candidate" Commit-->>Executor: $commit_sha end - opt $journey is required - Executor->>Test: Run final E2E for $journey + opt "A user journey is required" + Executor->>Test: "Run the final E2E journey" Test-->>Executor: $journey_report end Executor-->>Sdlc: $candidate_sha ``` -- `/sdlc` owns `$plan`; `@executor` never rewrites it. -- `@executor` implements and self-validates. It does not perform the independent review. -- `@executor` runs the architecture facet of `/assert` when architecture documentation applies. +- `/aidd-orchestrator:01-sdlc` owns `$plan`; `@aidd-dev:executor` never rewrites it. +- `@aidd-dev:executor` implements and self-validates. It does not perform the independent review. +- `@aidd-dev:executor` runs `assert-architecture` through `/aidd-dev:03-assert` when architecture documentation applies. - Run E2E only after implementation, assertions, and commits are complete. A failure re-enters delivery before one final E2E run. - Return only a clean candidate with green validation to `03-check`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 8779dfaa1..9d301fce8 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -7,38 +7,38 @@ Review the candidate in a fresh context and route the verdict. title: Check independently --- sequenceDiagram - participant Sdlc as /sdlc - participant Checker as @checker - participant Review as /review - participant Todo as /todo - participant ExecutorA as @executor A - participant ExecutorN as @executor N - participant PullRequest as /pull-request + participant Sdlc as /aidd-orchestrator:01-sdlc + participant Checker as @aidd-dev:checker + participant Review as /aidd-dev:05-review + participant Todo as /aidd-dev:10-todo + participant ExecutorA as @aidd-dev:executor A + participant ExecutorN as @aidd-dev:executor N + participant PullRequest as /aidd-vcs:02-pull-request - Sdlc->>Checker: Review $contract, $plan, and $candidate_sha - Checker->>Review: Review $candidate_diff - Review-->>Checker: $review and $verdict + Sdlc->>Checker: "Review the contract, plan, and candidate" + Checker->>Review: "Review the current diff" + Review-->>Checker: $review, $verdict Checker-->>Sdlc: $verdict - alt Iterate - Sdlc->>Todo: Dispatch $findings - par Finding A - Todo->>ExecutorA: Implement $finding_a - and Finding N - Todo->>ExecutorN: Implement $finding_n + alt "Iterate" + Sdlc->>Todo: "Dispatch independent findings" + par "Finding A" + Todo->>ExecutorA: "Implement finding A" + and "Finding N" + Todo->>ExecutorN: "Implement finding N" end ExecutorA-->>Todo: $fix_a ExecutorN-->>Todo: $fix_n Todo-->>Sdlc: $fixes - Sdlc->>Sdlc: Route $fixes to 02 deliver - else Ship - Sdlc->>Sdlc: Verify $reviewed_sha is current - Sdlc->>PullRequest: Open draft for $reviewed_sha + Sdlc->>Sdlc: "Route fixes to 02 Deliver" + else "Ship" + Sdlc->>Sdlc: "Verify the reviewed SHA is current" + Sdlc->>PullRequest: "Open the draft pull request" PullRequest-->>Sdlc: $pull_request_url end ``` -- `@checker` is fresh and read-only. +- `@aidd-dev:checker` is fresh and read-only. - Any blocking review finding returns `iterate`. -- Dispatch only independent findings through `/todo`, one `@executor` per finding in parallel. +- Dispatch only independent findings through `/aidd-dev:10-todo`, one `@aidd-dev:executor` per finding in parallel. - Re-enter `02-deliver` to integrate, validate, commit, and run the final E2E gate. -- Only `/sdlc` calls `/pull-request` after verifying the reviewed SHA. +- Only `/aidd-orchestrator:01-sdlc` calls `/aidd-vcs:02-pull-request` after verifying the reviewed SHA. From 9399371a888b329ba4419f464e9d2cb6646d3213 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 10:05:23 +0200 Subject: [PATCH 06/27] refactor(orchestrator): simplify SDLC diagrams --- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 18 +++- .../skills/01-sdlc/references/01-frame.md | 59 ++++++++----- .../skills/01-sdlc/references/02-deliver.md | 83 ++++++++++++------- .../skills/01-sdlc/references/03-check.md | 71 +++++++++------- 4 files changed, 152 insertions(+), 79 deletions(-) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index 5105e2d31..31c626d2d 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -10,20 +10,32 @@ description: Orchestrates a request from framing to a draft pull request, isolat title: SDLC orchestration --- flowchart LR - Request["$request"] + Request[["$request"]] + Sdlc["/aidd-orchestrator:01-sdlc"] Ready{"Contract ready?"} Frame["01 Frame"] Deliver["02 Deliver"] Check["03 Check"] - PullRequest["$pull_request"] + PullRequest[["$pull_request"]] - Request --> Ready + Request --> Sdlc + Sdlc --> Ready Ready -- "no" --> Frame Ready -- "yes" --> Deliver Frame --> Deliver Deliver --> Check Check -- "iterate" --> Deliver Check -- "ship" --> PullRequest + + classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px + classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px + classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px + classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px + + class Sdlc skill + class Request,PullRequest artifact + class Ready decision + class Frame,Deliver,Check zone ``` ## References diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 2f04bf39f..39276554e 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -6,27 +6,46 @@ Decide whether the source is ready for planning. --- title: Frame the delivery contract --- -sequenceDiagram - participant Sdlc as /aidd-orchestrator:01-sdlc - participant Ticket as /aidd-pm:01-ticket-info - participant Brainstorm as /aidd-refine:01-brainstorm - participant Spec as /aidd-pm:04-spec +flowchart TB + Source[["$source"]] + Sdlc["/aidd-orchestrator:01-sdlc"] + TicketDecision{"Ticket reference?"} + Ticket["/aidd-pm:01-ticket-info"] + TicketArtifact[["$ticket"]] + ContractDecision{"Contract ready?"} + Contract[["$contract"]] + ScopeDecision{"Scope ambiguous?"} + Brainstorm["/aidd-refine:01-brainstorm"] + ClarifiedScope[["$clarified_scope"]] + Spec["/aidd-pm:04-spec"] + SpecArtifact[["$spec"]] + Deliver["02 Deliver"] - opt "A ticket reference exists" - Sdlc->>Ticket: "Retrieve the source" - Ticket-->>Sdlc: $ticket - end - alt "Objective and acceptance criteria exist" - Sdlc->>Sdlc: "Keep the source as contract" - else "Scope is ambiguous" - Sdlc->>Brainstorm: "Clarify the scope" - Brainstorm-->>Sdlc: $clarified_scope - Sdlc->>Spec: "Build the specification" - Spec-->>Sdlc: $spec - else "Scope is clear but contract is incomplete" - Sdlc->>Spec: "Build the specification" - Spec-->>Sdlc: $spec - end + Source --> Sdlc + Sdlc --> TicketDecision + TicketDecision -- "yes" --> Ticket + Ticket --> TicketArtifact + TicketArtifact --> ContractDecision + TicketDecision -- "no" --> ContractDecision + ContractDecision -- "yes" --> Contract + Contract --> Deliver + ContractDecision -- "no" --> ScopeDecision + ScopeDecision -- "yes" --> Brainstorm + Brainstorm --> ClarifiedScope + ClarifiedScope --> Spec + ScopeDecision -- "no" --> Spec + Spec --> SpecArtifact + SpecArtifact --> Deliver + + classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px + classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px + classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px + classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px + + class Sdlc,Ticket,Brainstorm,Spec skill + class Source,TicketArtifact,Contract,ClarifiedScope,SpecArtifact artifact + class TicketDecision,ContractDecision,ScopeDecision decision + class Deliver zone ``` - `/aidd-orchestrator:01-sdlc` owns the readiness decision. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index f087dc60b..1710f8bdf 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -6,35 +6,62 @@ Produce a validated candidate from the contract. --- title: Deliver the candidate --- -sequenceDiagram - participant Sdlc as /aidd-orchestrator:01-sdlc - participant Plan as /aidd-dev:01-plan - participant Executor as @aidd-dev:executor - participant Implement as /aidd-dev:02-implement - participant Assert as /aidd-dev:03-assert - participant Commit as /aidd-vcs:01-commit - participant Test as /aidd-dev:06-test +flowchart TB + Contract[["$contract"]] + Sdlc["/aidd-orchestrator:01-sdlc"] + Plan["/aidd-dev:01-plan"] + PlanArtifact[["$plan"]] + Executor(["@aidd-dev:executor"]) + Implement["/aidd-dev:02-implement"] + Candidate[["$candidate"]] + AssertCode["/aidd-dev:03-assert"] + AssertReport[["$assert_report"]] + ArchitectureDecision{"Architecture documentation?"} + AssertArchitecture["/aidd-dev:03-assert"] + ArchitectureReport[["$architecture_report"]] + CommitDecision{"Uncommitted changes?"} + Commit["/aidd-vcs:01-commit"] + CommitSha[["$commit_sha"]] + JourneyDecision{"User journey?"} + Test["/aidd-dev:06-test"] + JourneyReport[["$journey_report"]] + CandidateSha[["$candidate_sha"]] + Check["03 Check"] - Sdlc->>Plan: "Build the implementation plan" - Plan-->>Sdlc: $plan - Sdlc->>Executor: "Deliver the plan or review findings" - Executor->>Implement: "Implement the plan or fixes" - Implement-->>Executor: $candidate - Executor->>Assert: "Validate the candidate" - Assert-->>Executor: $assert_report - opt "Architecture documentation exists" - Executor->>Assert: "Run assert-architecture" - Assert-->>Executor: $architecture_report - end - opt "The candidate has uncommitted changes" - Executor->>Commit: "Commit the candidate" - Commit-->>Executor: $commit_sha - end - opt "A user journey is required" - Executor->>Test: "Run the final E2E journey" - Test-->>Executor: $journey_report - end - Executor-->>Sdlc: $candidate_sha + Contract --> Sdlc + Sdlc --> Plan + Plan --> PlanArtifact + PlanArtifact --> Executor + Executor --> Implement + Implement --> Candidate + Candidate -- "validate" --> AssertCode + AssertCode --> AssertReport + AssertReport --> ArchitectureDecision + ArchitectureDecision -- "yes, run assert-architecture" --> AssertArchitecture + AssertArchitecture --> ArchitectureReport + ArchitectureReport --> CommitDecision + ArchitectureDecision -- "no" --> CommitDecision + CommitDecision -- "yes" --> Commit + Commit --> CommitSha + CommitSha --> JourneyDecision + CommitDecision -- "no" --> JourneyDecision + JourneyDecision -- "yes, run test-journey" --> Test + Test --> JourneyReport + JourneyReport --> CandidateSha + JourneyDecision -- "no" --> CandidateSha + CandidateSha --> Check + + classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px + classDef agent fill:#F3E8FF,stroke:#9333EA,color:#581C87,stroke-width:2px + classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px + classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px + classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px + + class Sdlc,Plan,Implement,AssertCode,AssertArchitecture,Commit,Test skill + class Executor agent + class Contract,PlanArtifact,Candidate,AssertReport,ArchitectureReport,CommitSha,JourneyReport,CandidateSha artifact + class ArchitectureDecision,CommitDecision,JourneyDecision decision + class Check zone ``` - `/aidd-orchestrator:01-sdlc` owns `$plan`; `@aidd-dev:executor` never rewrites it. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 9d301fce8..a6a30164b 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -6,35 +6,50 @@ Review the candidate in a fresh context and route the verdict. --- title: Check independently --- -sequenceDiagram - participant Sdlc as /aidd-orchestrator:01-sdlc - participant Checker as @aidd-dev:checker - participant Review as /aidd-dev:05-review - participant Todo as /aidd-dev:10-todo - participant ExecutorA as @aidd-dev:executor A - participant ExecutorN as @aidd-dev:executor N - participant PullRequest as /aidd-vcs:02-pull-request +flowchart TB + CandidateSha[["$candidate_sha"]] + Checker(["@aidd-dev:checker"]) + Review["/aidd-dev:05-review"] + ReviewArtifact[["$review · $verdict"]] + Sdlc["/aidd-orchestrator:01-sdlc"] + Verdict{"Verdict?"} + Todo["/aidd-dev:10-todo"] + ExecutorFirst(["@aidd-dev:executor"]) + ExecutorLast(["@aidd-dev:executor"]) + FixFirst[["$fix_a"]] + FixLast[["$fix_n"]] + Fixes[["$fixes"]] + Deliver["02 Deliver"] + PullRequest["/aidd-vcs:02-pull-request"] + PullRequestUrl[["$pull_request_url"]] - Sdlc->>Checker: "Review the contract, plan, and candidate" - Checker->>Review: "Review the current diff" - Review-->>Checker: $review, $verdict - Checker-->>Sdlc: $verdict - alt "Iterate" - Sdlc->>Todo: "Dispatch independent findings" - par "Finding A" - Todo->>ExecutorA: "Implement finding A" - and "Finding N" - Todo->>ExecutorN: "Implement finding N" - end - ExecutorA-->>Todo: $fix_a - ExecutorN-->>Todo: $fix_n - Todo-->>Sdlc: $fixes - Sdlc->>Sdlc: "Route fixes to 02 Deliver" - else "Ship" - Sdlc->>Sdlc: "Verify the reviewed SHA is current" - Sdlc->>PullRequest: "Open the draft pull request" - PullRequest-->>Sdlc: $pull_request_url - end + CandidateSha --> Checker + Checker --> Review + Review --> ReviewArtifact + ReviewArtifact --> Sdlc + Sdlc --> Verdict + Verdict -- "iterate" --> Todo + Todo --> ExecutorFirst + Todo --> ExecutorLast + ExecutorFirst --> FixFirst + ExecutorLast --> FixLast + FixFirst --> Fixes + FixLast --> Fixes + Fixes --> Deliver + Verdict -- "ship" --> PullRequest + PullRequest --> PullRequestUrl + + classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px + classDef agent fill:#F3E8FF,stroke:#9333EA,color:#581C87,stroke-width:2px + classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px + classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px + classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px + + class Review,Sdlc,Todo,PullRequest skill + class Checker,ExecutorFirst,ExecutorLast agent + class CandidateSha,ReviewArtifact,FixFirst,FixLast,Fixes,PullRequestUrl artifact + class Verdict decision + class Deliver zone ``` - `@aidd-dev:checker` is fresh and read-only. From 48c7e30c9a9380e256e6d2c731356cadd94dacde Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 10:20:39 +0200 Subject: [PATCH 07/27] refactor(orchestrator): orient SDLC flows left to right --- plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md | 2 +- .../aidd-orchestrator/skills/01-sdlc/references/02-deliver.md | 2 +- plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 39276554e..35b933427 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -6,7 +6,7 @@ Decide whether the source is ready for planning. --- title: Frame the delivery contract --- -flowchart TB +flowchart LR Source[["$source"]] Sdlc["/aidd-orchestrator:01-sdlc"] TicketDecision{"Ticket reference?"} diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index 1710f8bdf..956ef18fe 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -6,7 +6,7 @@ Produce a validated candidate from the contract. --- title: Deliver the candidate --- -flowchart TB +flowchart LR Contract[["$contract"]] Sdlc["/aidd-orchestrator:01-sdlc"] Plan["/aidd-dev:01-plan"] diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index a6a30164b..6233383b7 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -6,7 +6,7 @@ Review the candidate in a fresh context and route the verdict. --- title: Check independently --- -flowchart TB +flowchart LR CandidateSha[["$candidate_sha"]] Checker(["@aidd-dev:checker"]) Review["/aidd-dev:05-review"] From c88a5eae5c8ed9d2fc736b32bae2fda63bdf8f3b Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 10:20:47 +0200 Subject: [PATCH 08/27] docs(review): assess SDLC orchestration --- .../2026_07_25_sdlc-orchestration/review.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md new file mode 100644 index 000000000..904212fee --- /dev/null +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -0,0 +1,58 @@ +# Review: SDLC orchestration migration + +- **Verdict**: changes-requested +- **Diff**: `origin/next...working-tree` +- **Axes run**: code, functional, relevancy +- **Date**: 2026_07_25 +- **Findings**: 0 critical, 6 warning, 1 minor + +## Phases + +### Phase 1 — Move orchestration + +- [x] Register `01-sdlc` in `aidd-orchestrator` — `plugins/aidd-orchestrator/.claude-plugin/plugin.json:10` +- [x] Remove the former SDLC action tree from `aidd-dev` — `git diff --name-status origin/next` + +### Phase 2 — Frame the contract + +- [x] Skip specification when the source already has an objective and acceptance criteria — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:30` +- [x] Use the canonical brainstorm and spec providers when framing is required — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:18` + +### Phase 3 — Deliver the candidate + +- [x] Order plan, implementation, assertions, architecture check, commit, and final E2E — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:31` +- [ ] Route failed assertions and failed E2E back to implementation — every report currently advances toward `$candidate_sha` + +### Phase 4 — Check independently + +- [x] Run review in `@aidd-dev:checker` and fan independent fixes through Todo — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:26` +- [ ] Give the checker the contract and plan — only `$candidate_sha` enters the checker +- [ ] Verify the reviewed SHA before opening the pull request — the ship edge opens it directly +- [ ] Keep agent spawning inside the orchestrator boundary — Todo currently points directly to executor agents + +### Phase 5 — Keep the protocol readable + +- [x] Use `flowchart LR` and distinct classes for skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:9` +- [ ] Keep the delivery diagram readable in a normal Markdown viewport — the rendered LR graph is an approximately 5,200 px single row +- [ ] Describe specification as conditional in the public quick start — the current summary still shows `spec` as mandatory + +## Findings + +| Sev | Kind | Phase | Location | Issue | Fix | +| --- | ---- | ----- | -------- | ----- | --- | +| 🟡 warning | functional | 3 | `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:39` | `$assert_report`, `$architecture_report`, and `$journey_report` have only success-shaped forward edges, so failed validation reaches `$candidate_sha` despite the stated gate. | Add explicit pass decisions after each report and route failure back to `@aidd-dev:executor`; only green reports may advance. | +| 🟡 warning | functional | 4 | `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:26` | The checker receives only `$candidate_sha`; `/aidd-dev:05-review` cannot perform its functional axis without the contract and plan. | Feed `$contract`, `$plan`, and `$candidate_sha` into `@aidd-dev:checker`. | +| 🟡 warning | functional | 4 | `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:39` | The ship branch calls `/aidd-vcs:02-pull-request` directly, while line 59 requires verifying that the reviewed SHA is current. | Add a reviewed-SHA decision before the pull-request skill and route stale work back through delivery and review. | +| 🟡 warning | conform | 4 | `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:32` | `/aidd-dev:10-todo` directly fans out executor agents, conflicting with `docs/ARCHITECTURE.md:155`, which reserves spawning for a high-level orchestrator. | Make `/aidd-orchestrator:01-sdlc` own the fan-out after Todo splits the findings, or document and place Todo as an orchestration capability. | +| 🟡 warning | functional | 5 | `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:9` | Pure LR layout produces an ultra-wide strip that still requires heavy horizontal scrolling, missing the readability goal. | Keep the outer flow LR but group delivery stages into compact subgraphs with local vertical layout. | +| 🟡 warning | fit | 5 | `README.md:37` | The public flow says `spec → plan`, contradicting the new conditional framing contract. | Replace mandatory `spec` with `frame` or mark specification as conditional. | +| 🟢 minor | rot | - | `scripts/sync-skill-argument-hints.mjs:98` | A formatting-only rewrite is unrelated to the SDLC migration. | Revert the unrelated formatting change or isolate it in a separate commit. | + +## Verification + +| Metric | Value | +| ------------- | ----- | +| Verified | 54% (7/13) | +| Files checked | All 30 changed files in `origin/next...working-tree`; four SDLC Mermaid diagrams rendered | +| Unchecked | Validation failure loops — fix; checker inputs — fix; reviewed SHA gate — fix; Todo spawning boundary — fix; LR readability — fix; conditional framing in README — fix | +| Unplanned | Formatting-only change in `scripts/sync-skill-argument-hints.mjs` | From a1b4d80c33ab8b77c9da90d478f1c975bae3c9c4 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 11:47:33 +0200 Subject: [PATCH 09/27] refactor(orchestrator): clarify SDLC diagram labels --- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 14 ++++---- .../skills/01-sdlc/references/01-frame.md | 28 +++++++-------- .../skills/01-sdlc/references/02-deliver.md | 36 +++++++++---------- .../skills/01-sdlc/references/03-check.md | 18 +++++----- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index 31c626d2d..e9b870b97 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -10,22 +10,22 @@ description: Orchestrates a request from framing to a draft pull request, isolat title: SDLC orchestration --- flowchart LR - Request[["$request"]] + Request["$request"] Sdlc["/aidd-orchestrator:01-sdlc"] - Ready{"Contract ready?"} + Ready{"Are the contract requirements fulfilled?"} Frame["01 Frame"] Deliver["02 Deliver"] Check["03 Check"] - PullRequest[["$pull_request"]] + PullRequest["$pull_request"] Request --> Sdlc Sdlc --> Ready - Ready -- "no" --> Frame - Ready -- "yes" --> Deliver + Ready -- "No, frame the contract." --> Frame + Ready -- "Yes, deliver it." --> Deliver Frame --> Deliver Deliver --> Check - Check -- "iterate" --> Deliver - Check -- "ship" --> PullRequest + Check -- "Iterate on findings." --> Deliver + Check -- "Ship the candidate." --> PullRequest classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 35b933427..f44e52220 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -7,33 +7,33 @@ Decide whether the source is ready for planning. title: Frame the delivery contract --- flowchart LR - Source[["$source"]] + Source["$source"] Sdlc["/aidd-orchestrator:01-sdlc"] - TicketDecision{"Ticket reference?"} + TicketDecision{"Is a ticket attached?"} Ticket["/aidd-pm:01-ticket-info"] - TicketArtifact[["$ticket"]] - ContractDecision{"Contract ready?"} - Contract[["$contract"]] - ScopeDecision{"Scope ambiguous?"} + TicketArtifact["$ticket"] + ContractDecision{"Are the contract requirements fulfilled?"} + Contract["$contract"] + ScopeDecision{"Is the scope ambiguous?"} Brainstorm["/aidd-refine:01-brainstorm"] - ClarifiedScope[["$clarified_scope"]] + ClarifiedScope["$clarified_scope"] Spec["/aidd-pm:04-spec"] - SpecArtifact[["$spec"]] + SpecArtifact["$spec"] Deliver["02 Deliver"] Source --> Sdlc Sdlc --> TicketDecision - TicketDecision -- "yes" --> Ticket + TicketDecision -- "Yes, retrieve it." --> Ticket Ticket --> TicketArtifact TicketArtifact --> ContractDecision - TicketDecision -- "no" --> ContractDecision - ContractDecision -- "yes" --> Contract + TicketDecision -- "No, use the source." --> ContractDecision + ContractDecision -- "Yes, continue." --> Contract Contract --> Deliver - ContractDecision -- "no" --> ScopeDecision - ScopeDecision -- "yes" --> Brainstorm + ContractDecision -- "No, frame it." --> ScopeDecision + ScopeDecision -- "Yes, clarify it." --> Brainstorm Brainstorm --> ClarifiedScope ClarifiedScope --> Spec - ScopeDecision -- "no" --> Spec + ScopeDecision -- "No, write the specification." --> Spec Spec --> SpecArtifact SpecArtifact --> Deliver diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index 956ef18fe..b7e7ae139 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -7,25 +7,25 @@ Produce a validated candidate from the contract. title: Deliver the candidate --- flowchart LR - Contract[["$contract"]] + Contract["$contract"] Sdlc["/aidd-orchestrator:01-sdlc"] Plan["/aidd-dev:01-plan"] - PlanArtifact[["$plan"]] + PlanArtifact["$plan"] Executor(["@aidd-dev:executor"]) Implement["/aidd-dev:02-implement"] - Candidate[["$candidate"]] + Candidate["$candidate"] AssertCode["/aidd-dev:03-assert"] - AssertReport[["$assert_report"]] - ArchitectureDecision{"Architecture documentation?"} + AssertReport["$assert_report"] + ArchitectureDecision{"Is architecture documentation available?"} AssertArchitecture["/aidd-dev:03-assert"] - ArchitectureReport[["$architecture_report"]] - CommitDecision{"Uncommitted changes?"} + ArchitectureReport["$architecture_report"] + CommitDecision{"Are there uncommitted changes?"} Commit["/aidd-vcs:01-commit"] - CommitSha[["$commit_sha"]] - JourneyDecision{"User journey?"} + CommitSha["$commit_sha"] + JourneyDecision{"Is an end-to-end user journey required?"} Test["/aidd-dev:06-test"] - JourneyReport[["$journey_report"]] - CandidateSha[["$candidate_sha"]] + JourneyReport["$journey_report"] + CandidateSha["$candidate_sha"] Check["03 Check"] Contract --> Sdlc @@ -34,21 +34,21 @@ flowchart LR PlanArtifact --> Executor Executor --> Implement Implement --> Candidate - Candidate -- "validate" --> AssertCode + Candidate -- "Run the assertions." --> AssertCode AssertCode --> AssertReport AssertReport --> ArchitectureDecision - ArchitectureDecision -- "yes, run assert-architecture" --> AssertArchitecture + ArchitectureDecision -- "Yes, run assert-architecture." --> AssertArchitecture AssertArchitecture --> ArchitectureReport ArchitectureReport --> CommitDecision - ArchitectureDecision -- "no" --> CommitDecision - CommitDecision -- "yes" --> Commit + ArchitectureDecision -- "No, continue." --> CommitDecision + CommitDecision -- "Yes, commit the candidate." --> Commit Commit --> CommitSha CommitSha --> JourneyDecision - CommitDecision -- "no" --> JourneyDecision - JourneyDecision -- "yes, run test-journey" --> Test + CommitDecision -- "No, continue." --> JourneyDecision + JourneyDecision -- "Yes, run test-journey." --> Test Test --> JourneyReport JourneyReport --> CandidateSha - JourneyDecision -- "no" --> CandidateSha + JourneyDecision -- "No, continue." --> CandidateSha CandidateSha --> Check classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 6233383b7..4117d51b0 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -7,28 +7,28 @@ Review the candidate in a fresh context and route the verdict. title: Check independently --- flowchart LR - CandidateSha[["$candidate_sha"]] + CandidateSha["$candidate_sha"] Checker(["@aidd-dev:checker"]) Review["/aidd-dev:05-review"] - ReviewArtifact[["$review · $verdict"]] + ReviewArtifact["$review · $verdict"] Sdlc["/aidd-orchestrator:01-sdlc"] - Verdict{"Verdict?"} + Verdict{"What is the review verdict?"} Todo["/aidd-dev:10-todo"] ExecutorFirst(["@aidd-dev:executor"]) ExecutorLast(["@aidd-dev:executor"]) - FixFirst[["$fix_a"]] - FixLast[["$fix_n"]] - Fixes[["$fixes"]] + FixFirst["$fix_a"] + FixLast["$fix_n"] + Fixes["$fixes"] Deliver["02 Deliver"] PullRequest["/aidd-vcs:02-pull-request"] - PullRequestUrl[["$pull_request_url"]] + PullRequestUrl["$pull_request_url"] CandidateSha --> Checker Checker --> Review Review --> ReviewArtifact ReviewArtifact --> Sdlc Sdlc --> Verdict - Verdict -- "iterate" --> Todo + Verdict -- "Iterate on findings." --> Todo Todo --> ExecutorFirst Todo --> ExecutorLast ExecutorFirst --> FixFirst @@ -36,7 +36,7 @@ flowchart LR FixFirst --> Fixes FixLast --> Fixes Fixes --> Deliver - Verdict -- "ship" --> PullRequest + Verdict -- "Ship the candidate." --> PullRequest PullRequest --> PullRequestUrl classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px From 5751a70262bbdc25def16a9adc3ee6ce66429643 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 12:15:35 +0200 Subject: [PATCH 10/27] refactor(orchestrator): make SDLC autonomous Keep the orchestrator moving until validation, independent review, and the final outcome challenge all pass. Route contract and implementation gaps back through explicit bounded loops. --- README.md | 4 +- docs/ARCHITECTURE.md | 4 +- .../skills/00-onboard/references/run/tiers.md | 3 +- plugins/aidd-dev/agents/checker.md | 1 + plugins/aidd-orchestrator/CATALOG.md | 2 +- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 9 +- .../skills/01-sdlc/references/01-frame.md | 5 +- .../skills/01-sdlc/references/02-deliver.md | 77 ++++++++----- .../skills/01-sdlc/references/03-check.md | 109 ++++++++++++------ 9 files changed, 140 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index f07ae4800..c890cff3f 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The **AI-Driven Dev Framework** installs a working SDLC (Software Development Li ```text /aidd-orchestrator:01-sdlc "add rate limiting to the /login endpoint" -→ spec → plan → implement → review → ship (commit + PR opened) +→ frame when needed → plan → implement → validate → review → challenge → ship ``` Why not just write your own commands? → [FAQ](docs/FAQ.md#-why-aidd-instead-of-your-own-skills). @@ -183,7 +183,7 @@ Three ways in — pick one: | --- | --- | --- | | 🧭 **Guided onboarding** | `/aidd-context:00-onboard` | First time, or unsure what to run — it inspects the project and routes you. | | 🧠 **Project memory** | `/aidd-context:02-project-memory` | Build the project memory bank by hand. | -| ⚙️ **Feature flow** | `/aidd-orchestrator:01-sdlc` | Ship a feature end to end (plan → implement → review → PR). | +| ⚙️ **Feature flow** | `/aidd-orchestrator:01-sdlc` | Autonomously ship a feature end to end (frame → deliver → check → PR). | The full loop, and how onboarding sets it up: diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 27d0aeed6..0928248a0 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -152,8 +152,8 @@ Choose by context, not complexity: keep the work visible to the caller → skill Composition rules: -- **Spawning is an orchestration decision, never a skill's.** A recipe skill never spawns an agent; it runs in the caller's context. Only a high-level orchestrator skill (for example the SDLC) spawns agents, and it decides per step whether to isolate the work in an agent or run the recipe inline. -- An orchestrator spawns each step as a leaf agent that runs a recipe, or runs the recipe itself when the step needs no isolation. The SDLC owns planning (runs `01-plan` in its own context) and spawns two workers: `executor` (runs `02-implement`) and `checker` (runs `05-review`). The agent is the isolation; the recipe inside it never spawns again. +- **Spawning is authorized by the high-level orchestrator, never invented by a recipe skill.** A recipe skill normally runs in the caller's context. A bounded fan-out capability may mechanically spawn leaf agents only when the orchestrator explicitly delegates that responsibility and retains routing ownership. +- An orchestrator spawns each isolated step as a leaf agent that runs a recipe, or runs the recipe itself when isolation is unnecessary. The SDLC owns planning, delegates delivery to `executor`, and delegates independent judgments to fresh `checker` instances. For independent repair findings, it may explicitly delegate bounded fan-out to `10-todo`; Todo's leaf executors return their results to the SDLC. A recipe invoked inside an agent never spawns again. - An agent invokes only the recipe skills it declares under `# Skills you may invoke`, never an orchestrator skill, and never reads a skill's files. It names a same-plugin skill by its `plugin:folder` address (deterministic); it names a cross-plugin skill by capability, per cross-plugin orthogonality. - An agent never delegates flow work to another agent and never invokes an orchestrator skill. It may spawn a read-only recon helper (for example `Explore`) that mutates nothing and spawns nothing. So the write path stays two layers deep and delegation can never cycle. diff --git a/plugins/aidd-context/skills/00-onboard/references/run/tiers.md b/plugins/aidd-context/skills/00-onboard/references/run/tiers.md index 336234d0e..da28cedf2 100644 --- a/plugins/aidd-context/skills/00-onboard/references/run/tiers.md +++ b/plugins/aidd-context/skills/00-onboard/references/run/tiers.md @@ -8,5 +8,6 @@ The tier is a default, overridable. | GUIDED | (it will ask you a few questions) | launch, hand to the user, resume on return (see `return.md`) | | MANUAL | (you run this one yourself) | show the command, run nothing, leave it for the user | -- A dual-mode skill (interactive by default, unattended on request, e.g. `aidd-orchestrator:01-sdlc`) runs the other way when the user asks and the skill supports it. +- A dual-mode skill runs the other way when the user asks and the skill supports it. +- `aidd-orchestrator:01-sdlc` is autonomous by contract; do not downgrade it to `GUIDED`. - On the `OK` walk, state up front how many steps it covers and which need input. diff --git a/plugins/aidd-dev/agents/checker.md b/plugins/aidd-dev/agents/checker.md index cd71e924a..0afa1b883 100644 --- a/plugins/aidd-dev/agents/checker.md +++ b/plugins/aidd-dev/agents/checker.md @@ -43,3 +43,4 @@ This is the behavioral baseline. Apply it to every code or diff, and extend it w - `aidd-dev:05-review` - `aidd-dev:04-audit` +- `challenge` (cross-plugin, by capability) diff --git a/plugins/aidd-orchestrator/CATALOG.md b/plugins/aidd-orchestrator/CATALOG.md index 61a939ffb..56025c540 100644 --- a/plugins/aidd-orchestrator/CATALOG.md +++ b/plugins/aidd-orchestrator/CATALOG.md @@ -35,5 +35,5 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai | `references` | [01-frame.md](skills/01-sdlc/references/01-frame.md) | - | | `references` | [02-deliver.md](skills/01-sdlc/references/02-deliver.md) | - | | `references` | [03-check.md](skills/01-sdlc/references/03-check.md) | - | -| `-` | [SKILL.md](skills/01-sdlc/SKILL.md) | `Orchestrates a request from framing to a draft pull request, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step.` | +| `-` | [SKILL.md](skills/01-sdlc/SKILL.md) | `Autonomously orchestrates a request from framing to a draft pull request, isolating implementation, independent review, and final outcome challenge. Use when the user wants to deliver a change end to end. Not for running one development step.` | diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index e9b870b97..a17fb2054 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -1,6 +1,6 @@ --- name: 01-sdlc -description: Orchestrates a request from framing to a draft pull request, isolating implementation and review in specialized agents. Use when the user wants to deliver a change end to end. Not for running a single development step. +description: Autonomously orchestrates a request from framing to a draft pull request, isolating implementation, independent review, and final outcome challenge. Use when the user wants to deliver a change end to end. Not for running one development step. --- # Skill: sdlc @@ -24,6 +24,7 @@ flowchart LR Ready -- "Yes, deliver it." --> Deliver Frame --> Deliver Deliver --> Check + Check -- "Reframe the contract." --> Frame Check -- "Iterate on findings." --> Deliver Check -- "Ship the candidate." --> PullRequest @@ -52,6 +53,8 @@ Read only the current zone's reference before delegating it. - Own routing and verify every handoff against the current reference. - Treat the canonical plugin addresses in the references as the responsibility map. Verify that each named provider is installed before calling it. +- Work autonomously by default. Make every reversible in-scope decision without asking; ask only when product authority is missing or an external action requires approval. +- Decide in this order: contract and acceptance criteria, project rules, correctness and security, simplicity, then speed. - Run planning in the orchestrator context. Isolate implementation in `executor` and independent review in `checker`. -- Mode: default `interactive`, pausing for approval at each step; switch to `auto` only when the caller says so, then decide alone and never ask. -- Stop on `blocked`. Loop `check → deliver` on `iterate`. +- Continue until the branch is clean, every applicable validation is green, the current SHA has passed independent review and the confidence challenge, and a draft pull request exists. +- Stop on `blocked` only after exhausting safe in-scope alternatives. Route contract gaps to `frame` and implementation gaps to `deliver`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index f44e52220..74a80031c 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -8,6 +8,7 @@ title: Frame the delivery contract --- flowchart LR Source["$source"] + ChallengeFindings["$challenge_findings"] Sdlc["/aidd-orchestrator:01-sdlc"] TicketDecision{"Is a ticket attached?"} Ticket["/aidd-pm:01-ticket-info"] @@ -22,6 +23,7 @@ flowchart LR Deliver["02 Deliver"] Source --> Sdlc + ChallengeFindings -- "Use these findings when reframing." --> Sdlc Sdlc --> TicketDecision TicketDecision -- "Yes, retrieve it." --> Ticket Ticket --> TicketArtifact @@ -43,11 +45,12 @@ flowchart LR classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px class Sdlc,Ticket,Brainstorm,Spec skill - class Source,TicketArtifact,Contract,ClarifiedScope,SpecArtifact artifact + class Source,ChallengeFindings,TicketArtifact,Contract,ClarifiedScope,SpecArtifact artifact class TicketDecision,ContractDecision,ScopeDecision decision class Deliver zone ``` - `/aidd-orchestrator:01-sdlc` owns the readiness decision. - A ready contract has an explicit objective and observable acceptance criteria. +- When the confidence challenge exposes a need gap, use `$challenge_findings` to refine the contract before planning again. - Return `$contract` or `$spec` to `02-deliver`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index b7e7ae139..a1ce5ad09 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -7,25 +7,37 @@ Produce a validated candidate from the contract. title: Deliver the candidate --- flowchart LR - Contract["$contract"] - Sdlc["/aidd-orchestrator:01-sdlc"] - Plan["/aidd-dev:01-plan"] - PlanArtifact["$plan"] - Executor(["@aidd-dev:executor"]) - Implement["/aidd-dev:02-implement"] - Candidate["$candidate"] - AssertCode["/aidd-dev:03-assert"] - AssertReport["$assert_report"] - ArchitectureDecision{"Is architecture documentation available?"} - AssertArchitecture["/aidd-dev:03-assert"] - ArchitectureReport["$architecture_report"] - CommitDecision{"Are there uncommitted changes?"} - Commit["/aidd-vcs:01-commit"] - CommitSha["$commit_sha"] - JourneyDecision{"Is an end-to-end user journey required?"} - Test["/aidd-dev:06-test"] - JourneyReport["$journey_report"] - CandidateSha["$candidate_sha"] + subgraph Build["Build the candidate"] + direction TB + Contract["$contract"] + Sdlc["/aidd-orchestrator:01-sdlc"] + Plan["/aidd-dev:01-plan"] + PlanArtifact["$plan"] + Executor(["@aidd-dev:executor"]) + Implement["/aidd-dev:02-implement"] + Candidate["$candidate"] + end + + subgraph Validate["Validate the candidate"] + direction TB + AssertCode["/aidd-dev:03-assert"] + AssertionsPassed{"Did all assertions pass?"} + ArchitectureDecision{"Is architecture documentation available?"} + AssertArchitecture["/aidd-dev:03-assert"] + ArchitecturePassed{"Does the candidate conform to the documented architecture?"} + end + + subgraph Finalize["Finalize the candidate"] + direction TB + CommitDecision{"Are there uncommitted changes?"} + Commit["/aidd-vcs:01-commit"] + JourneyDecision{"Is an end-to-end user journey required?"} + Test["/aidd-dev:06-test"] + JourneyPassed{"Did the end-to-end user journey pass?"} + CandidateSha["$candidate_sha"] + end + + Repair["02 Deliver"] Check["03 Check"] Contract --> Sdlc @@ -35,19 +47,21 @@ flowchart LR Executor --> Implement Implement --> Candidate Candidate -- "Run the assertions." --> AssertCode - AssertCode --> AssertReport - AssertReport --> ArchitectureDecision + AssertCode --> AssertionsPassed + AssertionsPassed -- "No, repair and validate the candidate again." --> Repair + AssertionsPassed -- "Yes, continue." --> ArchitectureDecision ArchitectureDecision -- "Yes, run assert-architecture." --> AssertArchitecture - AssertArchitecture --> ArchitectureReport - ArchitectureReport --> CommitDecision + AssertArchitecture --> ArchitecturePassed + ArchitecturePassed -- "No, repair and validate the candidate again." --> Repair + ArchitecturePassed -- "Yes, continue." --> CommitDecision ArchitectureDecision -- "No, continue." --> CommitDecision CommitDecision -- "Yes, commit the candidate." --> Commit - Commit --> CommitSha - CommitSha --> JourneyDecision + Commit --> JourneyDecision CommitDecision -- "No, continue." --> JourneyDecision JourneyDecision -- "Yes, run test-journey." --> Test - Test --> JourneyReport - JourneyReport --> CandidateSha + Test --> JourneyPassed + JourneyPassed -- "No, repair and validate the candidate again." --> Repair + JourneyPassed -- "Yes, continue." --> CandidateSha JourneyDecision -- "No, continue." --> CandidateSha CandidateSha --> Check @@ -59,13 +73,14 @@ flowchart LR class Sdlc,Plan,Implement,AssertCode,AssertArchitecture,Commit,Test skill class Executor agent - class Contract,PlanArtifact,Candidate,AssertReport,ArchitectureReport,CommitSha,JourneyReport,CandidateSha artifact - class ArchitectureDecision,CommitDecision,JourneyDecision decision - class Check zone + class Contract,PlanArtifact,Candidate,CandidateSha artifact + class AssertionsPassed,ArchitectureDecision,ArchitecturePassed,CommitDecision,JourneyDecision,JourneyPassed decision + class Repair,Check zone ``` - `/aidd-orchestrator:01-sdlc` owns `$plan`; `@aidd-dev:executor` never rewrites it. - `@aidd-dev:executor` implements and self-validates. It does not perform the independent review. - `@aidd-dev:executor` runs `assert-architecture` through `/aidd-dev:03-assert` when architecture documentation applies. -- Run E2E only after implementation, assertions, and commits are complete. A failure re-enters delivery before one final E2E run. +- Any failed assertion, architecture check, or E2E journey returns to `@aidd-dev:executor`, then every applicable gate runs again. +- Run E2E only after implementation, assertions, and commits are complete. - Return only a clean candidate with green validation to `03-check`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 4117d51b0..ff02840f0 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -1,42 +1,82 @@ # 03 - Check -Review the candidate in a fresh context and route the verdict. +Review the candidate, challenge the real outcome in a fresh context, and route the verdict. ```mermaid --- -title: Check independently +title: Check and challenge independently --- flowchart LR - CandidateSha["$candidate_sha"] - Checker(["@aidd-dev:checker"]) - Review["/aidd-dev:05-review"] - ReviewArtifact["$review · $verdict"] - Sdlc["/aidd-orchestrator:01-sdlc"] - Verdict{"What is the review verdict?"} - Todo["/aidd-dev:10-todo"] - ExecutorFirst(["@aidd-dev:executor"]) - ExecutorLast(["@aidd-dev:executor"]) - FixFirst["$fix_a"] - FixLast["$fix_n"] - Fixes["$fixes"] - Deliver["02 Deliver"] - PullRequest["/aidd-vcs:02-pull-request"] - PullRequestUrl["$pull_request_url"] - - CandidateSha --> Checker - Checker --> Review + subgraph ReviewStage["Review independently"] + direction TB + Contract["$contract"] + Plan["$plan"] + CandidateSha["$candidate_sha"] + ValidationReports["$validation_reports"] + ReviewChecker(["@aidd-dev:checker"]) + Review["/aidd-dev:05-review"] + ReviewArtifact["$review"] + Sdlc["/aidd-orchestrator:01-sdlc"] + ReviewVerdict{"Are all contract requirements fulfilled?"} + end + + subgraph ChallengeStage["Challenge the outcome"] + direction TB + ConfidenceChecker(["@aidd-dev:checker"]) + Challenge["/aidd-refine:02-challenge"] + ChallengeFindings["$challenge_findings"] + Proud{"Am I proud of the work delivered?"} + Confident{"Am I confident in every consequential choice that was made?"} + Satisfied{"Will the user be satisfied with the real end-to-end outcome?"} + end + + subgraph RouteStage["Route the result"] + direction TB + ContractGap{"Is the gap in the contract?"} + Frame["01 Frame"] + Todo["/aidd-dev:10-todo"] + ExecutorFirst(["@aidd-dev:executor"]) + ExecutorLast(["@aidd-dev:executor"]) + Fixes["$fixes"] + Deliver["02 Deliver"] + end + + subgraph ShipStage["Ship the reviewed candidate"] + direction TB + CurrentSha{"Is the reviewed SHA still current?"} + Check["03 Check"] + PullRequest["/aidd-vcs:02-pull-request"] + PullRequestUrl["$pull_request_url"] + end + + Contract --> ReviewChecker + Plan --> ReviewChecker + CandidateSha --> ReviewChecker + ValidationReports --> ReviewChecker + ReviewChecker --> Review Review --> ReviewArtifact ReviewArtifact --> Sdlc - Sdlc --> Verdict - Verdict -- "Iterate on findings." --> Todo + Sdlc --> ReviewVerdict + ReviewVerdict -- "No, route the findings." --> ContractGap + ReviewVerdict -- "Yes, challenge the outcome." --> ConfidenceChecker + ConfidenceChecker --> Challenge + Challenge --> ChallengeFindings + ChallengeFindings --> Proud + Proud -- "Yes, continue." --> Confident + Confident -- "Yes, continue." --> Satisfied + Proud -- "No or uncertain, route the findings." --> ContractGap + Confident -- "No or uncertain, route the findings." --> ContractGap + Satisfied -- "No or uncertain, route the findings." --> ContractGap + ContractGap -- "Yes, reframe the contract." --> Frame + ContractGap -- "No, repair the implementation." --> Todo Todo --> ExecutorFirst Todo --> ExecutorLast - ExecutorFirst --> FixFirst - ExecutorLast --> FixLast - FixFirst --> Fixes - FixLast --> Fixes + ExecutorFirst --> Fixes + ExecutorLast --> Fixes Fixes --> Deliver - Verdict -- "Ship the candidate." --> PullRequest + Satisfied -- "Yes, verify the reviewed SHA." --> CurrentSha + CurrentSha -- "No, check the current candidate again." --> Check + CurrentSha -- "Yes, open the draft pull request." --> PullRequest PullRequest --> PullRequestUrl classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px @@ -45,15 +85,18 @@ flowchart LR classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px - class Review,Sdlc,Todo,PullRequest skill - class Checker,ExecutorFirst,ExecutorLast agent - class CandidateSha,ReviewArtifact,FixFirst,FixLast,Fixes,PullRequestUrl artifact - class Verdict decision - class Deliver zone + class Review,Sdlc,Challenge,Todo,PullRequest skill + class ReviewChecker,ConfidenceChecker,ExecutorFirst,ExecutorLast agent + class Contract,Plan,CandidateSha,ValidationReports,ReviewArtifact,ChallengeFindings,Fixes,PullRequestUrl artifact + class ReviewVerdict,Proud,Confident,Satisfied,ContractGap,CurrentSha decision + class Frame,Deliver,Check zone ``` -- `@aidd-dev:checker` is fresh and read-only. +- Give the review checker `$contract`, `$plan`, `$candidate_sha`, and every applicable validation report. +- The review checker and confidence checker are fresh and read-only; neither participated in implementation. - Any blocking review finding returns `iterate`. +- After a green review, the confidence checker runs `/aidd-refine:02-challenge` against all evidence and answers the three questions independently. +- Every answer requires evidence. `No` or `Uncertain` returns `$challenge_findings`; need gaps go to `01-frame`, other gaps go through Todo to `02-deliver`. - Dispatch only independent findings through `/aidd-dev:10-todo`, one `@aidd-dev:executor` per finding in parallel. - Re-enter `02-deliver` to integrate, validate, commit, and run the final E2E gate. - Only `/aidd-orchestrator:01-sdlc` calls `/aidd-vcs:02-pull-request` after verifying the reviewed SHA. From 782e53f097fd869b8e6ec05d61453619cb522fff Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 12:15:55 +0200 Subject: [PATCH 11/27] docs(orchestrator): align autonomous SDLC guidance Remove the remaining interactive and mandatory-spec descriptions so every public path points to the same autonomous contract. --- UPGRADE.md | 2 +- aidd_docs/README.md | 2 +- aidd_docs/memory/codebase-map.md | 2 +- docs/CATALOG.md | 2 +- .../skills/12-cook/assets/recipes/ship-a-feature.md | 2 +- plugins/aidd-orchestrator/README.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/UPGRADE.md b/UPGRADE.md index 751b1e606..4171ee545 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -152,7 +152,7 @@ Invocation in v4 is `plugin:NN-action`. Where a column says "sub-flow", the old | v4 skill | What it does | Added in | |---|---|---| | `aidd-context:11-explore` | Surveys the project across tooling, context, and codebase, then drills into one axis and points to the best match for a goal. | 4.0 | -| `aidd-orchestrator:01-sdlc` | Orchestrates the full plan to ship loop (auto or interactive). | 4.0 | +| `aidd-orchestrator:01-sdlc` | Autonomously orchestrates the full frame-to-ship loop. | 4.0 | | `aidd-dev:09-for-sure` | Loops and retries a task until an explicit success condition is met. | 4.0 | | `aidd-orchestrator:00-async-dev` | Async, label/comment-driven runs from GitHub issues (setup / run / review). | 4.0 | | `aidd-pm:03-prd` | Builds a PRD from a feature description or user stories. | 4.0 | diff --git a/aidd_docs/README.md b/aidd_docs/README.md index c897e8c86..e083819f9 100644 --- a/aidd_docs/README.md +++ b/aidd_docs/README.md @@ -124,7 +124,7 @@ A typical change cycles through skills from several plugins. The order below is 9. **Ship**: `aidd-vcs:01-commit`, `aidd-vcs:02-pull-request`, then `aidd-vcs:03-release-tag` when the work is in production. File issues with `aidd-vcs:04-issue-create`. 10. **Refactor and maintain**: `aidd-dev:07-refactor` for performance or security, `aidd-dev:04-audit` for technical-debt sweeps, `aidd-dev:08-debug` to reproduce and fix bugs. -When you want the whole synchronous pipeline run in one go (spec, plan, implementation, finalize), invoke `aidd-orchestrator:01-sdlc`. +When you want the whole synchronous pipeline run autonomously in one go (frame when needed, plan, implementation, validation, independent review, outcome challenge, finalize), invoke `aidd-orchestrator:01-sdlc`. --- diff --git a/aidd_docs/memory/codebase-map.md b/aidd_docs/memory/codebase-map.md index 4b48155bb..1607f6ea4 100644 --- a/aidd_docs/memory/codebase-map.md +++ b/aidd_docs/memory/codebase-map.md @@ -19,6 +19,6 @@ flowchart TD AiddContext --> CtxSkills["skills/ (onboard, bootstrap, project-memory, context-generate, mermaid, learn, discovery)"] AiddContext --> CtxHooks["hooks/update_memory.js"] AiddDev --> DevSkills["skills/ (01-plan, 02-implement, 03-assert, 04-audit, 05-review, 06-test, 07-refactor, 08-debug, 09-for-sure, 10-todo)"] - AiddDev --> DevAgents["agents/ (planner, implementer, reviewer)"] + AiddDev --> DevAgents["agents/ (executor, checker)"] Orchestrator --> OrchestratorSkills["skills/ (00-async-dev, 01-sdlc)"] ``` diff --git a/docs/CATALOG.md b/docs/CATALOG.md index 13c6c1385..ceccd9006 100644 --- a/docs/CATALOG.md +++ b/docs/CATALOG.md @@ -91,7 +91,7 @@ Runs synchronous feature delivery and optional async issue automation. | Skill | Role | Protocols | | ---------------- | ----------------------------------------------------- | ------------------------ | | `00-async-dev` | Single entry point for the async-dev pipeline | `setup`, `run`, `review` | -| `01-sdlc` | Drive the full development flow end to end | `frame`, `deliver`, `check` | +| `01-sdlc` | Autonomously drive the full development flow end to end | `frame`, `deliver`, `check` | ## 🎨 aidd-ui diff --git a/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md b/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md index cdbbece6f..e07f7c513 100644 --- a/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md +++ b/plugins/aidd-context/skills/12-cook/assets/recipes/ship-a-feature.md @@ -70,7 +70,7 @@ The pull-request step opens the PR. /aidd-vcs:02-pull-request ``` -> One command for the whole loop: `/aidd-orchestrator:01-sdlc` runs plan → implement → review → ship. +> One command for the whole loop: `/aidd-orchestrator:01-sdlc` runs frame when needed → plan → implement → validate → review → challenge → ship. ## Verify diff --git a/plugins/aidd-orchestrator/README.md b/plugins/aidd-orchestrator/README.md index 45b0b72c1..567481114 100644 --- a/plugins/aidd-orchestrator/README.md +++ b/plugins/aidd-orchestrator/README.md @@ -16,7 +16,7 @@ Composes capabilities into deterministic, auditable flows. Each skill is one orc | Bracket ID | Skill | Description | |------------|-------|-------------| -| [6.1] | [sdlc](skills/01-sdlc/SKILL.md) | Synchronous orchestration through framing, delivery, independent review, and PR creation. | +| [6.1] | [sdlc](skills/01-sdlc/SKILL.md) | Autonomous orchestration through framing, delivery, independent review, outcome challenge, and PR creation. | ### Use case: `async-dev` From 7097f21f08c9953a19dd8eb4966e3b943af39125 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 12:16:02 +0200 Subject: [PATCH 12/27] style(tooling): drop unrelated formatting change --- scripts/sync-skill-argument-hints.mjs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/scripts/sync-skill-argument-hints.mjs b/scripts/sync-skill-argument-hints.mjs index f0cf5ef03..1b4d19101 100755 --- a/scripts/sync-skill-argument-hints.mjs +++ b/scripts/sync-skill-argument-hints.mjs @@ -95,11 +95,7 @@ function syncArgumentHint(content, hint) { // Skills whose argument-hint is written by hand, because it names the user's // entrypoint or cases rather than one token per action. The hook leaves these // untouched. This is the base pattern for a pipeline or case-based router. -const MANUAL_ARGUMENT_HINT = new Set([ - "01-brainstorm", - "02-project-memory", - "04-skill-generate", -]); +const MANUAL_ARGUMENT_HINT = new Set(["01-brainstorm", "02-project-memory", "04-skill-generate"]); const stale = []; for (const dir of await skillDirs()) { From 6d3dedc1394918d2bfc27345deb0831699baf604 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 12:16:15 +0200 Subject: [PATCH 13/27] docs(review): approve autonomous SDLC flow Record the clean three-axis review after validation loops, fresh checker inputs, bounded Todo fan-out, and public guidance were aligned. --- .../2026_07_25_sdlc-orchestration/review.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md index 904212fee..6a6e32318 100644 --- a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -1,58 +1,58 @@ # Review: SDLC orchestration migration -- **Verdict**: changes-requested +- **Verdict**: approve - **Diff**: `origin/next...working-tree` - **Axes run**: code, functional, relevancy - **Date**: 2026_07_25 -- **Findings**: 0 critical, 6 warning, 1 minor +- **Findings**: 0 critical, 0 warning, 0 minor ## Phases ### Phase 1 — Move orchestration - [x] Register `01-sdlc` in `aidd-orchestrator` — `plugins/aidd-orchestrator/.claude-plugin/plugin.json:10` -- [x] Remove the former SDLC action tree from `aidd-dev` — `git diff --name-status origin/next` +- [x] Remove the former SDLC skill and its action tree from `aidd-dev` — `git diff --name-status origin/next` ### Phase 2 — Frame the contract -- [x] Skip specification when the source already has an objective and acceptance criteria — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:30` -- [x] Use the canonical brainstorm and spec providers when framing is required — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:18` +- [x] Retrieve an attached ticket before evaluating readiness — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:27` +- [x] Skip specification when the source already has an objective and observable acceptance criteria — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:32` +- [x] Use canonical brainstorm and spec providers only when framing is required — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:34` ### Phase 3 — Deliver the candidate -- [x] Order plan, implementation, assertions, architecture check, commit, and final E2E — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:31` -- [ ] Route failed assertions and failed E2E back to implementation — every report currently advances toward `$candidate_sha` +- [x] Keep planning in the orchestrator and implementation in `@aidd-dev:executor` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:43` +- [x] Route failed coding assertions back through delivery — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:51` +- [x] Run architecture assertions through `/aidd-dev:03-assert` when architecture documentation applies — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:53` +- [x] Commit the validated candidate through `/aidd-vcs:01-commit` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:58` +- [x] Run the required E2E journey last and reject a failing journey — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:61` ### Phase 4 — Check independently -- [x] Run review in `@aidd-dev:checker` and fan independent fixes through Todo — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:26` -- [ ] Give the checker the contract and plan — only `$candidate_sha` enters the checker -- [ ] Verify the reviewed SHA before opening the pull request — the ship edge opens it directly -- [ ] Keep agent spawning inside the orchestrator boundary — Todo currently points directly to executor agents +- [x] Give a fresh checker the contract, plan, candidate SHA, and validation reports — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:52` +- [x] Run `/aidd-dev:05-review` independently from implementation — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:56` +- [x] Challenge the reviewed outcome in a second fresh checker context — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:61` +- [x] Gate completion on pride, confidence, and end-to-end user satisfaction — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:64` +- [x] Route contract gaps to Frame and independent implementation findings through Todo executors — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:67` +- [x] Verify the reviewed SHA before opening the draft pull request — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:77` -### Phase 5 — Keep the protocol readable +### Phase 5 — Keep the protocol autonomous and readable -- [x] Use `flowchart LR` and distinct classes for skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:9` -- [ ] Keep the delivery diagram readable in a normal Markdown viewport — the rendered LR graph is an approximately 5,200 px single row -- [ ] Describe specification as conditional in the public quick start — the current summary still shows `spec` as mandatory +- [x] Make autonomy the default and define the narrow conditions that still require user authority — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:56` +- [x] Continue until validation, independent review, challenge, clean branch, and draft PR gates all hold — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:59` +- [x] Keep all four diagrams LR, grouped by stage, and visually distinguish skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:9` +- [x] Document orchestrator-authorized bounded Todo fan-out without permitting agent delegation chains — `docs/ARCHITECTURE.md:155` +- [x] Describe specification as conditional and expose the challenge gate in public documentation — `README.md:37` ## Findings -| Sev | Kind | Phase | Location | Issue | Fix | -| --- | ---- | ----- | -------- | ----- | --- | -| 🟡 warning | functional | 3 | `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:39` | `$assert_report`, `$architecture_report`, and `$journey_report` have only success-shaped forward edges, so failed validation reaches `$candidate_sha` despite the stated gate. | Add explicit pass decisions after each report and route failure back to `@aidd-dev:executor`; only green reports may advance. | -| 🟡 warning | functional | 4 | `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:26` | The checker receives only `$candidate_sha`; `/aidd-dev:05-review` cannot perform its functional axis without the contract and plan. | Feed `$contract`, `$plan`, and `$candidate_sha` into `@aidd-dev:checker`. | -| 🟡 warning | functional | 4 | `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:39` | The ship branch calls `/aidd-vcs:02-pull-request` directly, while line 59 requires verifying that the reviewed SHA is current. | Add a reviewed-SHA decision before the pull-request skill and route stale work back through delivery and review. | -| 🟡 warning | conform | 4 | `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:32` | `/aidd-dev:10-todo` directly fans out executor agents, conflicting with `docs/ARCHITECTURE.md:155`, which reserves spawning for a high-level orchestrator. | Make `/aidd-orchestrator:01-sdlc` own the fan-out after Todo splits the findings, or document and place Todo as an orchestration capability. | -| 🟡 warning | functional | 5 | `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:9` | Pure LR layout produces an ultra-wide strip that still requires heavy horizontal scrolling, missing the readability goal. | Keep the outer flow LR but group delivery stages into compact subgraphs with local vertical layout. | -| 🟡 warning | fit | 5 | `README.md:37` | The public flow says `spec → plan`, contradicting the new conditional framing contract. | Replace mandatory `spec` with `frame` or mark specification as conditional. | -| 🟢 minor | rot | - | `scripts/sync-skill-argument-hints.mjs:98` | A formatting-only rewrite is unrelated to the SDLC migration. | Revert the unrelated formatting change or isolate it in a separate commit. | +None. ## Verification | Metric | Value | | ------------- | ----- | -| Verified | 54% (7/13) | -| Files checked | All 30 changed files in `origin/next...working-tree`; four SDLC Mermaid diagrams rendered | -| Unchecked | Validation failure loops — fix; checker inputs — fix; reviewed SHA gate — fix; Todo spawning boundary — fix; LR readability — fix; conditional framing in README — fix | -| Unplanned | Formatting-only change in `scripts/sync-skill-argument-hints.mjs` | +| Verified | 100% (21/21) | +| Files checked | All 31 changed files in `origin/next...working-tree`; four Mermaid diagrams rendered; five flat distributions built | +| Unchecked | none | +| Unplanned | none | From e1abb5d93991a1f76a1d9f9ebb37c85459ad794c Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:01:03 +0200 Subject: [PATCH 14/27] fix(framework): use canonical orchestration addresses Keep Mermaid ownership links and agent capability declarations explicit so responsibility maps resolve to installed providers. --- aidd_docs/memory/codebase-map.md | 2 +- docs/ARCHITECTURE.md | 4 ++-- plugins/aidd-dev/agents/checker.md | 6 +++--- plugins/aidd-dev/agents/executor.md | 10 +++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/aidd_docs/memory/codebase-map.md b/aidd_docs/memory/codebase-map.md index 1607f6ea4..6d509d2d6 100644 --- a/aidd_docs/memory/codebase-map.md +++ b/aidd_docs/memory/codebase-map.md @@ -20,5 +20,5 @@ flowchart TD AiddContext --> CtxHooks["hooks/update_memory.js"] AiddDev --> DevSkills["skills/ (01-plan, 02-implement, 03-assert, 04-audit, 05-review, 06-test, 07-refactor, 08-debug, 09-for-sure, 10-todo)"] AiddDev --> DevAgents["agents/ (executor, checker)"] - Orchestrator --> OrchestratorSkills["skills/ (00-async-dev, 01-sdlc)"] + AiddOrchestrator --> OrchestratorSkills["skills/ (00-async-dev, 01-sdlc)"] ``` diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 0928248a0..969052708 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -154,12 +154,12 @@ Composition rules: - **Spawning is authorized by the high-level orchestrator, never invented by a recipe skill.** A recipe skill normally runs in the caller's context. A bounded fan-out capability may mechanically spawn leaf agents only when the orchestrator explicitly delegates that responsibility and retains routing ownership. - An orchestrator spawns each isolated step as a leaf agent that runs a recipe, or runs the recipe itself when isolation is unnecessary. The SDLC owns planning, delegates delivery to `executor`, and delegates independent judgments to fresh `checker` instances. For independent repair findings, it may explicitly delegate bounded fan-out to `10-todo`; Todo's leaf executors return their results to the SDLC. A recipe invoked inside an agent never spawns again. -- An agent invokes only the recipe skills it declares under `# Skills you may invoke`, never an orchestrator skill, and never reads a skill's files. It names a same-plugin skill by its `plugin:folder` address (deterministic); it names a cross-plugin skill by capability, per cross-plugin orthogonality. +- An agent invokes only the recipe skills it declares under `# Skills you may invoke`, never an orchestrator skill, and never reads a skill's files. It names every skill by its canonical `/plugin:folder` address so its permissions are explicit and auditable. - An agent never delegates flow work to another agent and never invokes an orchestrator skill. It may spawn a read-only recon helper (for example `Explore`) that mutates nothing and spawns nothing. So the write path stays two layers deep and delegation can never cycle. ## 🔗 Cross-plugin orthogonality -Recipe plugins never hardcode a sibling provider. They discover cross-plugin capabilities at runtime through description matching. An orchestration reference may show the current provider with its canonical `/plugin:folder` or `@plugin:agent` address when the document maps responsibilities; the orchestrator must verify that provider is installed before calling it. +Recipe skills never hardcode a sibling provider. They discover cross-plugin capabilities at runtime through description matching. Agent permission lists and orchestration references are responsibility maps, so they name the current provider with its canonical `/plugin:folder` or `@plugin:agent` address. The orchestrator must verify that provider is installed before calling it. This distinction keeps recipe plugins swappable while making orchestration handoffs explicit and auditable. diff --git a/plugins/aidd-dev/agents/checker.md b/plugins/aidd-dev/agents/checker.md index 0afa1b883..6f0752098 100644 --- a/plugins/aidd-dev/agents/checker.md +++ b/plugins/aidd-dev/agents/checker.md @@ -41,6 +41,6 @@ This is the behavioral baseline. Apply it to every code or diff, and extend it w # Skills you may invoke -- `aidd-dev:05-review` -- `aidd-dev:04-audit` -- `challenge` (cross-plugin, by capability) +- `/aidd-dev:05-review` +- `/aidd-dev:04-audit` +- `/aidd-refine:02-challenge` diff --git a/plugins/aidd-dev/agents/executor.md b/plugins/aidd-dev/agents/executor.md index d9f3ad86b..1418f37c9 100644 --- a/plugins/aidd-dev/agents/executor.md +++ b/plugins/aidd-dev/agents/executor.md @@ -26,8 +26,8 @@ You are the executor. Your job is to turn a dispatched task into working, valida # Skills you may invoke -- `aidd-dev:02-implement` -- `aidd-dev:03-assert` -- `aidd-dev:06-test` -- `aidd-dev:08-debug` -- `commit` (cross-plugin, by capability) +- `/aidd-dev:02-implement` +- `/aidd-dev:03-assert` +- `/aidd-dev:06-test` +- `/aidd-dev:08-debug` +- `/aidd-vcs:01-commit` From 9688634df2bfe2cb997591916a4fa532aef38827 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:01:12 +0200 Subject: [PATCH 15/27] refactor(orchestrator): separate behavior from routing Put autonomous invariants before each flowchart and let Mermaid remain the single source for transitions instead of repeating every edge in trailing bullets. --- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 16 ++++++---------- .../skills/01-sdlc/references/01-frame.md | 9 +++------ .../skills/01-sdlc/references/02-deliver.md | 13 +++++-------- .../skills/01-sdlc/references/03-check.md | 15 +++++---------- 4 files changed, 19 insertions(+), 34 deletions(-) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index a17fb2054..7c9cf0cd9 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -5,6 +5,12 @@ description: Autonomously orchestrates a request from framing to a draft pull re # Skill: sdlc +## Behavior + +Own every routing decision. Verify each handoff against the current reference. Treat canonical addresses as the responsibility map and verify that each provider is installed before calling it. Work autonomously, making reversible in-scope decisions without asking and requesting input only when product authority or external approval is missing. Decide from contract and acceptance criteria, project rules, correctness and security, simplicity, then speed. + +Keep planning in the orchestrator, implementation in `@aidd-dev:executor`, and independent judgment in fresh `@aidd-dev:checker` instances. Continue until the branch is clean, every applicable validation is green, the current SHA has passed review and challenge, and a draft pull request exists. Exhaust safe alternatives before returning `blocked`. Route contract gaps to Frame and implementation gaps to Deliver. + ```mermaid --- title: SDLC orchestration @@ -48,13 +54,3 @@ Read only the current zone's reference before delegating it. | 01 | [Frame](references/01-frame.md) | Resolve a planning-ready contract | | 02 | [Deliver](references/02-deliver.md) | Build and validate a committed change | | 03 | [Check](references/03-check.md) | Review independently and open the PR | - -## Transversal rules - -- Own routing and verify every handoff against the current reference. -- Treat the canonical plugin addresses in the references as the responsibility map. Verify that each named provider is installed before calling it. -- Work autonomously by default. Make every reversible in-scope decision without asking; ask only when product authority is missing or an external action requires approval. -- Decide in this order: contract and acceptance criteria, project rules, correctness and security, simplicity, then speed. -- Run planning in the orchestrator context. Isolate implementation in `executor` and independent review in `checker`. -- Continue until the branch is clean, every applicable validation is green, the current SHA has passed independent review and the confidence challenge, and a draft pull request exists. -- Stop on `blocked` only after exhausting safe in-scope alternatives. Route contract gaps to `frame` and implementation gaps to `deliver`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 74a80031c..0b049dbc4 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -1,6 +1,8 @@ # 01 - Frame -Decide whether the source is ready for planning. +## Behavior + +Own contract readiness. Retrieve an attached ticket through `/aidd-pm:01-ticket-info` before deciding whether the source has an explicit objective and observable acceptance criteria. Send a planning-ready contract directly to Deliver without requiring a specification. When the scope is ambiguous, run `/aidd-refine:01-brainstorm` before `/aidd-pm:04-spec`. Use challenge findings to repair a need gap before planning again. ```mermaid --- @@ -49,8 +51,3 @@ flowchart LR class TicketDecision,ContractDecision,ScopeDecision decision class Deliver zone ``` - -- `/aidd-orchestrator:01-sdlc` owns the readiness decision. -- A ready contract has an explicit objective and observable acceptance criteria. -- When the confidence challenge exposes a need gap, use `$challenge_findings` to refine the contract before planning again. -- Return `$contract` or `$spec` to `02-deliver`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index a1ce5ad09..d3bc7d258 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -1,6 +1,10 @@ # 02 - Deliver -Produce a validated candidate from the contract. +## Behavior + +Own the plan in `/aidd-orchestrator:01-sdlc` and delegate implementation to `@aidd-dev:executor`. The executor never rewrites the plan. Require the executor to implement and self-validate without performing the independent review. Run coding assertions, then architecture assertions through `/aidd-dev:03-assert` when architecture documentation applies. A failed assertion, architecture check, or E2E journey re-enters Deliver and reruns every applicable gate. + +Commit the validated candidate through `/aidd-vcs:01-commit`. Run the required E2E journey through `/aidd-dev:06-test` as the final delivery gate. Send only a clean candidate with green validation to Check. ```mermaid --- @@ -77,10 +81,3 @@ flowchart LR class AssertionsPassed,ArchitectureDecision,ArchitecturePassed,CommitDecision,JourneyDecision,JourneyPassed decision class Repair,Check zone ``` - -- `/aidd-orchestrator:01-sdlc` owns `$plan`; `@aidd-dev:executor` never rewrites it. -- `@aidd-dev:executor` implements and self-validates. It does not perform the independent review. -- `@aidd-dev:executor` runs `assert-architecture` through `/aidd-dev:03-assert` when architecture documentation applies. -- Any failed assertion, architecture check, or E2E journey returns to `@aidd-dev:executor`, then every applicable gate runs again. -- Run E2E only after implementation, assertions, and commits are complete. -- Return only a clean candidate with green validation to `03-check`. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index ff02840f0..02cd252dc 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -1,6 +1,10 @@ # 03 - Check -Review the candidate, challenge the real outcome in a fresh context, and route the verdict. +## Behavior + +Give a fresh `@aidd-dev:checker` the contract, plan, candidate SHA, and every validation report for `/aidd-dev:05-review`. After a green review, use a second fresh checker to run `/aidd-refine:02-challenge` and answer the three confidence questions from evidence. Both checker contexts remain read-only and never implement fixes. Treat `No` and `Uncertain` identically. + +Route need gaps to Frame and dispatch independent implementation findings through `/aidd-dev:10-todo`, one `@aidd-dev:executor` per finding. Re-enter Deliver to integrate, validate, commit, and run the final E2E gate. Open the draft pull request only after verifying that the reviewed SHA is still current. ```mermaid --- @@ -91,12 +95,3 @@ flowchart LR class ReviewVerdict,Proud,Confident,Satisfied,ContractGap,CurrentSha decision class Frame,Deliver,Check zone ``` - -- Give the review checker `$contract`, `$plan`, `$candidate_sha`, and every applicable validation report. -- The review checker and confidence checker are fresh and read-only; neither participated in implementation. -- Any blocking review finding returns `iterate`. -- After a green review, the confidence checker runs `/aidd-refine:02-challenge` against all evidence and answers the three questions independently. -- Every answer requires evidence. `No` or `Uncertain` returns `$challenge_findings`; need gaps go to `01-frame`, other gaps go through Todo to `02-deliver`. -- Dispatch only independent findings through `/aidd-dev:10-todo`, one `@aidd-dev:executor` per finding in parallel. -- Re-enter `02-deliver` to integrate, validate, commit, and run the final E2E gate. -- Only `/aidd-orchestrator:01-sdlc` calls `/aidd-vcs:02-pull-request` after verifying the reviewed SHA. From 944637f0941fb58a8a79b726e2b398216fe4580e Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:01:19 +0200 Subject: [PATCH 16/27] docs(review): verify canonical SDLC protocols Refresh the evidence after canonical agent permissions, the repaired codebase map, and behavior-first protocol documentation. --- .../2026_07_25_sdlc-orchestration/review.md | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md index 6a6e32318..7620f7977 100644 --- a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -12,35 +12,38 @@ - [x] Register `01-sdlc` in `aidd-orchestrator` — `plugins/aidd-orchestrator/.claude-plugin/plugin.json:10` - [x] Remove the former SDLC skill and its action tree from `aidd-dev` — `git diff --name-status origin/next` +- [x] Attach the orchestrator skill branch to the declared plugin node in the codebase map — `aidd_docs/memory/codebase-map.md:23` ### Phase 2 — Frame the contract -- [x] Retrieve an attached ticket before evaluating readiness — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:27` -- [x] Skip specification when the source already has an objective and observable acceptance criteria — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:32` -- [x] Use canonical brainstorm and spec providers only when framing is required — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:34` +- [x] Retrieve an attached ticket before evaluating readiness — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:29` +- [x] Skip specification when the source already has an objective and observable acceptance criteria — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:34` +- [x] Use canonical brainstorm and spec providers only when framing is required — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:36` ### Phase 3 — Deliver the candidate -- [x] Keep planning in the orchestrator and implementation in `@aidd-dev:executor` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:43` -- [x] Route failed coding assertions back through delivery — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:51` -- [x] Run architecture assertions through `/aidd-dev:03-assert` when architecture documentation applies — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:53` -- [x] Commit the validated candidate through `/aidd-vcs:01-commit` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:58` -- [x] Run the required E2E journey last and reject a failing journey — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:61` +- [x] Keep planning in the orchestrator and implementation in `@aidd-dev:executor` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:48` +- [x] Route failed coding assertions back through delivery — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:55` +- [x] Run architecture assertions through `/aidd-dev:03-assert` when architecture documentation applies — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:57` +- [x] Commit the validated candidate through `/aidd-vcs:01-commit` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:62` +- [x] Run the required E2E journey last and reject a failing journey — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:65` ### Phase 4 — Check independently -- [x] Give a fresh checker the contract, plan, candidate SHA, and validation reports — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:52` -- [x] Run `/aidd-dev:05-review` independently from implementation — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:56` -- [x] Challenge the reviewed outcome in a second fresh checker context — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:61` -- [x] Gate completion on pride, confidence, and end-to-end user satisfaction — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:64` -- [x] Route contract gaps to Frame and independent implementation findings through Todo executors — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:67` -- [x] Verify the reviewed SHA before opening the draft pull request — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:77` +- [x] Give a fresh checker the contract, plan, candidate SHA, and validation reports — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:56` +- [x] Run `/aidd-dev:05-review` independently from implementation — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:60` +- [x] Challenge the reviewed outcome in a second fresh checker context — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:65` +- [x] Gate completion on pride, confidence, and end-to-end user satisfaction — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:68` +- [x] Route contract gaps to Frame and independent implementation findings through Todo executors — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:71` +- [x] Verify the reviewed SHA before opening the draft pull request — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:81` +- [x] Declare every checker capability with its canonical slash address — `plugins/aidd-dev/agents/checker.md:44` ### Phase 5 — Keep the protocol autonomous and readable -- [x] Make autonomy the default and define the narrow conditions that still require user authority — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:56` -- [x] Continue until validation, independent review, challenge, clean branch, and draft PR gates all hold — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:59` -- [x] Keep all four diagrams LR, grouped by stage, and visually distinguish skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:9` +- [x] Make autonomy the default and define the narrow conditions that still require user authority — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:10` +- [x] Continue until validation, independent review, challenge, clean branch, and draft PR gates all hold — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:12` +- [x] State behavioral invariants before each diagram without repeating the routing below it — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:3` +- [x] Keep all four diagrams LR, grouped by stage, and visually distinguish skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:13` - [x] Document orchestrator-authorized bounded Todo fan-out without permitting agent delegation chains — `docs/ARCHITECTURE.md:155` - [x] Describe specification as conditional and expose the challenge gate in public documentation — `README.md:37` @@ -52,7 +55,7 @@ None. | Metric | Value | | ------------- | ----- | -| Verified | 100% (21/21) | -| Files checked | All 31 changed files in `origin/next...working-tree`; four Mermaid diagrams rendered; five flat distributions built | +| Verified | 100% (24/24) | +| Files checked | All 32 changed files in `origin/next...working-tree`; five Mermaid diagrams rendered; five flat distributions built | | Unchecked | none | | Unplanned | none | From f12b285e602463f9083300b705b21c8a10de2260 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:04:40 +0200 Subject: [PATCH 17/27] refactor(orchestrator): group SDLC diagrams top-down Use vertical stage subgraphs so each protocol remains readable in a normal Markdown viewport without changing its routing contract. --- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 29 ++++++++----- .../skills/01-sdlc/references/01-frame.md | 41 ++++++++++++------- .../skills/01-sdlc/references/02-deliver.md | 2 +- .../skills/01-sdlc/references/03-check.md | 2 +- 4 files changed, 47 insertions(+), 27 deletions(-) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index 7c9cf0cd9..2416a3065 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -15,14 +15,25 @@ Keep planning in the orchestrator, implementation in `@aidd-dev:executor`, and i --- title: SDLC orchestration --- -flowchart LR - Request["$request"] - Sdlc["/aidd-orchestrator:01-sdlc"] - Ready{"Are the contract requirements fulfilled?"} - Frame["01 Frame"] - Deliver["02 Deliver"] - Check["03 Check"] - PullRequest["$pull_request"] +flowchart TD + subgraph FrameStage["01 Frame"] + direction TB + Request["$request"] + Sdlc["/aidd-orchestrator:01-sdlc"] + Ready{"Are the contract requirements fulfilled?"} + Frame["01 Frame"] + end + + subgraph DeliverStage["02 Deliver"] + direction TB + Deliver["02 Deliver"] + end + + subgraph CheckStage["03 Check"] + direction TB + Check["03 Check"] + PullRequest["$pull_request"] + end Request --> Sdlc Sdlc --> Ready @@ -30,8 +41,6 @@ flowchart LR Ready -- "Yes, deliver it." --> Deliver Frame --> Deliver Deliver --> Check - Check -- "Reframe the contract." --> Frame - Check -- "Iterate on findings." --> Deliver Check -- "Ship the candidate." --> PullRequest classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 0b049dbc4..e928005f8 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -8,21 +8,32 @@ Own contract readiness. Retrieve an attached ticket through `/aidd-pm:01-ticket- --- title: Frame the delivery contract --- -flowchart LR - Source["$source"] - ChallengeFindings["$challenge_findings"] - Sdlc["/aidd-orchestrator:01-sdlc"] - TicketDecision{"Is a ticket attached?"} - Ticket["/aidd-pm:01-ticket-info"] - TicketArtifact["$ticket"] - ContractDecision{"Are the contract requirements fulfilled?"} - Contract["$contract"] - ScopeDecision{"Is the scope ambiguous?"} - Brainstorm["/aidd-refine:01-brainstorm"] - ClarifiedScope["$clarified_scope"] - Spec["/aidd-pm:04-spec"] - SpecArtifact["$spec"] - Deliver["02 Deliver"] +flowchart TD + subgraph CollectStage["Collect the source"] + direction TB + Source["$source"] + ChallengeFindings["$challenge_findings"] + Sdlc["/aidd-orchestrator:01-sdlc"] + TicketDecision{"Is a ticket attached?"} + Ticket["/aidd-pm:01-ticket-info"] + TicketArtifact["$ticket"] + end + + subgraph AssessStage["Assess the contract"] + direction TB + ContractDecision{"Are the contract requirements fulfilled?"} + Contract["$contract"] + Deliver["02 Deliver"] + end + + subgraph ClarifyStage["Frame missing requirements"] + direction TB + ScopeDecision{"Is the scope ambiguous?"} + Brainstorm["/aidd-refine:01-brainstorm"] + ClarifiedScope["$clarified_scope"] + Spec["/aidd-pm:04-spec"] + SpecArtifact["$spec"] + end Source --> Sdlc ChallengeFindings -- "Use these findings when reframing." --> Sdlc diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index d3bc7d258..050fccd5c 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -10,7 +10,7 @@ Commit the validated candidate through `/aidd-vcs:01-commit`. Run the required E --- title: Deliver the candidate --- -flowchart LR +flowchart TD subgraph Build["Build the candidate"] direction TB Contract["$contract"] diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 02cd252dc..5aed9fa61 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -10,7 +10,7 @@ Route need gaps to Frame and dispatch independent implementation findings throug --- title: Check and challenge independently --- -flowchart LR +flowchart TD subgraph ReviewStage["Review independently"] direction TB Contract["$contract"] From 269a3c804fa3ea20f10909c8a62b47e3567b5c07 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:04:48 +0200 Subject: [PATCH 18/27] docs(review): record grouped SDLC diagrams --- aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md index 7620f7977..ab57d5282 100644 --- a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -43,7 +43,7 @@ - [x] Make autonomy the default and define the narrow conditions that still require user authority — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:10` - [x] Continue until validation, independent review, challenge, clean branch, and draft PR gates all hold — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:12` - [x] State behavioral invariants before each diagram without repeating the routing below it — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:3` -- [x] Keep all four diagrams LR, grouped by stage, and visually distinguish skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:13` +- [x] Keep all four diagrams top-down, grouped by stage, and visually distinguish skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:13` - [x] Document orchestrator-authorized bounded Todo fan-out without permitting agent delegation chains — `docs/ARCHITECTURE.md:155` - [x] Describe specification as conditional and expose the challenge gate in public documentation — `README.md:37` From cbb96317424d0ce6058d3c3b5f20653ddd20ecfa Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:13:41 +0200 Subject: [PATCH 19/27] refactor(orchestrator): simplify autonomous SDLC contract Keep each protocol self-contained and human-readable while preserving autonomous routing, useful parallelism, and review freshness without exposing Git jargon. --- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 4 ++-- .../skills/01-sdlc/references/01-frame.md | 2 +- .../skills/01-sdlc/references/02-deliver.md | 14 ++++++------- .../skills/01-sdlc/references/03-check.md | 20 +++++++++---------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index 2416a3065..2be8010c5 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -7,9 +7,9 @@ description: Autonomously orchestrates a request from framing to a draft pull re ## Behavior -Own every routing decision. Verify each handoff against the current reference. Treat canonical addresses as the responsibility map and verify that each provider is installed before calling it. Work autonomously, making reversible in-scope decisions without asking and requesting input only when product authority or external approval is missing. Decide from contract and acceptance criteria, project rules, correctness and security, simplicity, then speed. +Run autonomously from the request to a draft pull request. Read only the current zone reference. Make reversible in-scope decisions without asking. Ask only when a product decision or external approval is required. Verify that every named provider is installed before calling it. -Keep planning in the orchestrator, implementation in `@aidd-dev:executor`, and independent judgment in fresh `@aidd-dev:checker` instances. Continue until the branch is clean, every applicable validation is green, the current SHA has passed review and challenge, and a draft pull request exists. Exhaust safe alternatives before returning `blocked`. Route contract gaps to Frame and implementation gaps to Deliver. +Spawn specialized agents for isolated work. Parallelize independent work when it is faster. Give each agent one focused task that a smaller model can execute. Continue until the candidate is validated, independently reviewed, challenged, and attached to a draft pull request. ```mermaid --- diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index e928005f8..0bcc4d366 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -2,7 +2,7 @@ ## Behavior -Own contract readiness. Retrieve an attached ticket through `/aidd-pm:01-ticket-info` before deciding whether the source has an explicit objective and observable acceptance criteria. Send a planning-ready contract directly to Deliver without requiring a specification. When the scope is ambiguous, run `/aidd-refine:01-brainstorm` before `/aidd-pm:04-spec`. Use challenge findings to repair a need gap before planning again. +Produce a planning-ready contract with an explicit objective and observable acceptance criteria. Use the attached ticket when one exists. Skip the specification when the source is already clear. Otherwise clarify ambiguous scope before writing it. Use challenge findings to repair a need gap. ```mermaid --- diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index 050fccd5c..8654c21c9 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -2,9 +2,9 @@ ## Behavior -Own the plan in `/aidd-orchestrator:01-sdlc` and delegate implementation to `@aidd-dev:executor`. The executor never rewrites the plan. Require the executor to implement and self-validate without performing the independent review. Run coding assertions, then architecture assertions through `/aidd-dev:03-assert` when architecture documentation applies. A failed assertion, architecture check, or E2E journey re-enters Deliver and reruns every applicable gate. +Create a self-contained plan that a human can follow. Keep it proportional to the scope. The executor implements the plan without rewriting it. Use focused checks while repairing the candidate, then run every applicable assertion before completion. Check architecture only when architecture documentation exists. -Commit the validated candidate through `/aidd-vcs:01-commit`. Run the required E2E journey through `/aidd-dev:06-test` as the final delivery gate. Send only a clean candidate with green validation to Check. +Commit the validated candidate. Run the required E2E journey last. Send only a clean candidate with green validation to Check. ```mermaid --- @@ -38,7 +38,7 @@ flowchart TD JourneyDecision{"Is an end-to-end user journey required?"} Test["/aidd-dev:06-test"] JourneyPassed{"Did the end-to-end user journey pass?"} - CandidateSha["$candidate_sha"] + CommittedCandidate["$committed_candidate"] end Repair["02 Deliver"] @@ -65,9 +65,9 @@ flowchart TD JourneyDecision -- "Yes, run test-journey." --> Test Test --> JourneyPassed JourneyPassed -- "No, repair and validate the candidate again." --> Repair - JourneyPassed -- "Yes, continue." --> CandidateSha - JourneyDecision -- "No, continue." --> CandidateSha - CandidateSha --> Check + JourneyPassed -- "Yes, continue." --> CommittedCandidate + JourneyDecision -- "No, continue." --> CommittedCandidate + CommittedCandidate --> Check classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px classDef agent fill:#F3E8FF,stroke:#9333EA,color:#581C87,stroke-width:2px @@ -77,7 +77,7 @@ flowchart TD class Sdlc,Plan,Implement,AssertCode,AssertArchitecture,Commit,Test skill class Executor agent - class Contract,PlanArtifact,Candidate,CandidateSha artifact + class Contract,PlanArtifact,Candidate,CommittedCandidate artifact class AssertionsPassed,ArchitectureDecision,ArchitecturePassed,CommitDecision,JourneyDecision,JourneyPassed decision class Repair,Check zone ``` diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 5aed9fa61..8e3089ffc 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -2,9 +2,9 @@ ## Behavior -Give a fresh `@aidd-dev:checker` the contract, plan, candidate SHA, and every validation report for `/aidd-dev:05-review`. After a green review, use a second fresh checker to run `/aidd-refine:02-challenge` and answer the three confidence questions from evidence. Both checker contexts remain read-only and never implement fixes. Treat `No` and `Uncertain` identically. +Use a fresh checker to review the candidate against the contract, plan, and validation evidence. After a green review, use another fresh checker to challenge the real outcome with the three confidence questions. Both checkers stay read-only. -Route need gaps to Frame and dispatch independent implementation findings through `/aidd-dev:10-todo`, one `@aidd-dev:executor` per finding. Re-enter Deliver to integrate, validate, commit, and run the final E2E gate. Open the draft pull request only after verifying that the reviewed SHA is still current. +Route need gaps to Frame. Dispatch independent implementation findings in parallel through Todo, one executor per finding. Keep dependent fixes together. Re-enter Deliver after every fix. If the candidate changed since the review, review it again. Otherwise open the draft pull request. ```mermaid --- @@ -15,7 +15,7 @@ flowchart TD direction TB Contract["$contract"] Plan["$plan"] - CandidateSha["$candidate_sha"] + CommittedCandidate["$committed_candidate"] ValidationReports["$validation_reports"] ReviewChecker(["@aidd-dev:checker"]) Review["/aidd-dev:05-review"] @@ -47,7 +47,7 @@ flowchart TD subgraph ShipStage["Ship the reviewed candidate"] direction TB - CurrentSha{"Is the reviewed SHA still current?"} + CandidateChanged{"Has the candidate changed since the review?"} Check["03 Check"] PullRequest["/aidd-vcs:02-pull-request"] PullRequestUrl["$pull_request_url"] @@ -55,7 +55,7 @@ flowchart TD Contract --> ReviewChecker Plan --> ReviewChecker - CandidateSha --> ReviewChecker + CommittedCandidate --> ReviewChecker ValidationReports --> ReviewChecker ReviewChecker --> Review Review --> ReviewArtifact @@ -78,9 +78,9 @@ flowchart TD ExecutorFirst --> Fixes ExecutorLast --> Fixes Fixes --> Deliver - Satisfied -- "Yes, verify the reviewed SHA." --> CurrentSha - CurrentSha -- "No, check the current candidate again." --> Check - CurrentSha -- "Yes, open the draft pull request." --> PullRequest + Satisfied -- "Yes, confirm the candidate." --> CandidateChanged + CandidateChanged -- "Yes, review it again." --> Check + CandidateChanged -- "No, open the draft pull request." --> PullRequest PullRequest --> PullRequestUrl classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px @@ -91,7 +91,7 @@ flowchart TD class Review,Sdlc,Challenge,Todo,PullRequest skill class ReviewChecker,ConfidenceChecker,ExecutorFirst,ExecutorLast agent - class Contract,Plan,CandidateSha,ValidationReports,ReviewArtifact,ChallengeFindings,Fixes,PullRequestUrl artifact - class ReviewVerdict,Proud,Confident,Satisfied,ContractGap,CurrentSha decision + class Contract,Plan,CommittedCandidate,ValidationReports,ReviewArtifact,ChallengeFindings,Fixes,PullRequestUrl artifact + class ReviewVerdict,Proud,Confident,Satisfied,ContractGap,CandidateChanged decision class Frame,Deliver,Check zone ``` From daf325f399d73214814137980bae68ec98f84959 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:13:47 +0200 Subject: [PATCH 20/27] docs(review): verify simplified SDLC contract --- .../tasks/2026_07/2026_07_25_sdlc-orchestration/review.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md index ab57d5282..c6aaa13d5 100644 --- a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -22,7 +22,7 @@ ### Phase 3 — Deliver the candidate -- [x] Keep planning in the orchestrator and implementation in `@aidd-dev:executor` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:48` +- [x] Produce a self-contained human-readable plan and delegate implementation to `@aidd-dev:executor` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:5` - [x] Route failed coding assertions back through delivery — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:55` - [x] Run architecture assertions through `/aidd-dev:03-assert` when architecture documentation applies — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:57` - [x] Commit the validated candidate through `/aidd-vcs:01-commit` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:62` @@ -30,12 +30,12 @@ ### Phase 4 — Check independently -- [x] Give a fresh checker the contract, plan, candidate SHA, and validation reports — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:56` +- [x] Give a fresh checker the contract, plan, committed candidate, and validation reports — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:56` - [x] Run `/aidd-dev:05-review` independently from implementation — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:60` - [x] Challenge the reviewed outcome in a second fresh checker context — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:65` - [x] Gate completion on pride, confidence, and end-to-end user satisfaction — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:68` -- [x] Route contract gaps to Frame and independent implementation findings through Todo executors — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:71` -- [x] Verify the reviewed SHA before opening the draft pull request — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:81` +- [x] Route contract gaps to Frame and parallelize independent implementation findings through Todo executors — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:71` +- [x] Review the candidate again when it changed before opening the draft pull request — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:81` - [x] Declare every checker capability with its canonical slash address — `plugins/aidd-dev/agents/checker.md:44` ### Phase 5 — Keep the protocol autonomous and readable From 0988aaf40bafd07d97c38e4880a1284c6977ee98 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:45:19 +0200 Subject: [PATCH 21/27] refactor(orchestrator): keep SDLC focused on routing Move validation gates into their owning recipe skills so the orchestration references teach only behavior, delegation, and handoffs. --- docs/ARCHITECTURE.md | 2 +- .../skills/01-plan/actions/04-plan.md | 5 +- .../aidd-orchestrator/skills/01-sdlc/SKILL.md | 23 +++--- .../skills/01-sdlc/references/01-frame.md | 50 +++++-------- .../skills/01-sdlc/references/02-deliver.md | 64 ++++++----------- .../skills/01-sdlc/references/03-check.md | 72 ++++++------------- .../02-challenge/actions/01-challenge.md | 13 ++-- .../references/confidence-rubric.md | 12 ++-- 8 files changed, 87 insertions(+), 154 deletions(-) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 969052708..d44be187c 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -153,7 +153,7 @@ Choose by context, not complexity: keep the work visible to the caller → skill Composition rules: - **Spawning is authorized by the high-level orchestrator, never invented by a recipe skill.** A recipe skill normally runs in the caller's context. A bounded fan-out capability may mechanically spawn leaf agents only when the orchestrator explicitly delegates that responsibility and retains routing ownership. -- An orchestrator spawns each isolated step as a leaf agent that runs a recipe, or runs the recipe itself when isolation is unnecessary. The SDLC owns planning, delegates delivery to `executor`, and delegates independent judgments to fresh `checker` instances. For independent repair findings, it may explicitly delegate bounded fan-out to `10-todo`; Todo's leaf executors return their results to the SDLC. A recipe invoked inside an agent never spawns again. +- An orchestrator spawns each isolated step as a leaf agent that runs a recipe, or runs the recipe itself when isolation is unnecessary. The SDLC owns planning, delegates delivery to `executor`, and delegates independent judgments to a fresh `checker`. For independent repair findings, it may explicitly delegate bounded fan-out to `10-todo`; Todo's leaf executors return their results to the SDLC. A recipe invoked inside an agent never spawns again. - An agent invokes only the recipe skills it declares under `# Skills you may invoke`, never an orchestrator skill, and never reads a skill's files. It names every skill by its canonical `/plugin:folder` address so its permissions are explicit and auditable. - An agent never delegates flow work to another agent and never invokes an orchestrator skill. It may spawn a read-only recon helper (for example `Explore`) that mutates nothing and spawns nothing. So the write path stays two layers deep and delegation can never cycle. diff --git a/plugins/aidd-dev/skills/01-plan/actions/04-plan.md b/plugins/aidd-dev/skills/01-plan/actions/04-plan.md index 627681e32..c50c54010 100644 --- a/plugins/aidd-dev/skills/01-plan/actions/04-plan.md +++ b/plugins/aidd-dev/skills/01-plan/actions/04-plan.md @@ -1,6 +1,6 @@ # 04 - Plan -Turn the explored source into a plan and its phases, save them, then review the whole until approved. Never code. +Turn the explored source into a plan and its phases, save them, then review the whole before handoff. Never code. ## Input @@ -16,7 +16,7 @@ A feature folder, always at `aidd_docs/tasks//_/_ Sdlc - Sdlc --> Ready - Ready -- "No, frame the contract." --> Frame - Ready -- "Yes, deliver it." --> Deliver + Sdlc --> Frame Frame --> Deliver Deliver --> Check - Check -- "Ship the candidate." --> PullRequest + Check --> PullRequest classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px - classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px class Sdlc skill class Request,PullRequest artifact - class Ready decision class Frame,Deliver,Check zone ``` ## References -Read only the current zone's reference before delegating it. - -| # | Reference | Does | -| --- | ---------------------------------------------- | ------------------------------------- | -| 01 | [Frame](references/01-frame.md) | Resolve a planning-ready contract | -| 02 | [Deliver](references/02-deliver.md) | Build and validate a committed change | -| 03 | [Check](references/03-check.md) | Review independently and open the PR | +| # | Reference | +| --- | --------------------------------------- | +| 01 | [Frame](references/01-frame.md) | +| 02 | [Deliver](references/02-deliver.md) | +| 03 | [Check](references/03-check.md) | diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 0bcc4d366..31622719a 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -2,63 +2,49 @@ ## Behavior -Produce a planning-ready contract with an explicit objective and observable acceptance criteria. Use the attached ticket when one exists. Skip the specification when the source is already clear. Otherwise clarify ambiguous scope before writing it. Use challenge findings to repair a need gap. +Start from `$source` only. Resolve a ticket when the source references one. Use the source directly when it is planning-ready. Otherwise clarify only the intent that can change what is built, then formalize the missing contract requirements. Hand the resulting contract to Deliver. ```mermaid --- title: Frame the delivery contract --- flowchart TD - subgraph CollectStage["Collect the source"] + subgraph SourceStage["Resolve the source"] direction TB Source["$source"] - ChallengeFindings["$challenge_findings"] Sdlc["/aidd-orchestrator:01-sdlc"] - TicketDecision{"Is a ticket attached?"} Ticket["/aidd-pm:01-ticket-info"] - TicketArtifact["$ticket"] + ResolvedSource["$resolved_source"] end - subgraph AssessStage["Assess the contract"] + subgraph FrameStage["Frame the contract when needed"] direction TB - ContractDecision{"Are the contract requirements fulfilled?"} - Contract["$contract"] - Deliver["02 Deliver"] + Brainstorm["/aidd-refine:01-brainstorm"] + Spec["/aidd-pm:04-spec"] end - subgraph ClarifyStage["Frame missing requirements"] + subgraph HandoffStage["Hand off the contract"] direction TB - ScopeDecision{"Is the scope ambiguous?"} - Brainstorm["/aidd-refine:01-brainstorm"] - ClarifiedScope["$clarified_scope"] - Spec["/aidd-pm:04-spec"] - SpecArtifact["$spec"] + Contract["$contract"] + Deliver["02 Deliver"] end Source --> Sdlc - ChallengeFindings -- "Use these findings when reframing." --> Sdlc - Sdlc --> TicketDecision - TicketDecision -- "Yes, retrieve it." --> Ticket - Ticket --> TicketArtifact - TicketArtifact --> ContractDecision - TicketDecision -- "No, use the source." --> ContractDecision - ContractDecision -- "Yes, continue." --> Contract + Sdlc -- "When the source references a ticket, resolve it." --> Ticket + Sdlc -- "Otherwise, use the source as provided." --> ResolvedSource + Ticket --> ResolvedSource + ResolvedSource -- "When it is planning-ready, continue directly." --> Contract + ResolvedSource -- "When intent can change what is built, clarify it." --> Brainstorm + ResolvedSource -- "When only contract requirements are missing, formalize them." --> Spec + Brainstorm --> Spec + Spec --> Contract Contract --> Deliver - ContractDecision -- "No, frame it." --> ScopeDecision - ScopeDecision -- "Yes, clarify it." --> Brainstorm - Brainstorm --> ClarifiedScope - ClarifiedScope --> Spec - ScopeDecision -- "No, write the specification." --> Spec - Spec --> SpecArtifact - SpecArtifact --> Deliver classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px - classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px class Sdlc,Ticket,Brainstorm,Spec skill - class Source,ChallengeFindings,TicketArtifact,Contract,ClarifiedScope,SpecArtifact artifact - class TicketDecision,ContractDecision,ScopeDecision decision + class Source,ResolvedSource,Contract artifact class Deliver zone ``` diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index 8654c21c9..f8ebe4192 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -2,82 +2,58 @@ ## Behavior -Create a self-contained plan that a human can follow. Keep it proportional to the scope. The executor implements the plan without rewriting it. Use focused checks while repairing the candidate, then run every applicable assertion before completion. Check architecture only when architecture documentation exists. +Turn the contract into a proportional plan, then give one executor the plan. The executor implements it and calls the validation skills, which own their checks and repair loops. Include architecture conformance whenever the project documents architecture. Run a required end-to-end journey after every other validation. -Commit the validated candidate. Run the required E2E journey last. Send only a clean candidate with green validation to Check. +Commit and push the validated work through the commit skill. Send only the clean committed candidate to Check. ```mermaid --- title: Deliver the candidate --- flowchart TD - subgraph Build["Build the candidate"] + subgraph PlanStage["Plan the delivery"] direction TB Contract["$contract"] Sdlc["/aidd-orchestrator:01-sdlc"] Plan["/aidd-dev:01-plan"] PlanArtifact["$plan"] - Executor(["@aidd-dev:executor"]) - Implement["/aidd-dev:02-implement"] - Candidate["$candidate"] end - subgraph Validate["Validate the candidate"] + subgraph ExecuteStage["Execute and validate the plan"] direction TB - AssertCode["/aidd-dev:03-assert"] - AssertionsPassed{"Did all assertions pass?"} - ArchitectureDecision{"Is architecture documentation available?"} - AssertArchitecture["/aidd-dev:03-assert"] - ArchitecturePassed{"Does the candidate conform to the documented architecture?"} + Executor(["@aidd-dev:executor"]) + Implement["/aidd-dev:02-implement"] + Assert["/aidd-dev:03-assert"] + Test["/aidd-dev:06-test"] + Commit["/aidd-vcs:01-commit"] end - subgraph Finalize["Finalize the candidate"] + subgraph HandoffStage["Hand off the candidate"] direction TB - CommitDecision{"Are there uncommitted changes?"} - Commit["/aidd-vcs:01-commit"] - JourneyDecision{"Is an end-to-end user journey required?"} - Test["/aidd-dev:06-test"] - JourneyPassed{"Did the end-to-end user journey pass?"} CommittedCandidate["$committed_candidate"] + Check["03 Check"] end - Repair["02 Deliver"] - Check["03 Check"] - Contract --> Sdlc Sdlc --> Plan Plan --> PlanArtifact PlanArtifact --> Executor Executor --> Implement - Implement --> Candidate - Candidate -- "Run the assertions." --> AssertCode - AssertCode --> AssertionsPassed - AssertionsPassed -- "No, repair and validate the candidate again." --> Repair - AssertionsPassed -- "Yes, continue." --> ArchitectureDecision - ArchitectureDecision -- "Yes, run assert-architecture." --> AssertArchitecture - AssertArchitecture --> ArchitecturePassed - ArchitecturePassed -- "No, repair and validate the candidate again." --> Repair - ArchitecturePassed -- "Yes, continue." --> CommitDecision - ArchitectureDecision -- "No, continue." --> CommitDecision - CommitDecision -- "Yes, commit the candidate." --> Commit - Commit --> JourneyDecision - CommitDecision -- "No, continue." --> JourneyDecision - JourneyDecision -- "Yes, run test-journey." --> Test - Test --> JourneyPassed - JourneyPassed -- "No, repair and validate the candidate again." --> Repair - JourneyPassed -- "Yes, continue." --> CommittedCandidate - JourneyDecision -- "No, continue." --> CommittedCandidate + Implement --> Assert + Assert -- "When no end-to-end journey is required, commit the result." --> Commit + Assert -- "When an end-to-end journey is required, run it last." --> Test + Test -- "After the journey succeeds, commit the result." --> Commit + Test -- "Return a failed journey for repair." --> Executor + Commit --> CommittedCandidate CommittedCandidate --> Check classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px classDef agent fill:#F3E8FF,stroke:#9333EA,color:#581C87,stroke-width:2px classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px - classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px - class Sdlc,Plan,Implement,AssertCode,AssertArchitecture,Commit,Test skill + class Sdlc,Plan,Implement,Assert,Test,Commit skill class Executor agent - class Contract,PlanArtifact,Candidate,CommittedCandidate artifact - class AssertionsPassed,ArchitectureDecision,ArchitecturePassed,CommitDecision,JourneyDecision,JourneyPassed decision - class Repair,Check zone + class Contract,PlanArtifact,CommittedCandidate artifact + class Check zone ``` diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 8e3089ffc..9d9e108ec 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -2,9 +2,9 @@ ## Behavior -Use a fresh checker to review the candidate against the contract, plan, and validation evidence. After a green review, use another fresh checker to challenge the real outcome with the three confidence questions. Both checkers stay read-only. +Use one fresh checker, independent from implementation, to review the candidate against the contract, plan, and validation evidence. After the review clears, the same checker challenges whether the real outcome is trustworthy and serves the user. -Route need gaps to Frame. Dispatch independent implementation findings in parallel through Todo, one executor per finding. Keep dependent fixes together. Re-enter Deliver after every fix. If the candidate changed since the review, review it again. Otherwise open the draft pull request. +Use product or contract findings as the next Frame source. Dispatch independent implementation findings through Todo and keep dependent repairs together in Deliver. Re-enter Check after every new candidate. Open the draft pull request when the checker returns no actionable finding. ```mermaid --- @@ -17,81 +17,53 @@ flowchart TD Plan["$plan"] CommittedCandidate["$committed_candidate"] ValidationReports["$validation_reports"] - ReviewChecker(["@aidd-dev:checker"]) - Review["/aidd-dev:05-review"] - ReviewArtifact["$review"] Sdlc["/aidd-orchestrator:01-sdlc"] - ReviewVerdict{"Are all contract requirements fulfilled?"} + Checker(["@aidd-dev:checker"]) + Review["/aidd-dev:05-review"] end subgraph ChallengeStage["Challenge the outcome"] direction TB - ConfidenceChecker(["@aidd-dev:checker"]) Challenge["/aidd-refine:02-challenge"] - ChallengeFindings["$challenge_findings"] - Proud{"Am I proud of the work delivered?"} - Confident{"Am I confident in every consequential choice that was made?"} - Satisfied{"Will the user be satisfied with the real end-to-end outcome?"} end subgraph RouteStage["Route the result"] direction TB - ContractGap{"Is the gap in the contract?"} + Findings["$findings"] Frame["01 Frame"] Todo["/aidd-dev:10-todo"] - ExecutorFirst(["@aidd-dev:executor"]) - ExecutorLast(["@aidd-dev:executor"]) - Fixes["$fixes"] Deliver["02 Deliver"] end subgraph ShipStage["Ship the reviewed candidate"] direction TB - CandidateChanged{"Has the candidate changed since the review?"} - Check["03 Check"] PullRequest["/aidd-vcs:02-pull-request"] PullRequestUrl["$pull_request_url"] end - Contract --> ReviewChecker - Plan --> ReviewChecker - CommittedCandidate --> ReviewChecker - ValidationReports --> ReviewChecker - ReviewChecker --> Review - Review --> ReviewArtifact - ReviewArtifact --> Sdlc - Sdlc --> ReviewVerdict - ReviewVerdict -- "No, route the findings." --> ContractGap - ReviewVerdict -- "Yes, challenge the outcome." --> ConfidenceChecker - ConfidenceChecker --> Challenge - Challenge --> ChallengeFindings - ChallengeFindings --> Proud - Proud -- "Yes, continue." --> Confident - Confident -- "Yes, continue." --> Satisfied - Proud -- "No or uncertain, route the findings." --> ContractGap - Confident -- "No or uncertain, route the findings." --> ContractGap - Satisfied -- "No or uncertain, route the findings." --> ContractGap - ContractGap -- "Yes, reframe the contract." --> Frame - ContractGap -- "No, repair the implementation." --> Todo - Todo --> ExecutorFirst - Todo --> ExecutorLast - ExecutorFirst --> Fixes - ExecutorLast --> Fixes - Fixes --> Deliver - Satisfied -- "Yes, confirm the candidate." --> CandidateChanged - CandidateChanged -- "Yes, review it again." --> Check - CandidateChanged -- "No, open the draft pull request." --> PullRequest + Contract --> Sdlc + Plan --> Sdlc + CommittedCandidate --> Sdlc + ValidationReports --> Sdlc + Sdlc -- "At Check entry, spawn one fresh checker." --> Checker + Checker --> Review + Review -- "Return actionable review findings." --> Findings + Review -- "When the review clears, challenge the outcome." --> Challenge + Challenge -- "Return actionable challenge findings." --> Findings + Challenge -- "When the outcome is trustworthy, open the draft pull request." --> PullRequest + Findings -- "Use product findings as the next Frame source." --> Frame + Findings -- "Repair independent implementation findings in parallel." --> Todo + Findings -- "Repair dependent implementation findings together." --> Deliver + Todo --> Deliver PullRequest --> PullRequestUrl classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px classDef agent fill:#F3E8FF,stroke:#9333EA,color:#581C87,stroke-width:2px classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px - classDef decision fill:#FFEDD5,stroke:#EA580C,color:#7C2D12,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px class Review,Sdlc,Challenge,Todo,PullRequest skill - class ReviewChecker,ConfidenceChecker,ExecutorFirst,ExecutorLast agent - class Contract,Plan,CommittedCandidate,ValidationReports,ReviewArtifact,ChallengeFindings,Fixes,PullRequestUrl artifact - class ReviewVerdict,Proud,Confident,Satisfied,ContractGap,CandidateChanged decision - class Frame,Deliver,Check zone + class Checker agent + class Contract,Plan,CommittedCandidate,ValidationReports,Findings,PullRequestUrl artifact + class Frame,Deliver zone ``` diff --git a/plugins/aidd-refine/skills/02-challenge/actions/01-challenge.md b/plugins/aidd-refine/skills/02-challenge/actions/01-challenge.md index b7167e1ac..15348cf87 100644 --- a/plugins/aidd-refine/skills/02-challenge/actions/01-challenge.md +++ b/plugins/aidd-refine/skills/02-challenge/actions/01-challenge.md @@ -15,12 +15,17 @@ The findings report following `@../assets/report-template.md`: a confidence perc 1. **Align.** Read the work and line it up against the agreed reference. 2. **Challenge.** Challenge own assumptions and the user's decisions. -3. **Scan.** Scan for edge cases, errors, gaps, duplications, and inconsistencies. -4. **Classify.** Classify each finding as Correctness, Deal breaker, or Suggestion. -5. **Score.** Score confidence per the rubric in `@../references/confidence-rubric.md`. -6. **Emit.** Fill `@../assets/report-template.md` verbatim and emit it. +3. **Trust.** Answer internally: + - "Am I proud of the work delivered?" + - "Am I confident in every consequential choice that was made?" + - "Will the user be satisfied with the real end-to-end outcome?" +4. **Scan.** Scan for edge cases, errors, gaps, duplications, and inconsistencies. +5. **Classify.** Classify each finding as Correctness, Deal breaker, or Suggestion. +6. **Score.** Score confidence per the rubric in `@../references/confidence-rubric.md`. +7. **Emit.** Fill `@../assets/report-template.md` verbatim and emit it. ## Test - The report has a confidence percentage and the Correctness, Deal breakers, and Suggestions sections. - The Deal breakers section is non-empty only when confidence is below 75%. +- A negative or uncertain trust answer produces a deal breaker and confidence below 75%. diff --git a/plugins/aidd-refine/skills/02-challenge/references/confidence-rubric.md b/plugins/aidd-refine/skills/02-challenge/references/confidence-rubric.md index 0d474d1b6..2aece1068 100644 --- a/plugins/aidd-refine/skills/02-challenge/references/confidence-rubric.md +++ b/plugins/aidd-refine/skills/02-challenge/references/confidence-rubric.md @@ -2,9 +2,9 @@ The challenge action emits a confidence percentage. Pick the tier whose conditions match the findings, then choose a value within that tier. -| Tier | Condition | -| --------- | ----------------------------------------------- | -| `100%` | No deal breakers, no gaps, no missing parts, no suggestions. | -| `75-95%` | Suggestions only, no blockers. | -| `50-74%` | Minor deal breakers, all fixable in place. | -| `<50%` | Major deal breakers, partial rework required. | +| Tier | Condition | +| --------- | --------------------------------------------------------------------------------------------------------- | +| `100%` | Every trust answer is yes, with no deal breakers, gaps, missing parts, or suggestions. | +| `75-95%` | Every trust answer is yes, with suggestions only and no blockers. | +| `50-74%` | At least one trust answer is negative or uncertain, or minor deal breakers are fixable in place. | +| `<50%` | At least one trust answer exposes a major outcome failure, or major deal breakers require partial rework. | From 7beb1cb34221a53f266f2d93ec838c4caeec1078 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 14:45:48 +0200 Subject: [PATCH 22/27] docs(review): verify routing-only SDLC protocols Record the simplified source handoff, delegated gates, Mermaid renders, and five target builds. --- .../2026_07_25_sdlc-orchestration/review.md | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md index c6aaa13d5..3b3dccf9c 100644 --- a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -16,36 +16,37 @@ ### Phase 2 — Frame the contract -- [x] Retrieve an attached ticket before evaluating readiness — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:29` -- [x] Skip specification when the source already has an objective and observable acceptance criteria — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:34` -- [x] Use canonical brainstorm and spec providers only when framing is required — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:36` +- [x] Enter Frame with `$source` only and resolve a referenced ticket as part of that source — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:5` +- [x] Send a planning-ready source directly to Deliver without mandatory framing work — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:36` +- [x] Call canonical brainstorm and spec providers only for the missing behavior they own — `plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md:37` ### Phase 3 — Deliver the candidate -- [x] Produce a self-contained human-readable plan and delegate implementation to `@aidd-dev:executor` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:5` -- [x] Route failed coding assertions back through delivery — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:55` -- [x] Run architecture assertions through `/aidd-dev:03-assert` when architecture documentation applies — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:57` -- [x] Commit the validated candidate through `/aidd-vcs:01-commit` — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:62` -- [x] Run the required E2E journey last and reject a failing journey — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:65` +- [x] Produce a proportional plan autonomously and delegate it to one `@aidd-dev:executor` — `plugins/aidd-dev/skills/01-plan/actions/04-plan.md:19` +- [x] Let implementation and assertion skills own their validation and repair loops — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:5` +- [x] Include architecture conformance through `/aidd-dev:03-assert` when architecture is documented — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:5` +- [x] Run the required E2E journey last and return a failure to the executor — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:44` +- [x] Commit and push validated work through `/aidd-vcs:01-commit` before Check — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:7` ### Phase 4 — Check independently -- [x] Give a fresh checker the contract, plan, committed candidate, and validation reports — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:56` -- [x] Run `/aidd-dev:05-review` independently from implementation — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:60` -- [x] Challenge the reviewed outcome in a second fresh checker context — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:65` -- [x] Gate completion on pride, confidence, and end-to-end user satisfaction — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:68` -- [x] Route contract gaps to Frame and parallelize independent implementation findings through Todo executors — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:71` -- [x] Review the candidate again when it changed before opening the draft pull request — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:81` +- [x] Give one fresh checker the contract, plan, committed candidate, and validation reports — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:44` +- [x] Run `/aidd-dev:05-review`, then `/aidd-refine:02-challenge` in the same independent context — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:48` +- [x] Keep pride, confidence, and end-to-end satisfaction gates inside the challenge skill — `plugins/aidd-refine/skills/02-challenge/actions/01-challenge.md:18` +- [x] Use product and contract findings as the next Frame source — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:54` +- [x] Parallelize independent implementation findings through Todo and keep dependent repairs together — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:55` +- [x] Re-enter Check after every repaired candidate and open the draft PR only without actionable findings — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:7` - [x] Declare every checker capability with its canonical slash address — `plugins/aidd-dev/agents/checker.md:44` ### Phase 5 — Keep the protocol autonomous and readable - [x] Make autonomy the default and define the narrow conditions that still require user authority — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:10` -- [x] Continue until validation, independent review, challenge, clean branch, and draft PR gates all hold — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:12` -- [x] State behavioral invariants before each diagram without repeating the routing below it — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:3` -- [x] Keep all four diagrams top-down, grouped by stage, and visually distinguish skills, agents, artifacts, decisions, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:13` +- [x] Keep the top-level router to Frame, Deliver, and Check without duplicating delegated gates — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:37` +- [x] State the expected behavior before each routing diagram — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:3` +- [x] Keep all four diagrams top-down, grouped by stage, and visually distinguish skills, agents, artifacts, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:13` +- [x] Keep orchestration protocols in references rather than restoring an executable action tree — `docs/ARCHITECTURE.md:144` - [x] Document orchestrator-authorized bounded Todo fan-out without permitting agent delegation chains — `docs/ARCHITECTURE.md:155` -- [x] Describe specification as conditional and expose the challenge gate in public documentation — `README.md:37` +- [x] Resolve every canonical provider and agent address used by the SDLC protocol — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:65` ## Findings @@ -56,6 +57,6 @@ None. | Metric | Value | | ------------- | ----- | | Verified | 100% (24/24) | -| Files checked | All 32 changed files in `origin/next...working-tree`; five Mermaid diagrams rendered; five flat distributions built | +| Files checked | All 35 changed files in `origin/next...working-tree`; four SDLC Mermaid diagrams rendered; five flat distributions built | | Unchecked | none | | Unplanned | none | From 313178dc2b3a211477f73a0a3d4b69004458078c Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 18:31:36 +0200 Subject: [PATCH 23/27] refactor(orchestrator): remove SDLC self-references The diagrams describe an already-running orchestration, so routing now starts directly from each zone input. --- plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md | 6 +----- .../skills/01-sdlc/references/01-frame.md | 8 +++----- .../skills/01-sdlc/references/02-deliver.md | 6 ++---- .../skills/01-sdlc/references/03-check.md | 12 +++++------- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index 1cea541b6..f78c90b27 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -19,7 +19,6 @@ flowchart TD subgraph FrameStage["01 Frame"] direction TB Request["$request"] - Sdlc["/aidd-orchestrator:01-sdlc"] Frame["01 Frame"] end @@ -34,17 +33,14 @@ flowchart TD PullRequest["$pull_request"] end - Request --> Sdlc - Sdlc --> Frame + Request --> Frame Frame --> Deliver Deliver --> Check Check --> PullRequest - classDef skill fill:#DBEAFE,stroke:#2563EB,color:#1E3A8A,stroke-width:2px classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px - class Sdlc skill class Request,PullRequest artifact class Frame,Deliver,Check zone ``` diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md index 31622719a..d931c466a 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/01-frame.md @@ -12,7 +12,6 @@ flowchart TD subgraph SourceStage["Resolve the source"] direction TB Source["$source"] - Sdlc["/aidd-orchestrator:01-sdlc"] Ticket["/aidd-pm:01-ticket-info"] ResolvedSource["$resolved_source"] end @@ -29,9 +28,8 @@ flowchart TD Deliver["02 Deliver"] end - Source --> Sdlc - Sdlc -- "When the source references a ticket, resolve it." --> Ticket - Sdlc -- "Otherwise, use the source as provided." --> ResolvedSource + Source -- "When the source references a ticket, resolve it." --> Ticket + Source -- "Otherwise, use the source as provided." --> ResolvedSource Ticket --> ResolvedSource ResolvedSource -- "When it is planning-ready, continue directly." --> Contract ResolvedSource -- "When intent can change what is built, clarify it." --> Brainstorm @@ -44,7 +42,7 @@ flowchart TD classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px - class Sdlc,Ticket,Brainstorm,Spec skill + class Ticket,Brainstorm,Spec skill class Source,ResolvedSource,Contract artifact class Deliver zone ``` diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md index f8ebe4192..c2b1a817c 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md @@ -14,7 +14,6 @@ flowchart TD subgraph PlanStage["Plan the delivery"] direction TB Contract["$contract"] - Sdlc["/aidd-orchestrator:01-sdlc"] Plan["/aidd-dev:01-plan"] PlanArtifact["$plan"] end @@ -34,8 +33,7 @@ flowchart TD Check["03 Check"] end - Contract --> Sdlc - Sdlc --> Plan + Contract --> Plan Plan --> PlanArtifact PlanArtifact --> Executor Executor --> Implement @@ -52,7 +50,7 @@ flowchart TD classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px - class Sdlc,Plan,Implement,Assert,Test,Commit skill + class Plan,Implement,Assert,Test,Commit skill class Executor agent class Contract,PlanArtifact,CommittedCandidate artifact class Check zone diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md index 9d9e108ec..c871e419f 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md @@ -17,7 +17,6 @@ flowchart TD Plan["$plan"] CommittedCandidate["$committed_candidate"] ValidationReports["$validation_reports"] - Sdlc["/aidd-orchestrator:01-sdlc"] Checker(["@aidd-dev:checker"]) Review["/aidd-dev:05-review"] end @@ -41,11 +40,10 @@ flowchart TD PullRequestUrl["$pull_request_url"] end - Contract --> Sdlc - Plan --> Sdlc - CommittedCandidate --> Sdlc - ValidationReports --> Sdlc - Sdlc -- "At Check entry, spawn one fresh checker." --> Checker + Contract --> Checker + Plan --> Checker + CommittedCandidate --> Checker + ValidationReports --> Checker Checker --> Review Review -- "Return actionable review findings." --> Findings Review -- "When the review clears, challenge the outcome." --> Challenge @@ -62,7 +60,7 @@ flowchart TD classDef artifact fill:#DCFCE7,stroke:#16A34A,color:#14532D,stroke-width:2px classDef zone fill:#F1F5F9,stroke:#64748B,color:#0F172A,stroke-width:2px - class Review,Sdlc,Challenge,Todo,PullRequest skill + class Review,Challenge,Todo,PullRequest skill class Checker agent class Contract,Plan,CommittedCandidate,ValidationReports,Findings,PullRequestUrl artifact class Frame,Deliver zone From c15f714f13393a04773376b6ee9825a9e8f14d1c Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 18:31:48 +0200 Subject: [PATCH 24/27] docs(docs): verify direct SDLC routing Record that internal diagrams no longer represent the already-invoked orchestrator as a node. --- aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md index 3b3dccf9c..897b0a6d7 100644 --- a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -41,7 +41,7 @@ ### Phase 5 — Keep the protocol autonomous and readable - [x] Make autonomy the default and define the narrow conditions that still require user authority — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:10` -- [x] Keep the top-level router to Frame, Deliver, and Check without duplicating delegated gates — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:37` +- [x] Keep the top-level router to Frame, Deliver, and Check without representing the already-invoked SDLC as a node — `plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md:36` - [x] State the expected behavior before each routing diagram — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:3` - [x] Keep all four diagrams top-down, grouped by stage, and visually distinguish skills, agents, artifacts, and zones — `plugins/aidd-orchestrator/skills/01-sdlc/references/03-check.md:13` - [x] Keep orchestration protocols in references rather than restoring an executable action tree — `docs/ARCHITECTURE.md:144` From 2f0003df39c7cc4b2c9d03f881db2e5e2096f3fb Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 18:37:00 +0200 Subject: [PATCH 25/27] refactor(framework): clarify autonomous recovery Keep confirmation boundaries in the SDLC contract and route unclear validation failures through the executor debugging capability. --- plugins/aidd-dev/agents/executor.md | 1 + plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/aidd-dev/agents/executor.md b/plugins/aidd-dev/agents/executor.md index 1418f37c9..e2af667ce 100644 --- a/plugins/aidd-dev/agents/executor.md +++ b/plugins/aidd-dev/agents/executor.md @@ -13,6 +13,7 @@ You are the executor. Your job is to turn a dispatched task into working, valida - Honour the project's own conventions where it defines them, and match the code around you. Where it stays silent, follow the prevailing idiom. - Internalize the acceptance criteria before writing anything. If the scope is ambiguous, surface it instead of guessing. - Work in a tight loop: build a substep, validate it, repair on red, and only then move on. Validation passing is the gate, never your own say-so. +- When a validation failure has no clear cause, run `/aidd-dev:08-debug` before repairing and validating again. - Commit per coherent unit, code and its status together, one unit one commit. - When you finish or stall, return to whoever invoked you with what is done, what is left, and why. diff --git a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md index f78c90b27..5f61fa2f6 100644 --- a/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md +++ b/plugins/aidd-orchestrator/skills/01-sdlc/SKILL.md @@ -7,7 +7,7 @@ description: Autonomously orchestrates a request from framing to a draft pull re ## Behavior -Run autonomously from the request to a draft pull request. Read only the current zone reference. Make reversible in-scope decisions without asking. Ask only when a product decision or external approval is required. Verify that every named provider is installed before calling it. +Operate autonomously from the request to a draft pull request: decide and act without confirmation, asking only before spending money, taking an irreversible action, or making a decision that requires user authority. Read only the current zone reference. Verify that every named provider is installed before calling it. Spawn specialized agents for isolated work. Parallelize independent work when it is faster. Give each agent one focused task that a smaller model can execute. Repeat the responsible zone when delegated work returns an actionable gap. From c9a8ef378218a9db827b09fdd900e5462af750fd Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Sat, 25 Jul 2026 18:37:07 +0200 Subject: [PATCH 26/27] docs(docs): verify autonomous recovery contract Record the executor debug fallback and the refined SDLC authority boundary. --- aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md index 897b0a6d7..6e51361ee 100644 --- a/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md +++ b/aidd_docs/tasks/2026_07/2026_07_25_sdlc-orchestration/review.md @@ -23,7 +23,7 @@ ### Phase 3 — Deliver the candidate - [x] Produce a proportional plan autonomously and delegate it to one `@aidd-dev:executor` — `plugins/aidd-dev/skills/01-plan/actions/04-plan.md:19` -- [x] Let implementation and assertion skills own their validation and repair loops — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:5` +- [x] Let the executor own validation repair loops and invoke `/aidd-dev:08-debug` when the cause is unclear — `plugins/aidd-dev/agents/executor.md:16` - [x] Include architecture conformance through `/aidd-dev:03-assert` when architecture is documented — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:5` - [x] Run the required E2E journey last and return a failure to the executor — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:44` - [x] Commit and push validated work through `/aidd-vcs:01-commit` before Check — `plugins/aidd-orchestrator/skills/01-sdlc/references/02-deliver.md:7` From fd766e344dd1ae2567a990426ca250a2afc847e1 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Fri, 31 Jul 2026 12:44:12 +0700 Subject: [PATCH 27/27] chore(environment): remove setup script from environment.toml --- .codex/environments/environment.toml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/.codex/environments/environment.toml b/.codex/environments/environment.toml index d8458dbff..2e6205515 100644 --- a/.codex/environments/environment.toml +++ b/.codex/environments/environment.toml @@ -1,22 +1,6 @@ +# THIS IS AUTOGENERATED. DO NOT EDIT MANUALLY version = 1 name = "framework" [setup] -script = """ -# Guardrail: never move a named branch during setup. -if [ "$(git rev-parse --abbrev-ref HEAD)" != "HEAD" ]; then - echo "Refusing to move a named branch during setup." - exit 1 -fi - -# Guardrail: only refresh the setup base from a clean worktree. -if [ -n "$(git status --porcelain)" ]; then - echo "Refusing to update setup base: worktree is not clean." - git status --short - exit 1 -fi - -git fetch --prune origin main -git switch --detach origin/main -make setup -""" +script = ""