akili-specs 2.12.0 → 2.13.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/.claude/commands/akili-audit.md +2 -0
- package/.claude/commands/akili-constitution.md +25 -1
- package/.claude/commands/akili-execute.md +15 -1
- package/.claude/commands/akili-specify.md +1 -0
- package/.claude/commands/akili-test.md +1 -0
- package/.claude/commands/akili-validate.md +5 -1
- package/.claude/templates/leader.md +17 -0
- package/.claude/templates/reviewer.md +12 -0
- package/CHANGELOG.md +15 -0
- package/README.md +11 -0
- package/bin/akili.js +52 -29
- package/docs/cli.md +3 -1
- package/docs/plans/2026-07-24-delegation-thresholds-review-lenses.md +79 -0
- package/docs/plans/2026-07-24-local-environment-contract.md +53 -0
- package/package.json +1 -1
|
@@ -37,6 +37,8 @@ Perform codebase analysis (preferring CodeGraph if `.codegraph/` exists, or util
|
|
|
37
37
|
3. **UI Components & Pages:** Actual directory structure of frontend views, components, and design tokens.
|
|
38
38
|
4. **Key Modules & Dependencies:** Registered packages, external integrations, and package manifest frameworks.
|
|
39
39
|
|
|
40
|
+
**Delegation Thresholds (scout scan):** Apply the *Delegation Thresholds* from `.agents/leader.md` to this scan — when a single extraction above requires reading **4+ full source files**, delegate it to a scout/Explore subagent per area (API, schema, UI, modules) and judge drift from their conclusions in Step 2. CodeGraph lookups do not count toward the threshold. This keeps the T3 drift-judging context clean of raw file dumps.
|
|
41
|
+
|
|
40
42
|
### Step 2: Compare Documentation vs. Codebase Reality
|
|
41
43
|
|
|
42
44
|
Audit for discrepancies, classifying findings under the following categories:
|
|
@@ -95,6 +95,8 @@ Also inspect the codebase to understand:
|
|
|
95
95
|
|
|
96
96
|
Do not write generic placeholder documentation when the repository already contains enough context to infer a strong baseline.
|
|
97
97
|
|
|
98
|
+
**Delegation Thresholds (scout research):** For legacy/existing-project analysis, apply the *Delegation Thresholds* from the packaged `leader.md` template — when inspecting the codebase requires reading **4+ full source files** for a single question (architecture survey, styling-token inventory, module-boundary mapping), spawn a scout/Explore subagent with fresh context and synthesize from its conclusions instead of reading everything inline. CodeGraph lookups (below) do not count toward the threshold.
|
|
99
|
+
|
|
98
100
|
#### Existing Project CodeGraph Check
|
|
99
101
|
|
|
100
102
|
For existing projects, prefer CodeGraph for repository analysis when available:
|
|
@@ -245,7 +247,7 @@ Create or enhance `docs/trd/trd.md` as the technical implementation blueprint.
|
|
|
245
247
|
|
|
246
248
|
### Step 6: Create or Enhance the Infrastructure Document
|
|
247
249
|
|
|
248
|
-
Create or enhance `docs/infrastructure.md` as the
|
|
250
|
+
Create or enhance `docs/infrastructure.md` as the environments blueprint — from the developer's laptop to PROD.
|
|
249
251
|
|
|
250
252
|
The infrastructure shape derives from the TRD's robust-vs-lite tier decision (Step 5, `software-architect` skill) — never precedes it. Cite the tier decision and its ADR at the top of the document.
|
|
251
253
|
|
|
@@ -256,9 +258,30 @@ The infrastructure shape derives from the TRD's robust-vs-lite tier decision (St
|
|
|
256
258
|
3. Deployment Strategy (e.g., CI/CD, Terraform, CDK)
|
|
257
259
|
4. Network & Security Architecture
|
|
258
260
|
5. Infrastructure Rules & Constraints
|
|
261
|
+
6. Local Environment (the contract below)
|
|
259
262
|
|
|
260
263
|
If this information is missing during the initial setup or discovery phase, explicitly ask the user for the intended infrastructure specifications before drafting this document.
|
|
261
264
|
|
|
265
|
+
#### Step 6B: The Local Environment Contract
|
|
266
|
+
|
|
267
|
+
Scaffold a `## Local Environment` section that captures how to start the project's local stack (database, backend, frontend). The methodology defines a **contract, not a tool** — Docker Compose is the recommended primary route, but the contract must always document a fallback for users without Docker:
|
|
268
|
+
|
|
269
|
+
| Element | What to record |
|
|
270
|
+
|---------|----------------|
|
|
271
|
+
| Primary route (recommended) | e.g. `docker compose up -d` |
|
|
272
|
+
| Fallback route (no Docker) | e.g. `npm run dev` per service + a local or cloud dev database |
|
|
273
|
+
| Pre-check | e.g. `docker info` — on failure (daemon off, not installed), surface it and offer: start Docker, or use the fallback. Never block silently |
|
|
274
|
+
| Seed / reset data | explicit commands |
|
|
275
|
+
| Health check | how to verify the stack is up |
|
|
276
|
+
| URLs / ports | frontend, backend, database |
|
|
277
|
+
|
|
278
|
+
Mode-specific behavior:
|
|
279
|
+
|
|
280
|
+
- **Legacy / Active:** derive the contract from evidence — existing `docker-compose*.yml`, `Makefile`, `package.json` scripts, README run instructions. Do not invent commands; ask the user to confirm anything ambiguous.
|
|
281
|
+
- **Brand-new:** offer to scaffold a development compose file (db + backend + frontend) matching the TRD stack. If the user declines or has no Docker, record the native fallback as the primary route.
|
|
282
|
+
|
|
283
|
+
**Boundary rule (record it in the section):** the local environment is **disposable** — agents may freely start, seed, and reset it to verify work. Deployments to cloud/PROD are **governed** — they follow this document's sections 1–5 (components, IaC, CI/CD defined at constitution time) and are never improvised by agents.
|
|
284
|
+
|
|
262
285
|
---
|
|
263
286
|
|
|
264
287
|
### Step 7: Create or Enhance General Setup Templates
|
|
@@ -300,6 +323,7 @@ The update should explain briefly:
|
|
|
300
323
|
- Which skills should be used for common work in the project (the `## Skill Map` added in Step 8D)
|
|
301
324
|
- Whether CodeGraph is initialized and how agents should use it for existing-project analysis
|
|
302
325
|
- Which model to switch to per AKILI-SPECS phase (the `## Model Routing` registry added in Step 8C)
|
|
326
|
+
- How to start the local stack: point at the `## Local Environment` contract in `docs/infrastructure.md` (Step 6B) — agents consult it instead of guessing start commands
|
|
303
327
|
|
|
304
328
|
Preserve the repository's existing `CLAUDE.md` and `AGENTS.md` conventions and extend them.
|
|
305
329
|
|
|
@@ -57,6 +57,8 @@ If `.agents/` is missing, run `/akili-constitution` first to scaffold it. Do not
|
|
|
57
57
|
|
|
58
58
|
The Leader does not write production code itself unless the rework loop is exhausted and the user has explicitly approved a fallback.
|
|
59
59
|
|
|
60
|
+
**Delegation Thresholds:** the Leader's inline-vs-delegate boundary is quantified in `.agents/leader.md` → *Delegation Thresholds* (inline only for 1-file checks and puntual verifications; 4+ full-file reads → scout subagent; 2+ non-trivial file writes → Implementer; CodeGraph lookups don't count toward the read threshold). Apply it to your own research inside this command — e.g. investigating a Reviewer FAIL across many files is scout work, not Leader-inline work.
|
|
61
|
+
|
|
60
62
|
**Communication economy:** load the `caveman` skill and apply its Scope Contract to all transient output in this command — inter-agent messages (Leader ↔ Implementer/Reviewer briefs, reports, feedback relays) at `full`, user-visible progress lines at `lite`. It never applies to `execution.md` audit entries, PR descriptions, HITL summaries, Pivot blockers, or verbatim evidence (Reviewer FAIL reports pass unchanged — the Structured Feedback rule wins).
|
|
61
63
|
|
|
62
64
|
---
|
|
@@ -131,6 +133,7 @@ loop:
|
|
|
131
133
|
- Re-read the requirements and scenarios covered by the task.
|
|
132
134
|
- Identify the smallest safe change that satisfies the task.
|
|
133
135
|
- Identify the verification command listed in the task.
|
|
136
|
+
- **Environment-dependent verification:** if the verification needs a running stack (integration behavior, manual smoke, anything hitting the database or a live server), consult the `## Local Environment` contract in `docs/infrastructure.md` and run its **pre-check** now — before spawning the Implementer. If the primary route is unavailable (e.g. the Docker daemon is off), ask the user whether to start it or proceed via the contract's fallback route; pass the resolved start/health-check commands in the Implementer's brief. If no contract exists, note the gap and recommend `/akili-constitution` (Step 6B) after the run.
|
|
134
137
|
|
|
135
138
|
#### 2.2 — Spawn Implementer
|
|
136
139
|
|
|
@@ -159,9 +162,18 @@ When the Implementer reports completion, the Leader:
|
|
|
159
162
|
- the relevant slices of `requirements.md`, `design.md`, `trd.md`, and `docs/ux-ui/design.md`
|
|
160
163
|
- the Implementer's verification evidence
|
|
161
164
|
|
|
165
|
+
**Review lens modes (4R):** the Reviewer audits spec conformance (the gate) plus four advisory lenses — **readability, reliability, resilience, risk** — per `.agents/reviewer.md`. The mode is selected by the task's effort dial; there is no separate configuration:
|
|
166
|
+
|
|
167
|
+
| Mode | When | Mechanics |
|
|
168
|
+
|------|------|-----------|
|
|
169
|
+
| **Lens checklist** (default) | Effort `low` / `medium` / `high` | The single Reviewer sweeps all four lenses; non-spec-violation findings return in an `ADVISORY` block. **Spec conformance remains the only PASS/FAIL gate** |
|
|
170
|
+
| **Parallel lens reviewers** | Effort `xhigh` / `max`, or the task touches security, migrations, or data-loss surfaces | Spawn 2–4 lens-scoped Reviewers in parallel (each gets the same diff + one named lens + baseline spec conformance). Any lens may FAIL; the Leader adjudicates whether a lens FAIL is in-scope for the task **before** consuming a rework attempt |
|
|
171
|
+
|
|
172
|
+
`ADVISORY` findings are recorded in `execution.md` with the task's entry and never trigger rework — the 3-attempt ceiling binds to spec conformance only.
|
|
173
|
+
|
|
162
174
|
The Reviewer is read-only. It must conclude with either:
|
|
163
175
|
|
|
164
|
-
- **`STATUS: PASS`** + a 1–2 sentence summary
|
|
176
|
+
- **`STATUS: PASS`** + a 1–2 sentence summary (+ optional `ADVISORY` block with 4R lens findings)
|
|
165
177
|
- **`STATUS: FAIL`** + a structured list of issues, each containing:
|
|
166
178
|
1. **Discovered Issue** — what is incorrect or missing
|
|
167
179
|
2. **Violated Rule** — the specific spec document and section violated
|
|
@@ -171,6 +183,7 @@ The Reviewer is read-only. It must conclude with either:
|
|
|
171
183
|
#### 2.4 — Loop Guardrails
|
|
172
184
|
|
|
173
185
|
- **Maximum Retries:** A hard ceiling of **3 rework attempts** per task. This prevents infinite loops and token waste.
|
|
186
|
+
- **Advisory Never Gates:** `ADVISORY` (4R lens) findings are recorded in `execution.md` but never count as FAIL issues, never trigger rework, and never consume attempts. If an advisory finding is serious enough to block, the Reviewer must restate it as a spec-violation FAIL issue (or the Leader escalates it to the user as a potential spec gap via the Pivot Protocol).
|
|
174
187
|
- **Fail-Fast (FATAL_FAIL):** If the Reviewer issues a `STATUS: FATAL_FAIL`, immediately HALT the loop, mark the task `[~]`, and trigger the Pivot Protocol. Do not consume remaining rework attempts.
|
|
175
188
|
- **Structured Feedback:** On `FAIL`, pass the full Reviewer report unchanged to the next Implementer spawn. Do not paraphrase.
|
|
176
189
|
- **Escalation on HALT:** After 3 failed attempts (or a FATAL_FAIL), mark the task `[~]`, log the full loop history in `execution.md`, and present the audit trail to the user for guidance.
|
|
@@ -228,6 +241,7 @@ Each task entry must record:
|
|
|
228
241
|
- task ID and title
|
|
229
242
|
- number of Implementer attempts run
|
|
230
243
|
- for each attempt: files changed, Implementer verification command + result, Reviewer verdict + summary or full FAIL findings
|
|
244
|
+
- any `ADVISORY` (4R lens) findings from the final Reviewer verdict, labeled as advisory
|
|
231
245
|
- requirements covered
|
|
232
246
|
- decisions made
|
|
233
247
|
- issues encountered
|
|
@@ -82,6 +82,7 @@ When the spec is a **bug** — the proposal's Document Control says `Type: Bug`,
|
|
|
82
82
|
- Also read `docs/specs/kaizen-log.md` if it exists — ONLY the `## Active Lessons` table (skip `## Entries`).
|
|
83
83
|
5. Respect the repository's current package layout and naming conventions instead of assuming a fixed stack.
|
|
84
84
|
6. **CodeGraph over full reads:** If `.codegraph/` exists, use `codegraph_search` and `codegraph_context` to inspect relevant code paths instead of reading full source files or using generic `grep`/`glob`. This drastically reduces input tokens.
|
|
85
|
+
7. **Delegation Thresholds (scout research):** Beyond the constitutional docs above, apply the *Delegation Thresholds* from `.agents/leader.md` to source-code exploration in every Explore step of this command — if answering a design question requires reading **4+ full source files**, spawn a scout/Explore subagent with fresh context and consume its conclusions instead of reading the files inline. CodeGraph lookups (rule 6) do not count toward the threshold.
|
|
85
86
|
|
|
86
87
|
---
|
|
87
88
|
|
|
@@ -100,6 +100,7 @@ The Leader decides the count from the spec's depth and the independence of the s
|
|
|
100
100
|
|
|
101
101
|
1. Partition the work into concrete **suites**: backend unit, frontend unit, integration, E2E — only those the spec actually needs.
|
|
102
102
|
2. For each suite, assemble a **context slice**: the target requirements + scenarios, the negative/strict rules to assert, the repo test command, and the relevant skills.
|
|
103
|
+
- **Integration/E2E suites additionally get the `## Local Environment` contract** from `docs/infrastructure.md` (start, seed/reset, health-check commands and URLs) so Testers never guess how to bring the stack up. Run the contract's **pre-check at planning time** — if the primary route is unavailable (e.g. Docker daemon off), resolve it with the user (start it, or use the fallback route) before spawning suites, not mid-suite. If no contract exists, note the gap in the test report and recommend `/akili-constitution` (Step 6B).
|
|
103
104
|
3. Apply the **Deployment Rule** to decide inline vs delegated, and parallel vs sequential.
|
|
104
105
|
4. **Select each suite's skills as Leader — you own the decision, not a fixed list.** The spec's task skills and the project's `## Skill Map` (root `AGENTS.md`/`CLAUDE.md`) are your **defaults, not a pass-through**: judge each suite's actual nature and augment, narrow, or override them (conditional skills like `systematic-debugging` for failure-heavy suites or `ui-ux-pro-max` for UI-heavy E2E; stack skills come from the Skill Map). When you deviate from the spec's list, record a one-line reason in the test report's Summary.
|
|
105
106
|
5. **Set each suite's effort** (the *Effort dial* in `## Model Routing`, orthogonal to the tier): default `medium` for a T2 Tester, `low` for a trivial single-assertion suite, `xhigh` for complex integration/concurrency suites, `max` for correctness-critical coverage. Where the tool exposes a per-spawn effort knob, set it; otherwise steer depth in the suite's context slice. Never `max` a cheaper tier — escalate the tier instead.
|
|
@@ -87,6 +87,8 @@ Prefer the commands defined by the repo rather than assuming a fixed stack.
|
|
|
87
87
|
|
|
88
88
|
If no command exists, record the gap and recommend the smallest useful command to add.
|
|
89
89
|
|
|
90
|
+
**Environment boot smoke (optional):** when `docs/infrastructure.md` has a `## Local Environment` contract and the spec's behavior warrants it, boot the stack per the contract (pre-check first; fallback route if the primary is unavailable) and confirm the health check passes. Record boot failure as **FAIL**, a missing contract as a **WARN** gap recommending `/akili-constitution` (Step 6B).
|
|
91
|
+
|
|
90
92
|
### Phase 4: Requirement Coverage Verification
|
|
91
93
|
|
|
92
94
|
For every requirement in `requirements.md`, verify:
|
|
@@ -122,6 +124,8 @@ Check for:
|
|
|
122
124
|
- accessibility and responsive behavior for UI work
|
|
123
125
|
- security and authorization boundaries for protected flows
|
|
124
126
|
|
|
127
|
+
**4R lens sweep (advisory):** Sweep the implementation through the four execution review lenses — **readability, reliability, resilience, risk** (see `.agents/reviewer.md`). Findings that are not spec violations are reported as **advisory** notes in the validation report (they inform remediation and future specs, but only spec violations drive PASS/WARN/FAIL). Also carry forward any unresolved `ADVISORY` findings recorded in `execution.md` so they surface in the report instead of dying in the audit trail.
|
|
128
|
+
|
|
125
129
|
### Phase 6: Design Conformance
|
|
126
130
|
|
|
127
131
|
Compare the implementation against the module design and the constitutional docs where relevant.
|
|
@@ -144,7 +148,7 @@ The report must include:
|
|
|
144
148
|
4. File Existence
|
|
145
149
|
5. Build Integrity
|
|
146
150
|
6. Requirement Coverage
|
|
147
|
-
7. Linting & Code Quality
|
|
151
|
+
7. Linting & Code Quality (including 4R advisory findings, labeled as advisory)
|
|
148
152
|
8. Design Conformance
|
|
149
153
|
9. Test Evidence Summary
|
|
150
154
|
10. Agent Guide / Constitution Impact
|
|
@@ -49,6 +49,23 @@ Your sole responsibility is to coordinate execution of an approved spec by orche
|
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
52
|
+
## 📏 Delegation Thresholds (inline vs. delegate)
|
|
53
|
+
|
|
54
|
+
This table is the methodology's single source of truth for when an orchestrating agent works inline versus spawning a subagent. It applies to you in `/akili-execute` and `/akili-test`, and to the orchestrating session in research-heavy commands (`/akili-constitution`, `/akili-specify`, `/akili-audit`). The goal: the orchestrator's context stays clean for judgment — a "mega agent" that reads everything, writes everything, and reviews itself pollutes its own context and lowers quality.
|
|
55
|
+
|
|
56
|
+
| Situation | Action |
|
|
57
|
+
|-----------|--------|
|
|
58
|
+
| 1 file, a quick check, `git status`, a puntual verification | **Inline** — do it yourself |
|
|
59
|
+
| Research requires reading **4+ full files** | **Spawn a scout** (Explore-type subagent) with fresh context; consume its conclusions, not the file dumps |
|
|
60
|
+
| Writing **2+ non-trivial files** | **Spawn an Implementer** (inside the triad this is always the rule; the threshold makes it explicit outside it) |
|
|
61
|
+
| Tests / builds | **Subagent** (`/akili-test` Deployment Rule governs suite-level inline exceptions) |
|
|
62
|
+
| Review of a diff / PR | **Fresh-context Reviewer**, diff-only input — never review your own work |
|
|
63
|
+
| Multiple writers at once | Only for fully independent tasks (different files/domains); use isolated worktrees where the tool supports them |
|
|
64
|
+
|
|
65
|
+
**CodeGraph exception:** in codegraph-enabled projects, `codegraph_search` / `codegraph_context` / `codegraph_callers` lookups do **not** count toward the 4-file threshold — targeted graph lookups are precisely how the orchestrator avoids bulk file reads. The threshold counts full-file reads.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
52
69
|
## 🔁 Orchestration Sequence (per task)
|
|
53
70
|
|
|
54
71
|
1. Load spec and constitution context.
|
|
@@ -21,6 +21,14 @@ Your sole responsibility is to perform an independent, objective audit of the gi
|
|
|
21
21
|
3. **Structured Evaluation:**
|
|
22
22
|
* Compare the implementation's code changes strictly with the active task's specification files.
|
|
23
23
|
* Ensure all automated verification checks run by the Implementer are valid and passed cleanly.
|
|
24
|
+
4. **4R Review Lenses (advisory layer):**
|
|
25
|
+
* After the spec-conformance audit, sweep the diff through four lenses:
|
|
26
|
+
* **Readability** — can the next maintainer follow this without reconstructing the author's head? Naming, structure, idiom match with the surrounding code.
|
|
27
|
+
* **Reliability** — error paths, edge cases, unhandled rejections, resource cleanup.
|
|
28
|
+
* **Resilience** — behavior under partial failure: timeouts, retries, bad input, concurrent access.
|
|
29
|
+
* **Risk** — security exposure, data loss potential, migration hazards, blast radius of a mistake.
|
|
30
|
+
* **Lens findings that are not spec violations are ADVISORY**: report them in the `ADVISORY` block, never as FAIL issues. They inform the Leader and land in `execution.md`; they do not gate the task and never consume a rework attempt. A lens finding that *is* a spec violation (e.g. the TRD mandates an error-handling pattern the diff ignores) belongs in the FAIL issues list as usual.
|
|
31
|
+
* When the Leader spawns you with a **single named lens** (parallel lens-review mode, high-effort tasks), audit only that lens plus baseline spec conformance, and say so in your summary.
|
|
24
32
|
|
|
25
33
|
---
|
|
26
34
|
|
|
@@ -33,6 +41,8 @@ If the code completely matches the spec, has zero drift, and passes all tests:
|
|
|
33
41
|
```text
|
|
34
42
|
STATUS: PASS
|
|
35
43
|
SUMMARY: (Brief 1-2 sentence description of why it passes)
|
|
44
|
+
ADVISORY: (Optional — 4R lens findings that are worth recording but are not spec violations.
|
|
45
|
+
Each line: LENS: finding + suggested improvement. Omit the block when there are none.)
|
|
36
46
|
```
|
|
37
47
|
|
|
38
48
|
### Option B: FAIL
|
|
@@ -43,6 +53,8 @@ ISSUES:
|
|
|
43
53
|
1. **Discovered Issue:** (Clear description of what is incorrect or missing)
|
|
44
54
|
* **Violated Rule:** (The specific spec document and section violated, e.g. docs/ux-ui/design.md#L45)
|
|
45
55
|
* **Remediation Suggestion:** (Actionable explanation of how the Implementer must fix this)
|
|
56
|
+
ADVISORY: (Optional — same format as in PASS. Advisory items are NOT issues: the Implementer
|
|
57
|
+
is not required to address them and the Leader must not count them toward rework.)
|
|
46
58
|
```
|
|
47
59
|
|
|
48
60
|
### Option C: FATAL_FAIL (Fail-Fast)
|
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,21 @@ The format is inspired by Keep a Changelog and the repository follows semantic v
|
|
|
10
10
|
|
|
11
11
|
- No unreleased changes yet.
|
|
12
12
|
|
|
13
|
+
## [2.13.1] - 2026-07-24
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **Local Environment contract — the constitutional baseline now captures how to start the local stack.** `/akili-constitution` Step 6 evolves `docs/infrastructure.md` from a deployment-only blueprint into an environments blueprint (laptop → PROD): new **Step 6B** scaffolds a `## Local Environment` section as a **contract, not a tool** — Docker Compose as the recommended primary route plus a mandatory no-Docker fallback, a pre-check (e.g. `docker info`; on failure offer to start Docker or use the fallback, never block silently), seed/reset commands, health check, and URLs/ports. Legacy projects derive the contract from evidence (compose files, `package.json` scripts); brand-new projects are offered a dev compose scaffold. The section records the **boundary rule**: the local environment is disposable (agents may start/seed/reset it freely) while cloud/PROD deployments stay governed by the blueprint's components/IaC/CI-CD sections and are never improvised by agents. Consumers: `/akili-execute` Step 2.1 (environment-dependent verification consults the contract and runs the pre-check before spawning the Implementer), `/akili-test` Phase 1 (integration/E2E context slices carry the contract; pre-check resolves at planning time, not mid-suite), `/akili-validate` Phase 3 (optional boot smoke — boot failure FAIL, missing contract WARN), and the Step 8 root guides point agents at the contract. Design recorded in `docs/plans/2026-07-24-local-environment-contract.md`.
|
|
18
|
+
## [2.13.0] - 2026-07-24
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **Delegation Thresholds — quantified inline-vs-delegate rules for orchestrating agents.** New *Delegation Thresholds* section in the packaged `leader.md` persona (single source of truth): inline only for 1-file checks and puntual verifications; research reading **4+ full files** → spawn a scout/Explore subagent; writing **2+ non-trivial files** → Implementer; tests/builds → subagent; diff review → fresh-context Reviewer; parallel writers only for fully independent tasks. CodeGraph lookups explicitly do **not** count toward the read threshold. Referenced from `/akili-execute` (Leader's own research), `/akili-specify` (Explore steps), `/akili-constitution` (legacy-project analysis), and `/akili-audit` (codebase scan, per-area scouts). Inspired by the convergent `gentle-ai` orchestrator→minion pattern; design recorded in `docs/plans/2026-07-24-delegation-thresholds-review-lenses.md`.
|
|
23
|
+
- **4R execution review lenses (readability, reliability, resilience, risk) — advisory layer on the Reviewer.** The packaged `reviewer.md` persona now sweeps the diff through four lenses after the spec-conformance audit; findings that are not spec violations return in a new `ADVISORY` block that is recorded in `execution.md` but **never gates**: spec conformance remains the only PASS/FAIL gate, and advisory findings never consume rework attempts (new *Advisory Never Gates* guardrail in `/akili-execute`). Mode is selected by the existing effort dial — single Reviewer with lens checklist by default; **parallel lens-scoped Reviewers** at `xhigh`/`max` effort or on security/migration/data-loss surfaces, with the Leader adjudicating lens FAIL scope before consuming an attempt. `/akili-validate` Phase 5 runs the same 4R sweep as advisory report content and carries forward unresolved `ADVISORY` findings from `execution.md`.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- **`akili update` now works for pnpm installations.** The updater previously hardcoded npm: detection probed only `npm list`, so a `pnpm add -g akili-specs` install was misdetected as an ephemeral npx run and told to reinstall with npm (and would have created a duplicate npm-managed copy). `detectInstallType()` now probes both npm and pnpm trees (preferring the manager that invoked the process via `npm_config_user_agent`), the update runs the matching command (`pnpm add -g akili-specs@latest` / local equivalent), and the post-update changelog resolution uses the owning manager's `root`. README and `docs/cli.md` document the pnpm equivalents (`pnpm dlx`, `pnpm add -g` + one-time `pnpm setup`).
|
|
13
28
|
## [2.12.0] - 2026-07-24
|
|
14
29
|
|
|
15
30
|
### Changed
|
package/README.md
CHANGED
|
@@ -138,6 +138,8 @@ Run the `init` command to launch the interactive setup wizard, which will ask yo
|
|
|
138
138
|
npx akili-specs init
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
+
> **Using pnpm?** Every `npx akili-specs …` command in this guide works as `pnpm dlx akili-specs …`. The package lives on the npm registry, which pnpm consumes directly — no extra setup for one-off runs.
|
|
142
|
+
|
|
141
143
|
**Manual Installation via Flags:**
|
|
142
144
|
|
|
143
145
|
Install without `--tool` — the installer **auto-detects targets already installed on disk**
|
|
@@ -246,6 +248,15 @@ akili install --tool opencode
|
|
|
246
248
|
akili doctor --tool opencode
|
|
247
249
|
```
|
|
248
250
|
|
|
251
|
+
With pnpm (requires a one-time `pnpm setup` so `PNPM_HOME` is on your `PATH`):
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
pnpm add -g akili-specs
|
|
255
|
+
akili install
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
`akili update` detects which package manager owns the installation (npm or pnpm) and runs the matching update command.
|
|
259
|
+
|
|
249
260
|
### Install Paths
|
|
250
261
|
|
|
251
262
|
Default targets:
|
package/bin/akili.js
CHANGED
|
@@ -476,26 +476,41 @@ function installTool(tool, args) {
|
|
|
476
476
|
return { rootPath, installed, overwritten, skipped, cleaned };
|
|
477
477
|
}
|
|
478
478
|
|
|
479
|
+
// Package managers to probe, preferring the one that invoked this process
|
|
480
|
+
// (npm/pnpm/yarn set npm_config_user_agent when running bins via npx / pnpm dlx / exec).
|
|
481
|
+
function packageManagerOrder() {
|
|
482
|
+
const ua = process.env.npm_config_user_agent || "";
|
|
483
|
+
return ua.startsWith("pnpm") ? ["pnpm", "npm"] : ["npm", "pnpm"];
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// Detect how akili-specs is installed: { type: "global" | "local" | "npx", pm: "npm" | "pnpm" }.
|
|
487
|
+
// pnpm keeps its own global tree, so each manager must be probed separately.
|
|
479
488
|
function detectInstallType() {
|
|
480
|
-
|
|
481
|
-
const globalList = execSync("npm list -g akili-specs --depth=0 2>/dev/null", { encoding: "utf8" });
|
|
482
|
-
if (globalList.includes("akili-specs")) return "global";
|
|
483
|
-
} catch (e) {}
|
|
489
|
+
const managers = packageManagerOrder();
|
|
484
490
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
491
|
+
for (const pm of managers) {
|
|
492
|
+
try {
|
|
493
|
+
const globalList = execSync(`${pm} list -g akili-specs --depth=0 2>/dev/null`, { encoding: "utf8" });
|
|
494
|
+
if (globalList.includes("akili-specs")) return { type: "global", pm };
|
|
495
|
+
} catch (e) {}
|
|
496
|
+
}
|
|
489
497
|
|
|
490
|
-
|
|
498
|
+
for (const pm of managers) {
|
|
499
|
+
try {
|
|
500
|
+
const localList = execSync(`${pm} list akili-specs --depth=0 2>/dev/null`, { encoding: "utf8" });
|
|
501
|
+
if (localList.includes("akili-specs")) return { type: "local", pm };
|
|
502
|
+
} catch (e) {}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
return { type: "npx", pm: managers[0] };
|
|
491
506
|
}
|
|
492
507
|
|
|
493
508
|
// Resolve the installed akili-specs package directory (global or local) after an update.
|
|
494
509
|
// Returns the absolute path to the package root, or null if it cannot be found.
|
|
495
|
-
function resolveInstalledPackageDir(
|
|
510
|
+
function resolveInstalledPackageDir(install) {
|
|
496
511
|
try {
|
|
497
512
|
const root = execSync(
|
|
498
|
-
|
|
513
|
+
install.type === "global" ? `${install.pm} root -g 2>/dev/null` : `${install.pm} root 2>/dev/null`,
|
|
499
514
|
{ encoding: "utf8" }
|
|
500
515
|
).trim();
|
|
501
516
|
if (root) {
|
|
@@ -592,32 +607,39 @@ function printUpdateChangeSummary(packageDir, fromVersion, toVersion) {
|
|
|
592
607
|
}
|
|
593
608
|
|
|
594
609
|
function runUpdate(args) {
|
|
595
|
-
const
|
|
610
|
+
const install = detectInstallType();
|
|
596
611
|
|
|
597
|
-
console.log(
|
|
612
|
+
console.log(
|
|
613
|
+
`\n${colors.cyan}Detected installation type: ${install.type}${install.type === "npx" ? "" : ` (${install.pm})`}${colors.reset}`
|
|
614
|
+
);
|
|
598
615
|
|
|
599
|
-
if (
|
|
600
|
-
console.log(`\n${colors.yellow}You are running via npx. No persistent installation to update.${colors.reset}`);
|
|
601
|
-
console.log(`To install globally: ${colors.cyan}npm install -g akili-specs${colors.reset}`);
|
|
602
|
-
console.log(`To install locally: ${colors.cyan}npm install akili-specs${colors.reset}`);
|
|
616
|
+
if (install.type === "npx") {
|
|
617
|
+
console.log(`\n${colors.yellow}You are running via a package runner (npx / pnpm dlx). No persistent installation to update.${colors.reset}`);
|
|
618
|
+
console.log(`To install globally: ${colors.cyan}npm install -g akili-specs${colors.reset} or ${colors.cyan}pnpm add -g akili-specs${colors.reset}`);
|
|
619
|
+
console.log(`To install locally: ${colors.cyan}npm install akili-specs${colors.reset} or ${colors.cyan}pnpm add akili-specs${colors.reset}`);
|
|
603
620
|
return;
|
|
604
621
|
}
|
|
605
622
|
|
|
606
623
|
// Capture the version before updating so we can show what changed afterward.
|
|
607
624
|
const versionBefore = currentVersion;
|
|
608
625
|
|
|
609
|
-
console.log(`\n${colors.yellow}Updating
|
|
626
|
+
console.log(`\n${colors.yellow}Updating package via ${install.pm}...${colors.reset}`);
|
|
627
|
+
|
|
628
|
+
const updateCommand =
|
|
629
|
+
install.pm === "pnpm"
|
|
630
|
+
? install.type === "global"
|
|
631
|
+
? "pnpm add -g akili-specs@latest"
|
|
632
|
+
: "pnpm add akili-specs@latest"
|
|
633
|
+
: install.type === "global"
|
|
634
|
+
? "npm install -g akili-specs@latest"
|
|
635
|
+
: "npm install akili-specs@latest";
|
|
610
636
|
|
|
611
637
|
try {
|
|
612
|
-
|
|
613
|
-
execSync("npm install -g akili-specs@latest", { stdio: "inherit" });
|
|
614
|
-
} else {
|
|
615
|
-
execSync("npm install akili-specs@latest", { stdio: "inherit" });
|
|
616
|
-
}
|
|
638
|
+
execSync(updateCommand, { stdio: "inherit" });
|
|
617
639
|
|
|
618
|
-
console.log(`\n${colors.green}
|
|
640
|
+
console.log(`\n${colors.green}Package updated successfully via ${install.pm}.${colors.reset}`);
|
|
619
641
|
} catch (e) {
|
|
620
|
-
console.error(`\n${colors.red}Failed to update
|
|
642
|
+
console.error(`\n${colors.red}Failed to update package (ran: ${updateCommand}).${colors.reset}`);
|
|
621
643
|
process.exit(1);
|
|
622
644
|
}
|
|
623
645
|
|
|
@@ -628,18 +650,19 @@ function runUpdate(args) {
|
|
|
628
650
|
// After reinstalling, read the freshly installed version and show the changelog
|
|
629
651
|
// between the old and new versions. The running process still has the old code
|
|
630
652
|
// loaded, so we read version + CHANGELOG from the installed package on disk.
|
|
631
|
-
const packageDir = resolveInstalledPackageDir(
|
|
653
|
+
const packageDir = resolveInstalledPackageDir(install);
|
|
632
654
|
const versionAfter = packageDir ? readInstalledVersion(packageDir) : null;
|
|
633
655
|
printUpdateChangeSummary(packageDir, versionBefore, versionAfter);
|
|
634
656
|
|
|
635
657
|
console.log(`\n${colors.cyan}${"─".repeat(56)}${colors.reset}`);
|
|
636
658
|
console.log(`${colors.cyan}Update Summary${colors.reset}`);
|
|
659
|
+
const installLabel = `${install.type} install via ${install.pm}`;
|
|
637
660
|
if (versionAfter && versionAfter !== versionBefore) {
|
|
638
|
-
console.log(` Package: ${versionBefore} → ${colors.green}${versionAfter}${colors.reset} (${
|
|
661
|
+
console.log(` Package: ${versionBefore} → ${colors.green}${versionAfter}${colors.reset} (${installLabel})`);
|
|
639
662
|
} else if (versionAfter) {
|
|
640
|
-
console.log(` Package: already up to date at ${colors.green}v${versionAfter}${colors.reset} (${
|
|
663
|
+
console.log(` Package: already up to date at ${colors.green}v${versionAfter}${colors.reset} (${installLabel})`);
|
|
641
664
|
} else {
|
|
642
|
-
console.log(` Package: updated from v${versionBefore} (${
|
|
665
|
+
console.log(` Package: updated from v${versionBefore} (${installLabel}; new version could not be read)`);
|
|
643
666
|
}
|
|
644
667
|
const updatedTools = args.resolvedTools || selectedTools(args);
|
|
645
668
|
console.log(` Files: reinstalled with --force for ${updatedTools.join(", ")}${args.autoDetected ? " (auto-detected)" : ""} (see Install Summary above)`);
|
package/docs/cli.md
CHANGED
|
@@ -42,6 +42,8 @@ npm install -g akili-specs
|
|
|
42
42
|
akili install --tool all
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
pnpm works everywhere npm does: `pnpm dlx akili-specs …` for one-off runs, `pnpm add -g akili-specs` for a global install (after a one-time `pnpm setup`).
|
|
46
|
+
|
|
45
47
|
To install directly into the local project workspace instead of globally, use the `--local` flag:
|
|
46
48
|
|
|
47
49
|
```bash
|
|
@@ -54,7 +56,7 @@ akili install --tool both --local
|
|
|
54
56
|
|---|---|
|
|
55
57
|
| `akili init` | Interactive setup wizard for installation |
|
|
56
58
|
| `akili install` | Install commands, skills, and helper resources |
|
|
57
|
-
| `akili update` | Update the
|
|
59
|
+
| `akili update` | Update the package to the latest version (via the package manager that owns the install — npm or pnpm), reinstall files, and print a changelog summary of what changed |
|
|
58
60
|
| `akili list` | List packaged commands, skills, and helper resources |
|
|
59
61
|
| `akili doctor` | Check whether expected files are installed |
|
|
60
62
|
| `akili help` | Show help |
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Proposal: Delegation Thresholds + Execution Review Lenses
|
|
2
|
+
|
|
3
|
+
**Status:** Implemented (2026-07-24) — shipped in the release following v2.12.0; see `CHANGELOG.md` → Unreleased
|
|
4
|
+
**Date:** 2026-07-24
|
|
5
|
+
**Author:** Leader session (reviewed against `gentle-ai` orchestrator→minion pattern)
|
|
6
|
+
|
|
7
|
+
Adopt two practices observed in a convergent SDD methodology (`gentle-ai` / `sdd-orchestrator`) that AKILI-SPECS currently lacks: **quantified inline-vs-delegate thresholds** for the orchestrating agent, and **concrete review lenses (4R)** layered onto the execution Reviewer. Both are additive — no existing gate, loop guardrail, or persona contract changes.
|
|
8
|
+
|
|
9
|
+
## Decision summary
|
|
10
|
+
|
|
11
|
+
| # | Change | Where it lands | Risk |
|
|
12
|
+
|---|--------|----------------|------|
|
|
13
|
+
| 1 | Delegation Thresholds rule block | `.claude/templates/leader.md`, `/akili-execute`, `/akili-specify`, `/akili-constitution`, `/akili-audit` | Low — codifies existing instinct as numbers |
|
|
14
|
+
| 2 | 4R review lenses (readability, reliability, resilience, risk) | `.claude/templates/reviewer.md`, `/akili-execute` Step 2.3, `/akili-validate` | Low–medium — widens Reviewer scope; mitigated by keeping spec-conformance as the only blocking gate by default |
|
|
15
|
+
|
|
16
|
+
## 1. Delegation Thresholds
|
|
17
|
+
|
|
18
|
+
### Problem
|
|
19
|
+
|
|
20
|
+
The Leader triad in `/akili-execute` always delegates, but the methodology gives no numeric guidance for the orchestrator's *own* work in research-heavy commands (`/akili-constitution`, `/akili-specify`, `/akili-audit`). Today the orchestrating agent reads everything inline, polluting its context — exactly the "mega agente leyendo todo" anti-pattern.
|
|
21
|
+
|
|
22
|
+
### Proposed rule block
|
|
23
|
+
|
|
24
|
+
Add a shared **Delegation Thresholds** section (single source of truth in `.claude/templates/leader.md`, referenced — not copied — by the commands):
|
|
25
|
+
|
|
26
|
+
| Situation | Action |
|
|
27
|
+
|-----------|--------|
|
|
28
|
+
| 1 file, quick check, `git status`, puntual verification | Inline — do it yourself |
|
|
29
|
+
| Research requires reading **4+ files** | Spawn a scout/Explore subagent with fresh context; consume its conclusions, not the file dumps |
|
|
30
|
+
| Writing **2+ non-trivial files** | Spawn an Implementer (already the rule inside `/akili-execute`; now explicit everywhere) |
|
|
31
|
+
| Tests/builds | Subagent (`/akili-test` already complies) |
|
|
32
|
+
| Review of a diff/PR | Fresh-context Reviewer, diff-only input (already the rule; restated here for completeness) |
|
|
33
|
+
| Parallel writers | Only for fully independent tasks; isolated worktrees if the tool supports them (existing Step 1.4 rule, unchanged) |
|
|
34
|
+
|
|
35
|
+
### Rationale
|
|
36
|
+
|
|
37
|
+
- Cheap, actionable heuristic: the agent doesn't have to judge "is my context getting big?" — it counts files.
|
|
38
|
+
- CodeGraph note: in codegraph-enabled projects, a `codegraph_context`/`codegraph_search` lookup does **not** count toward the 4-file threshold — that is precisely what the graph is for. The threshold counts full-file reads.
|
|
39
|
+
|
|
40
|
+
## 2. Execution Review Lenses (4R)
|
|
41
|
+
|
|
42
|
+
### Problem
|
|
43
|
+
|
|
44
|
+
The execution Reviewer audits **spec conformance** only. That is stronger than a generic reviewer on traceability, but mono-lens: a diff can pass spec conformance while being unreadable, fragile, or risky. `judgment-day` covers multi-perspective review, but only at design time (`/akili-specify`), not at execution time.
|
|
45
|
+
|
|
46
|
+
### Proposed design
|
|
47
|
+
|
|
48
|
+
Two modes, selected by the existing **effort dial** — no new configuration surface:
|
|
49
|
+
|
|
50
|
+
| Mode | When | Mechanics |
|
|
51
|
+
|------|------|-----------|
|
|
52
|
+
| **Lens checklist** (default) | Effort `low`/`medium`/`high` | The single Reviewer's brief adds a 4R checklist — readability, reliability, resilience, risk — reported as advisory findings. **Spec conformance remains the only PASS/FAIL gate.** 4R findings that are not spec violations go to `execution.md` as `ADVISORY`, never trigger a rework attempt |
|
|
53
|
+
| **Parallel lens reviewers** | Effort `xhigh`/`max`, or task tagged security/migration/data-loss | Spawn 2–4 lens-scoped Reviewers in parallel (each gets the diff + one lens). Any lens may return FAIL; the Leader adjudicates whether a lens FAIL is in-scope for the task before consuming a rework attempt |
|
|
54
|
+
|
|
55
|
+
### Guardrails (why this won't bloat the loop)
|
|
56
|
+
|
|
57
|
+
- Advisory findings never consume rework attempts — the 3-attempt ceiling still binds to spec conformance only.
|
|
58
|
+
- Parallel mode is opt-in via the effort dial, which the Leader already sets per task; no default token-cost increase.
|
|
59
|
+
- The Reviewer stays read-only and diff-only; lenses change *what it looks for*, not *what it receives*.
|
|
60
|
+
|
|
61
|
+
## Out of scope
|
|
62
|
+
|
|
63
|
+
- No change to `judgment-day` (design-time review is already multi-perspective).
|
|
64
|
+
- No change to the rework loop structure, FATAL_FAIL, or Pivot Protocol.
|
|
65
|
+
- No new agent personas — lenses are briefs, not files.
|
|
66
|
+
|
|
67
|
+
## Implementation checklist
|
|
68
|
+
|
|
69
|
+
- [x] Add **Delegation Thresholds** section to `.claude/templates/leader.md` (source of truth).
|
|
70
|
+
- [x] Reference the thresholds from `/akili-execute` (Multi-Agent Triad section), `/akili-specify`, `/akili-constitution`, `/akili-audit` (research steps).
|
|
71
|
+
- [x] Add 4R lens checklist + `ADVISORY` output contract to `.claude/templates/reviewer.md`.
|
|
72
|
+
- [x] Update `/akili-execute` Step 2.3 with the two-mode lens table and effort-dial trigger.
|
|
73
|
+
- [x] Update `/akili-validate` to include 4R advisory reporting in its final audit (Phase 5 sweep + report section 7).
|
|
74
|
+
- [x] `CHANGELOG.md` → `Unreleased` entry (methodology change → next release is **minor**).
|
|
75
|
+
- [ ] Smoke: run `/akili-execute` on a sample spec and confirm ADVISORY findings land in `execution.md` without consuming attempts (pending first real-project run).
|
|
76
|
+
|
|
77
|
+
## Next step
|
|
78
|
+
|
|
79
|
+
Live-fire smoke on the next real `/akili-execute` run, then release as part of the next **minor** version.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Proposal: Local Environment Contract
|
|
2
|
+
|
|
3
|
+
**Status:** Implemented (2026-07-24) — see `CHANGELOG.md` → Unreleased
|
|
4
|
+
**Date:** 2026-07-24
|
|
5
|
+
**Author:** Leader session
|
|
6
|
+
|
|
7
|
+
Add a **Local Environment contract** to the constitutional baseline: a tool-agnostic section in `docs/infrastructure.md` that captures how to start the project's local stack (database, backend, frontend) — with Docker Compose as the recommended primary route and a documented no-Docker fallback. Agents (Implementer, Tester, validators) consume the contract instead of guessing start commands from `package.json`.
|
|
8
|
+
|
|
9
|
+
## Decision summary
|
|
10
|
+
|
|
11
|
+
| # | Decision | Rationale |
|
|
12
|
+
|---|----------|-----------|
|
|
13
|
+
| 1 | The methodology defines a **contract, not a tool** | Docker Compose is the recommended primary route, but not every user has Docker (or has it running); the contract always documents a fallback |
|
|
14
|
+
| 2 | Lives in `docs/infrastructure.md` as `## Local Environment` | The doc evolves from "deployment blueprint" to "environments blueprint — laptop to PROD"; one home, no new file |
|
|
15
|
+
| 3 | Pre-check before use, never block | `docker info` fails (daemon off / not installed) → tell the user and offer: start Docker, or use the fallback route |
|
|
16
|
+
| 4 | Local is disposable; cloud is governed | Agents may freely start/reset the local environment; deployments to cloud/PROD follow the existing infrastructure blueprint (TRD tier → components → ADR) and are **never improvised by agents** |
|
|
17
|
+
| 5 | No `/akili-deploy` automation for now | Deploys are high-risk; the governed blueprint + checklist yields more than premature automation |
|
|
18
|
+
|
|
19
|
+
## The contract (scaffolded shape)
|
|
20
|
+
|
|
21
|
+
| Element | Example |
|
|
22
|
+
|---------|---------|
|
|
23
|
+
| Primary route (recommended) | `docker compose up -d` |
|
|
24
|
+
| Fallback route (no Docker) | `npm run dev` + local Postgres or a cloud dev database |
|
|
25
|
+
| Pre-check | `docker info` — on failure, surface it and use/offer the fallback |
|
|
26
|
+
| Seed / reset data | explicit commands |
|
|
27
|
+
| Health check | how to know the stack is up |
|
|
28
|
+
| URLs / ports | frontend, backend, database |
|
|
29
|
+
|
|
30
|
+
## Where it lands
|
|
31
|
+
|
|
32
|
+
| Surface | Change |
|
|
33
|
+
|---------|--------|
|
|
34
|
+
| `/akili-constitution` Step 6 | Scaffold `## Local Environment` into `docs/infrastructure.md`; legacy mode derives it from evidence (existing compose files, `package.json` scripts); brand-new mode offers to scaffold a dev compose file; states the local-vs-cloud boundary rule |
|
|
35
|
+
| `/akili-constitution` Step 8 | Root guides briefly point agents at the contract |
|
|
36
|
+
| `/akili-execute` Step 2.1 | Tasks whose verification needs a running environment consult the contract + run the pre-check before spawning the Implementer |
|
|
37
|
+
| `/akili-test` Phase 1 | Integration/E2E suites get the contract in their context slice; pre-check happens at planning, not mid-suite |
|
|
38
|
+
| `/akili-validate` Phase 3 | Build Integrity may include an environment boot smoke per the contract |
|
|
39
|
+
|
|
40
|
+
## Out of scope
|
|
41
|
+
|
|
42
|
+
- No changes to the cloud/PROD sections of `docs/infrastructure.md` (Step 6 structure items 1–5 unchanged).
|
|
43
|
+
- No `/akili-deploy` command.
|
|
44
|
+
- No requirement that projects adopt Docker — the contract is satisfied by any documented primary + fallback pair.
|
|
45
|
+
|
|
46
|
+
## Implementation checklist
|
|
47
|
+
|
|
48
|
+
- [x] `/akili-constitution` Step 6: `## Local Environment` scaffold + legacy derivation + dev-compose offer + boundary rule.
|
|
49
|
+
- [x] `/akili-constitution` Step 8: root-guide reference to the contract.
|
|
50
|
+
- [x] `/akili-execute` Step 2.1: consult contract + pre-check for environment-dependent verification.
|
|
51
|
+
- [x] `/akili-test` Phase 1: contract in integration/E2E context slices.
|
|
52
|
+
- [x] `/akili-validate` Phase 3: optional boot smoke.
|
|
53
|
+
- [x] `CHANGELOG.md` → Unreleased.
|
package/package.json
CHANGED