@pilotspace/add 1.17.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/GETTING-STARTED.md +20 -64
  3. package/README.md +128 -56
  4. package/agents/add.md +68 -0
  5. package/bin/cli.js +86 -21
  6. package/package.json +2 -3
  7. package/personas-teacher/VENDOR.md +6 -0
  8. package/skill/add/SKILL.md +100 -134
  9. package/skill/add/adopt.md +28 -0
  10. package/skill/add/beyond.md +36 -0
  11. package/skill/add/deltas.md +25 -2
  12. package/skill/add/design.md +56 -74
  13. package/skill/add/{report-template.md → gate-udd.md} +28 -38
  14. package/skill/add/intake.md +56 -25
  15. package/skill/add/loop.md +32 -19
  16. package/skill/add/phases/build.md +78 -0
  17. package/skill/add/phases/direction.md +280 -0
  18. package/skill/add/phases/verify.md +160 -0
  19. package/skill/add/run.md +11 -18
  20. package/skill/add/terms.md +18 -0
  21. package/tooling/add.py +2383 -3261
  22. package/tooling/add_engine/autonomy.py +2 -37
  23. package/tooling/add_engine/components.py +4 -87
  24. package/tooling/add_engine/constants.py +145 -91
  25. package/tooling/add_engine/guidelines.py +9 -11
  26. package/tooling/add_engine/io_state.py +69 -2
  27. package/tooling/add_engine/predicates.py +90 -2
  28. package/tooling/add_engine/search.py +6 -6
  29. package/tooling/add_engine/taskdoc.py +15 -10
  30. package/tooling/templates/CONVENTIONS.md.tmpl +1 -1
  31. package/tooling/templates/GLOSSARY.md.tmpl +10 -4
  32. package/tooling/templates/MILESTONE.md.tmpl +20 -16
  33. package/tooling/templates/PLAN.md.tmpl +128 -0
  34. package/tooling/templates/PROJECT.md.tmpl +6 -1
  35. package/tooling/templates/PROMPT.persona.md.tmpl +17 -21
  36. package/tooling/templates/personas/_template.md.tmpl +33 -29
  37. package/tooling/templates/personas/build-engineer.md.tmpl +45 -0
  38. package/tooling/templates/personas/data-steward.md.tmpl +45 -0
  39. package/tooling/templates/personas/evidence-verifier.md.tmpl +45 -0
  40. package/tooling/templates/personas/platform-engineer.md.tmpl +45 -0
  41. package/tooling/templates/personas/product-lead.md.tmpl +51 -0
  42. package/tooling/templates/personas/quality-auditor.md.tmpl +47 -0
  43. package/tooling/templates/personas/release-manager.md.tmpl +52 -0
  44. package/tooling/templates/personas/security-gatekeeper.md.tmpl +45 -0
  45. package/tooling/templates/personas/software-architect.md.tmpl +45 -0
  46. package/tooling/templates/personas/stream-orchestrator.md.tmpl +44 -0
  47. package/tooling/templates/personas/technical-writer.md.tmpl +49 -0
  48. package/tooling/templates/personas/ux-experience-lead.md.tmpl +48 -0
  49. package/tooling/templates/specs/SPEC.md.tmpl +18 -0
  50. package/tooling/templates/udd-wireframe.md +1 -1
  51. package/agents/add-advisor.md +0 -31
  52. package/agents/add-build.md +0 -29
  53. package/agents/add-design.md +0 -32
  54. package/agents/add-persona.md +0 -33
  55. package/agents/add-verify.md +0 -36
  56. package/docs/00-introduction.md +0 -46
  57. package/docs/01-principles.md +0 -71
  58. package/docs/02-the-flow.md +0 -113
  59. package/docs/03-step-1-specify.md +0 -123
  60. package/docs/04-step-2-scenarios.md +0 -90
  61. package/docs/05-step-3-contract.md +0 -80
  62. package/docs/06-step-4-tests.md +0 -85
  63. package/docs/07-step-5-build.md +0 -82
  64. package/docs/08-step-6-verify.md +0 -105
  65. package/docs/09-the-loop.md +0 -75
  66. package/docs/10-setup-and-stages.md +0 -118
  67. package/docs/11-governance.md +0 -91
  68. package/docs/12-roles.md +0 -99
  69. package/docs/13-adoption.md +0 -67
  70. package/docs/14-foundation.md +0 -142
  71. package/docs/15-foundations-and-lineage.md +0 -106
  72. package/docs/16-releasing.md +0 -182
  73. package/docs/17-components.md +0 -143
  74. package/docs/18-personas.md +0 -80
  75. package/docs/README.md +0 -77
  76. package/docs/add-competencies.png +0 -0
  77. package/docs/add-flow.png +0 -0
  78. package/docs/add-foundation.png +0 -0
  79. package/docs/add-hierarchy.png +0 -0
  80. package/docs/add-milestone-task-lifecycle.png +0 -0
  81. package/docs/add-task-growth-wheel.png +0 -0
  82. package/docs/appendix-a-templates.md +0 -88
  83. package/docs/appendix-b-prompts.md +0 -154
  84. package/docs/appendix-c-glossary.md +0 -176
  85. package/docs/appendix-d-worked-example.md +0 -231
  86. package/docs/appendix-e-checklists.md +0 -92
  87. package/docs/appendix-f-requirements-matrix.md +0 -171
  88. package/docs/appendix-g-references.md +0 -106
  89. package/skill/add/advisor.md +0 -81
  90. package/skill/add/compact-foundation.md +0 -40
  91. package/skill/add/components.md +0 -52
  92. package/skill/add/confidence.md +0 -32
  93. package/skill/add/fold.md +0 -63
  94. package/skill/add/graduate.md +0 -39
  95. package/skill/add/phases/0-ground.md +0 -64
  96. package/skill/add/phases/0-setup.md +0 -103
  97. package/skill/add/phases/1-specify.md +0 -61
  98. package/skill/add/phases/2-scenarios.md +0 -48
  99. package/skill/add/phases/3-contract.md +0 -60
  100. package/skill/add/phases/4-tests.md +0 -61
  101. package/skill/add/phases/5-build.md +0 -62
  102. package/skill/add/phases/6-verify.md +0 -69
  103. package/skill/add/phases/7-observe.md +0 -45
  104. package/skill/add/phases/fast-lane.md +0 -34
  105. package/skill/add/release.md +0 -61
  106. package/skill/add/scope.md +0 -72
  107. package/skill/add/self-improve.md +0 -20
  108. package/skill/add/sensitivity.md +0 -51
  109. package/skill/add/setup-review.md +0 -48
  110. package/skill/add/soul.md +0 -58
  111. package/skill/add/streams.md +0 -269
  112. package/tooling/add_engine/release.py +0 -86
  113. package/tooling/templates/TASK.fast.md.tmpl +0 -78
  114. package/tooling/templates/TASK.md.tmpl +0 -181
package/CHANGELOG.md CHANGED
@@ -4,6 +4,150 @@ All notable changes to the ADD method (`@pilotspace/add` on npm,
4
4
  `pilotspace-add` on PyPI) are documented here. The format follows
5
5
  [Keep a Changelog](https://keepachangelog.com/); versions follow semver.
6
6
 
7
+ ## [2.0.0] — 2026-07-18
8
+
9
+ Major: ADD 2.0 — a skill-led method on a thin state kernel. The skill drives
10
+ the loop; `add.py` records state and guards the seams; **personas carry the
11
+ playbooks** the platform pillars used to hard-code.
12
+
13
+ - **engine-kernel-trim** — the verb surface collapses 54 → 31: the platform
14
+ pillars die as engine code (streams/waves/DAG orchestration · components/
15
+ federation · release/graduation engines · gate-audit machinery · fold/compact
16
+ consolidation · team verbs · the SPEC-delta trio · doctor/worktree-prep) and
17
+ their workflows live on as seed-persona playbooks. `add.py` shrinks
18
+ 9,558 → 6,596 lines; the phase guides fold 17 → 12.
19
+ - **PLAN.md** — the task doc is `PLAN.md` everywhere (was TASK.md; the
20
+ template is `PLAN.md.tmpl`), and the new one-shot **`add.py migrate`**
21
+ converts a 1.x board: renames live + archived task docs, seeds any missing
22
+ living spec, idempotent, refuses `migrate_conflict` before touching anything.
23
+ - **5-DD living specs** — `.add/specs/` (domain · system · experience ·
24
+ quality · method) with **`add.py delta-append`** as the in-flight lesson
25
+ channel; the fold ceremony is gone.
26
+ - **book-stops-shipping** — the AIDD book publishes at
27
+ https://pilotspace.github.io/ADD/ and never installs; engine chapter
28
+ pointers deep-link the site (`BOOK_URL`), installers drop the docs tree,
29
+ and a legacy `.add/docs/` from 1.x is user-space (never swept).
30
+ - **phase-collapse-3** — the lifecycle is direction · build · verify: ONE
31
+ freeze approval crosses the whole Direction bundle; the 3-call walk
32
+ (`new-task` · `freeze --by --cross` · `gate PASS`) is the whole ceremony.
33
+ - **persona routes + route scoreboard (GEPA)** — the persona proposes the
34
+ lane (`route:` header, ratified at freeze); every recorded gate appends a
35
+ route-outcome trace, and `add.py deltas` rolls the traces up per lane —
36
+ the evidence the PM persona reflects on GEPA-style, proposing route-rule
37
+ deltas the human folds into the persona file.
38
+
39
+ Breaking (the 2.0 line): removed verbs refuse as unknown commands; task docs
40
+ must be `PLAN.md` (`add.py migrate` is the paved path); the book no longer
41
+ lands in `.add/docs/`; `TASK.fast.md.tmpl` is gone (one template, every lane).
42
+
43
+ ## [1.18.0] — 2026-07-14
44
+
45
+ Minor: eleven milestones, expanded from the original July-7 two-milestone cut
46
+ (unpublished — the 1.17.0-amend precedent) to attribute everything merged
47
+ since. Headline: **six-phase-loop** — the lifecycle merges 8 phases into 6
48
+ (specify absorbs scenarios; verify absorbs observe), phase guides disclose
49
+ into the roster's bundle subagents, and the tick into build re-renders the
50
+ frozen spec. Also: **expectations-first** (plan phase; ONE freeze),
51
+ **plan-legibility**, **quality-floors**, **risk-proportional-ceremony**,
52
+ **three-phase-flow**, **add-bench** + **add-bench-v2** (the trust benchmark
53
+ that measured it all), **add-lean-loop**, plus the original
54
+ **build-strategy-facets** and **delta-drain**. The ceremony-to-effort and
55
+ call-floor features (compound ticks · scope echo · kickoff truth · skill
56
+ orient split) ship here too; their milestones remain open on measurement
57
+ criteria. Folded in after the July-14 cut: the **engine-minimalism /
58
+ context-cost thread** — a progressive foundation read, a lean default `status`,
59
+ and one fewer ceremony turn per crossing — measured by **token-anatomy** and
60
+ **honest-fidelity-meter**. No gate weakened; a security finding still HARD-STOPs.
61
+
62
+ ### Changed (the headline)
63
+ - **The loop is six phases**: `specify → plan → tests → build → verify → done`.
64
+ Scenarios live inside SPECIFY (§2 unchanged as a section); the observe duties
65
+ live inside VERIFY (§7 unchanged). Legacy phase tokens (`ground`, `contract`,
66
+ `scenarios`, `observe`) normalize on read — in-flight boards migrate loud and
67
+ safe; the skip grammar is retired (nothing is skippable; vestigial `skips:`
68
+ headers are noted at gate, never fatal) (six-phase-loop).
69
+ - **Guides re-cut to 6 files**; delegating spawns a bundle agent that loads its
70
+ own phase guides — the orchestrator reads only SKILL.md; the inline lane stays
71
+ first-class (six-phase-loop).
72
+ - The specification bundle approves at ONE freeze on the plan phase
73
+ (expectations-first); the freeze report renders the BUILD PLAN block and the
74
+ resolved scope echo (plan-legibility, ceremony-to-effort).
75
+
76
+ ### Added
77
+ - **Build-entry spec echo** — the tests→build tick prints the §1 Must/Reject
78
+ rules + the frozen §3 contract head, so the builder starts from the spec on
79
+ the screen, not from memory; fail-open, both entry paths (six-phase-loop).
80
+ - **Per-phase persona presets** — teacher-grade expert stances per owned phase
81
+ in the roster agents; project-persona routing stays first; a preset never
82
+ lowers a gate (six-phase-loop).
83
+ - **Compound ticks** — `freeze --cross` lands in tests; `gate` records from
84
+ build (one call fewer per crossing); init prints the resume pointer
85
+ (call-floor).
86
+ - **Quality floors** — spec-dialect warn at build entry · fast-lane
87
+ `Boundary:` freeze-refusal · §6 DIALECT check line (quality-floors).
88
+ - **The trust benchmark** — arms × workload-milestones harness with
89
+ deterministic oracles, tamper/regression meters, and the
90
+ cost-per-trusted-feature verdict (add-bench, add-bench-v2).
91
+ - **AI-plan-verify gate + phase bundles** (three-phase-flow) · message-layer
92
+ error ergonomics, −24% turns at equal rigor (risk-proportional-ceremony).
93
+
94
+ ### Added (from the original July-7 cut)
95
+ - **Faceted §5 build strategy** — four domain-generic facet lines drafted at
96
+ the tests→build cross: `Approach` (domain strategy) · `Data strategy` ·
97
+ `Pattern` · `Optimization stance`; the fast lane collapses them to one line
98
+ (build-strategy-facets).
99
+ - **per-facet ADR harvest** — each §5 facet lands in §7 Decisions (ADR) as its
100
+ own actor-tagged line at done (build-strategy-facets).
101
+ - **compact-foundation `--propose`** — a read-only preview of the compaction a
102
+ run would take; inspect before any byte moves (delta-drain).
103
+ - **`verify` flow value for personas** — personas route to the verify surface
104
+ directly; the streams.md worker-contract `<persona>` block names the flow
105
+ preference (delta-drain).
106
+ - **persona roster line** — `status`/`check` render an engine-built roster with
107
+ flows, never hand-maintained (delta-drain).
108
+
109
+ ### Changed
110
+ - §5 build strategy guidance, phase guides, and the TASK.md/TASK.fast.md
111
+ templates teach and carry the facet block (build-strategy-facets).
112
+
113
+ ### Fixed
114
+ - **Installer data loss** — `.claude/agents` is a shared namespace: init/update
115
+ now land only ADD's own roster files per-file (atomic), removal is
116
+ explicit-tombstone-only — the user's own subagents survive every install and
117
+ update (loose task installer-shared-namespace-guard, PR #151).
118
+
119
+ ### Added (engine-minimalism — the context-cost thread)
120
+ - **Progressive foundation read** — `status --foundation` prints a MAP (the preamble +
121
+ `invariants:` + Domain + Spec in full; every other section collapsed to its heading +
122
+ an on-demand `add.py status --foundation "<section>"` pull), so the cross-milestone
123
+ foundation that is re-read every turn is a slice, not the whole file; a named section
124
+ fleshes out on demand and `--all` restores the whole foundation (foundation-slice, −59%
125
+ on a 55KB foundation). Invariants never collapse — the contracts that bind every task
126
+ always survive the map.
127
+ - **Lean default `status`** — bare `status` prints the resume essentials; five heavy
128
+ blocks gate behind `--all`; `status --brief` is the mid-task resume; `status --section
129
+ <n>` reads one TASK.md §body instead of the whole growing file (engine-minimalism).
130
+ - **`--help` diet** — the top-level help drops from 121 lines to 19 (engine-minimalism).
131
+
132
+ ### Changed (engine-minimalism)
133
+ - **One fewer ceremony turn per crossing** — a green build steers straight to `gate PASS`;
134
+ the redundant pre-gate `advance` is folded away (ceremony-turn-cut / advance-fold).
135
+ - **Leaner per-turn engine output** — bare `status` stops restating the 'now' card in its
136
+ resume block; `new-task` teaches the full annotated recipe once per project, compact
137
+ thereafter; the skill re-orients from each verb's `next:` footer instead of re-running
138
+ `status` (engine-output-trim, status-brief-adoption, trust-the-footer).
139
+
140
+ ### Added (measurement — not shipped in the package)
141
+ - **Token anatomy** attributes a benchmark run's cache-read cost by category; a
142
+ deterministic **`requirement_coverage`** meter replaces the artifact-blind spec-fidelity
143
+ judge (now a source-aware, non-gating annotation); scoring is hermetic per boot
144
+ (token-anatomy, honest-fidelity-meter). Dev harness under `benchmark/` — not in the
145
+ npm/PyPI tarball.
146
+
147
+ ### Disclosed waivers (non-security, signed)
148
+ - `reclaim-ticket-race` — lock-reclaim TOCTOU flake; owner Tin Dang, expires 2026-08-04.
149
+ - `js-reclaim-lock-heartbeat` — JS lock-heartbeat race; owner Tin Dang, expires 2026-08-04.
150
+
7
151
  ## [1.17.0] — 2026-07-06
8
152
 
9
153
  Minor: four milestones — **method-ergonomics** (every recurring gate rule becomes
@@ -53,7 +53,8 @@ at the `prototype` stage. (Prefer to choose up front? Both installers take
53
53
  changed later — see the appendix.)
54
54
 
55
55
  Either one creates `.add/` (your runtime), drops the `add` skill into
56
- `.claude/skills/add/`, and bundles the book into `.add/docs/`. It deliberately
56
+ `.claude/skills/add/`. The book itself is published at
57
+ https://pilotspace.github.io/ADD/ and never installs into the project. It deliberately
57
58
  does **not** initialise the project — that's the agent's first move, so nothing
58
59
  gets decided without you in the loop.
59
60
 
@@ -61,7 +62,7 @@ gets decided without you in the loop.
61
62
  handoff — from here on it's conversation, not terminal commands.
62
63
 
63
64
  > Why stages exist: the steps never change, only how *deeply* you run them.
64
- > See `.add/docs/10-setup-and-stages.md`.
65
+ > See https://pilotspace.github.io/ADD/10-setup-and-stages/.
65
66
 
66
67
  ### Updating to a newer ADD — no re-install
67
68
 
@@ -79,7 +80,7 @@ pipx run pilotspace-add update
79
80
  pip install -U pilotspace-add && pilotspace-add update
80
81
  ```
81
82
 
82
- `update` clean-replaces the managed layer (`skill` · `.add/tooling` · `.add/docs`)
83
+ `update` clean-replaces the managed layer (`skill` · `.add/tooling`)
83
84
  and **never touches your work** — `state.json`, `PROJECT.md`, milestones, tasks and
84
85
  archive are left exactly as they were (it backs `state.json` up first regardless). It
85
86
  is idempotent (same version twice is a no-op) and writes a `.add/.add-version` stamp.
@@ -115,7 +116,7 @@ contract → review the result.** Everything between is the agent. For the
115
116
  transfer-money feature above, that's four short conversations — and zero typed
116
117
  commands.
117
118
 
118
- > New term: **Onboarding** — the install→first-milestone path. See `.add/docs/appendix-c-glossary.md`.
119
+ > New term: **Onboarding** — the install→first-milestone path. See https://pilotspace.github.io/ADD/appendix-c-glossary/.
119
120
 
120
121
  ---
121
122
 
@@ -169,56 +170,11 @@ Confirm your project is internally consistent at any time:
169
170
  python3 .add/tooling/add.py check
170
171
  ```
171
172
 
172
- It verifies state is valid, every task has its TASK.md, and markers match. Exit
173
+ It verifies state is valid, every task has its PLAN.md, and markers match. Exit
173
174
  code 0 means healthy — handy as a CI gate.
174
175
 
175
176
  ---
176
177
 
177
- ## Enforce the decision points in CI
178
-
179
- `add.py audit` re-verifies every recorded human gate on your board — a named
180
- human at each contract freeze, exactly one gate outcome per done task, a human
181
- reviewer wherever the security line carries a note. It exits non-zero naming
182
- the task and the finding, which makes it a CI gate: enforcement runs on a
183
- machine the agent does not control, so the agent can never stamp its own work
184
- green (*never self-gate*).
185
-
186
- Drop this workflow into `.github/workflows/seam-audit.yml`:
187
-
188
- ```yaml
189
- name: seam-audit
190
-
191
- on:
192
- push:
193
- branches: [main]
194
- pull_request:
195
-
196
- permissions:
197
- contents: read
198
-
199
- jobs:
200
- seam-audit:
201
- name: Decision-point audit (recorded human gates)
202
- runs-on: ubuntu-latest
203
- steps:
204
- - uses: actions/checkout@v4
205
-
206
- - uses: actions/setup-python@v5
207
- with:
208
- python-version: '3.12'
209
-
210
- - name: Audit recorded decision points
211
- run: python3 .add/tooling/add.py audit
212
- ```
213
-
214
- The command is the same one you can run locally — the installer already placed
215
- `add.py` at `.add/tooling/add.py`, and the audit is read-only (it never edits
216
- your board). A red `seam-audit` job means a decision record is malformed or a
217
- security note was left to the auto-gate; fix the record (or escalate the gate
218
- to a human), never the auditor.
219
-
220
- ---
221
-
222
178
  ## Under the hood — the seven phases by hand (escape hatch)
223
179
 
224
180
  Everything above is what the agent drives for you through the one-approval flow. This
@@ -227,7 +183,7 @@ each one produces and step in manually whenever you want to. You never *have* to
227
183
  these — they are the agent's hands, and yours when you take the wheel.
228
184
 
229
185
  The rhythm is always: **fill the section → run `python3 .add/tooling/add.py advance`.**
230
- The tool keeps the `phase:` marker at the top of TASK.md in sync.
186
+ The tool keeps the `phase:` marker at the top of PLAN.md in sync.
231
187
 
232
188
  ### Before the phases — initialise and scaffold
233
189
 
@@ -244,7 +200,7 @@ python3 .add/tooling/add.py new-task transfer --title "Transfer money between my
244
200
  > any build. Plain `init` skips that gate, which is fine here: by hand, the
245
201
  > human IS the one driving every step.
246
202
 
247
- This scaffolds `.add/tasks/transfer/TASK.md` — **one file holding all seven phase
203
+ This scaffolds `.add/tasks/transfer/PLAN.md` — **one file holding all seven phase
248
204
  sections** — plus empty `tests/` and `src/` folders, and makes it the active task
249
205
  at phase `specify`. Open it in your editor; you'll fill it top to bottom.
250
206
 
@@ -254,7 +210,7 @@ You can also change the project's depth at any time:
254
210
  python3 .add/tooling/add.py stage mvp
255
211
  ```
256
212
 
257
- ### Phase 1 — Specify (`.add/docs/03-step-1-specify.md`)
213
+ ### Phase 1 — Specify (https://pilotspace.github.io/ADD/03-step-1-specify/)
258
214
 
259
215
  Write the rules in **§1**. State what it *must* do, what it must *reject* (each
260
216
  with a named error code), and what's true after success:
@@ -278,7 +234,7 @@ Confirm every assumption (no FX, no daily limit in v1). Then:
278
234
  python3 .add/tooling/add.py advance
279
235
  ```
280
236
 
281
- ### Phase 2 — Scenarios (`.add/docs/04-step-2-scenarios.md`)
237
+ ### Phase 2 — Scenarios (https://pilotspace.github.io/ADD/04-step-2-scenarios/)
282
238
 
283
239
  In **§2**, turn each rule into a Given/When/Then. For every rejection, assert what
284
240
  must stay **unchanged**:
@@ -293,7 +249,7 @@ Scenario: insufficient funds
293
249
 
294
250
  Then `python3 .add/tooling/add.py advance`.
295
251
 
296
- ### Phase 3 — Contract (`.add/docs/05-step-3-contract.md`)
252
+ ### Phase 3 — Contract (https://pilotspace.github.io/ADD/05-step-3-plan/)
297
253
 
298
254
  In **§3**, fix the external shape and **freeze** it (`Status: FROZEN @ v1`):
299
255
 
@@ -306,19 +262,19 @@ POST /transfers body: { fromAccountId, toAccountId, amount }
306
262
 
307
263
  A frozen contract is the decision point that makes the AI build safe. Then advance.
308
264
 
309
- ### Phase 4 — Tests, red first (`.add/docs/06-step-4-tests.md`)
265
+ ### Phase 4 — Tests, red first (https://pilotspace.github.io/ADD/06-step-4-tests/)
310
266
 
311
267
  Write one test per scenario into `.add/tasks/transfer/tests/`, then **run them and
312
268
  confirm they FAIL** — there's no code yet. A test that passes now is testing
313
269
  nothing. This is red/green TDD: red before green. Then advance.
314
270
 
315
- ### Phase 5 — Build (`.add/docs/07-step-5-build.md`)
271
+ ### Phase 5 — Build (https://pilotspace.github.io/ADD/07-step-5-build/)
316
272
 
317
273
  Now let the AI write code into `.add/tasks/transfer/src/` until **every test
318
274
  passes** — without changing any test or the frozen contract. Honor the safety rule
319
275
  (here: debit + credit in one atomic transaction). Then advance.
320
276
 
321
- ### Phase 6 — Verify (`.add/docs/08-step-6-verify.md`)
277
+ ### Phase 6 — Verify (https://pilotspace.github.io/ADD/08-step-6-verify/)
322
278
 
323
279
  In **§6**, confirm the evidence (all green, nothing weakened) and check what tests
324
280
  miss: concurrency, security, architecture. Record the gate — and close the task:
@@ -330,7 +286,7 @@ python3 .add/tooling/add.py gate PASS
330
286
  `gate PASS` marks the task `done`. (Use `gate HARD-STOP` to send it back to Build,
331
287
  or `gate RISK-ACCEPTED` for a signed, non-security waiver.)
332
288
 
333
- ### Phase 7 — Observe (`.add/docs/09-the-loop.md`)
289
+ ### Phase 7 — Observe (https://pilotspace.github.io/ADD/09-the-loop/)
334
290
 
335
291
  In **§7**, note what to watch in production and the next spec delta. Every learning
336
292
  becomes the next `new-task`. The flow is a loop, not a finish line.
@@ -341,11 +297,11 @@ becomes the next `new-task`. The flow is a loop, not a finish line.
341
297
 
342
298
  You just ran the method; now read *why* it's shaped this way:
343
299
 
344
- - The shift & principles — `.add/docs/00-introduction.md`, `.add/docs/01-principles.md`
345
- - The flow end to end — `.add/docs/02-the-flow.md`
346
- - Each step in depth — `.add/docs/03-step-1-specify.md` through `.add/docs/09-the-loop.md`
347
- - Operating it on a team — `.add/docs/11-governance.md`, `.add/docs/12-roles.md`
348
- - A fully worked example — `.add/docs/appendix-d-worked-example.md`
300
+ - The shift & principles — https://pilotspace.github.io/ADD/00-introduction/, https://pilotspace.github.io/ADD/01-principles/
301
+ - The flow end to end — https://pilotspace.github.io/ADD/02-the-flow/
302
+ - Each step in depth — https://pilotspace.github.io/ADD/03-step-1-specify/ through https://pilotspace.github.io/ADD/09-the-loop/
303
+ - Operating it on a team — https://pilotspace.github.io/ADD/11-governance/, https://pilotspace.github.io/ADD/12-roles/
304
+ - A fully worked example — https://pilotspace.github.io/ADD/appendix-d-worked-example/
349
305
  - Building UI? The render-ready UDD foundation — `.add/DESIGN.md` is the prose
350
306
  front-door to a lintable design system (`.add/design/` tokens · catalog ·
351
307
  prototypes) the AI drafts from; `add.py check` lints it (delete `DESIGN.md` if
package/README.md CHANGED
@@ -2,27 +2,34 @@
2
2
  <a href="https://www.npmjs.com/package/@pilotspace/add"><img alt="npm version" src="https://img.shields.io/npm/v/@pilotspace/add.svg"></a>
3
3
  <a href="https://pypi.org/project/pilotspace-add/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/pilotspace-add.svg"></a>
4
4
  <a href="https://github.com/pilotspace/ADD/blob/main/LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
5
+ <a href="https://pilotspace.github.io/ADD/"><img alt="Read the book" src="https://img.shields.io/badge/docs-read%20the%20book-blue.svg"></a>
5
6
  <a href="https://github.com/pilotspace/ADD/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/pilotspace/ADD.svg"></a>
6
7
  </p>
7
8
 
8
9
  # ADD — AI-Driven Development
9
10
 
10
- **One skill. Eight steps. Five disciplines. Every feature ships through the loop.**
11
+ **Your AI's first milestone is always great. ADD is for every milestone after that.**
11
12
 
12
13
  > A minimal, state-tracked skill for building software when the AI writes the code
13
14
  > and **you** own the two things it cannot do alone: decide *what* to build, and
14
15
  > *verify* it is correct. Native on Claude Code; every other CLI coding agent
15
16
  > follows the same loop through the phase guides.
16
17
 
17
- ADD is the **orchestration engine** of the AIDD method. It sits on top of a
18
- context foundation (DDD SDD UDD) and runs as a red/green TDD ↔ AI-build loop.
19
- The full reasoning *why* every rule exists is the AIDD book bundled in
20
- [`docs/`](./docs/README.md). Read it once; keep it open beside you.
18
+ **The agent is the hands. ADD is the memory, judgment, and conscience the part
19
+ of the team that survives when the context window doesn't.** Memory: the board,
20
+ frozen contracts, and living specs on disk (`add.py status` resumes any session
21
+ losslessly). Judgment: personas propose each task's lane and the loop learns from
22
+ the traced outcomes (`add.py deltas`). Conscience: evidence-scored gates, the
23
+ tamper tripwire, the security hard-stop. It sits on top of a context foundation
24
+ (DDD → SDD → UDD) and runs as a red/green TDD ↔ AI-build loop.
25
+ The full reasoning — *why* every rule exists — is [the AIDD book, published
26
+ online](https://pilotspace.github.io/ADD/). Read it once; keep it open beside you.
21
27
 
22
28
  ```
23
29
  Foundation (context): DDD · SDD · UDD
24
30
  Engine (this skill): TDD ⇄ ADD
25
- Flow per feature: Specify Scenarios Contract Tests BuildVerify → Observe ↻
31
+ Flow per task: Direction (spec · scenarios · contract · red testsONE freeze)
32
+ → Build (red → green) → Verify (evidence-scored gate) ↻
26
33
  ```
27
34
 
28
35
  ## Quick Start
@@ -41,29 +48,66 @@ Then, in your coding agent, say what you want to build:
41
48
 
42
49
  > `/add` — *"Let users log in with email + password / SSO, and keep them signed in for 30 days unless they explicitly log out."*
43
50
 
44
- The agent sizes it into a milestone (you confirm the shape), drafts the spec →
45
- scenarios → contract → tests as one bundle (you approve once, at the frozen
46
- contract), then builds and verifies to green. Full detail below — **Install**,
47
- **Use it**, and the [10-minute Quickstart](./GETTING-STARTED.md).
48
-
49
- ## Why ADD (and why it is minimal)
50
-
51
- Heavy doc-first methods burn your time writing documents and lose the thread
52
- across sessions (context rot). ADD fixes both:
51
+ The agent sizes it into a milestone (you confirm the shape), drafts the
52
+ specification bundle — spec → scenarios → contract → red tests as one Direction
53
+ pass (you approve once, at the frozen contract), then builds and verifies to
54
+ green. Full detail below — **Install**, **Use it**, and the
55
+ [10-minute Quickstart](./GETTING-STARTED.md).
56
+
57
+ ## Highlights
58
+
59
+ - 📉 **Anti-context-rot by design** — every decision lives on disk (`PLAN.md`, frozen contracts, red suites, `.add/state.json`), so a fresh session resumes losslessly; measured flat 1.0 quality across evolving milestones while conversation-carried flows decayed.
60
+ - ✅ **Approve once, then let it run** — one human sign-off at the frozen contract; the agent drives Direction → Build → Verify.
61
+ - 🔬 **Proof, not promises** — verified against observed behavior and pre-declared expectations, never just a plausible-looking diff; weakening a test to reach green is treated as tampering.
62
+ - 💸 **Lean by measurement** — a thin 31-verb state kernel, a 3-call task walk, one file per feature; $2.20 per trusted milestone vs spec-kit's $3.90 in the latest head-to-head.
63
+ - 🔒 **Security never gets waved through** — any security finding is a hard stop, human in the loop.
64
+ - 🧠 **Personas route the work** — a project-owned persona proposes each task's lane, the freeze ratifies it, outcomes are traced, and the loop reflects on the record (GEPA) so the method adapts to your codebase.
65
+ - 🎨 **See it before you build it** — a wireframe and a zero-dependency HTML mock, approved before any code.
66
+ - 👥 **Built for teams** — git-native multi-user, N parallel milestones, DAG-scheduled waves.
67
+ - 🧩 **One slice, many components** — monorepo or multi-repo, in one team.
68
+ - 🤝 **Works with your AI** — Claude, Copilot, Cursor, Codex, Gemini; install via npm, pip, or the Claude Code plugin.
69
+
70
+ > _Direction before speed. Trust comes from passing tests — not from reading code and finding it plausible._
71
+
72
+ ## Why ADD — the pain point is context rot, and we measured it
73
+
74
+ Every AI coding tool can write code fast now, and every flow we benchmark aces a
75
+ greenfield first milestone. The unsolved part is **trust across change**: when the
76
+ spec evolves in milestone 2 and breaks compatibility in milestone 3, does the work
77
+ you already trusted *stay* trusted?
78
+
79
+ Our benchmark runs the same six-milestone evolving project through each flow under
80
+ a pinned model with deterministic probe scoring
81
+ ([report, revised edition](https://github.com/pilotspace/ADD/blob/main/benchmark/results/2026-07-add-2.0-remeasure.md)).
82
+ The causal finding: when ONE continued conversation carried the milestones, every
83
+ flow decayed the same way (coverage .92 → .75, with an early list-shape spec
84
+ violation carried through five further milestones, never re-examined). When every
85
+ milestone instead started a **fresh session resuming from disk**, ADD held every
86
+ floor at 1.0 across all six milestones — through a breaking shape change and a
87
+ cross-cutting refactor — with zero regressions, at ~$2.90 per milestone (a 3–5×
88
+ cut vs ADD 1.x's $4.65–13.94 per trusted feature). Honesty note, from the same
89
+ report: on this friendly workload a strong model under spec-kit also passed the
90
+ restart-mode floors (and ran cheaper) — we published the retraction of our own
91
+ earlier collapse claim when we found the meter defect behind it. What ADD uniquely
92
+ adds is the *guarantees*: contracts that can't be silently edited, tests that
93
+ can't be quietly weakened, security findings that can't scroll past.
94
+
95
+ That's the design, in three moves:
53
96
 
54
97
  - **One file per feature.** Spec, scenarios, contract, test-plan, and gate record
55
- all live inline in a single `TASK.md`. No sprawling doc tree.
56
- - **State on disk, not in chat.** A Python tool tracks where you are in
98
+ all live inline in a single `PLAN.md`. No sprawling doc tree.
99
+ - **State on disk, not in chat.** A stdlib-Python kernel tracks where you are in
57
100
  `.add/state.json`, so a fresh session resumes with one command instead of
58
- re-reading the repo.
59
- - **Progressive disclosure.** The skill loads only the guide for the phase you are
60
- in — the context window stays lean.
101
+ re-reading the repo — and instead of trusting a long conversation's memory.
102
+ - **Progressive disclosure.** The skill narrates the whole loop itself and loads a
103
+ deeper phase reference only when the beat needs it — the context window stays
104
+ lean.
61
105
 
62
106
  ## Where ADD fits vs. skill libraries (e.g. agency-agents)
63
107
 
64
- ADD is an **orchestration method** — the gated loop (specscenarioscontract → tests → build →
65
- verify → observe) that decides when work is trusted. It is not a catalog of ready-made expert
66
- personas. Skill libraries like [agency-agents](https://github.com/msitarzewski/agency-agents), or
108
+ ADD is the **trust layer** — the gated loop (DirectionBuildVerify)
109
+ that decides when work is trusted, and the on-disk memory it runs on. It is not a
110
+ catalog of ready-made expert personas. Skill libraries like [agency-agents](https://github.com/msitarzewski/agency-agents), or
67
111
  role-specific subagents (a backend expert, a security reviewer, a senior Java engineer), sit at a
68
112
  different layer: they answer **who does the work** — a domain stance, vocabulary, and craft rules
69
113
  for one kind of task. ADD answers **how you trust what gets built**, no matter who or what wrote it.
@@ -75,23 +119,26 @@ never a runtime dependency — down to the three parts a project actually needs:
75
119
  stance), **Critical Rules** (the non-negotiables), and **Success Metrics** (the done-bar). The
76
120
  project then owns that persona outright.
77
121
 
78
- A distilled persona is applied as an **advisory overlay** during design, build, or verify — it
122
+ A distilled persona is applied as an **advisory overlay** during direction, build, or verify — it
79
123
  shapes *how* a step gets done, never whether it happens: it can't skip a gate, edit a frozen
80
- contract, or wave through a security finding. That gated loop is what ADD contributes underneath
81
- any persona, distilled or not.
124
+ contract, or wave through a security finding. In 2.0 personas also carry **task-kinds** and
125
+ propose each task's route (full walk · fast lane · inline); the freeze ratifies the route, the
126
+ gate traces the outcome, and `add.py deltas` rolls the traces into a per-lane scoreboard the
127
+ loop reflects on (GEPA). That gated loop is what ADD contributes underneath any persona,
128
+ distilled or not.
82
129
 
83
130
  ## Best setup: ADD alongside other agent libraries
84
131
 
85
132
  1. **Install ADD** (below) — it drives the loop: which phase you're in, what needs your approval,
86
133
  whether something is proven.
87
- 2. **Keep whatever subagent libraries you already use.** ADD's own five phase specialists
88
- (`add-design`, `add-build`, `add-verify`, `add-persona`, `add-advisor`) live in the same
89
- `.claude/agents/` mechanism as any other Claude Code subagent a distilled persona, an
90
- agency-agents-derived specialist, a built-in one (a backend expert, a security reviewer). They
91
- coexist with zero conflict; nothing is replaced.
92
- 3. **Prefer ADD's named roster first for anything phase-shaped** — spawning `add-verify` for the
93
- independent adversarial refute-read, `add-build` for a red→green batch — before an ad-hoc spawn.
94
- Reach for another specialist when a piece needs deep domain expertise a generic phase agent
134
+ 2. **Keep whatever subagent libraries you already use.** ADD ships ONE `add` agent in the same
135
+ `.claude/agents/` mechanism as any other Claude Code subagent — the spawn names the mode
136
+ (direction · build · verify · advise · persona) and the agent loads that beat's guide plus the
137
+ best-fit persona. It coexists with a distilled persona, an agency-agents-derived specialist,
138
+ or a built-in expert with zero conflict; nothing is replaced.
139
+ 3. **Prefer the `add` agent for anything phase-shaped** — spawn it in verify mode for the
140
+ independent adversarial refute-read, in build mode for a red→green batch — before an ad-hoc
141
+ spawn. Reach for another specialist when a piece needs deep domain expertise the phase guide
95
142
  doesn't carry (a Java-specific review, a payments-domain lens).
96
143
  4. **The gates hold no matter who did the work.** A delegated subagent proposes; the orchestrating
97
144
  agent records. A security finding is always a `HARD-STOP`, and a low self-reported confidence
@@ -99,7 +146,7 @@ any persona, distilled or not.
99
146
 
100
147
  ## Install
101
148
 
102
- Pick your ecosystem — all three install the same skill, tooling, and book:
149
+ Pick your ecosystem — all three install the same skill and tooling:
103
150
 
104
151
  ```bash
105
152
  # Node / npm
@@ -118,8 +165,8 @@ pilotspace-add init
118
165
  /plugin install add@add-method
119
166
  ```
120
167
 
121
- The plugin carries the engine and the book. On first `/add`, the skill materializes them
122
- into the project (`node "${CLAUDE_PLUGIN_ROOT}/bin/cli.js" init --no-skill`) and scaffolds
168
+ The plugin carries the engine. On first `/add`, the skill materializes it into the
169
+ project (`node "${CLAUDE_PLUGIN_ROOT}/bin/cli.js" init --no-skill`) and scaffolds
123
170
  `.add/` — a self-contained, portable result identical to the npm/pip flow. The skill stays
124
171
  in the plugin, so nothing is duplicated.
125
172
 
@@ -128,9 +175,12 @@ defaults to `prototype` (pass `--name "My App" --stage mvp` to choose up front).
128
175
 
129
176
  **Already installed?** Refresh to the latest without a re-install —
130
177
  `npx @pilotspace/add@latest update` (or `pipx run pilotspace-add update`)
131
- re-materializes the skill, tooling, and book while leaving your project work
178
+ re-materializes the skill and tooling while leaving your project work
132
179
  (`.add/state.json`, `PROJECT.md`, milestones, tasks) untouched; add `--check` to
133
- see whether a project is behind the installed package.
180
+ see whether a project is behind the installed package. Coming from 1.x? One
181
+ command — `python3 .add/tooling/add.py migrate` — converts the whole board
182
+ (task docs to `PLAN.md`, living 5-DD specs seeded); it's idempotent and refuses
183
+ to guess on conflicts.
134
184
 
135
185
  **New here?** Follow the [10-minute Quickstart](./GETTING-STARTED.md) — it walks
136
186
  your first feature end to end.
@@ -139,11 +189,15 @@ This installs:
139
189
 
140
190
  | Path | What |
141
191
  |------|------|
142
- | `.claude/skills/add/` | the `add` skill Claude loads (thin router + per-phase guides) |
143
- | `.add/tooling/add.py` | scaffolder + state tracker (Python, stdlib only) |
144
- | `.add/docs/` | the AIDD book the method rationale |
192
+ | `.claude/skills/add/` | the `add` skill Claude loads the loop itself, plus three on-demand phase references |
193
+ | `.add/tooling/add.py` | the state kernel — scaffolder + tracker, 31 verbs (Python, stdlib only) |
194
+ | `.add/personas-teacher/` | the vendored teacher corpus personas are distilled from (off-build reading, never runtime) |
145
195
  | `.add/DESIGN.md` | (UI projects) the prose front-door to the **render-ready UDD foundation** — delete it if your project has no UI |
146
196
 
197
+ The AIDD book itself no longer installs into projects — it lives online at
198
+ [pilotspace.github.io/ADD](https://pilotspace.github.io/ADD/), and the engine
199
+ deep-links the exact chapter whenever a gate or guide cites its rationale.
200
+
147
201
  On a UI project, UDD gives the AI a frozen design ground to draft from: `DESIGN.md`
148
202
  plus a lintable JSON foundation under `.add/design/` (design tokens · component
149
203
  catalog · prototype trees). `add.py check` lints that foundation, going red with a
@@ -165,9 +219,9 @@ exactly what that means, so there are no surprises:
165
219
  - **What it runs:** the bundled engine and bootstrapper only — `node bin/cli.js` and
166
220
  `python3 .add/tooling/add.py`. No downloaded or remote code is executed; everything it
167
221
  runs ships in the package.
168
- - **What it writes:** files under your project's `.add/` (state, milestones, tasks, the
169
- book) and the managed guideline block in `CLAUDE.md` / `AGENTS.md`. On a plugin install
170
- it also materializes the engine + book into `.add/` on first run. It writes nowhere
222
+ - **What it writes:** files under your project's `.add/` (state, milestones, tasks) and
223
+ the managed guideline block in `CLAUDE.md` / `AGENTS.md`. On a plugin install
224
+ it also materializes the engine into `.add/` on first run. It writes nowhere
171
225
  outside the project working directory; it never touches files above the project root.
172
226
  - **Network:** one optional, advisory update check. On `status` / `guide` the engine may
173
227
  make a single HTTPS GET to `https://registry.npmjs.org/@pilotspace/add/latest` to see if
@@ -192,9 +246,9 @@ the `/add` skill natively; every other agent follows the same loop through the
192
246
  phase guides via `add.py status` / `guide`.
193
247
 
194
248
  The agent orients from `state.json`, **sizes your request into a milestone** (you
195
- confirm the shape), then drafts each feature's **specification bundle** — Spec +
196
- Scenarios + Contract + Tests as one bundle — and you give **one approval at the
197
- frozen contract**. A self-driving build→verify run takes it to green; security
249
+ confirm the shape), then drafts each task's **specification bundle** — Spec +
250
+ Scenarios + Contract + Tests as one Direction pass — and you give **one approval at
251
+ the frozen contract**. A self-driving build→verify run takes it to green; security
198
252
  findings always stop back to you.
199
253
 
200
254
  Under the hood the agent runs the CLI as its hands — and you can hand-drive it too:
@@ -218,19 +272,37 @@ python3 .add/tooling/add.py status # where am I? (resume point)
218
272
 
219
273
  The durable asset is the decisions — spec, scenarios, contract, tests. The code is
220
274
  one implementation that satisfies them and can be regenerated. If the thing you'd
221
- be upset to lose is "the code," you're still working the old way.
275
+ be upset to lose is "the code," you're still working the old way. This is also the
276
+ anti-context-rot stance in one sentence: the artifacts on disk, not the
277
+ conversation, are the project's memory.
222
278
 
223
279
  ## Read the method
224
280
 
225
- Start at [`docs/README.md`](./docs/README.md) — Foundations → the six steps
281
+ Start at [the book](https://pilotspace.github.io/ADD/) — Foundations → the loop
226
282
  operating it across a team → templates, prompts, and a full worked example.
227
283
 
228
- ## What's next
229
-
230
- **Dynamic Agent Skills** the next scope: skills that adapt at runtime to the
231
- project's current state, stage, and active phase rather than loading a static
232
- guide. The agent picks the right depth and tooling automatically as the project
233
- evolves.
284
+ More entry points:
285
+
286
+ - 📖 [Read the book online](https://pilotspace.github.io/ADD/) the full AIDD method, chapter by chapter
287
+ - 🔍 [Full hands-on walkthrough](./GETTING-STARTED.md) one real feature, end to end
288
+ - 📊 [Benchmark results](https://github.com/pilotspace/ADD/tree/main/benchmark/results) every trust and cost claim, measured
289
+ - ⚖️ [ADD vs spec-kit — the honest comparison](https://pilotspace.github.io/ADD/appendix-h-add-vs-spec-kit/) — where we tie, where they win, what only ADD guarantees
290
+ - 🗞️ [ADD Across the Org: AI-Driven Development Beyond Code](https://inkpaper-blog.pages.dev/series/add-across-the-org/)
291
+
292
+ ## What's new in 2.0
293
+
294
+ - **Skill-led loop on a thin kernel** — the skill narrates Direction → Build →
295
+ Verify; `add.py` shrinks to a 31-verb state kernel (54 → 31).
296
+ - **`PLAN.md` + one-shot `migrate`** — the per-task file is the plan; a whole 1.x
297
+ board converts with one idempotent command.
298
+ - **Five living 5-DD specs with `delta-append`** — the project's evolving truth,
299
+ compacted forward instead of rewritten.
300
+ - **Persona routes + the GEPA scoreboard** — personas propose lanes, gates trace
301
+ outcomes, `deltas` shows the per-lane record, and the loop reflects on it.
302
+ - **The book stops shipping** — published online only, deep-linked from the engine.
303
+ - **Measured**: every trust floor 1.0 across the 3-milestone benchmark at $2.20 per
304
+ trusted milestone; plus a new `--session-mode continue` harness that measures
305
+ context rot itself.
234
306
 
235
307
  ## Develop
236
308