akili-specs 2.4.2 → 2.5.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/.claude/commands/akili-constitution.md +17 -12
- package/.claude/commands/akili-propose.md +98 -16
- package/.claude/commands/akili-quick.md +125 -0
- package/.claude/commands/akili-specify.md +18 -4
- package/.claude/commands/akili-test.md +67 -32
- package/.claude/commands/akili-validate.md +16 -6
- package/.claude/templates/tester.md +74 -0
- package/CHANGELOG.md +15 -0
- package/README.md +13 -7
- package/bin/akili.js +1 -1
- package/docs/README.md +1 -1
- package/docs/cli.md +3 -2
- package/docs/commands/README.md +4 -2
- package/docs/commands/akili-constitution.md +5 -4
- package/docs/commands/akili-propose.md +26 -2
- package/docs/commands/akili-quick.md +54 -0
- package/docs/commands/akili-specify.md +2 -0
- package/docs/commands/akili-test.md +13 -1
- package/docs/commands/akili-validate.md +3 -2
- package/docs/flow.md +57 -3
- package/docs/model-routing.md +5 -2
- package/package.json +1 -1
|
@@ -31,7 +31,7 @@ For all three modes:
|
|
|
31
31
|
3. Ensure `docs/specs/general-setup/` exists.
|
|
32
32
|
4. Ensure root `CLAUDE.md` exists or is enhanced.
|
|
33
33
|
5. Ensure root `AGENTS.md` exists or is enhanced.
|
|
34
|
-
6. Ensure project-level `.agents/` exists with `leader.md`, `implementer.md`, and `
|
|
34
|
+
6. Ensure project-level `.agents/` exists with `leader.md`, `implementer.md`, `reviewer.md`, and `tester.md` (see Step 7B).
|
|
35
35
|
7. Default behavior is to enhance existing project docs in place instead of creating parallel copies.
|
|
36
36
|
|
|
37
37
|
The constitutional baseline must cover these files:
|
|
@@ -48,6 +48,7 @@ The constitutional baseline must cover these files:
|
|
|
48
48
|
- `.agents/leader.md`
|
|
49
49
|
- `.agents/implementer.md`
|
|
50
50
|
- `.agents/reviewer.md`
|
|
51
|
+
- `.agents/tester.md`
|
|
51
52
|
|
|
52
53
|
**Mode-specific drafting policy:**
|
|
53
54
|
|
|
@@ -301,9 +302,9 @@ This index is what keeps agent context inheritance working: agents load the root
|
|
|
301
302
|
|
|
302
303
|
---
|
|
303
304
|
|
|
304
|
-
### Step 8B: Scaffold the `.agents/`
|
|
305
|
+
### Step 8B: Scaffold the `.agents/` Personas
|
|
305
306
|
|
|
306
|
-
Establish or upgrade the project-level `.agents/` directory that powers the AKILI multi-agent
|
|
307
|
+
Establish or upgrade the project-level `.agents/` directory that powers the AKILI multi-agent harness: the Leader → Implementer → Reviewer loop used by `/akili-execute`, and the Leader → Tester(s) harness used by `/akili-test`.
|
|
307
308
|
|
|
308
309
|
Target layout:
|
|
309
310
|
|
|
@@ -312,23 +313,24 @@ Target layout:
|
|
|
312
313
|
├── .agents/
|
|
313
314
|
│ ├── leader.md # Orchestration playbook, task tracking, .agents references
|
|
314
315
|
│ ├── implementer.md # Coding guidelines, testing standards, design-token discipline
|
|
315
|
-
│
|
|
316
|
+
│ ├── reviewer.md # Spec conformance audit, design-token compliance, structured FAIL output
|
|
317
|
+
│ └── tester.md # Per-suite QA authoring/execution, bounded inner loop, PASS/FAIL/PRODUCT_BUG output
|
|
316
318
|
```
|
|
317
319
|
|
|
318
320
|
**Source of truth for templates:**
|
|
319
321
|
|
|
320
322
|
The packaged methodology ships default personas under `akili/templates/` inside the active tool's config directory:
|
|
321
323
|
|
|
322
|
-
- Claude Code: `~/.claude/akili/templates/{leader,implementer,reviewer}.md`
|
|
323
|
-
- OpenCode: `~/.config/opencode/akili/templates/{leader,implementer,reviewer}.md`
|
|
324
|
-
- Antigravity: `~/.gemini/config/akili/templates/{leader,implementer,reviewer}.md`
|
|
324
|
+
- Claude Code: `~/.claude/akili/templates/{leader,implementer,reviewer,tester}.md`
|
|
325
|
+
- OpenCode: `~/.config/opencode/akili/templates/{leader,implementer,reviewer,tester}.md`
|
|
326
|
+
- Antigravity: `~/.gemini/config/akili/templates/{leader,implementer,reviewer,tester}.md`
|
|
325
327
|
|
|
326
|
-
If the packaged templates are available, prefer copying them as the seed; otherwise draft equivalent personas inline using the structure documented in this command and the `/akili-execute`
|
|
328
|
+
If the packaged templates are available, prefer copying them as the seed; otherwise draft equivalent personas inline using the structure documented in this command and the `/akili-execute` and `/akili-test` commands.
|
|
327
329
|
|
|
328
330
|
**Mode-specific scaffolding policy:**
|
|
329
331
|
|
|
330
|
-
- **Brand-new (Seed Setup):** copy the
|
|
331
|
-
- **Legacy (Discovery Setup):** copy the
|
|
332
|
+
- **Brand-new (Seed Setup):** copy the four default templates verbatim into `.agents/`. Tailor only the project name and detected stack if known.
|
|
333
|
+
- **Legacy (Discovery Setup):** copy the four default templates, then customize them based on the codebase scan — inject detected design-token paths, the test command, the lint command, framework conventions, and any directory boundaries discovered. The Reviewer persona should know which `design.md` and `trd.md` paths to cite; the Tester persona should know the repo's real test runner and command.
|
|
332
334
|
- **Active AKILI-SPECS (Safe Update):** **do not overwrite** existing `.agents/*.md` files. For each missing file, install the default template (customized to the detected stack). For each existing file, read it, identify gaps versus the current packaged template (e.g. missing rework-loop instructions, missing PASS/FAIL output contract, missing AKILI commit standard), and append a minimal upgrade block that preserves all existing custom instructions.
|
|
333
335
|
|
|
334
336
|
**Required content per persona:**
|
|
@@ -336,6 +338,7 @@ If the packaged templates are available, prefer copying them as the seed; otherw
|
|
|
336
338
|
- **`leader.md`** — orchestration sequence, rework loop with 3-attempt ceiling, structured FAIL handoff to the next Implementer spawn, `execution.md` audit-trail format, `tasks.md` status transitions, AKILI commit standard, Pivot Protocol escalation.
|
|
337
339
|
- **`implementer.md`** — strict context alignment to constitution + spec, incremental focus (no scope creep), aesthetics and design-token compliance from `docs/ux-ui/design.md`, verification rigor (must run the task's verification command before reporting), structured completion report.
|
|
338
340
|
- **`reviewer.md`** — read-only role, audit checklist (requirement conformance, design-token compliance, technical compliance, stability), structured PASS/FAIL output where every FAIL item lists *Discovered Issue*, *Violated Rule*, and *Remediation Suggestion*.
|
|
341
|
+
- **`tester.md`** — single-suite scope (backend unit, frontend unit, integration, or E2E), thin per-suite context, explicit coverage of negative constraints (`BUT it must NOT`) and strict validations (`AND IT MUST`), bounded self-correction inner loop (max 3), distinction between a test defect (fix the test) and a product defect (keep the test red, report `PRODUCT_BUG`), and structured `PASS`/`FAIL`/`PRODUCT_BUG` output with a per-scenario coverage slice. Author ≠ tester: prefer a different model than the Implementer.
|
|
339
342
|
|
|
340
343
|
**Cross-tool compatibility:**
|
|
341
344
|
|
|
@@ -367,7 +370,9 @@ project guides so the project does not depend on the package's `docs/` after ins
|
|
|
367
370
|
T6 Multimodal) with one-line definitions.
|
|
368
371
|
3. The phase→tier mapping for the real AKILI phases, with the `/akili-execute` triad split into
|
|
369
372
|
Leader (T5), Implementer (T2), and Reviewer (T3), and an explicit note that the Reviewer model
|
|
370
|
-
must differ from the Implementer model.
|
|
373
|
+
must differ from the Implementer model. `/akili-test` is likewise split into its Leader (T5,
|
|
374
|
+
orchestration) and Tester(s) (T2, test authoring), with a note to prefer a Tester model different
|
|
375
|
+
from the Implementer (author ≠ tester).
|
|
371
376
|
4. The editable model registry table with columns `Tier | Claude Code | OpenCode | Fallback`.
|
|
372
377
|
Fill the Claude Code column for the user's plan (e.g. PRO: Opus reserved for T1/T3, Sonnet as the
|
|
373
378
|
T2/T4/T6 workhorse, Haiku for T5). Fill the OpenCode column from the user's confirmed roster; if
|
|
@@ -410,4 +415,4 @@ Ask the user whether to approve or request changes. If changes are requested, re
|
|
|
410
415
|
|
|
411
416
|
## Outcome
|
|
412
417
|
|
|
413
|
-
At the end of `/akili-constitution`, the repository should have a project-level baseline that future `/akili-specify`, `/akili-execute`, `/akili-validate`, and `/akili-test` work can rely on without guessing the structure or conventions. The `.agents/`
|
|
418
|
+
At the end of `/akili-constitution`, the repository should have a project-level baseline that future `/akili-specify`, `/akili-execute`, `/akili-validate`, and `/akili-test` work can rely on without guessing the structure or conventions. The `.agents/` personas must be in place so that `/akili-execute` can run the Leader → Implementer → Reviewer rework loop and `/akili-test` can run the Leader → Tester(s) harness without falling back to inline personas. The root guides must also carry a `## Model Routing` registry (Step 8C) so each phase runs on a model matched to its demand, with the Reviewer on a different model than the Implementer.
|
|
@@ -67,13 +67,46 @@ Do not create `requirements.md`, `design.md`, or `tasks.md` in this command unle
|
|
|
67
67
|
4. Read nearby or related specs under `docs/specs/`.
|
|
68
68
|
5. **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.
|
|
69
69
|
|
|
70
|
-
### Step 1:
|
|
70
|
+
### Step 1: Classify Request Type & Route
|
|
71
71
|
|
|
72
|
-
Before
|
|
72
|
+
`/akili-propose` is the single entry point for change work. Before clarifying details, **classify the request** so it takes the right track. Infer the type from the user's wording; if it is ambiguous, ask **one** short question: *"Is this a bug to fix, a new feature/change, or a trivial cosmetic tweak?"*
|
|
73
|
+
|
|
74
|
+
| Type | Signals | Route |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| **Trivial** | Cosmetic/copy-only, one-line, a color/text/label tweak using existing tokens | Recommend `/akili-quick <name>` instead of a full proposal. Stop here unless the user still wants a proposal. |
|
|
77
|
+
| **Feature / Change** | An intent ("I want X", "add/support/enable Y") | Continue with the standard proposal flow below. |
|
|
78
|
+
| **Bug** | A symptom ("X is broken/failing/wrong", "regression", "error", "used to work") | Continue with the proposal flow, but follow the **Bug Track** (diagnosis-first) described below. |
|
|
79
|
+
|
|
80
|
+
The proposal `frontmatter`/header should record the detected type as `Type: Bug | Change | Trivial` in Document Control so `/akili-specify` and `/akili-execute` inherit it. For bugs, prefer the `bugfix/<name>` spec path taxonomy.
|
|
81
|
+
|
|
82
|
+
**Bug Track (diagnosis before fix):** A bug is not a feature — you start from a symptom, not an intent, so you must understand *why* before proposing *how*. For a bug:
|
|
83
|
+
|
|
84
|
+
- Load the `systematic-debugging` skill.
|
|
85
|
+
- Capture the **observed symptom**, concrete **reproduction steps**, and the **confirmed root cause** (not a guess) before recommending any fix.
|
|
86
|
+
- Assess **impact/scope** (what else the root cause touches).
|
|
87
|
+
- Recommend a **fix strategy** and route it by size: a genuinely cosmetic one-liner → `/akili-quick`; anything with logic, data, or a behavior change → `/akili-specify` (Lite) in Bug Mode, which requires a regression test.
|
|
88
|
+
- These go in the proposal's **Bug Diagnosis** section (Step 2), which replaces the Requirement Delta Preview for bugs.
|
|
89
|
+
|
|
90
|
+
### Step 1.1: Clarify Intent, Sources & Scope Chunking
|
|
91
|
+
|
|
92
|
+
For **Feature / Change** and **Bug** requests, clarify the details. Ask the user about the source of the requirements and any visual designs:
|
|
73
93
|
|
|
74
94
|
1. **Requirement Source:** Ask if they have a **Jira ticket** (if they do, suggest using the **Jira MCP** to automatically extract the description, acceptance criteria, and comments created by the BA) or if they prefer to paste/write the context directly.
|
|
75
95
|
2. **Visual Designs / Mockups:** Ask if there is a **Figma link** or any visual mockup available. If they provide a Figma URL, suggest using the **Figma MCP** to extract the design details, components, and layout information.
|
|
76
96
|
|
|
97
|
+
#### Mockup Fallback (No Visual Input)
|
|
98
|
+
|
|
99
|
+
If the change has any UI surface AND the user provides **no** Figma link, image, or existing design, offer to generate a mockup directly in the agent before specifying. This is **opt-in and recommended** — never mandatory. The user can always decline and continue without a visual.
|
|
100
|
+
|
|
101
|
+
- Recommend generating the mockup with the `stitch-design` skill (Stitch MCP), which produces high-fidelity HTML + screenshots and can synthesize a `.stitch/DESIGN.md` source of truth.
|
|
102
|
+
- If the user accepts, load `stitch-design` and generate the mockup for the primary screens/flows in scope. Persist the artifacts under the spec so `/akili-specify` can consume them:
|
|
103
|
+
- Save the generated screens under `docs/specs/$SPEC_PATH/mockup/` (or reference the `.stitch/designs` location if the skill writes there).
|
|
104
|
+
- Record the exact paths and any `.stitch/DESIGN.md` reference in the proposal's **Visual Reference** section (see Step 2).
|
|
105
|
+
- If the user declines, note "no visual reference" in the proposal and continue. Do not block the proposal on a mockup.
|
|
106
|
+
- If Stitch MCP is unavailable, still offer to sketch a lightweight self-contained HTML mockup saved under `docs/specs/$SPEC_PATH/mockup/` so intent stays reviewable.
|
|
107
|
+
|
|
108
|
+
A generated mockup counts as **visual design context** for `/akili-specify`, exactly like a Figma link would.
|
|
109
|
+
|
|
77
110
|
Use `brainstorming` and, when helpful, `product-manager-toolkit` to clarify:
|
|
78
111
|
|
|
79
112
|
- problem being solved
|
|
@@ -95,23 +128,63 @@ Ask focused questions only when the proposal would otherwise depend on unstable
|
|
|
95
128
|
|
|
96
129
|
Create a concise proposal with this structure:
|
|
97
130
|
|
|
98
|
-
1. Document Control
|
|
131
|
+
1. Document Control (include `Type: Bug | Change | Trivial`)
|
|
99
132
|
2. Intent
|
|
100
133
|
3. Problem / Current Behavior
|
|
101
134
|
4. Proposed Outcome
|
|
102
135
|
5. Scope
|
|
103
136
|
6. Non-Goals
|
|
104
137
|
7. Affected Users, Systems, And Specs
|
|
105
|
-
8.
|
|
106
|
-
9.
|
|
107
|
-
10.
|
|
108
|
-
11.
|
|
109
|
-
12.
|
|
110
|
-
13.
|
|
138
|
+
8. Visual Reference
|
|
139
|
+
9. **Bug Diagnosis** (Bug track) *or* **Requirement Delta Preview** (Change track)
|
|
140
|
+
10. Approach Options
|
|
141
|
+
11. Recommended Approach
|
|
142
|
+
12. Risks, Dependencies, And Open Questions
|
|
143
|
+
13. Success Criteria
|
|
144
|
+
14. Next Step
|
|
145
|
+
|
|
146
|
+
### Visual Reference
|
|
147
|
+
|
|
148
|
+
Capture whatever visual source backs this change so `/akili-specify` can convert it into requirements, design, and tasks. Use the state that applies:
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
## Visual Reference
|
|
111
152
|
|
|
112
|
-
|
|
153
|
+
- Source: [Figma | Generated mockup (stitch-design) | Self-contained HTML mockup | None]
|
|
154
|
+
- Location: <e.g. Figma URL, docs/specs/<spec-path>/mockup/, .stitch/designs, or .stitch/DESIGN.md>
|
|
155
|
+
- Notes: screens/flows covered, or why no visual is needed (e.g. backend-only change).
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
When a mockup was generated during Step 1, list the concrete artifact paths here so downstream commands treat it as approved visual design context.
|
|
113
159
|
|
|
114
|
-
|
|
160
|
+
### Bug Diagnosis (Bug track only)
|
|
161
|
+
|
|
162
|
+
For a **Bug** request, replace the Requirement Delta Preview with a diagnosis produced using the `systematic-debugging` skill. Do not propose a fix until the root cause is confirmed — a fix built on a guessed cause is the top source of non-fixes and regressions.
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
## Bug Diagnosis
|
|
166
|
+
|
|
167
|
+
### Observed Symptom
|
|
168
|
+
- What is broken, from the user's perspective (error, wrong output, crash, regression).
|
|
169
|
+
|
|
170
|
+
### Reproduction Steps
|
|
171
|
+
- Deterministic steps to reproduce (environment, inputs, expected vs actual).
|
|
172
|
+
|
|
173
|
+
### Root Cause (confirmed)
|
|
174
|
+
- The actual underlying cause, confirmed by investigation — not a hypothesis. Cite the code path / commit / condition responsible.
|
|
175
|
+
|
|
176
|
+
### Impact & Scope
|
|
177
|
+
- What else the same root cause affects; blast radius; data integrity or security implications.
|
|
178
|
+
|
|
179
|
+
### Fix Strategy
|
|
180
|
+
- The smallest safe correction, and the route: `/akili-quick` only if the fix is genuinely cosmetic with no logic; otherwise `/akili-specify` (Lite) in Bug Mode, which requires a regression test (red before the fix, green after).
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
If the root cause cannot be confirmed yet, say so explicitly and keep the proposal open for further investigation rather than proposing a speculative fix.
|
|
184
|
+
|
|
185
|
+
### Requirement Delta Preview (Change track only)
|
|
186
|
+
|
|
187
|
+
When a **Feature / Change** affects existing behavior, include a lightweight preview using these sections where relevant:
|
|
115
188
|
|
|
116
189
|
```markdown
|
|
117
190
|
## Requirement Delta Preview
|
|
@@ -137,22 +210,29 @@ For non-trivial work, include 2 or 3 options with trade-offs. Recommend one opti
|
|
|
137
210
|
|
|
138
211
|
### Next Step
|
|
139
212
|
|
|
140
|
-
End the proposal with the exact next command:
|
|
213
|
+
End the proposal with the exact next command, matched to the detected type:
|
|
141
214
|
|
|
142
215
|
```text
|
|
143
216
|
/akili-specify $SPEC_PATH
|
|
144
217
|
```
|
|
145
218
|
|
|
219
|
+
- **Change track:** `/akili-specify $SPEC_PATH` (standard depth for the work).
|
|
220
|
+
- **Bug track:** `/akili-specify $SPEC_PATH` in **Bug Mode** — specify converts the confirmed root cause into a fix plan and a mandatory regression test. If the diagnosis showed the fix is genuinely cosmetic with no logic, recommend `/akili-quick <name>` instead.
|
|
221
|
+
- **Trivial track:** the request should not have reached a full proposal — recommend `/akili-quick <name>`.
|
|
222
|
+
|
|
146
223
|
## Review Checklist
|
|
147
224
|
|
|
148
225
|
Before presenting the proposal, verify:
|
|
149
226
|
|
|
150
227
|
- [ ] The problem is clear.
|
|
228
|
+
- [ ] The request type (Bug / Change / Trivial) is detected and recorded in Document Control.
|
|
229
|
+
- [ ] For a bug: reproduction steps and a **confirmed** root cause are documented (not a guess).
|
|
151
230
|
- [ ] Scope and non-goals are explicit.
|
|
152
231
|
- [ ] The proposed outcome is behavior-focused.
|
|
153
232
|
- [ ] Affected specs or code areas are listed.
|
|
233
|
+
- [ ] The Visual Reference records the design source (Figma, generated mockup, or none) with its location.
|
|
154
234
|
- [ ] Risks and open questions are visible.
|
|
155
|
-
- [ ] The next command
|
|
235
|
+
- [ ] The next command matches the detected type (specify, specify Bug Mode, or quick).
|
|
156
236
|
|
|
157
237
|
## Report To User
|
|
158
238
|
|
|
@@ -160,8 +240,10 @@ Generate a short, easy-to-understand summary (summary facil de entender de lo qu
|
|
|
160
240
|
|
|
161
241
|
1. proposal path
|
|
162
242
|
2. resolved spec path
|
|
163
|
-
3.
|
|
164
|
-
4.
|
|
165
|
-
5.
|
|
243
|
+
3. detected request type (Bug / Change / Trivial)
|
|
244
|
+
4. recommended approach (for a bug: the confirmed root cause and fix strategy)
|
|
245
|
+
5. visual reference status (Figma, generated mockup with its path, or none)
|
|
246
|
+
6. main risks or open questions
|
|
247
|
+
7. next command to run after approval (matched to the type)
|
|
166
248
|
|
|
167
249
|
Ask whether to approve the proposal, revise it, or stop.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fast-track a trivial, low-risk change (copy edit, color tweak, small style/text change) with minimal traceability and automatic escalation when it is not actually trivial.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Fast-Track a Trivial AKILI-SPECS Change
|
|
6
|
+
|
|
7
|
+
Make a small, low-risk change in a single step — without generating the full `requirements.md` / `design.md` / `tasks.md` / `execution.md` / `test-report.md` / `validation-report.md` set — while still preserving AKILI's spec-to-code traceability through a `[SPEC:quick/<name>]` commit and a one-line log entry.
|
|
8
|
+
|
|
9
|
+
This command exists for changes that are genuinely trivial: change a button color, fix a title's text, add a paragraph, adjust a label, tweak spacing. It is **not** a shortcut for real features, bugfixes with logic changes, or anything touching data, API, auth, or shared contracts. When a change turns out to be bigger than it looked, this command **stops and escalates** to the proper flow.
|
|
10
|
+
|
|
11
|
+
> **Recommended model tier:** T2 Coder (a small, direct edit + verification). See the `## Model Routing` registry in the project's `AGENTS.md` / `CLAUDE.md`. No deep-reasoning tier is required for a trivial change.
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
/akili-quick <short-change-name> [free-text description of the change]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Examples:**
|
|
20
|
+
|
|
21
|
+
- `/akili-quick login-button-color make the primary login button use the brand accent token`
|
|
22
|
+
- `/akili-quick hero-title fix the typo in the homepage hero title`
|
|
23
|
+
- `/akili-quick pricing-paragraph add a short paragraph under the pricing table explaining the annual discount`
|
|
24
|
+
|
|
25
|
+
## Arguments
|
|
26
|
+
|
|
27
|
+
- `$ARGUMENTS` — a short kebab-case change name, optionally followed by a free-text description.
|
|
28
|
+
- The first token is the change name → the traceability slug is `quick/<change-name>`.
|
|
29
|
+
- The rest is the change description. If no description is given, ask the user for one before touching code.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Triviality Gate (run FIRST)
|
|
34
|
+
|
|
35
|
+
Before making any edit, confirm the change qualifies as trivial. A change is eligible ONLY if **all** of these hold:
|
|
36
|
+
|
|
37
|
+
- **Cosmetic or copy-only:** text/label/content edits, color/spacing/style-token tweaks, static markup additions.
|
|
38
|
+
- **No behavior change:** no new or modified logic, control flow, conditionals, state, or side effects.
|
|
39
|
+
- **No data / API / auth / contract change:** no schema, endpoint, request/response shape, permission, or shared-package surface change.
|
|
40
|
+
- **Small and local:** roughly **≤ ~20 LOC** and confined to **one component/file** (or a couple of tightly related files).
|
|
41
|
+
- **Design-token safe:** any color/spacing/typography change uses an existing approved token from `docs/ux-ui/design.md` — not a new hardcoded value.
|
|
42
|
+
|
|
43
|
+
### Automatic Escalation
|
|
44
|
+
|
|
45
|
+
If the change fails **any** gate criterion, do **not** fast-track it. Stop and recommend the right entry point:
|
|
46
|
+
|
|
47
|
+
- Small but with logic, or a real bugfix → `/akili-specify <spec-path>` in **Lite** depth.
|
|
48
|
+
- A **bug** (something is broken, not just a cosmetic edit) whose fix touches logic or behavior → `/akili-propose <name>` so the root cause is diagnosed first (Bug Track), then `/akili-specify` (Lite) in Bug Mode with a mandatory regression test. A purely cosmetic bug (e.g. a visible typo) may stay in `/akili-quick`.
|
|
49
|
+
- Non-trivial, risky, cross-cutting, or uncertain scope → `/akili-propose <change-name>` first.
|
|
50
|
+
- Introduces a **new** design token or visual pattern not in `docs/ux-ui/design.md` → route through `/akili-propose` (Visual Reference) or `/akili-specify` so the token is designed, not improvised.
|
|
51
|
+
|
|
52
|
+
State clearly which criterion failed and which command to run instead. Never silently downgrade a real change into a quick edit.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Behavior
|
|
57
|
+
|
|
58
|
+
### Step 0: Load Minimal Context
|
|
59
|
+
|
|
60
|
+
Keep context small — this is a trivial change, not a full spec run.
|
|
61
|
+
|
|
62
|
+
1. Read only what the change needs:
|
|
63
|
+
- the target file(s) for the change
|
|
64
|
+
- `docs/ux-ui/design.md` **only if** the change involves a color, spacing, typography, or other design token (to use the approved token)
|
|
65
|
+
- root `CLAUDE.md` / `AGENTS.md` only if repo conventions are unclear for the edit
|
|
66
|
+
2. **CodeGraph over full reads:** if `.codegraph/` exists, use `codegraph_search` to locate the exact symbol/component instead of scanning files.
|
|
67
|
+
3. Do **not** read the full constitution set, `docs/prd.md`, or `docs/trd/trd.md` for a trivial edit.
|
|
68
|
+
|
|
69
|
+
### Step 1: Confirm & Make the Change
|
|
70
|
+
|
|
71
|
+
1. Restate the change in one sentence and confirm the target file(s) and the exact before/after (e.g. old hex/token → new token, old text → new text). If the description is ambiguous, ask one focused question — do not guess.
|
|
72
|
+
2. Apply the smallest possible edit that satisfies the request. No refactors, no adjacent "while I'm here" cleanups, no scope creep.
|
|
73
|
+
3. Preserve all unrelated code, comments, and formatting.
|
|
74
|
+
|
|
75
|
+
### Step 2: Verify
|
|
76
|
+
|
|
77
|
+
1. Run the lightest applicable check for the change:
|
|
78
|
+
- a lint / type-check / build for the touched file(s), or
|
|
79
|
+
- the component's existing test if one already covers the surface, or
|
|
80
|
+
- a clear manual verification note when no automated check is practical (e.g. "renders the hero title as 'X'").
|
|
81
|
+
2. Do **not** author a new test suite here. If the change genuinely needs new test coverage, that is a signal it is not trivial → escalate per the gate.
|
|
82
|
+
|
|
83
|
+
### Step 3: Record Traceability & Commit
|
|
84
|
+
|
|
85
|
+
Preserve spec-to-code traceability with the minimum footprint:
|
|
86
|
+
|
|
87
|
+
1. Append a **one-line entry** to `docs/specs/quick/quick-log.md` (create the file with a header if it does not exist):
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
# Quick Changes Log
|
|
91
|
+
|
|
92
|
+
One-line record of trivial, fast-tracked changes made with `/akili-quick`.
|
|
93
|
+
|
|
94
|
+
| Date | Change | Files | Verification | Commit |
|
|
95
|
+
|---|---|---|---|---|
|
|
96
|
+
| 2026-07-19 | quick/login-button-color — use brand accent token on primary login button | src/components/LoginButton.tsx | `npm run lint` pass | [SPEC:quick/login-button-color] |
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
2. Commit with the AKILI spec-reference standard, using the quick slug:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
git commit -m "[SPEC:quick/<change-name>] <concise description>"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Do **not** create `requirements.md`, `design.md`, `tasks.md`, `execution.md`, `test-report.md`, or `validation-report.md` for a quick change.
|
|
106
|
+
|
|
107
|
+
### Step 4: Report to User
|
|
108
|
+
|
|
109
|
+
Generate a short, easy-to-understand summary (summary facil de entender de lo que se hizo) including:
|
|
110
|
+
|
|
111
|
+
1. what changed (before → after) and the file(s) touched
|
|
112
|
+
2. which design token was used, if applicable
|
|
113
|
+
3. the verification performed and its result
|
|
114
|
+
4. the traceability slug and commit prefix used
|
|
115
|
+
5. a reminder that if follow-up work grows beyond a trivial tweak, it should move to `/akili-propose` or `/akili-specify`
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Rules
|
|
120
|
+
|
|
121
|
+
- Traceability is not optional: every quick change gets a `[SPEC:quick/<name>]` commit and a one-line log entry.
|
|
122
|
+
- Respect design tokens: never hardcode a new color/size to "just make it match"; use the approved token or escalate.
|
|
123
|
+
- One change per invocation. Batch unrelated tweaks into separate `/akili-quick` runs or a proper spec.
|
|
124
|
+
- When in doubt about triviality, escalate. A wrongly fast-tracked change costs more than a Lite spec.
|
|
125
|
+
- Keep the edit and the context minimal — this command's whole value is speed and low token cost.
|
|
@@ -45,6 +45,15 @@ Use the lightest useful depth:
|
|
|
45
45
|
|
|
46
46
|
Lite mode still requires testable requirements, scenarios, and done criteria.
|
|
47
47
|
|
|
48
|
+
### Bug Mode
|
|
49
|
+
|
|
50
|
+
When the spec is a **bug** — the proposal's Document Control says `Type: Bug`, the spec path is `bugfix/*`, or the user frames it as a defect — specify runs in **Bug Mode** on top of the chosen depth (usually Lite):
|
|
51
|
+
|
|
52
|
+
- Treat the proposal's **Bug Diagnosis** (confirmed root cause + reproduction) as the source of truth. If no proposal exists, first confirm the root cause with the `systematic-debugging` skill before writing the fix plan — do not specify a fix for a guessed cause.
|
|
53
|
+
- Frame requirements around the **corrected behavior**, with a scenario that encodes the exact failing case from the reproduction steps.
|
|
54
|
+
- **A regression test is mandatory.** At least one task must add a test that reproduces the bug — **red before the fix, green after** — and the requirement's scenario must map to it. This is non-negotiable evidence that the bug is actually fixed and stays fixed.
|
|
55
|
+
- Keep the fix scoped to the root cause; do not fold unrelated cleanup into a bugfix.
|
|
56
|
+
|
|
48
57
|
## Behavior
|
|
49
58
|
|
|
50
59
|
### Step 0: Setup
|
|
@@ -60,7 +69,10 @@ Lite mode still requires testable requirements, scenarios, and done criteria.
|
|
|
60
69
|
- `docs/trd/trd.md` (legacy fallback: `docs/detailed-design/detailed-design.md`)
|
|
61
70
|
- The constitutional templates in `docs/specs/general-setup/` (`requirements.md`, `design.md`, `task.md`)
|
|
62
71
|
- Package-level `CLAUDE.md` files if they exist
|
|
63
|
-
3. Read `docs/specs/$ARGUMENTS/proposal.md` if it exists.
|
|
72
|
+
3. Read `docs/specs/$ARGUMENTS/proposal.md` if it exists. If it has a **Visual Reference** section, treat the referenced source as approved visual design context and load it:
|
|
73
|
+
- A Figma URL → use the Figma MCP when available.
|
|
74
|
+
- A generated mockup under `docs/specs/$ARGUMENTS/mockup/`, `.stitch/designs`, or a `.stitch/DESIGN.md` reference → read those artifacts (screens, HTML, design tokens) and use `stitch-design` to interpret them.
|
|
75
|
+
- Any mockup produced during `/akili-propose` counts as visual design context for the `Design Impact` steps below, exactly like a Figma link.
|
|
64
76
|
4. Read nearby or dependent specs under `docs/specs/` that overlap with the requested path.
|
|
65
77
|
5. Respect the repository's current package layout and naming conventions instead of assuming a fixed stack.
|
|
66
78
|
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.
|
|
@@ -108,7 +120,7 @@ Guidelines:
|
|
|
108
120
|
- use measurable, testable language
|
|
109
121
|
- separate goals from requirements
|
|
110
122
|
- write behavior contracts, not implementation plans
|
|
111
|
-
- **Design Impact:** IF the proposal includes
|
|
123
|
+
- **Design Impact:** IF the proposal includes any visual design context (Figma, an agent-generated mockup, or a `.stitch/DESIGN.md` reference), ensure UI states (loading, error, empty, success) and responsive behaviors are captured as explicit requirements.
|
|
112
124
|
- include concrete scenarios for key requirements using `GIVEN`, `WHEN`, `THEN`, and optional `AND`
|
|
113
125
|
- make requirement strength explicit with `SHALL`, `MUST`, `SHOULD`, or `MAY` where useful
|
|
114
126
|
|
|
@@ -197,7 +209,7 @@ Guidelines:
|
|
|
197
209
|
- extend existing architecture rather than replacing it
|
|
198
210
|
- use current repo paths and package names
|
|
199
211
|
- include UI/UX decisions when the feature affects screens, flows, or components
|
|
200
|
-
- **Design Impact:** IF the proposal includes
|
|
212
|
+
- **Design Impact:** IF the proposal includes any visual design context (Figma, an agent-generated mockup, or a `.stitch/DESIGN.md` reference), break down the visual design into a clear Frontend Component Architecture (e.g., atomic components) and define the necessary Design Tokens (colors, typography). When the source is a generated mockup, derive the tokens from its artifacts (HTML/screens or `.stitch/DESIGN.md`).
|
|
201
213
|
- tie design sections back to requirements explicitly
|
|
202
214
|
- record meaningful trade-offs and rejected alternatives for non-trivial decisions
|
|
203
215
|
- call out data, API, security, error-handling, observability, and rollback concerns when relevant
|
|
@@ -260,7 +272,8 @@ Task quality rules:
|
|
|
260
272
|
- every task must reference the requirements it satisfies
|
|
261
273
|
- every task must include a concrete verification command or manual check
|
|
262
274
|
- tasks should explicitly address the negative constraints (`BUT it must NOT`) and strict validations (`AND IT MUST`) defined in their respective requirement scenarios
|
|
263
|
-
- **
|
|
275
|
+
- **Bug Mode:** IF this is a bug, one task MUST add a regression test that reproduces the defect (red before the fix, green after) and reference the corrected-behavior requirement. Its verification is that the test fails on current code and passes after the fix.
|
|
276
|
+
- **Design Impact:** IF the proposal includes any visual design context (Figma, an agent-generated mockup, or a `.stitch/DESIGN.md` reference), ensure frontend tasks are atomic, focusing on specific UI components, layouts, styling, and states extracted from the design or mockup artifacts.
|
|
264
277
|
- tasks should avoid broad instructions like "implement feature" without scoped subtasks
|
|
265
278
|
- tasks may be grouped by phase, but dependencies must remain explicit
|
|
266
279
|
|
|
@@ -300,6 +313,7 @@ After all three documents are approved, verify:
|
|
|
300
313
|
- [ ] Every task references requirements and design sections
|
|
301
314
|
- [ ] Every task has clear done criteria and verification guidance that accounts for the negative scenarios
|
|
302
315
|
- [ ] The task dependency graph has no circular dependencies
|
|
316
|
+
- [ ] For a bug (Bug Mode): the root cause is reflected in the requirements and at least one task adds a regression test (red before, green after)
|
|
303
317
|
- [ ] The spec path matches the repo's chosen taxonomy under `docs/specs/`
|
|
304
318
|
- [ ] Only real, available skills are referenced in tasks
|
|
305
319
|
|
|
@@ -4,9 +4,11 @@ description: Write and execute comprehensive automated unit/integration tests fo
|
|
|
4
4
|
|
|
5
5
|
# Test AKILI-SPECS Implementation
|
|
6
6
|
|
|
7
|
-
Run automated and, when needed, manual tests against a spec path's implementation. Produce `test-report.md` with results, requirement coverage, scenario traceability, and failures.
|
|
7
|
+
Run automated and, when needed, manual tests against a spec path's implementation using the AKILI **Leader → Tester(s)** multi-agent harness. Produce `test-report.md` with results, requirement coverage, scenario traceability, and failures.
|
|
8
8
|
|
|
9
|
-
Testing should prove the behavior promised in `requirements.md`, not only increase test count.
|
|
9
|
+
In this command you act as the **Leader** (Orchestrator). You partition testing into per-suite units, delegate each unit to a focused **Tester** subagent, aggregate their structured reports, and assemble the final `test-report.md`. Testing should prove the behavior promised in `requirements.md`, not only increase test count.
|
|
10
|
+
|
|
11
|
+
> **Recommended model tier:** Leader on T5 Fast-Cheap (orchestration — writes no tests), each Tester on T2 Coder (test authoring + verification). See the `## Model Routing` registry in the project's `AGENTS.md` / `CLAUDE.md`. Prefer a Tester model that differs from the Implementer that wrote the code (author ≠ tester reduces confirmation bias).
|
|
10
12
|
|
|
11
13
|
## Usage
|
|
12
14
|
|
|
@@ -35,9 +37,41 @@ Create or update `docs/specs/$ARGUMENTS/test-report.md` with:
|
|
|
35
37
|
|
|
36
38
|
---
|
|
37
39
|
|
|
40
|
+
## Multi-Agent Harness
|
|
41
|
+
|
|
42
|
+
The Leader delegates concrete test authoring to the **Tester** persona defined in the project's `.agents/` directory:
|
|
43
|
+
|
|
44
|
+
- `.agents/tester.md` — the persona used when delegating a single test suite (backend unit, frontend unit, integration, or E2E).
|
|
45
|
+
|
|
46
|
+
If `.agents/tester.md` is missing, run `/akili-constitution` first to scaffold it. Do not invent the persona inline — the constitution is the source of truth.
|
|
47
|
+
|
|
48
|
+
**Delegation mechanism by tool:**
|
|
49
|
+
|
|
50
|
+
- **Claude Code / OpenCode:** spawn a focused subagent (or sub-prompt context) seeded with `tester.md` plus the suite's context slice.
|
|
51
|
+
- **Google Antigravity:** invoke `invoke_subagent` (or the equivalent) using the prompt read from `.agents/tester.md`.
|
|
52
|
+
|
|
53
|
+
**Token discipline — thin context per Tester (this is the core saving):**
|
|
54
|
+
|
|
55
|
+
- Give each Tester **only its slice**: its assigned suite, the specific requirements + Given/When/Then scenarios that suite must prove, and the project's test command. Never hand a Tester the full `requirements.md`/`design.md`/`tasks.md` unless a scenario genuinely needs it.
|
|
56
|
+
- Each Tester's context is discarded when it finishes, so per-suite contexts never accumulate in one growing window.
|
|
57
|
+
- The Leader writes no tests itself unless the Deployment Rule below says to run inline, or a Tester exhausts its inner loop and the user approves a Leader fallback.
|
|
58
|
+
|
|
59
|
+
**Deployment Rule (how many Testers to spawn):**
|
|
60
|
+
|
|
61
|
+
| Situation | Action |
|
|
62
|
+
|---|---|
|
|
63
|
+
| Lite depth, or a single trivial suite (e.g. one bugfix test) | **Run inline** — the Leader authors it directly. Spawning a subagent would cost more tokens than the work saves. |
|
|
64
|
+
| Standard / Full depth with one substantial suite | Spawn **one** Tester for that suite. |
|
|
65
|
+
| Multiple suites that are **independent** (touch different domains/files — e.g. backend unit vs frontend unit vs E2E) | Spawn **one Tester per suite, in parallel**. |
|
|
66
|
+
| Multiple suites that **share files or fixtures** | Spawn Testers **sequentially** (or a single Tester covering them) to avoid conflicting writes. |
|
|
67
|
+
|
|
68
|
+
The Leader decides the count from the spec's depth and the independence of the suites — favor the fewest spawns that still keep each context small and each suite independent.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
38
72
|
## Behavior
|
|
39
73
|
|
|
40
|
-
### Phase 0: Load Context
|
|
74
|
+
### Phase 0: Load Context (Leader)
|
|
41
75
|
|
|
42
76
|
**Token Optimization (Prompt Caching):** To maximize prompt caching, always read the constitutional baseline documents FIRST and in the exact same order across all sessions before reading task-specific files.
|
|
43
77
|
|
|
@@ -52,47 +86,44 @@ Create or update `docs/specs/$ARGUMENTS/test-report.md` with:
|
|
|
52
86
|
- `docs/specs/$ARGUMENTS/requirements.md`
|
|
53
87
|
- `docs/specs/$ARGUMENTS/design.md`
|
|
54
88
|
- `docs/specs/$ARGUMENTS/tasks.md`
|
|
55
|
-
3.
|
|
56
|
-
4.
|
|
57
|
-
|
|
58
|
-
### Phase 1: Unit Tests
|
|
89
|
+
3. Read the Tester persona `.agents/tester.md` (stop and direct the user to `/akili-constitution` if it is missing).
|
|
90
|
+
4. Identify backend, frontend, and end-to-end scope from the design and tasks.
|
|
91
|
+
5. Extract key requirements, Given/When/Then scenarios, negative constraints (`BUT it must NOT`), and strict validations (`AND IT MUST`) from `requirements.md`.
|
|
59
92
|
|
|
60
|
-
|
|
61
|
-
- Create or improve frontend unit tests where needed.
|
|
62
|
-
- Explicitly test negative constraints (`BUT it must NOT`) and strict boundary validations (`AND IT MUST`).
|
|
63
|
-
- Map tests back to requirements and scenarios.
|
|
64
|
-
- Prefer focused tests that prove one behavior clearly over broad tests with unclear intent.
|
|
93
|
+
### Phase 1: Plan Suites & Delegation (Leader)
|
|
65
94
|
|
|
66
|
-
|
|
95
|
+
1. Partition the work into concrete **suites**: backend unit, frontend unit, integration, E2E — only those the spec actually needs.
|
|
96
|
+
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.
|
|
97
|
+
3. Apply the **Deployment Rule** to decide inline vs delegated, and parallel vs sequential.
|
|
98
|
+
4. Assign skills per suite as needed:
|
|
99
|
+
- `nestjs-expert`, `systematic-debugging` — backend
|
|
100
|
+
- `vercel-react-best-practices`, `react-doctor` — frontend
|
|
101
|
+
- `ui-ux-pro-max` (fallback `frontend-design`) — UI-heavy E2E
|
|
67
102
|
|
|
68
|
-
|
|
69
|
-
- `systematic-debugging`
|
|
70
|
-
- `vercel-react-best-practices`
|
|
71
|
-
- `react-doctor`
|
|
103
|
+
### Phase 2: Execute Suites (Tester per suite)
|
|
72
104
|
|
|
73
|
-
|
|
105
|
+
For each suite, the assigned Tester (or the Leader inline) must:
|
|
74
106
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
107
|
+
- Author focused tests that prove one behavior clearly.
|
|
108
|
+
- **Explicitly** cover negative constraints (`BUT it must NOT`) and strict boundary validations (`AND IT MUST`).
|
|
109
|
+
- Map every test back to its requirement and scenario.
|
|
110
|
+
- Run the suite and apply the **bounded self-correction inner loop** (max 3 attempts):
|
|
111
|
+
- fix genuine **test defects** and re-run;
|
|
112
|
+
- keep a failing test that reveals a genuine **product defect** red, and report it as `STATUS: PRODUCT_BUG` instead of rewriting it to pass.
|
|
113
|
+
- Prefer unit tests for internal logic, integration tests for cross-module/API behavior, and E2E only for critical user journeys — not every small component state.
|
|
78
114
|
|
|
79
|
-
|
|
115
|
+
Each Tester concludes with exactly one status — `PASS`, `FAIL`, or `PRODUCT_BUG` — plus a per-scenario coverage slice, per `.agents/tester.md`.
|
|
80
116
|
|
|
81
|
-
|
|
82
|
-
- If the work is UI-heavy, prefer `ui-ux-pro-max` when available.
|
|
83
|
-
- Otherwise use `frontend-design` and the UX/UI design doc as the UX reference.
|
|
84
|
-
- Use E2E tests for critical user journeys, not every small component state.
|
|
117
|
+
### Phase 3: Aggregate & Traceability (Leader)
|
|
85
118
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
Create a requirement-to-test matrix so every key requirement has test evidence or an explicit gap. Ensure negative constraints and strict validations are mapped.
|
|
119
|
+
Collect every Tester's coverage slice into one requirement-to-test matrix so every key requirement has test evidence or an explicit gap. Ensure negative constraints and strict validations are mapped. Carry through any `PRODUCT_BUG` findings as failures with remediation.
|
|
89
120
|
|
|
90
121
|
Recommended matrix columns:
|
|
91
122
|
|
|
92
123
|
| Requirement | Scenario | Test Type | Test File or Command | Result | Gap or Notes |
|
|
93
124
|
|---|---|---|---|---|---|
|
|
94
125
|
|
|
95
|
-
### Phase
|
|
126
|
+
### Phase 4: Generate Test Report (Leader)
|
|
96
127
|
|
|
97
128
|
Create `docs/specs/$ARGUMENTS/test-report.md`.
|
|
98
129
|
|
|
@@ -112,9 +143,11 @@ The report must include:
|
|
|
112
143
|
8. Remediation
|
|
113
144
|
9. Accepted Gaps, if any
|
|
114
145
|
|
|
115
|
-
|
|
146
|
+
When Testers were delegated, record in the Summary how many suites ran, how many Testers were spawned (and whether in parallel), and any suite run inline.
|
|
147
|
+
|
|
148
|
+
### Phase 5: Report to User (Leader)
|
|
116
149
|
|
|
117
|
-
Generate a short, easy-to-understand summary (summary facil de entender de lo que se hizo) of the overall test status, test counts, requirement coverage, scenario gaps, and top failures. If failures exist, ask whether to fix failures, add missing tests, fix all, or keep only the report.
|
|
150
|
+
Generate a short, easy-to-understand summary (summary facil de entender de lo que se hizo) of the overall test status, test counts, requirement coverage, scenario gaps, product bugs found, and top failures. If failures exist, ask whether to fix failures, add missing tests, fix all, or keep only the report.
|
|
118
151
|
|
|
119
152
|
---
|
|
120
153
|
|
|
@@ -139,3 +172,5 @@ If `ui-ux-pro-max` is unavailable, use `frontend-design` plus the UX/UI design d
|
|
|
139
172
|
- Prefer repository-specific test commands over hardcoded framework assumptions.
|
|
140
173
|
- If a test is flaky, record the flake and avoid treating it as passing evidence until stabilized.
|
|
141
174
|
- If no automated test is practical, document the manual verification steps and why automation was deferred.
|
|
175
|
+
- A Tester must never rewrite a test to hide a genuine product defect; a real failure is reported as `PRODUCT_BUG`, not silenced.
|
|
176
|
+
- Do not delegate trivial single-test work to a subagent when running it inline is cheaper (see the Deployment Rule).
|