@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.
Files changed (104) hide show
  1. package/README.md +27 -12
  2. package/package.json +9 -9
  3. package/src/cli.mjs +19 -7
  4. package/src/generators/generate-commands.mjs +25 -1
  5. package/src/generators/generate-graph.mjs +9 -1
  6. package/src/lib/install.mjs +13 -1
  7. package/src/lib/sweep-project-docs.mjs +348 -0
  8. package/src/run-engine/advance-phase.mjs +23 -0
  9. package/src/run-engine/debug-run.mjs +0 -0
  10. package/src/run-engine/gate-write.mjs +13 -0
  11. package/src/run-engine/lib.mjs +153 -5
  12. package/src/run-engine/log-dump.mjs +0 -0
  13. package/src/run-engine/log-trace.mjs +0 -0
  14. package/templates/cursor/aaac/enforcement.json +96 -5
  15. package/templates/cursor/aaac/graph.project.yaml +44 -5
  16. package/templates/cursor/aaac/lifecycle/lifecycle.json +26 -0
  17. package/templates/cursor/aaac/lifecycle/phases.json +9 -1
  18. package/templates/cursor/aaac/ontology.json +1 -0
  19. package/templates/cursor/aaac/project.config.json +36 -0
  20. package/templates/cursor/aaac/scripts/remediation/auto-check-swarm-synthesis.mjs +75 -0
  21. package/templates/cursor/aaac/scripts/remediation/auto-dispatch-queue-from-health.mjs +78 -0
  22. package/templates/cursor/aaac/scripts/remediation/bootstrap-autonomous.mjs +113 -0
  23. package/templates/cursor/aaac/scripts/remediation/capture-verify-baseline.mjs +66 -0
  24. package/templates/cursor/aaac/scripts/remediation/capture-wave-snapshot.mjs +79 -0
  25. package/templates/cursor/aaac/scripts/remediation/check-swarm-raw.template.json +26 -0
  26. package/templates/cursor/aaac/scripts/remediation/classify-fallow-issues.mjs +77 -0
  27. package/templates/cursor/aaac/scripts/remediation/classify-verify-failure.mjs +176 -0
  28. package/templates/cursor/aaac/scripts/remediation/compute-satisfaction.mjs +344 -0
  29. package/templates/cursor/aaac/scripts/remediation/debt-sweep-gate.mjs +202 -0
  30. package/templates/cursor/aaac/scripts/remediation/dispatch-rules.json +44 -0
  31. package/templates/cursor/aaac/scripts/remediation/fallow-fp-rules.json +87 -0
  32. package/templates/cursor/aaac/scripts/remediation/fallow-scan.mjs +219 -0
  33. package/templates/cursor/aaac/scripts/remediation/handle-yield.mjs +240 -0
  34. package/templates/cursor/aaac/scripts/remediation/init-campaign.mjs +211 -0
  35. package/templates/cursor/aaac/scripts/remediation/lib/autonomous-mode.mjs +63 -0
  36. package/templates/cursor/aaac/scripts/remediation/lib/campaign-focus.mjs +87 -0
  37. package/templates/cursor/aaac/scripts/remediation/lib/fallow-classifier.mjs +190 -0
  38. package/templates/cursor/aaac/scripts/remediation/lib/fallow-health-targets.mjs +56 -0
  39. package/templates/cursor/aaac/scripts/remediation/lib/fallow-metrics.mjs +119 -0
  40. package/templates/cursor/aaac/scripts/remediation/lib/invoke-cursor-agent.mjs +51 -0
  41. package/templates/cursor/aaac/scripts/remediation/lib/reconcile-run-manifest.mjs +41 -0
  42. package/templates/cursor/aaac/scripts/remediation/lib/regression-analysis.mjs +55 -0
  43. package/templates/cursor/aaac/scripts/remediation/lib/remediation-config.mjs +69 -0
  44. package/templates/cursor/aaac/scripts/remediation/lib/remediation-progress.mjs +58 -0
  45. package/templates/cursor/aaac/scripts/remediation/lib/remediation-watch-loop.mjs +168 -0
  46. package/templates/cursor/aaac/scripts/remediation/lib/runner-exec.mjs +156 -0
  47. package/templates/cursor/aaac/scripts/remediation/lib/runner-state.mjs +145 -0
  48. package/templates/cursor/aaac/scripts/remediation/lib/verify-metrics.mjs +205 -0
  49. package/templates/cursor/aaac/scripts/remediation/merge-check-swarm.mjs +257 -0
  50. package/templates/cursor/aaac/scripts/remediation/plan-waves-from-queue.mjs +85 -0
  51. package/templates/cursor/aaac/scripts/remediation/prepare-check-context.mjs +148 -0
  52. package/templates/cursor/aaac/scripts/remediation/record-fallow-fp.mjs +107 -0
  53. package/templates/cursor/aaac/scripts/remediation/record-iteration-step.mjs +56 -0
  54. package/templates/cursor/aaac/scripts/remediation/remediation-cli.mjs +157 -0
  55. package/templates/cursor/aaac/scripts/remediation/remediation-cursor-watch.sh +10 -0
  56. package/templates/cursor/aaac/scripts/remediation/remediation-runner-daemon.sh +13 -0
  57. package/templates/cursor/aaac/scripts/remediation/remediation-runner.mjs +748 -0
  58. package/templates/cursor/aaac/scripts/remediation/remediation-yield-watcher.mjs +40 -0
  59. package/templates/cursor/aaac/scripts/remediation/remediator-gate.mjs +405 -0
  60. package/templates/cursor/aaac/scripts/remediation/repair-fallow-start-baseline.mjs +118 -0
  61. package/templates/cursor/aaac/scripts/remediation/runner-health-check.mjs +164 -0
  62. package/templates/cursor/aaac/scripts/remediation/satisfaction-loop-gate.mjs +286 -0
  63. package/templates/cursor/aaac/scripts/remediation/validate-campaign-complete.mjs +191 -0
  64. package/templates/cursor/aaac/scripts/remediation/verify-remediation-iteration.mjs +112 -0
  65. package/templates/cursor/aaac/scripts/run-engine/advance-phase.mjs +23 -0
  66. package/templates/cursor/aaac/scripts/run-engine/debug-run.mjs +0 -0
  67. package/templates/cursor/aaac/scripts/run-engine/gate-write.mjs +13 -0
  68. package/templates/cursor/aaac/scripts/run-engine/lib.mjs +153 -5
  69. package/templates/cursor/aaac/scripts/run-engine/log-dump.mjs +0 -0
  70. package/templates/cursor/aaac/scripts/run-engine/log-trace.mjs +0 -0
  71. package/templates/cursor/agents/doc-conformance.md +25 -0
  72. package/templates/cursor/agents/implementation-review.md +21 -0
  73. package/templates/cursor/agents/remediation-check-app-inventory.md +32 -0
  74. package/templates/cursor/agents/remediation-check-app-ssot.md +24 -0
  75. package/templates/cursor/agents/remediation-check-app-trace.md +29 -0
  76. package/templates/cursor/agents/remediation-check-architecture-boundaries.md +21 -0
  77. package/templates/cursor/agents/remediation-check-architecture-decomposition.md +25 -0
  78. package/templates/cursor/agents/remediation-check-architecture-deps.md +23 -0
  79. package/templates/cursor/agents/remediation-check-risk.md +37 -0
  80. package/templates/cursor/agents/remediation-e2e-gate.md +30 -0
  81. package/templates/cursor/agents/remediation-remediator.md +69 -0
  82. package/templates/cursor/agents/test-author.md +27 -0
  83. package/templates/cursor/commands/remediate-app.md +212 -0
  84. package/templates/cursor/hooks/aaac-before-submit.sh +0 -0
  85. package/templates/cursor/hooks/aaac-pre-tool.sh +0 -0
  86. package/templates/cursor/hooks/aaac-stop.sh +0 -0
  87. package/templates/cursor/hooks/aaac-subagent-start.sh +0 -0
  88. package/templates/cursor/rules/aaac-enforcement.mdc +10 -3
  89. package/templates/cursor/skills/shared/execution/SKILL.md +7 -3
  90. package/templates/cursor/skills/shared/governance/implementation/SKILL.md +396 -28
  91. package/templates/cursor/skills/shared/implementation-review/SKILL.md +49 -0
  92. package/templates/cursor/skills/shared/planning/SKILL.md +5 -0
  93. package/templates/cursor/skills/shared/remediation/SKILL.md +51 -0
  94. package/templates/cursor/skills/shared/remediation/babysit/SKILL.md +223 -0
  95. package/templates/cursor/skills/shared/remediation/check-swarm/SKILL.md +114 -0
  96. package/templates/cursor/skills/shared/remediation/orchestrator/SKILL.md +275 -0
  97. package/templates/cursor/skills/shared/remediation/orchestrator/contract.yaml +116 -0
  98. package/templates/cursor/skills/shared/test-authoring/SKILL.md +58 -0
  99. package/templates/cursor/skills/shared/testing/SKILL.md +6 -0
  100. package/templates/cursor/skills/shared/verbs/create/orchestrator/SKILL.md +5 -3
  101. package/templates/cursor/skills/shared/verbs/fix/orchestrator/SKILL.md +5 -3
  102. package/templates/cursor/skills/shared/verbs/update/orchestrator/SKILL.md +5 -3
  103. package/templates/cursor/skills/shared/verification/SKILL.md +5 -3
  104. 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. **verify** — [testing](../../testing/SKILL.md) + [verification](../../verification/SKILL.md)
34
- 13. **sync_inventory** — when domain inventory exists and execute ran
35
- 14. **report** — [reporting](../../reporting/SKILL.md)
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. **verify** — [testing](../../testing/SKILL.md) fix verify swarm + [verification](../../verification/SKILL.md)
33
- 14. **sync_inventory** — when domain inventory exists
34
- 15. **report** — [reporting](../../reporting/SKILL.md)
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. **verify** — [testing](../../testing/SKILL.md) + [verification](../../verification/SKILL.md)
29
- 13. **sync_inventory**
30
- 14. **report** — [reporting](../../reporting/SKILL.md)
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
- - **App build gate** (create / update / fix, when `project.config.json` `verify.enabled`): `artifacts/verify.yaml` from [verify-website-build.mjs](../../../aaac/scripts/run-engine/verify-website-build.mjs)
18
- - **E2E smoke** (optional): launch [playwright-check-run](../../../agents/playwright-check-run.md) when project defines Playwright targets; set `PLAYWRIGHT_BASE_URL` for public-route smoke
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> <domain> "<intent>"
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 | Which area (optional until you add domains) | `payments` |
27
- | Intent | Goal in plain language | `"Add idempotency key to webhook handler"` |
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
- AAAC generates ~130 commands from **8 verbs × 12 objects**:
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
- **Exception commands** (dedicated orchestrators):
39
+ ### Common commands
45
40
 
46
41
  | Command | When to use |
47
42
  |---------|-------------|
48
- | `update-doc` | Update architecture documentation (no code) |
49
- | `review-module` | Quality/architecture review (no code) |
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` | Test a user journey end-to-end |
52
- | `release-app` | Phased release swarm (git → deploy) |
53
- | `fix-module` / `fix-bug` | Full fix swarm domain optional until you add resolvers |
54
-
55
- ### Out of the box — no setup after install
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 billing "Add invoice PDF export"
89
- /update-component ui "Tokenize spacing scale"
90
- /fix-module api "Webhook signature validation fails on chunked bodies"
91
- /review-module billing "Check SSOT for tax rates"
92
- /test-function checkout "Guest can complete purchase"
93
- /release-app staging "Deploy with migration"
94
- /update-doc architecture "Document event bus boundaries"
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
- ### What you should not need to know
69
+ ### Deprecated (still work one release)
98
70
 
99
- skill, agent, subagent, tool, workflow, graph, orchestrator — infrastructure only.
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
- ### Reference implementation
83
+ ### What you should not need to know
102
84
 
103
- [Lüdecker](https://ludecker.com) dogfoods AAAC with `cms`, `ui`, `database`, and `aaac` domains. That overlay lives in the Lüdecker repo not in the generic npm template.
85
+ skill, agent, subagent, tool, workflow, graph, orchestratorinfrastructure 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 (you add these) |
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) (generated — edit `graph.project.yaml` instead)
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 pipeline
168
- skills/<project>/ # your object-capability skills (optional)
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
- Replace generic shared-skill providers with project skills as you mature.
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 resolver entries to `graph.project.yaml` — **no new command shape**
225
- 3. Regenerate: `npx @ludecker/aaac@latest generate`
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
- See [module-authoring/SKILL.md](../.cursor/skills/shared/module-authoring/SKILL.md).
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
- Wave 1: `release-git` (blocking). Add deploy agents in your overlay (e.g. `release-render`, `release-k8s`) — generic template ships git only.
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
- npx @ludecker/aaac@latest generate
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)