@pilotspace/add 1.16.1 → 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 (113) hide show
  1. package/CHANGELOG.md +227 -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 +229 -29
  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 -37
  14. package/skill/add/intake.md +65 -29
  15. package/skill/add/loop.md +35 -23
  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 +13 -30
  20. package/skill/add/terms.md +18 -0
  21. package/tooling/add.py +2520 -2933
  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 +153 -87
  25. package/tooling/add_engine/guidelines.py +9 -11
  26. package/tooling/add_engine/io_state.py +82 -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 +35 -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 -31
  55. package/agents/add-verify.md +0 -34
  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 -80
  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 -59
  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 -47
  104. package/skill/add/phases/fast-lane.md +0 -31
  105. package/skill/add/release.md +0 -61
  106. package/skill/add/scope.md +0 -72
  107. package/skill/add/sensitivity.md +0 -51
  108. package/skill/add/setup-review.md +0 -48
  109. package/skill/add/soul.md +0 -58
  110. package/skill/add/streams.md +0 -268
  111. package/tooling/add_engine/release.py +0 -86
  112. package/tooling/templates/TASK.fast.md.tmpl +0 -77
  113. package/tooling/templates/TASK.md.tmpl +0 -216
package/CHANGELOG.md CHANGED
@@ -4,6 +4,233 @@ 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
+
151
+ ## [1.17.0] — 2026-07-06
152
+
153
+ Minor: four milestones — **method-ergonomics** (every recurring gate rule becomes
154
+ a form the engine presents at that moment, cutting per-task ceremony without
155
+ moving the safety floor), **persona-domain-fit** (a new milestone or task
156
+ whose domain no existing persona covers gets a concrete draft-one nudge),
157
+ **dynamic-personas** (a drafted persona carries `flow:` routing to its agent
158
+ surface, at teacher-grade depth and load cost), and **self-improving-loop**
159
+ (the observe→deltas→fold→compact loop surfaces its own accumulation instead of
160
+ rotting silently) — plus twelve loose tasks. New engine verbs are additive; no
161
+ gate weakened, nothing removed or renamed.
162
+
163
+ ### Added
164
+ - **`add.py gate --explain [slug]`** — a read-only dry-run of the verify gate:
165
+ prints phase · autonomy · risk · sensitivity · advisor lines and one
166
+ `path: AUTO | HUMAN | RELAX | REFUSED (reason)` verdict, always ending with
167
+ the security floor (a security finding is always HARD-STOP). Writes nothing.
168
+ - **`add.py advance --to <phase>`** — fast-forwards a drafted bundle's
169
+ bookkeeping crossings in one call, stopping hard at `tests` (the freeze gate,
170
+ tamper tripwire and scope snapshot are never skipped).
171
+ - **`add.py re-cross`** — records a human-approved post-freeze re-cross
172
+ (`--by` required): re-runs the full tests→build gate stack to legally
173
+ re-snapshot after an approved test addition, never bypassing the freeze.
174
+ - **`add.py worktree-prep <slug>`** — mechanizes the spawn-isolation recipe:
175
+ cuts a git worktree at HEAD, materializes the gitignored `.add/tooling` +
176
+ `.add/docs` a tracked-only checkout lacks, and echoes the fork base for the
177
+ WAVE.md ledger. Workspace-only; state.json is never written.
178
+ - **Verify-record rollup** — `add.py audit` folds its four §6 shape lints into
179
+ one `verify_record_incomplete` line per task.
180
+ - **Delta verbs reach archived tasks** — `drop-delta` / `carry-delta` /
181
+ `reopen-delta` now operate on a light-archived task's on-disk TASK.md
182
+ (explicit slug only, `(archived — on-disk record)` marker, state untouched).
183
+ - **Batched intake + batched gates** — intake.md and report-template.md
184
+ document one report + one confirm for N same-gate items (per-item
185
+ lowest-confidence flags; any item holdable by name). Presentation only.
186
+ - **Domain test forms** — 4-tests.md states that a test is any
187
+ machine-checkable assertion (metric threshold · reconciliation query ·
188
+ plan-diff · rendered-screen diff), red-first holding for each.
189
+ - **Persona domain-fit nudge** — a milestone/task whose domain no existing
190
+ persona covers is nudged toward drafting a fitting one; TASK templates now
191
+ require a named persona and carry a domain-strategy hint.
192
+ - **Fast-lane ground anchor** — the `--fast` template's §0 gains the
193
+ `Ground SHA:` drift anchor, so a fast task can clear the stale-line-ref WARN.
194
+ - **Persona `flow:` routing** — a persona's `flow:` frontmatter (design | build
195
+ | advisor) is now read, not just written: the 4 flow-routed roster agents,
196
+ `design.md`'s evidence checklist, and `advisor.md`'s spawn block all select
197
+ a persona flow-first; add-persona drafts the current schema (`flow:` /
198
+ `source:` / `## Abilities`) and returns `flow` in its verdict.
199
+ - **Persona load performance** — every seeded persona gains `## Abilities`
200
+ (orient-command-led) and `## Anti-patterns`; selection is frontmatter-first
201
+ (name · vibe · flow, then one body — not the whole roster); add-persona
202
+ routes the teacher library by division directory, never its catalog README.
203
+ - **Fold grows the current persona schema** — `add.py fold` routes a
204
+ `persona:<slug> · anti-pattern|ability` lesson into those sections too (was
205
+ limited to `critical-rule`/`success-metric`), so the persona learning loop
206
+ can grow the sections that shape agent behavior.
207
+ - **Loop-surfacing status cues** — `add.py status` names the carried
208
+ spec-delta backlog and the un-compacted foundation tail (last-rolled vs.
209
+ current `foundation-version`) once either passes a noticeable size;
210
+ `release-report` lists the carried total. Additive; a clean project's
211
+ output is unchanged.
212
+ - **`skill/add/self-improve.md`** — one map of how ADD improves itself: the
213
+ four self-improving artifacts (foundation · personas · `SOUL.md` · next
214
+ scope), routed across the 5 domains, fed by all 8 steps.
215
+
216
+ ### Changed
217
+ - **Sequential+auto is the default run mode** — parallel streams stay a
218
+ deliberate, persisted opt-in.
219
+ - **Leaner TASK.md template** — instructional comment bloat trimmed 16%
220
+ (comments −27%); every machine-parsed marker untouched.
221
+ - **Leaner guides** — run.md's specification-bundle section is a pointer at
222
+ its one home (`phases/3-contract.md`); the ⚠ flag grammar now lives in
223
+ exactly one guide.
224
+ - **Waiver field census is case-insensitive** — `audit` recognizes
225
+ `Owner:/Ticket:/Expires:` as written by the signed records; the
226
+ missing-field refusal is unchanged.
227
+
228
+ ### Fixed
229
+ - The CI-observed reclaim-ticket race in `_update_lock` (+ its JS/npm
230
+ heartbeat twin), orphaned reclaim-ticket sweep, the prune-data/update-global
231
+ lock race, the ADR harvester's multi-line field capture, and the
232
+ strip-scaffold backtick-comment over-strip.
233
+
7
234
  ## [1.16.1] — 2026-07-04
8
235
 
9
236
  Patch: two loose, additive persona-loop improvements found while dogfooding
@@ -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