@ludecker/aaac 1.1.5 → 1.2.0
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/README.md +27 -12
- package/package.json +9 -9
- package/src/cli.mjs +19 -7
- package/src/generators/generate-commands.mjs +25 -1
- package/src/generators/generate-graph.mjs +9 -1
- package/src/lib/install.mjs +13 -1
- package/src/lib/sweep-project-docs.mjs +348 -0
- package/src/run-engine/advance-phase.mjs +23 -0
- package/src/run-engine/debug-run.mjs +0 -0
- package/src/run-engine/gate-write.mjs +13 -0
- package/src/run-engine/lib.mjs +153 -5
- package/src/run-engine/log-dump.mjs +0 -0
- package/src/run-engine/log-trace.mjs +0 -0
- package/templates/cursor/aaac/enforcement.json +96 -5
- package/templates/cursor/aaac/graph.project.yaml +44 -5
- package/templates/cursor/aaac/lifecycle/lifecycle.json +26 -0
- package/templates/cursor/aaac/lifecycle/phases.json +9 -1
- package/templates/cursor/aaac/ontology.json +1 -0
- package/templates/cursor/aaac/project.config.json +36 -0
- package/templates/cursor/aaac/scripts/remediation/auto-check-swarm-synthesis.mjs +75 -0
- package/templates/cursor/aaac/scripts/remediation/auto-dispatch-queue-from-health.mjs +78 -0
- package/templates/cursor/aaac/scripts/remediation/bootstrap-autonomous.mjs +113 -0
- package/templates/cursor/aaac/scripts/remediation/capture-verify-baseline.mjs +66 -0
- package/templates/cursor/aaac/scripts/remediation/capture-wave-snapshot.mjs +79 -0
- package/templates/cursor/aaac/scripts/remediation/check-swarm-raw.template.json +26 -0
- package/templates/cursor/aaac/scripts/remediation/classify-fallow-issues.mjs +77 -0
- package/templates/cursor/aaac/scripts/remediation/classify-verify-failure.mjs +176 -0
- package/templates/cursor/aaac/scripts/remediation/compute-satisfaction.mjs +344 -0
- package/templates/cursor/aaac/scripts/remediation/debt-sweep-gate.mjs +202 -0
- package/templates/cursor/aaac/scripts/remediation/dispatch-rules.json +44 -0
- package/templates/cursor/aaac/scripts/remediation/fallow-fp-rules.json +87 -0
- package/templates/cursor/aaac/scripts/remediation/fallow-scan.mjs +219 -0
- package/templates/cursor/aaac/scripts/remediation/handle-yield.mjs +240 -0
- package/templates/cursor/aaac/scripts/remediation/init-campaign.mjs +211 -0
- package/templates/cursor/aaac/scripts/remediation/lib/autonomous-mode.mjs +63 -0
- package/templates/cursor/aaac/scripts/remediation/lib/campaign-focus.mjs +87 -0
- package/templates/cursor/aaac/scripts/remediation/lib/fallow-classifier.mjs +190 -0
- package/templates/cursor/aaac/scripts/remediation/lib/fallow-health-targets.mjs +56 -0
- package/templates/cursor/aaac/scripts/remediation/lib/fallow-metrics.mjs +119 -0
- package/templates/cursor/aaac/scripts/remediation/lib/invoke-cursor-agent.mjs +51 -0
- package/templates/cursor/aaac/scripts/remediation/lib/reconcile-run-manifest.mjs +41 -0
- package/templates/cursor/aaac/scripts/remediation/lib/regression-analysis.mjs +55 -0
- package/templates/cursor/aaac/scripts/remediation/lib/remediation-config.mjs +69 -0
- package/templates/cursor/aaac/scripts/remediation/lib/remediation-progress.mjs +58 -0
- package/templates/cursor/aaac/scripts/remediation/lib/remediation-watch-loop.mjs +168 -0
- package/templates/cursor/aaac/scripts/remediation/lib/runner-exec.mjs +156 -0
- package/templates/cursor/aaac/scripts/remediation/lib/runner-state.mjs +145 -0
- package/templates/cursor/aaac/scripts/remediation/lib/verify-metrics.mjs +205 -0
- package/templates/cursor/aaac/scripts/remediation/merge-check-swarm.mjs +257 -0
- package/templates/cursor/aaac/scripts/remediation/plan-waves-from-queue.mjs +85 -0
- package/templates/cursor/aaac/scripts/remediation/prepare-check-context.mjs +148 -0
- package/templates/cursor/aaac/scripts/remediation/record-fallow-fp.mjs +107 -0
- package/templates/cursor/aaac/scripts/remediation/record-iteration-step.mjs +56 -0
- package/templates/cursor/aaac/scripts/remediation/remediation-cli.mjs +157 -0
- package/templates/cursor/aaac/scripts/remediation/remediation-cursor-watch.sh +10 -0
- package/templates/cursor/aaac/scripts/remediation/remediation-runner-daemon.sh +13 -0
- package/templates/cursor/aaac/scripts/remediation/remediation-runner.mjs +748 -0
- package/templates/cursor/aaac/scripts/remediation/remediation-yield-watcher.mjs +40 -0
- package/templates/cursor/aaac/scripts/remediation/remediator-gate.mjs +405 -0
- package/templates/cursor/aaac/scripts/remediation/repair-fallow-start-baseline.mjs +118 -0
- package/templates/cursor/aaac/scripts/remediation/runner-health-check.mjs +164 -0
- package/templates/cursor/aaac/scripts/remediation/satisfaction-loop-gate.mjs +286 -0
- package/templates/cursor/aaac/scripts/remediation/validate-campaign-complete.mjs +191 -0
- package/templates/cursor/aaac/scripts/remediation/verify-remediation-iteration.mjs +112 -0
- package/templates/cursor/aaac/scripts/run-engine/advance-phase.mjs +23 -0
- package/templates/cursor/aaac/scripts/run-engine/debug-run.mjs +0 -0
- package/templates/cursor/aaac/scripts/run-engine/gate-write.mjs +13 -0
- package/templates/cursor/aaac/scripts/run-engine/lib.mjs +153 -5
- package/templates/cursor/aaac/scripts/run-engine/log-dump.mjs +0 -0
- package/templates/cursor/aaac/scripts/run-engine/log-trace.mjs +0 -0
- package/templates/cursor/agents/doc-conformance.md +25 -0
- package/templates/cursor/agents/implementation-review.md +21 -0
- package/templates/cursor/agents/remediation-check-app-inventory.md +32 -0
- package/templates/cursor/agents/remediation-check-app-ssot.md +24 -0
- package/templates/cursor/agents/remediation-check-app-trace.md +29 -0
- package/templates/cursor/agents/remediation-check-architecture-boundaries.md +21 -0
- package/templates/cursor/agents/remediation-check-architecture-decomposition.md +25 -0
- package/templates/cursor/agents/remediation-check-architecture-deps.md +23 -0
- package/templates/cursor/agents/remediation-check-risk.md +37 -0
- package/templates/cursor/agents/remediation-e2e-gate.md +30 -0
- package/templates/cursor/agents/remediation-remediator.md +69 -0
- package/templates/cursor/agents/test-author.md +27 -0
- package/templates/cursor/commands/remediate-app.md +212 -0
- package/templates/cursor/hooks/aaac-before-submit.sh +0 -0
- package/templates/cursor/hooks/aaac-pre-tool.sh +0 -0
- package/templates/cursor/hooks/aaac-stop.sh +0 -0
- package/templates/cursor/hooks/aaac-subagent-start.sh +0 -0
- package/templates/cursor/rules/aaac-enforcement.mdc +10 -3
- package/templates/cursor/skills/shared/execution/SKILL.md +7 -3
- package/templates/cursor/skills/shared/governance/implementation/SKILL.md +396 -28
- package/templates/cursor/skills/shared/implementation-review/SKILL.md +49 -0
- package/templates/cursor/skills/shared/planning/SKILL.md +5 -0
- package/templates/cursor/skills/shared/remediation/SKILL.md +51 -0
- package/templates/cursor/skills/shared/remediation/babysit/SKILL.md +223 -0
- package/templates/cursor/skills/shared/remediation/check-swarm/SKILL.md +114 -0
- package/templates/cursor/skills/shared/remediation/orchestrator/SKILL.md +275 -0
- package/templates/cursor/skills/shared/remediation/orchestrator/contract.yaml +116 -0
- package/templates/cursor/skills/shared/test-authoring/SKILL.md +58 -0
- package/templates/cursor/skills/shared/testing/SKILL.md +6 -0
- package/templates/cursor/skills/shared/verbs/create/orchestrator/SKILL.md +5 -3
- package/templates/cursor/skills/shared/verbs/fix/orchestrator/SKILL.md +5 -3
- package/templates/cursor/skills/shared/verbs/update/orchestrator/SKILL.md +5 -3
- package/templates/cursor/skills/shared/verification/SKILL.md +5 -3
- package/templates/docs/agentic_architecture.md +169 -97
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
command: remediate-app
|
|
3
|
+
orchestrator: remediate-app
|
|
4
|
+
description: Campaign loop — Fallow, check swarm, fix waves, regression gates, debt sweep, satisfaction
|
|
5
|
+
|
|
6
|
+
phases:
|
|
7
|
+
- campaign_init
|
|
8
|
+
- scan
|
|
9
|
+
- check_swarm
|
|
10
|
+
- plan_waves
|
|
11
|
+
- execute
|
|
12
|
+
- debt_sweep
|
|
13
|
+
- satisfaction_gate
|
|
14
|
+
- report
|
|
15
|
+
|
|
16
|
+
requires:
|
|
17
|
+
- remediation
|
|
18
|
+
- discovery
|
|
19
|
+
- check
|
|
20
|
+
- execution
|
|
21
|
+
- testing
|
|
22
|
+
- verification
|
|
23
|
+
- reporting
|
|
24
|
+
|
|
25
|
+
invariants:
|
|
26
|
+
exit_3_is_continue: true
|
|
27
|
+
wave_gate_mode: regression
|
|
28
|
+
debt_gate_mode: strict
|
|
29
|
+
validate_before_report: true
|
|
30
|
+
|
|
31
|
+
blocking_gates:
|
|
32
|
+
- verify_wave_regression_after_each_fix
|
|
33
|
+
- remediator_subloop_per_wave
|
|
34
|
+
- debt_sweep_strict_mandatory
|
|
35
|
+
- satisfaction_threshold
|
|
36
|
+
|
|
37
|
+
remediator:
|
|
38
|
+
gate_script: remediation/remediator-gate.mjs
|
|
39
|
+
debt_sweep_script: remediation/debt-sweep-gate.mjs
|
|
40
|
+
validate_script: remediation/validate-campaign-complete.mjs
|
|
41
|
+
baseline_script: remediation/capture-verify-baseline.mjs
|
|
42
|
+
wave_snapshot_script: remediation/capture-wave-snapshot.mjs
|
|
43
|
+
classify_script: remediation/classify-verify-failure.mjs
|
|
44
|
+
dispatch_rules: remediation/dispatch-rules.json
|
|
45
|
+
agent: agents/remediation-remediator.md
|
|
46
|
+
exit_codes:
|
|
47
|
+
promote: 0
|
|
48
|
+
block: 1
|
|
49
|
+
runtime_error: 2
|
|
50
|
+
remediate_required: 3
|
|
51
|
+
defaults:
|
|
52
|
+
max_remediator_attempts_per_wave: 3
|
|
53
|
+
max_remediator_attempts_per_debt_round: 3
|
|
54
|
+
max_debt_sweep_rounds: 10
|
|
55
|
+
wave_gate_mode: regression
|
|
56
|
+
|
|
57
|
+
artifacts:
|
|
58
|
+
campaign_init: [artifacts/campaign.json, artifacts/verify_baseline.json, artifacts/autonomous_bootstrap.json]
|
|
59
|
+
scan: [artifacts/fallow_scan.json, artifacts/fallow_dupes.json, artifacts/fallow_health.json, artifacts/fallow_scan_bundle.json, artifacts/fallow_classification.json]
|
|
60
|
+
check_swarm: [artifacts/check_synthesis.md, artifacts/dispatch-queue.yaml, artifacts/check_app_validate.yaml, artifacts/check_architecture_fitness.yaml, artifacts/protected_paths.yaml, artifacts/check_swarm_merge.json]
|
|
61
|
+
plan_waves: [artifacts/plan_waves.yaml]
|
|
62
|
+
execute: [artifacts/execute_waves.yaml]
|
|
63
|
+
debt_sweep: [artifacts/debt_sweep.json, artifacts/verify_debt.json]
|
|
64
|
+
satisfaction_gate: [artifacts/satisfaction.json, artifacts/satisfaction_loop_gate.json]
|
|
65
|
+
report: [artifacts/report.md]
|
|
66
|
+
|
|
67
|
+
scripts:
|
|
68
|
+
init: remediation/init-campaign.mjs
|
|
69
|
+
baseline: remediation/capture-verify-baseline.mjs
|
|
70
|
+
wave_snapshot: remediation/capture-wave-snapshot.mjs
|
|
71
|
+
fallow_scan: remediation/fallow-scan.mjs
|
|
72
|
+
verify: remediation/verify-remediation-iteration.mjs
|
|
73
|
+
remediator_gate: remediation/remediator-gate.mjs
|
|
74
|
+
debt_sweep: remediation/debt-sweep-gate.mjs
|
|
75
|
+
satisfaction_loop: remediation/satisfaction-loop-gate.mjs
|
|
76
|
+
repair_fallow_start: remediation/repair-fallow-start-baseline.mjs
|
|
77
|
+
validate_complete: remediation/validate-campaign-complete.mjs
|
|
78
|
+
classify_failure: remediation/classify-verify-failure.mjs
|
|
79
|
+
satisfaction: remediation/compute-satisfaction.mjs
|
|
80
|
+
journal: remediation/record-iteration-step.mjs
|
|
81
|
+
bootstrap_autonomous: remediation/bootstrap-autonomous.mjs
|
|
82
|
+
runner: remediation/remediation-runner.mjs
|
|
83
|
+
runner_health: remediation/runner-health-check.mjs
|
|
84
|
+
|
|
85
|
+
satisfaction_weights:
|
|
86
|
+
fallow_dead_code: 0.25
|
|
87
|
+
fallow_dupes: 0.10
|
|
88
|
+
fallow_health: 0.05
|
|
89
|
+
structural_clean: 0.15
|
|
90
|
+
unit_tests: 0.15
|
|
91
|
+
build: 0.10
|
|
92
|
+
e2e: 0.20
|
|
93
|
+
|
|
94
|
+
defaults:
|
|
95
|
+
max_iterations: 5
|
|
96
|
+
max_waves_per_iteration: 3
|
|
97
|
+
max_remediator_attempts_per_wave: 3
|
|
98
|
+
max_remediator_attempts_per_debt_round: 3
|
|
99
|
+
max_debt_sweep_rounds: 10
|
|
100
|
+
wave_gate_mode: regression
|
|
101
|
+
satisfaction_threshold: 85
|
|
102
|
+
scope: whole-repo
|
|
103
|
+
autonomous_max_iterations: 10
|
|
104
|
+
autonomous_satisfaction_threshold: 100
|
|
105
|
+
|
|
106
|
+
autonomous:
|
|
107
|
+
enabled_when:
|
|
108
|
+
- intent_token: autonomous
|
|
109
|
+
- satisfaction_threshold_gte: 100
|
|
110
|
+
- max_iterations_gte: 10
|
|
111
|
+
disabled_when:
|
|
112
|
+
- intent_token: manual
|
|
113
|
+
skill: skills/shared/remediation/babysit/SKILL.md
|
|
114
|
+
bootstrap_script: remediation/bootstrap-autonomous.mjs
|
|
115
|
+
runner_script: remediation/remediation-runner.mjs
|
|
116
|
+
health_script: remediation/runner-health-check.mjs
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shared-test-authoring
|
|
3
|
+
description: >-
|
|
4
|
+
Phase test_execute — separate Task agent authors tests after execute.
|
|
5
|
+
Parent must not write test files. Not user-facing.
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Test authoring (test_execute phase)
|
|
10
|
+
|
|
11
|
+
## When
|
|
12
|
+
|
|
13
|
+
After `execute`, before `verify`, on **create / update / fix / remove** (mutating verbs).
|
|
14
|
+
|
|
15
|
+
**Hard rule:** Parent orchestrator must **not** Write/StrReplace test paths in `execute` — hooks deny them. Only `test_execute` phase (or test-author Task subagent in that phase) may author tests.
|
|
16
|
+
|
|
17
|
+
## Swarm (mandatory)
|
|
18
|
+
|
|
19
|
+
Launch **1** `Task` subagent in **one message**:
|
|
20
|
+
|
|
21
|
+
| Agent spec | `subagent_type` | Role |
|
|
22
|
+
|------------|-----------------|------|
|
|
23
|
+
| [test-author.md](../../../agents/test-author.md) | `generalPurpose` | Author tests from plan |
|
|
24
|
+
|
|
25
|
+
Every Task prompt **must** include [_task-prompt-policy.md](../_task-prompt-policy.md) plus: Run `artifacts/plan.yaml` path, list of files changed in execute, domain inventory test paths.
|
|
26
|
+
|
|
27
|
+
## Plan input
|
|
28
|
+
|
|
29
|
+
Run `artifacts.plan` must include:
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
tests_to_add:
|
|
33
|
+
- behavior: "<from requirement_map>"
|
|
34
|
+
kind: unit | integration | e2e
|
|
35
|
+
target_path: "<package test file path>"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
If `tests_to_add` is empty and no tests are required, record on artifact:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
tests_to_add: []
|
|
42
|
+
skipped_reason: "<why no new tests — e.g. docs-only change>"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Store merged result on Run `artifacts/test_plan.yaml` before advancing.
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
files_written: ["<test paths>"]
|
|
51
|
+
behaviors_covered: ["<strings>"]
|
|
52
|
+
gaps: ["<untested behaviors>"]
|
|
53
|
+
author_agent: test-author
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Fail
|
|
57
|
+
|
|
58
|
+
Do not advance if tests were required by plan but `files_written` is empty.
|
|
@@ -12,6 +12,8 @@ disable-model-invocation: true
|
|
|
12
12
|
|
|
13
13
|
Phase `verify` (and `test_only` orchestrators). On **fix** paths, run fix verify swarm **before** declaring tests complete.
|
|
14
14
|
|
|
15
|
+
**Agent separation:** Test **authorship** happens in `test_execute` ([test-authoring](../test-authoring/SKILL.md)). This phase **runs** tests only — parent and subagents must not author new test files here.
|
|
16
|
+
|
|
15
17
|
## Standard steps
|
|
16
18
|
|
|
17
19
|
1. Run tests from domain inventory relevant to change
|
|
@@ -28,6 +30,10 @@ Phase `verify` (and `test_only` orchestrators). On **fix** paths, run fix verify
|
|
|
28
30
|
|
|
29
31
|
After unit tests, launch **3 parallel** `Task` subagents in **one message**. Each prompt **must** include [_task-prompt-policy.md](../_task-prompt-policy.md) and investigation artifact paths.
|
|
30
32
|
|
|
33
|
+
## Verify swarm (mandatory on all mutating verbs)
|
|
34
|
+
|
|
35
|
+
After `test_execute`, launch **3 parallel** `Task` subagents in **one message** (same roster as fix verify when on fix paths; on create/update use run + static checks):
|
|
36
|
+
|
|
31
37
|
| # | Agent spec | `subagent_type` | Role |
|
|
32
38
|
|---|------------|-----------------|------|
|
|
33
39
|
| 1 | [fix-repro-verify.md](../../../agents/fix-repro-verify.md) | `shell` | Re-run repro steps from investigation artifact |
|
|
@@ -30,9 +30,11 @@ Lifecycle: graph `verb_runtime.create` (work + gates on Run)
|
|
|
30
30
|
9. **fitness_functions** — [fitness-functions](../../fitness-functions/SKILL.md)
|
|
31
31
|
10. **rollback** — [rollback](../../rollback/SKILL.md) when object maturity protected or impact high
|
|
32
32
|
11. **execute** — [execution](../../execution/SKILL.md) + object_skills + module-authoring when listed
|
|
33
|
-
12. **
|
|
34
|
-
13. **
|
|
35
|
-
14. **
|
|
33
|
+
12. **test_execute** — [test-authoring](../../test-authoring/SKILL.md) — **1** test-author Task agent; parent must not write tests
|
|
34
|
+
13. **verify** — [testing](../../testing/SKILL.md) + [verification](../../verification/SKILL.md) — **3** verify subagents (all mutating verbs)
|
|
35
|
+
14. **review_swarm** — [implementation-review](../../implementation-review/SKILL.md) — **3** readonly reviewers; block on critical findings
|
|
36
|
+
15. **sync_inventory** — when domain inventory exists and execute ran
|
|
37
|
+
16. **report** — [reporting](../../reporting/SKILL.md)
|
|
36
38
|
|
|
37
39
|
Domain slugs with graph resolver use domain orchestrator instead (e.g. `create-feature` → `create-feature-by-slug`).
|
|
38
40
|
|
|
@@ -29,9 +29,11 @@ Lifecycle: graph `verb_runtime.fix` or `command_workflows.fix-module` on Run
|
|
|
29
29
|
10. **fitness_functions** — [fitness-functions](../../fitness-functions/SKILL.md)
|
|
30
30
|
11. **rollback** — [rollback](../../rollback/SKILL.md) when maturity protected/critical or blast_radius ≥ medium
|
|
31
31
|
12. **execute** — [execution](../../execution/SKILL.md)
|
|
32
|
-
13. **
|
|
33
|
-
14. **
|
|
34
|
-
15. **
|
|
32
|
+
13. **test_execute** — [test-authoring](../../test-authoring/SKILL.md) — **1** test-author Task agent
|
|
33
|
+
14. **verify** — [testing](../../testing/SKILL.md) fix verify swarm + [verification](../../verification/SKILL.md) — **3** subagents
|
|
34
|
+
15. **review_swarm** — [implementation-review](../../implementation-review/SKILL.md) — **3** readonly reviewers
|
|
35
|
+
16. **sync_inventory** — when domain inventory exists
|
|
36
|
+
17. **report** — [reporting](../../reporting/SKILL.md)
|
|
35
37
|
|
|
36
38
|
## Swarm anti-patterns (hard fail)
|
|
37
39
|
|
|
@@ -25,9 +25,11 @@ Lifecycle: graph `verb_runtime.update` (work + gates on Run)
|
|
|
25
25
|
9. **fitness_functions** — [fitness-functions](../../fitness-functions/SKILL.md)
|
|
26
26
|
10. **rollback** — [rollback](../../rollback/SKILL.md) when maturity protected or blast_radius high
|
|
27
27
|
11. **execute** — [execution](../../execution/SKILL.md); `design_mode` when component + design resolver
|
|
28
|
-
12. **
|
|
29
|
-
13. **
|
|
30
|
-
14. **
|
|
28
|
+
12. **test_execute** — [test-authoring](../../test-authoring/SKILL.md) — **1** test-author Task agent
|
|
29
|
+
13. **verify** — [testing](../../testing/SKILL.md) + [verification](../../verification/SKILL.md) — **3** verify subagents
|
|
30
|
+
14. **review_swarm** — [implementation-review](../../implementation-review/SKILL.md) — **3** readonly reviewers
|
|
31
|
+
15. **sync_inventory**
|
|
32
|
+
16. **report** — [reporting](../../reporting/SKILL.md)
|
|
31
33
|
|
|
32
34
|
Intent `Sync inventory only` → inventory sync only, no execution.
|
|
33
35
|
|
|
@@ -10,12 +10,14 @@ disable-model-invocation: true
|
|
|
10
10
|
|
|
11
11
|
## When
|
|
12
12
|
|
|
13
|
-
After `testing`. Before `report`.
|
|
13
|
+
After `testing`. Before `review_swarm` (mutating verbs) or `report`.
|
|
14
|
+
|
|
15
|
+
**Agent separation:** Intent and contract checks here are orchestrator duties. Architecture/doc conformance review is **only** in [implementation-review](../implementation-review/SKILL.md) — not the execute agent.
|
|
14
16
|
|
|
15
17
|
## Checks
|
|
16
18
|
|
|
17
|
-
- **
|
|
18
|
-
- **
|
|
19
|
+
- **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
|
|
20
|
+
- **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
|
|
19
21
|
- Run artifact `artifacts.testing.repro_status` is **fixed** or **partial** with documented follow-up (fix paths)
|
|
20
22
|
- Orchestrator `contract.yaml` `success_criteria`
|
|
21
23
|
- Graph `object_skills` / `object_skill_verbs` skills were loaded for command object + verb
|
|
@@ -10,97 +10,79 @@ You express intent; the architecture determines execution.
|
|
|
10
10
|
|
|
11
11
|
## Part 1 — For everyone
|
|
12
12
|
|
|
13
|
+
### Get started
|
|
14
|
+
|
|
15
|
+
1. **Install** — `npx @ludecker/aaac@latest init` (or `pnpm dlx @ludecker/aaac@latest init --yes`)
|
|
16
|
+
2. **Open in Cursor** — Settings → **Hooks** → enable → restart Cursor
|
|
17
|
+
3. **Run a command** — graph and slash commands are already generated; no manual `generate` step
|
|
18
|
+
|
|
19
|
+
`init` also writes **`.cursor/aaac/state/install-sweep-report.md`** — a read-only inventory of project docs, Cursor rules, and AAAC framework markdown, with recommendations only (no merges).
|
|
20
|
+
|
|
21
|
+
Optional later: add **domain slugs** and `.cursor/domains/<slug>/` for project-specific routing (Part 2).
|
|
22
|
+
|
|
13
23
|
### What you do
|
|
14
24
|
|
|
15
25
|
> **Call a command. The system figures out the rest.**
|
|
16
26
|
|
|
17
|
-
Ask: *What do I want?* Then type:
|
|
18
|
-
|
|
19
27
|
```text
|
|
20
|
-
/<verb>-<object>
|
|
28
|
+
/<verb>-<object> [domain] "<intent>"
|
|
21
29
|
```
|
|
22
30
|
|
|
23
31
|
| Part | Meaning | Example |
|
|
24
32
|
|------|---------|---------|
|
|
25
33
|
| Command | Kind of work | `update-module` |
|
|
26
|
-
| Domain |
|
|
27
|
-
| Intent | Goal in plain language | `"Add
|
|
28
|
-
|
|
29
|
-
### Command matrix (ships with every install)
|
|
34
|
+
| Domain | Optional bounded area | `payments` (only when your overlay defines slug resolvers) |
|
|
35
|
+
| Intent | Goal in plain language | `"Add webhook retry with idempotency key"` |
|
|
30
36
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
| Verb | Meaning | Example |
|
|
34
|
-
|------|---------|---------|
|
|
35
|
-
| `create` | Add something new | `/create-module api "Add rate limiter"` |
|
|
36
|
-
| `update` | Change existing | `/update-component ui "Extract Button variants"` |
|
|
37
|
-
| `fix` | Repair broken behavior | `/fix-module auth "Session expires on refresh"` |
|
|
38
|
-
| `review` | Readonly quality check | `/review-architecture system "Check layer boundaries"` |
|
|
39
|
-
| `check` | Readonly capability trace | `/check-module api "Can we add OAuth?"` |
|
|
40
|
-
| `test` | Run verification | `/test-module api "Contract tests for webhooks"` |
|
|
41
|
-
| `release` | Ship to production | `/release-app production "Ship v2.1.0"` |
|
|
42
|
-
| `remove` | Delete safely | `/remove-module legacy "Drop v1 export path"` |
|
|
37
|
+
Without a domain overlay, commands route to **generic verb orchestrators** (`verb-create`, `verb-update`, `verb-fix`, …) — enough to create, fix, check, and review work in any repo.
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
### Common commands
|
|
45
40
|
|
|
46
41
|
| Command | When to use |
|
|
47
42
|
|---------|-------------|
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
43
|
+
| `create-module` | Add a new bounded module or package |
|
|
44
|
+
| `update-module` | Change existing module behavior |
|
|
45
|
+
| `fix-module` / `fix-bug` | Repair something broken (fix-bug: domain optional) |
|
|
46
|
+
| `check-module` | Validate or inspect (readonly) |
|
|
47
|
+
| `review-module` | Architecture / quality review (readonly) |
|
|
50
48
|
| `review-incident` | Investigate production or deploy issue |
|
|
51
|
-
| `test-function` |
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
Install copies everything you need. Open the project in Cursor and run commands.
|
|
58
|
-
|
|
59
|
-
- ~130 slash commands and the full shared pipeline (discover → plan → execute → verify → report)
|
|
60
|
-
- Generic `master_rules.md`, `ui_design.md`, `project_context.md`, and `architecture.md` in your docs folder — **already filled in**, not empty stubs
|
|
61
|
-
- Hook scripts and Run lifecycle under `.cursor/`
|
|
62
|
-
- Generic capability registry (shared skills only)
|
|
63
|
-
- **No** project domains required; **no** app build gate until you opt in (`verify.enabled: false` in `project.config.json`)
|
|
64
|
-
|
|
65
|
-
You do **not** need to enable hooks manually, write rules, add domains, or configure a stack before your first command.
|
|
66
|
-
|
|
67
|
-
### Optional — when you want more (any stack)
|
|
68
|
-
|
|
69
|
-
1. Fill in `docs/project_context.md` with your repo layout and SSOT anchors; extend `docs/master_rules.md` and `docs/architecture.md` when needed
|
|
70
|
-
2. Add `domains/<slug>/update/` (orchestrator + inventory) — see Part 2
|
|
71
|
-
3. Extend `graph.project.yaml` with resolvers and project skills
|
|
72
|
-
4. Enable verify in `project.config.json` when you have a web app to gate:
|
|
73
|
-
|
|
74
|
-
```json
|
|
75
|
-
{
|
|
76
|
-
"verify": {
|
|
77
|
-
"enabled": true,
|
|
78
|
-
"app_root": "apps/web",
|
|
79
|
-
"index_html": "apps/web/index.html",
|
|
80
|
-
"build": { "command": "pnpm", "args": ["--filter", "web", "build"] }
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
```
|
|
49
|
+
| `test-module` / `test-function` | Verify behavior |
|
|
50
|
+
| `update-doc` | Update architecture documentation (no code) |
|
|
51
|
+
| `release-app` | Phased release swarm (git push + deploy steps) |
|
|
52
|
+
| `remediate-app` | Long-running tech-debt campaign (Fallow + fix waves + satisfaction loop) |
|
|
53
|
+
|
|
54
|
+
See [`.cursor/aaac/ontology.md`](../.cursor/aaac/ontology.md) for the full verb × object matrix (~130 commands).
|
|
84
55
|
|
|
85
56
|
### Examples (generic)
|
|
86
57
|
|
|
87
58
|
```text
|
|
88
|
-
/create-module
|
|
89
|
-
/update-
|
|
90
|
-
/fix-
|
|
91
|
-
/
|
|
92
|
-
/
|
|
93
|
-
/
|
|
94
|
-
/update-doc architecture "Document
|
|
59
|
+
/create-module api "Add health check endpoint"
|
|
60
|
+
/update-module auth "Refresh session TTL configuration"
|
|
61
|
+
/fix-bug payments "Webhook handler drops events on retry"
|
|
62
|
+
/check-module billing "Confirm idempotency on duplicate events"
|
|
63
|
+
/review-module core "Check layer boundaries and module size budgets"
|
|
64
|
+
/test-function checkout "Verify cart → pay → confirmation journey"
|
|
65
|
+
/update-doc architecture "Document service boundaries"
|
|
66
|
+
/release-app production "Ship with typecheck and smoke test"
|
|
95
67
|
```
|
|
96
68
|
|
|
97
|
-
###
|
|
69
|
+
### Deprecated (still work one release)
|
|
98
70
|
|
|
99
|
-
|
|
71
|
+
| Old | New |
|
|
72
|
+
|-----|-----|
|
|
73
|
+
| `/ship-ludecker` | `/release-app` |
|
|
74
|
+
| `/module-update` | `/update-module` |
|
|
75
|
+
| `/architecture` | `/update-doc` |
|
|
76
|
+
| `/swarm-check` | `/review-incident` or `/fix-bug` |
|
|
77
|
+
| `/refactor` | `/review-module` |
|
|
78
|
+
|
|
79
|
+
### Reference: [Lüdecker](https://ludecker.com) (optional domain overlay)
|
|
80
|
+
|
|
81
|
+
The [Lüdecker monorepo](https://github.com/eriklydecker/ludecker) adds slug resolvers (`cms`, `ui`, `database`, `aaac`) and domain orchestrators under `.cursor/domains/`. That pattern is **not** required for a fresh install — copy it when you want bounded-context routing like `/update-module cms "…"`.
|
|
100
82
|
|
|
101
|
-
###
|
|
83
|
+
### What you should not need to know
|
|
102
84
|
|
|
103
|
-
|
|
85
|
+
skill, agent, subagent, tool, workflow, graph, orchestrator — infrastructure only.
|
|
104
86
|
|
|
105
87
|
---
|
|
106
88
|
|
|
@@ -130,7 +112,7 @@ Knowledge Layer → docs/
|
|
|
130
112
|
| Lifecycle | **Work** phase configuration |
|
|
131
113
|
| Gate stacks | **Approval** checkpoints |
|
|
132
114
|
| Run | Primary execution object; decisions, log, checkpoints |
|
|
133
|
-
| Domain orchestrators | Domain coordination
|
|
115
|
+
| Domain orchestrators | Domain coordination |
|
|
134
116
|
| Shared pipeline skills | Phase execution |
|
|
135
117
|
| Capability registry | object → capability → provider |
|
|
136
118
|
| Object skills | Skill-type providers |
|
|
@@ -149,7 +131,7 @@ Intent → Command → Execution Graph → Result
|
|
|
149
131
|
|
|
150
132
|
**Execution graph** = orchestrator + skills + agents + tools + rules + documentation.
|
|
151
133
|
|
|
152
|
-
**SSOT:** [`.cursor/aaac/graph.yaml`](../.cursor/aaac/graph.yaml)
|
|
134
|
+
**SSOT:** [`.cursor/aaac/graph.yaml`](../.cursor/aaac/graph.yaml)
|
|
153
135
|
|
|
154
136
|
**Dispatch procedure:** [`.cursor/aaac/dispatch.md`](../.cursor/aaac/dispatch.md)
|
|
155
137
|
|
|
@@ -158,32 +140,16 @@ Intent → Command → Execution Graph → Result
|
|
|
158
140
|
```text
|
|
159
141
|
.cursor/
|
|
160
142
|
commands/ # thin routers (public)
|
|
161
|
-
aaac/
|
|
162
|
-
graph.project.yaml # your overlay (resolvers, orchestrators)
|
|
163
|
-
graph.yaml # generated wiring
|
|
143
|
+
aaac/graph.yaml # wiring (private OS)
|
|
164
144
|
domains/<slug>/update/
|
|
165
145
|
orchestrator/ # what happens
|
|
166
146
|
inventory/ # what exists
|
|
167
|
-
skills/shared/ # framework
|
|
168
|
-
skills/<project>/ #
|
|
147
|
+
skills/shared/ # framework (discovery, planning, execution, …)
|
|
148
|
+
skills/<project>/ # optional project-specific object skills
|
|
169
149
|
agents/ # subagent prompt specs
|
|
170
150
|
policies/ # rules all skills inherit
|
|
171
151
|
```
|
|
172
152
|
|
|
173
|
-
### Generic kernel vs project overlay
|
|
174
|
-
|
|
175
|
-
| Layer | Location | Owner |
|
|
176
|
-
|-------|----------|-------|
|
|
177
|
-
| Generic kernel | `@ludecker/aaac` npm templates | Package maintainers |
|
|
178
|
-
| Project overlay | `.cursor/aaac/graph.project.yaml`, `ontology.json`, `project.config.json` | Your repo |
|
|
179
|
-
| Domains | `.cursor/domains/<slug>/` | Your repo |
|
|
180
|
-
|
|
181
|
-
Regenerate after ontology or overlay edits:
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
npx @ludecker/aaac@latest generate
|
|
185
|
-
```
|
|
186
|
-
|
|
187
153
|
### Orchestrator vs inventory
|
|
188
154
|
|
|
189
155
|
| | Orchestrator | Inventory |
|
|
@@ -191,49 +157,155 @@ npx @ludecker/aaac@latest generate
|
|
|
191
157
|
| Question | What should happen? | What exists? |
|
|
192
158
|
| Updates when | Workflow changes | After every code-changing `update-module` |
|
|
193
159
|
|
|
160
|
+
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.
|
|
161
|
+
|
|
194
162
|
### Execution determinism (create / update / fix)
|
|
195
163
|
|
|
164
|
+
Commands define *what* to load; **work lifecycle** defines phases of work; **gate stacks** define approval checkpoints; the **Run** holds state and observability.
|
|
165
|
+
|
|
166
|
+
**Mature stack (composed on Run):**
|
|
167
|
+
|
|
168
|
+
```text
|
|
169
|
+
Policies → Ontology → Graph → Create Run
|
|
170
|
+
→ Work: Discovery → Investigation → Planning
|
|
171
|
+
→ Gates: Validation → Impact → Deps → Fitness → Rollback
|
|
172
|
+
→ Work: Execute → Test execute → Verify → Review swarm → Report
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Agent separation (create / update / fix):** production code in `execute`; tests in `test_execute` (separate test-author agent); readonly review swarm before report. Hooks enforce path scopes via `enforcement.json` `phase_edit_scopes`.
|
|
176
|
+
|
|
196
177
|
**Work lifecycles** (SSOT: [`.cursor/aaac/lifecycle/lifecycle.json`](../.cursor/aaac/lifecycle/lifecycle.json)):
|
|
197
178
|
|
|
198
179
|
| Verb | Work | Gate stack |
|
|
199
180
|
|------|------|------------|
|
|
200
|
-
| create | discover → investigate_lite → plan → execute → verify → report | pre_execute |
|
|
181
|
+
| create | discover → investigate_lite → plan → execute → test_execute → verify → review_swarm → report | pre_execute |
|
|
201
182
|
| update | same | pre_execute |
|
|
202
|
-
| fix | discover → investigate_swarm → root_cause → plan → execute → verify → report | pre_execute |
|
|
183
|
+
| fix | discover → investigate_swarm → root_cause → plan → execute → test_execute → verify → review_swarm → report | pre_execute |
|
|
203
184
|
| release | execute → verify → report | release |
|
|
204
185
|
|
|
205
|
-
**Gate stacks** (SSOT: [`.cursor/aaac/governance/gates.json`](../.cursor/aaac/governance/gates.json))
|
|
186
|
+
**Gate stacks** (SSOT: [`.cursor/aaac/governance/gates.json`](../.cursor/aaac/governance/gates.json)) — approval, not work.
|
|
187
|
+
|
|
188
|
+
Composed runtime in graph `verb_runtime`. Human approval at gate boundaries: Run `status: blocked`, `awaiting_approval: true`.
|
|
189
|
+
|
|
190
|
+
**Confidence gates** — before execute, if any score is below threshold → `STOP, REQUEST CLARIFICATION`:
|
|
191
|
+
|
|
192
|
+
| Dimension | Minimum |
|
|
193
|
+
|-----------|---------|
|
|
194
|
+
| architecture | 0.9 |
|
|
195
|
+
| requirements | 0.8 |
|
|
196
|
+
| scope | 0.8 |
|
|
197
|
+
|
|
198
|
+
**Object maturity** — harder objects require more phases:
|
|
199
|
+
|
|
200
|
+
| Level | Objects (examples) | Extra requirements |
|
|
201
|
+
|-------|-------------------|-------------------|
|
|
202
|
+
| protected | schema, migration, architecture | impact + deps + rollback |
|
|
203
|
+
| critical | module, integration, app | impact + deps |
|
|
204
|
+
| stable | feature, workflow | impact on fix |
|
|
205
|
+
| evolving | component, function | lifecycle only |
|
|
206
|
+
|
|
207
|
+
**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.
|
|
208
|
+
|
|
209
|
+
Lifecycle reference: [`.cursor/skills/shared/verbs/_lifecycle.md`](../.cursor/skills/shared/verbs/_lifecycle.md)
|
|
210
|
+
|
|
211
|
+
### Fix swarm (`/fix-module`, `/fix-bug`, `fix_mode`)
|
|
212
|
+
|
|
213
|
+
Same rigor as `write-article` research — parallel Task subagents, one message per wave.
|
|
214
|
+
|
|
215
|
+
| Phase | Agent specs | Count |
|
|
216
|
+
|-------|-------------|-------|
|
|
217
|
+
| discover | discovery-inventory, discovery-boundaries, discovery-ssot | 4–6 |
|
|
218
|
+
| investigate_swarm | fix-repro, fix-code-path, fix-recent-changes, fix-test-failures, fix-regression-scope, fix-runtime-evidence, fix-inventory-confirm | **7** |
|
|
219
|
+
| root_cause | parent + optional fix-hypothesis-validate | 0–1 |
|
|
220
|
+
| verify | fix-repro-verify, unit-test-run, fallow-check-changed | **3** (all mutating verbs) |
|
|
221
|
+
| test_execute | test-author | **1** |
|
|
222
|
+
| review_swarm | boundary-review, doc-conformance, implementation-review | **3** |
|
|
223
|
+
|
|
224
|
+
Skills: [investigation/SKILL.md](../.cursor/skills/shared/investigation/SKILL.md), [testing/SKILL.md](../.cursor/skills/shared/testing/SKILL.md), [test-authoring/SKILL.md](../.cursor/skills/shared/test-authoring/SKILL.md), [implementation-review/SKILL.md](../.cursor/skills/shared/implementation-review/SKILL.md).
|
|
225
|
+
Contracts: [fix-module.yaml](../.cursor/aaac/contracts/commands/fix-module.yaml), [fix-bug.yaml](../.cursor/aaac/contracts/commands/fix-bug.yaml).
|
|
226
|
+
|
|
227
|
+
Resolver: `fix-domain-by-slug` (`fix-module`) and `fix-bug-by-slug` → `cms-fix-bug` | `ui-fix-bug` | `database-fix-bug` | `aaac-fix-bug`.
|
|
206
228
|
|
|
207
229
|
### Capability registry
|
|
208
230
|
|
|
209
231
|
Objects declare capabilities in ontology; providers resolve from [`.cursor/aaac/capabilities/registry.json`](../.cursor/aaac/capabilities/registry.json):
|
|
210
232
|
|
|
211
233
|
```text
|
|
212
|
-
object → capability → provider (skill | mcp)
|
|
234
|
+
object → capability → provider (skill | mcp | expert)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Graph `object_skills` includes skill-type providers only. MCP providers (e.g. `supabase-mcp` on `database-design`) are recorded on the Run.
|
|
238
|
+
|
|
239
|
+
**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):
|
|
240
|
+
|
|
241
|
+
```text
|
|
242
|
+
experimental → validated → trusted → canonical → deprecated
|
|
213
243
|
```
|
|
214
244
|
|
|
215
|
-
|
|
245
|
+
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.
|
|
246
|
+
|
|
247
|
+
**Runtime behavior:** At dispatch and before `execute`, `promotion-rules.json` `runtime` section is evaluated — `deprecated` blocks execute; `experimental` on `critical`/`protected` objects requires user approval; low `success_rate` or `avg_fitness` triggers approval. Set `capability_runtime_approved: true` on the Run after user approves.
|
|
216
248
|
|
|
217
249
|
### Run (primary execution object)
|
|
218
250
|
|
|
219
251
|
**SSOT:** [`.cursor/aaac/run/schema.json`](../.cursor/aaac/run/schema.json), [`.cursor/aaac/run/RUN.md`](../.cursor/aaac/run/RUN.md)
|
|
220
252
|
|
|
253
|
+
Every command executes within a Run at `state/runs/{run_id}/run.json`:
|
|
254
|
+
|
|
255
|
+
| Field | Purpose |
|
|
256
|
+
|-------|---------|
|
|
257
|
+
| `phase`, `pending`, `completed` | Where we are |
|
|
258
|
+
| `decisions[]` | Why routes and gates |
|
|
259
|
+
| `log[]` | Phase events |
|
|
260
|
+
| `checkpoints[]` | Resume points |
|
|
261
|
+
| `artifacts{}` | Plan, impact, report, … |
|
|
262
|
+
| `awaiting_approval` | Human gate approval |
|
|
263
|
+
|
|
264
|
+
Observability: [`.cursor/aaac/observability/telemetry.yaml`](../.cursor/aaac/observability/telemetry.yaml) — all telemetry on Run, no standalone logs.
|
|
265
|
+
|
|
266
|
+
### Contracts
|
|
267
|
+
|
|
268
|
+
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)
|
|
269
|
+
|
|
270
|
+
### Implementation governance
|
|
271
|
+
|
|
272
|
+
Not a slash command. Loaded by `shared/execution` on code changes:
|
|
273
|
+
|
|
274
|
+
[`.cursor/skills/shared/governance/implementation/SKILL.md`](../.cursor/skills/shared/governance/implementation/SKILL.md)
|
|
275
|
+
|
|
221
276
|
### Adding a product domain
|
|
222
277
|
|
|
223
278
|
1. Add `domains/<slug>/update/` (inventory + orchestrator)
|
|
224
|
-
2. Add
|
|
225
|
-
3. Regenerate: `
|
|
279
|
+
2. Add slug to `graph.yaml` resolvers — **no new command shape**
|
|
280
|
+
3. Regenerate: `node .cursor/aaac/generate-graph.mjs && node .cursor/aaac/generate-commands.mjs`
|
|
281
|
+
|
|
282
|
+
### Contracts
|
|
226
283
|
|
|
227
|
-
|
|
284
|
+
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)
|
|
228
285
|
|
|
229
286
|
### Release swarm (`release-app`)
|
|
230
287
|
|
|
231
|
-
|
|
288
|
+
Expert subagents run in **waves**, not one monolithic agent:
|
|
289
|
+
|
|
290
|
+
| Wave | Agents | Notes |
|
|
291
|
+
|------|--------|-------|
|
|
292
|
+
| 0 | Preflight typecheck (optional) | From intent, e.g. "with tests" |
|
|
293
|
+
| 1 | `release-git` | **Blocking** — must return `commit_sha` before wave 2 |
|
|
294
|
+
| 2 | `release-render` | Poll `ludecker-website` until `live`; smoke-check `/` |
|
|
295
|
+
|
|
296
|
+
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).
|
|
232
297
|
|
|
233
298
|
### Regenerating commands
|
|
234
299
|
|
|
235
300
|
```bash
|
|
236
|
-
|
|
301
|
+
pnpm aaac:generate
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Or:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
node .cursor/aaac/generate-graph.mjs
|
|
308
|
+
node .cursor/aaac/generate-commands.mjs
|
|
237
309
|
```
|
|
238
310
|
|
|
239
311
|
Ontology reference: [`.cursor/aaac/ontology.md`](../.cursor/aaac/ontology.md)
|