@ludecker/aaac 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/run-engine/advance-phase.mjs +152 -1
- package/src/run-engine/capability-evidence.mjs +460 -0
- package/src/run-engine/init-run.mjs +51 -1
- package/src/run-engine/lib.mjs +5 -0
- package/src/run-engine/verify-website-build.mjs +148 -0
- package/templates/cursor/aaac/capabilities/promotion-rules.json +64 -0
- package/templates/cursor/aaac/capabilities/registry.json +17 -15
- package/templates/cursor/aaac/dispatch.md +2 -2
- package/templates/cursor/aaac/enforcement.json +6 -3
- package/templates/cursor/aaac/governance/gates.json +3 -1
- package/templates/cursor/aaac/layers.md +3 -0
- package/templates/cursor/aaac/observability/telemetry.yaml +3 -0
- package/templates/cursor/aaac/run/schema.json +2 -0
- package/templates/cursor/aaac/scripts/run-engine/advance-phase.mjs +152 -1
- package/templates/cursor/aaac/scripts/run-engine/capability-evidence.mjs +460 -0
- package/templates/cursor/aaac/scripts/run-engine/init-run.mjs +51 -1
- package/templates/cursor/aaac/scripts/run-engine/lib.mjs +5 -0
- package/templates/cursor/aaac/scripts/run-engine/verify-website-build.mjs +148 -0
- package/templates/cursor/aaac/state/capability-stats.json +5 -0
- package/templates/cursor/skills/shared/platform-release/SKILL.md +22 -19
- package/templates/cursor/skills/shared/platform-release/orchestrator/contract.yaml +27 -7
- package/templates/cursor/skills/shared/testing/SKILL.md +5 -0
- package/templates/cursor/skills/shared/verification/SKILL.md +1 -0
- package/templates/docs/agentic_architecture.md +236 -53
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: shared-platform-release
|
|
3
3
|
description: >-
|
|
4
|
-
Phased release
|
|
5
|
-
|
|
4
|
+
Phased release for release-app: mandatory preflight, git, optional conditional
|
|
5
|
+
package publish, Render poll, verify, report.
|
|
6
6
|
disable-model-invocation: true
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -11,36 +11,39 @@ disable-model-invocation: true
|
|
|
11
11
|
## Swarm DAG
|
|
12
12
|
|
|
13
13
|
```text
|
|
14
|
-
|
|
14
|
+
Wave 0: pnpm typecheck (mandatory)
|
|
15
15
|
↓
|
|
16
16
|
Wave 1: release-git ← BLOCKING
|
|
17
17
|
↓
|
|
18
|
-
Wave
|
|
18
|
+
Wave 1.5: conditional package publish ← OPTIONAL (project overlay; blocking when triggered)
|
|
19
19
|
↓
|
|
20
|
-
|
|
20
|
+
Wave 2: release-render ← BLOCKING (poll until live or fail)
|
|
21
|
+
↓
|
|
22
|
+
Wave 3: verification + reporting
|
|
21
23
|
```
|
|
22
24
|
|
|
23
|
-
## Wave
|
|
25
|
+
## Wave 0 — preflight
|
|
24
26
|
|
|
27
|
+
```bash
|
|
28
|
+
pnpm typecheck
|
|
25
29
|
```
|
|
26
|
-
Task (shell or generalPurpose): release-git
|
|
27
|
-
Read: agents/release-git.md, ship-procedure.md
|
|
28
|
-
Return: commit_sha, commit_message_*
|
|
29
|
-
On failure: abort pipeline
|
|
30
|
-
```
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
Always. Optional extra tests when intent requests them.
|
|
32
|
+
|
|
33
|
+
## Wave 1 — git
|
|
34
|
+
|
|
35
|
+
Execute [agents/release-git.md](../../../agents/release-git.md) or spawn shell subagent.
|
|
36
|
+
|
|
37
|
+
## Wave 1.5 — conditional publish (project overlay)
|
|
33
38
|
|
|
34
|
-
|
|
39
|
+
When the project ships an npm package with the app (e.g. `@ludecker/aaac`), the project overlay supplies a conditional publish agent and detection scripts. Skip when no changes detected.
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|------------|------|
|
|
38
|
-
| [release-render.md](../../../agents/release-render.md) | generalPurpose or render-assistant MCP |
|
|
41
|
+
## Wave 2 — Render (mandatory)
|
|
39
42
|
|
|
40
|
-
|
|
43
|
+
Execute [agents/release-render.md](../../../agents/release-render.md).
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
**Never** end ship without polled deploy status.
|
|
43
46
|
|
|
44
47
|
## Reference
|
|
45
48
|
|
|
46
|
-
Full
|
|
49
|
+
Full steps: [ship-procedure.md](ship-procedure.md)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: release-app-orchestrator
|
|
2
|
-
purpose: Ship to main with
|
|
2
|
+
purpose: Ship to main with preflight, git push, optional conditional package publish, mandatory Render deploy poll, smoke check, report
|
|
3
3
|
inputs:
|
|
4
4
|
domain:
|
|
5
5
|
required: false
|
|
@@ -9,21 +9,41 @@ inputs:
|
|
|
9
9
|
outputs:
|
|
10
10
|
commit_sha:
|
|
11
11
|
type: string
|
|
12
|
+
package_publish_skipped:
|
|
13
|
+
type: boolean
|
|
14
|
+
package_version:
|
|
15
|
+
type: string
|
|
16
|
+
package_tag:
|
|
17
|
+
type: string
|
|
18
|
+
package_publish_status:
|
|
19
|
+
type: string
|
|
12
20
|
deploy_status:
|
|
13
21
|
type: string
|
|
22
|
+
deploy_id:
|
|
23
|
+
type: string
|
|
24
|
+
smoke_http_code:
|
|
25
|
+
type: number
|
|
14
26
|
report:
|
|
15
27
|
type: markdown
|
|
16
28
|
success_criteria:
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
29
|
+
- pnpm typecheck passed
|
|
30
|
+
- git push to main succeeded (or HEAD already on remote)
|
|
31
|
+
- when package changes detected, ship checks passed and version published
|
|
32
|
+
- render deploy reached live for commit_sha
|
|
33
|
+
- smoke check returned 200
|
|
20
34
|
failure_conditions:
|
|
35
|
+
- typecheck failed
|
|
21
36
|
- git push failed
|
|
22
|
-
- wave 2 started before commit_sha known
|
|
37
|
+
- wave 1.5 or 2 started before commit_sha known
|
|
38
|
+
- package ship checks failed when triggered
|
|
39
|
+
- package publish monitor timeout when triggered
|
|
40
|
+
- render build_failed or poll timeout
|
|
41
|
+
- smoke check not 200
|
|
23
42
|
dependencies:
|
|
24
43
|
skills: [platform-release, testing, verification, reporting]
|
|
25
44
|
policies: [master-rules, mcp-and-deploy]
|
|
26
45
|
verification:
|
|
46
|
+
- typecheck_passed
|
|
27
47
|
- git_pushed
|
|
28
|
-
-
|
|
29
|
-
-
|
|
48
|
+
- render_polled_until_live
|
|
49
|
+
- smoke_200
|
|
@@ -18,6 +18,11 @@ Phase `verify` (and `test_only` orchestrators). On **fix** paths, run fix verify
|
|
|
18
18
|
2. Invoke [unit-test-run.md](../../../agents/unit-test-run.md) pattern for targeted vitest
|
|
19
19
|
3. Fallow MCP → `check_changed` on touched files when configured
|
|
20
20
|
4. `ReadLints` on edited paths
|
|
21
|
+
5. **Website build gate (mandatory on create / update / fix):** before advancing `verify`, run:
|
|
22
|
+
```bash
|
|
23
|
+
node .cursor/aaac/scripts/run-engine/verify-website-build.mjs --run-id <run_id>
|
|
24
|
+
```
|
|
25
|
+
This checks `index.html` static asset paths resolve under `apps/website/public/` (or project root for Vite dev) and runs `pnpm --filter @ludecker/website build`. `advance-phase.mjs verify` **blocks** until this passes and writes `artifacts/verify.yaml`.
|
|
21
26
|
|
|
22
27
|
## Fix verify swarm (mandatory on fix verb / fix_mode)
|
|
23
28
|
|
|
@@ -14,6 +14,7 @@ After `testing`. Before `report`.
|
|
|
14
14
|
|
|
15
15
|
## Checks
|
|
16
16
|
|
|
17
|
+
- **Website build gate** (create / update / fix): `artifacts/verify.yaml` from [verify-website-build.mjs](../../../aaac/scripts/run-engine/verify-website-build.mjs) — static assets in `index.html` must exist; `pnpm --filter @ludecker/website build` must pass
|
|
17
18
|
- **Playwright verb checks** (create / update / fix): launch [playwright-check-run](../../../agents/playwright-check-run.md) — `pnpm --filter @ludecker/aaac test:e2e` must pass; set `PLAYWRIGHT_BASE_URL` for public-route smoke
|
|
18
19
|
- Run artifact `artifacts.testing.repro_status` is **fixed** or **partial** with documented follow-up (fix paths)
|
|
19
20
|
- Orchestrator `contract.yaml` `success_criteria`
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
You express intent; the architecture determines execution.
|
|
8
8
|
|
|
9
|
-
Installed by [{{PROJECT_NAME}}](https://ludecker.com) — generic AAAC kernel for Cursor.
|
|
10
|
-
|
|
11
9
|
---
|
|
12
10
|
|
|
13
11
|
## Part 1 — For everyone
|
|
@@ -25,36 +23,71 @@ Ask: *What do I want?* Then type:
|
|
|
25
23
|
| Part | Meaning | Example |
|
|
26
24
|
|------|---------|---------|
|
|
27
25
|
| Command | Kind of work | `update-module` |
|
|
28
|
-
| Domain | Which
|
|
29
|
-
| Intent | Goal in plain language | `"Add
|
|
26
|
+
| Domain | Which area | `cms` |
|
|
27
|
+
| Intent | Goal in plain language | `"Add featured hero toggle to home page"` |
|
|
28
|
+
|
|
29
|
+
### Ludecker domains
|
|
30
|
+
|
|
31
|
+
| Slug | Scope |
|
|
32
|
+
|------|-------|
|
|
33
|
+
| `cms` | `apps/website` — public site, CMS admin, content queries |
|
|
34
|
+
| `ui` | `packages/ui` — design system, tokens, components |
|
|
35
|
+
| `database` | `supabase/migrations` — schema, RLS, type mirrors |
|
|
36
|
+
| `aaac` | `packages/aaac` — `@ludecker/aaac` npm package, CLI, templates, generators |
|
|
30
37
|
|
|
31
|
-
### Commands (
|
|
38
|
+
### Commands (Ludecker v1)
|
|
32
39
|
|
|
33
40
|
| Command | When to use |
|
|
34
41
|
|---------|-------------|
|
|
35
|
-
| `update-module` | Change an existing bounded module |
|
|
42
|
+
| `update-module` | Change an existing bounded module (`cms`, `ui`, `database`, `aaac`) |
|
|
36
43
|
| `update-doc` | Update architecture documentation (no code) |
|
|
37
|
-
| `
|
|
38
|
-
| `
|
|
44
|
+
| `update-design` | UI / design-system changes (`cms` or `ui`) |
|
|
45
|
+
| `create-feature` | Add a new capability in a domain |
|
|
46
|
+
| `fix-module` | Fix broken module — **requires domain**; full fix swarm |
|
|
47
|
+
| `fix-bug` | Same pipeline as `fix-module`; domain optional (`module-fix`, `bug-fix` aliases) |
|
|
39
48
|
| `review-module` | Quality/architecture review (no code) |
|
|
40
49
|
| `review-incident` | Investigate deploy or production issue |
|
|
41
50
|
| `test-module` | Test and verify a module |
|
|
42
51
|
| `test-function` | Test a user journey |
|
|
43
|
-
| `release-app` | Phased release (git →
|
|
52
|
+
| `release-app` | Phased release swarm (git → Render) |
|
|
53
|
+
| `publish-aaac` | Bump, smoke-test, and publish `@ludecker/aaac` to npm |
|
|
54
|
+
| `write-article` | Research swarm → CMS article persist |
|
|
44
55
|
|
|
45
|
-
|
|
56
|
+
### Manual commands (local dev)
|
|
57
|
+
|
|
58
|
+
| Command | When to use |
|
|
59
|
+
|---------|-------------|
|
|
60
|
+
| `launch-ludecker` | Clean local dev server start |
|
|
61
|
+
| `kill-ludecker` | Kill stale local port listeners |
|
|
46
62
|
|
|
47
63
|
### Examples
|
|
48
64
|
|
|
49
65
|
```text
|
|
50
|
-
/update-module
|
|
51
|
-
/
|
|
52
|
-
/update-
|
|
53
|
-
/
|
|
54
|
-
/
|
|
66
|
+
/update-module cms "Improve docs shell navigation"
|
|
67
|
+
/update-module ui "Add dark mode token for muted text"
|
|
68
|
+
/update-module aaac "Add --version flag to CLI"
|
|
69
|
+
/fix-bug cms "CMS publish does not revalidate home page"
|
|
70
|
+
/fix-bug aaac "init fails when target dir already exists"
|
|
71
|
+
/test-module aaac "Run init smoke and aaac:generate diff check"
|
|
72
|
+
/publish-aaac "Ship 1.0.1 with template sync"
|
|
73
|
+
/update-doc architecture "Document AAAC agent topology"
|
|
74
|
+
/review-module cms "Check size budgets and layer boundaries"
|
|
75
|
+
/test-module cms "Run full module verification"
|
|
55
76
|
/release-app production "Ship with typecheck"
|
|
77
|
+
/write-article guide, How to use Commands in Cursor
|
|
78
|
+
/launch-ludecker
|
|
56
79
|
```
|
|
57
80
|
|
|
81
|
+
### Deprecated (still work one release)
|
|
82
|
+
|
|
83
|
+
| Old | New |
|
|
84
|
+
|-----|-----|
|
|
85
|
+
| `/ship-ludecker` | `/release-app` |
|
|
86
|
+
| `/module-update` | `/update-module` |
|
|
87
|
+
| `/architecture` | `/update-doc` |
|
|
88
|
+
| `/swarm-check` | `/review-incident` or `/fix-bug` |
|
|
89
|
+
| `/refactor` | `/review-module` |
|
|
90
|
+
|
|
58
91
|
### What you should not need to know
|
|
59
92
|
|
|
60
93
|
skill, agent, subagent, tool, workflow, graph, orchestrator — infrastructure only.
|
|
@@ -63,33 +96,9 @@ skill, agent, subagent, tool, workflow, graph, orchestrator — infrastructure o
|
|
|
63
96
|
|
|
64
97
|
## Part 2 — Appendix (maintainers)
|
|
65
98
|
|
|
66
|
-
### Install and regenerate
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
npx @ludecker/aaac@latest init
|
|
70
|
-
# or
|
|
71
|
-
pnpm dlx @ludecker/aaac@latest init
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
After changing ontology or project wiring:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
npx @ludecker/aaac@latest generate
|
|
78
|
-
# or
|
|
79
|
-
pnpm dlx @ludecker/aaac@latest generate
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Adding a product domain
|
|
83
|
-
|
|
84
|
-
1. Create `.cursor/domains/<slug>/update/orchestrator/` (SKILL.md + contract.yaml)
|
|
85
|
-
2. Create `.cursor/domains/<slug>/update/inventory/` (file map + constraints)
|
|
86
|
-
3. Add resolver entries to `.cursor/aaac/graph.project.yaml`
|
|
87
|
-
4. Add `command_overrides` to `.cursor/aaac/ontology.json` if slug-based routing is needed
|
|
88
|
-
5. Regenerate graph and commands (see above)
|
|
89
|
-
|
|
90
99
|
### Responsibility layers
|
|
91
100
|
|
|
92
|
-
Full map: [`.cursor/aaac/layers.md`](../.cursor/aaac/layers.md)
|
|
101
|
+
AAAC is organized by **responsibility**, not file type. Full map: [`.cursor/aaac/layers.md`](../.cursor/aaac/layers.md)
|
|
93
102
|
|
|
94
103
|
```text
|
|
95
104
|
User Layer → Commands
|
|
@@ -99,33 +108,207 @@ Governance Layer → gate stacks (gates.json), policies, fitness
|
|
|
99
108
|
Run Layer → Run manifest (state + observability)
|
|
100
109
|
Execution Layer → Orchestrators, pipeline skills, capabilities, agents
|
|
101
110
|
Contracts Layer → command + skill contracts
|
|
102
|
-
Knowledge Layer →
|
|
111
|
+
Knowledge Layer → docs/
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
| Component | Responsibility |
|
|
115
|
+
|-----------|----------------|
|
|
116
|
+
| Commands | User-facing API |
|
|
117
|
+
| Ontology | Vocabulary and classification |
|
|
118
|
+
| Dispatch | Command resolution, Run creation |
|
|
119
|
+
| Graph | Execution routing |
|
|
120
|
+
| Lifecycle | **Work** phase configuration |
|
|
121
|
+
| Gate stacks | **Approval** checkpoints |
|
|
122
|
+
| Run | Primary execution object; decisions, log, checkpoints |
|
|
123
|
+
| Domain orchestrators | Domain coordination |
|
|
124
|
+
| Shared pipeline skills | Phase execution |
|
|
125
|
+
| Capability registry | object → capability → provider |
|
|
126
|
+
| Object skills | Skill-type providers |
|
|
127
|
+
| Agent specs | Agent behavior |
|
|
128
|
+
| Policies | Mandatory governance |
|
|
129
|
+
| Dependencies | Impact analysis |
|
|
130
|
+
| Fitness functions | Architecture validation |
|
|
131
|
+
| Contracts | Input/output invariants |
|
|
132
|
+
| Documentation | System knowledge |
|
|
133
|
+
|
|
134
|
+
### Execution graph
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
Intent → Command → Execution Graph → Result
|
|
103
138
|
```
|
|
104
139
|
|
|
140
|
+
**Execution graph** = orchestrator + skills + agents + tools + rules + documentation.
|
|
141
|
+
|
|
105
142
|
**SSOT:** [`.cursor/aaac/graph.yaml`](../.cursor/aaac/graph.yaml)
|
|
106
143
|
|
|
107
|
-
**Dispatch:** [`.cursor/aaac/dispatch.md`](../.cursor/aaac/dispatch.md)
|
|
144
|
+
**Dispatch procedure:** [`.cursor/aaac/dispatch.md`](../.cursor/aaac/dispatch.md)
|
|
108
145
|
|
|
109
146
|
### Directory layout
|
|
110
147
|
|
|
111
148
|
```text
|
|
112
149
|
.cursor/
|
|
113
150
|
commands/ # thin routers (public)
|
|
114
|
-
aaac/
|
|
151
|
+
aaac/graph.yaml # wiring (private OS)
|
|
115
152
|
domains/<slug>/update/
|
|
116
|
-
orchestrator/
|
|
117
|
-
inventory/
|
|
118
|
-
skills/shared/ #
|
|
153
|
+
orchestrator/ # what happens
|
|
154
|
+
inventory/ # what exists
|
|
155
|
+
skills/shared/ # framework (discovery, planning, execution, …)
|
|
156
|
+
skills/ludecker/ # project-specific object skills
|
|
157
|
+
skills/write-article/ # content swarm
|
|
119
158
|
agents/ # subagent prompt specs
|
|
120
|
-
policies/ #
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
159
|
+
policies/ # rules all skills inherit
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Orchestrator vs inventory
|
|
163
|
+
|
|
164
|
+
| | Orchestrator | Inventory |
|
|
165
|
+
|--|--------------|-----------|
|
|
166
|
+
| Question | What should happen? | What exists? |
|
|
167
|
+
| Updates when | Workflow changes | After every code-changing `update-module` |
|
|
168
|
+
|
|
169
|
+
Inventory documents constraints and file maps. **Dependency reasoning** uses [`.cursor/aaac/dependencies.yaml`](../.cursor/aaac/dependencies.yaml) via the `dependency_graph` phase — not inventory alone.
|
|
170
|
+
|
|
171
|
+
### Execution determinism (create / update / fix)
|
|
172
|
+
|
|
173
|
+
Commands define *what* to load; **work lifecycle** defines phases of work; **gate stacks** define approval checkpoints; the **Run** holds state and observability.
|
|
174
|
+
|
|
175
|
+
**Mature stack (composed on Run):**
|
|
176
|
+
|
|
177
|
+
```text
|
|
178
|
+
Policies → Ontology → Graph → Create Run
|
|
179
|
+
→ Work: Discovery → Investigation → Planning
|
|
180
|
+
→ Gates: Validation → Impact → Deps → Fitness → Rollback
|
|
181
|
+
→ Work: Execute → Verify → Report
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Work lifecycles** (SSOT: [`.cursor/aaac/lifecycle/lifecycle.json`](../.cursor/aaac/lifecycle/lifecycle.json)):
|
|
185
|
+
|
|
186
|
+
| Verb | Work | Gate stack |
|
|
187
|
+
|------|------|------------|
|
|
188
|
+
| create | discover → investigate_lite → plan → execute → verify → report | pre_execute |
|
|
189
|
+
| update | same | pre_execute |
|
|
190
|
+
| fix | discover → investigate_swarm → root_cause → plan → execute → verify → report | pre_execute |
|
|
191
|
+
| release | execute → verify → report | release |
|
|
192
|
+
|
|
193
|
+
**Gate stacks** (SSOT: [`.cursor/aaac/governance/gates.json`](../.cursor/aaac/governance/gates.json)) — approval, not work.
|
|
194
|
+
|
|
195
|
+
Composed runtime in graph `verb_runtime`. Human approval at gate boundaries: Run `status: blocked`, `awaiting_approval: true`.
|
|
196
|
+
|
|
197
|
+
**Confidence gates** — before execute, if any score is below threshold → `STOP, REQUEST CLARIFICATION`:
|
|
198
|
+
|
|
199
|
+
| Dimension | Minimum |
|
|
200
|
+
|-----------|---------|
|
|
201
|
+
| architecture | 0.9 |
|
|
202
|
+
| requirements | 0.8 |
|
|
203
|
+
| scope | 0.8 |
|
|
204
|
+
|
|
205
|
+
**Object maturity** — harder objects require more phases:
|
|
206
|
+
|
|
207
|
+
| Level | Objects (examples) | Extra requirements |
|
|
208
|
+
|-------|-------------------|-------------------|
|
|
209
|
+
| protected | schema, migration, architecture | impact + deps + rollback |
|
|
210
|
+
| critical | module, integration, app | impact + deps |
|
|
211
|
+
| stable | feature, workflow | impact on fix |
|
|
212
|
+
| evolving | component, function | lifecycle only |
|
|
213
|
+
|
|
214
|
+
**Fitness functions** — [`.cursor/aaac/fitness-functions.yaml`](../.cursor/aaac/fitness-functions.yaml): api_first, design_system, accessibility, security, layer_boundaries, performance. Scored `pass` / `warning` / `fail` before execute.
|
|
215
|
+
|
|
216
|
+
Lifecycle reference: [`.cursor/skills/shared/verbs/_lifecycle.md`](../.cursor/skills/shared/verbs/_lifecycle.md)
|
|
217
|
+
|
|
218
|
+
### Fix swarm (`/fix-module`, `/fix-bug`, `fix_mode`)
|
|
219
|
+
|
|
220
|
+
Same rigor as `write-article` research — parallel Task subagents, one message per wave.
|
|
221
|
+
|
|
222
|
+
| Phase | Agent specs | Count |
|
|
223
|
+
|-------|-------------|-------|
|
|
224
|
+
| discover | discovery-inventory, discovery-boundaries, discovery-ssot | 4–6 |
|
|
225
|
+
| investigate_swarm | fix-repro, fix-code-path, fix-recent-changes, fix-test-failures, fix-regression-scope, fix-runtime-evidence, fix-inventory-confirm | **7** |
|
|
226
|
+
| root_cause | parent + optional fix-hypothesis-validate | 0–1 |
|
|
227
|
+
| verify (fix) | fix-repro-verify, unit-test-run, fallow-check-changed | **3** |
|
|
228
|
+
|
|
229
|
+
Skills: [investigation/SKILL.md](../.cursor/skills/shared/investigation/SKILL.md), [testing/SKILL.md](../.cursor/skills/shared/testing/SKILL.md).
|
|
230
|
+
Contracts: [fix-module.yaml](../.cursor/aaac/contracts/commands/fix-module.yaml), [fix-bug.yaml](../.cursor/aaac/contracts/commands/fix-bug.yaml).
|
|
231
|
+
|
|
232
|
+
Resolver: `fix-domain-by-slug` (`fix-module`) and `fix-bug-by-slug` → `cms-fix-bug` | `ui-fix-bug` | `database-fix-bug` | `aaac-fix-bug`.
|
|
233
|
+
|
|
234
|
+
### Capability registry
|
|
235
|
+
|
|
236
|
+
Objects declare capabilities in ontology; providers resolve from [`.cursor/aaac/capabilities/registry.json`](../.cursor/aaac/capabilities/registry.json):
|
|
237
|
+
|
|
238
|
+
```text
|
|
239
|
+
object → capability → provider (skill | mcp | expert)
|
|
125
240
|
```
|
|
126
241
|
|
|
242
|
+
Graph `object_skills` includes skill-type providers only. MCP providers (e.g. `supabase-mcp` on `database-design`) are recorded on the Run.
|
|
243
|
+
|
|
244
|
+
**Capability lifecycle (evidence-driven):** State belongs to the **capability**, not the provider. After each completed Run, `capability-evidence.mjs` aggregates per-run evidence into [`.cursor/aaac/state/capability-stats.json`](../.cursor/aaac/state/capability-stats.json) and evaluates deterministic promotion using [`.cursor/aaac/capabilities/promotion-rules.json`](../.cursor/aaac/capabilities/promotion-rules.json):
|
|
245
|
+
|
|
246
|
+
```text
|
|
247
|
+
experimental → validated → trusted → canonical → deprecated
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Promotion uses accumulated metrics: `invocations`, `success_rate`, `rollback_rate`, `gate_failure_rate`, `avg_fitness`. `canonical` requires `manual_approval` (human override on the capability entry). Providers contribute evidence; governance changes state.
|
|
251
|
+
|
|
252
|
+
### Run (primary execution object)
|
|
253
|
+
|
|
254
|
+
**SSOT:** [`.cursor/aaac/run/schema.json`](../.cursor/aaac/run/schema.json), [`.cursor/aaac/run/RUN.md`](../.cursor/aaac/run/RUN.md)
|
|
255
|
+
|
|
256
|
+
Every command executes within a Run at `state/runs/{run_id}/run.json`:
|
|
257
|
+
|
|
258
|
+
| Field | Purpose |
|
|
259
|
+
|-------|---------|
|
|
260
|
+
| `phase`, `pending`, `completed` | Where we are |
|
|
261
|
+
| `decisions[]` | Why routes and gates |
|
|
262
|
+
| `log[]` | Phase events |
|
|
263
|
+
| `checkpoints[]` | Resume points |
|
|
264
|
+
| `artifacts{}` | Plan, impact, report, … |
|
|
265
|
+
| `awaiting_approval` | Human gate approval |
|
|
266
|
+
|
|
267
|
+
Observability: [`.cursor/aaac/observability/telemetry.yaml`](../.cursor/aaac/observability/telemetry.yaml) — all telemetry on Run, no standalone logs.
|
|
268
|
+
|
|
269
|
+
### Contracts
|
|
270
|
+
|
|
271
|
+
Command contracts: [`.cursor/aaac/contracts/commands/`](../.cursor/aaac/contracts/commands/). Skill contracts: [`.cursor/aaac/contracts/skills/`](../.cursor/aaac/contracts/skills/). Schema: [`.cursor/aaac/contract-schema.md`](../.cursor/aaac/contract-schema.md)
|
|
272
|
+
|
|
273
|
+
### Implementation governance
|
|
274
|
+
|
|
275
|
+
Not a slash command. Loaded by `shared/execution` on code changes:
|
|
276
|
+
|
|
277
|
+
[`.cursor/skills/shared/governance/implementation/SKILL.md`](../.cursor/skills/shared/governance/implementation/SKILL.md)
|
|
278
|
+
|
|
279
|
+
### Adding a product domain
|
|
280
|
+
|
|
281
|
+
1. Add `domains/<slug>/update/` (inventory + orchestrator)
|
|
282
|
+
2. Add slug to `graph.yaml` resolvers — **no new command shape**
|
|
283
|
+
3. Regenerate: `node .cursor/aaac/generate-graph.mjs && node .cursor/aaac/generate-commands.mjs`
|
|
284
|
+
|
|
285
|
+
### Contracts
|
|
286
|
+
|
|
287
|
+
Plugins may include `contract.yaml` beside `SKILL.md`. Central contracts: [`.cursor/aaac/contracts/`](../.cursor/aaac/contracts/). Schema: [`.cursor/aaac/contract-schema.md`](../.cursor/aaac/contract-schema.md)
|
|
288
|
+
|
|
127
289
|
### Release swarm (`release-app`)
|
|
128
290
|
|
|
129
|
-
|
|
291
|
+
Expert subagents run in **waves**, not one monolithic agent:
|
|
292
|
+
|
|
293
|
+
| Wave | Agents | Notes |
|
|
294
|
+
|------|--------|-------|
|
|
295
|
+
| 0 | Preflight typecheck (optional) | From intent, e.g. "with tests" |
|
|
296
|
+
| 1 | `release-git` | **Blocking** — must return `commit_sha` before wave 2 |
|
|
297
|
+
| 2 | `release-render` | Poll `ludecker-website` until `live`; smoke-check `/` |
|
|
298
|
+
|
|
299
|
+
Wiring: `graph.yaml` agents `release-*`. Orchestrator: [platform-release/orchestrator](../.cursor/skills/shared/platform-release/orchestrator/SKILL.md). DAG: [platform-release/SKILL.md](../.cursor/skills/shared/platform-release/SKILL.md).
|
|
300
|
+
|
|
301
|
+
### Regenerating commands
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
pnpm aaac:generate
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Or:
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
node .cursor/aaac/generate-graph.mjs
|
|
311
|
+
node .cursor/aaac/generate-commands.mjs
|
|
312
|
+
```
|
|
130
313
|
|
|
131
|
-
|
|
314
|
+
Ontology reference: [`.cursor/aaac/ontology.md`](../.cursor/aaac/ontology.md)
|