@zigrivers/scaffold 3.29.0 → 3.31.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 (86) hide show
  1. package/content/guides/AUTHORING.md +146 -0
  2. package/content/guides/cli/index.html +1855 -0
  3. package/content/guides/cli/index.md +206 -0
  4. package/content/guides/concepts/index.html +1970 -0
  5. package/content/guides/concepts/index.md +347 -0
  6. package/content/guides/dashboard/index.html +1913 -0
  7. package/content/guides/dashboard/index.md +264 -0
  8. package/content/guides/index.html +368 -15
  9. package/content/guides/install/.diagrams/diagram-0.svg +1 -0
  10. package/content/guides/install/.diagrams/manifest.json +3 -0
  11. package/content/guides/install/index.html +1653 -0
  12. package/content/guides/install/index.md +186 -0
  13. package/content/guides/knowledge/.diagrams/diagram-0.svg +1 -0
  14. package/content/guides/knowledge/.diagrams/manifest.json +3 -0
  15. package/content/guides/knowledge/index.html +1765 -0
  16. package/content/guides/knowledge/index.md +209 -0
  17. package/content/guides/knowledge-freshness/.diagrams/diagram-0.svg +1 -0
  18. package/content/guides/knowledge-freshness/.diagrams/manifest.json +3 -0
  19. package/content/guides/knowledge-freshness/index.html +2795 -0
  20. package/content/guides/knowledge-freshness/index.md +893 -0
  21. package/content/guides/mmr/index.html +407 -36
  22. package/content/guides/mmr/index.md +39 -16
  23. package/content/guides/multi-agent/.diagrams/diagram-0.svg +1 -0
  24. package/content/guides/multi-agent/.diagrams/manifest.json +3 -0
  25. package/content/guides/multi-agent/index.html +1715 -0
  26. package/content/guides/multi-agent/index.md +243 -0
  27. package/content/guides/observability/.diagrams/diagram-0.svg +1 -0
  28. package/content/guides/observability/.diagrams/diagram-1.svg +1 -0
  29. package/content/guides/observability/.diagrams/diagram-2.svg +1 -0
  30. package/content/guides/observability/.diagrams/diagram-3.svg +1 -0
  31. package/content/guides/observability/.diagrams/manifest.json +6 -0
  32. package/content/guides/observability/index.html +3257 -0
  33. package/content/guides/observability/index.md +1097 -0
  34. package/content/guides/pipeline/.diagrams/diagram-0.svg +1 -0
  35. package/content/guides/pipeline/.diagrams/diagram-1.svg +1 -0
  36. package/content/guides/pipeline/.diagrams/manifest.json +4 -0
  37. package/content/guides/pipeline/index.html +1973 -0
  38. package/content/guides/pipeline/index.md +387 -0
  39. package/content/guides/review-workflow/.diagrams/diagram-0.svg +1 -0
  40. package/content/guides/review-workflow/.diagrams/diagram-1.svg +1 -0
  41. package/content/guides/review-workflow/.diagrams/manifest.json +4 -0
  42. package/content/guides/review-workflow/index.html +1790 -0
  43. package/content/guides/review-workflow/index.md +248 -0
  44. package/dist/guides/build.d.ts +1 -1
  45. package/dist/guides/build.d.ts.map +1 -1
  46. package/dist/guides/build.js +21 -9
  47. package/dist/guides/build.js.map +1 -1
  48. package/dist/guides/build.test.js +47 -0
  49. package/dist/guides/build.test.js.map +1 -1
  50. package/dist/guides/chrome.d.ts.map +1 -1
  51. package/dist/guides/chrome.js +83 -12
  52. package/dist/guides/chrome.js.map +1 -1
  53. package/dist/guides/dashboard-theme.css +8 -0
  54. package/dist/guides/directives-cite.test.d.ts +2 -0
  55. package/dist/guides/directives-cite.test.d.ts.map +1 -0
  56. package/dist/guides/directives-cite.test.js +26 -0
  57. package/dist/guides/directives-cite.test.js.map +1 -0
  58. package/dist/guides/directives-tabs.test.js +47 -0
  59. package/dist/guides/directives-tabs.test.js.map +1 -1
  60. package/dist/guides/directives.d.ts +1 -0
  61. package/dist/guides/directives.d.ts.map +1 -1
  62. package/dist/guides/directives.js +38 -0
  63. package/dist/guides/directives.js.map +1 -1
  64. package/dist/guides/guides.css +268 -0
  65. package/dist/guides/index-page.d.ts.map +1 -1
  66. package/dist/guides/index-page.js +41 -8
  67. package/dist/guides/index-page.js.map +1 -1
  68. package/dist/guides/links.d.ts +14 -0
  69. package/dist/guides/links.d.ts.map +1 -0
  70. package/dist/guides/links.js +56 -0
  71. package/dist/guides/links.js.map +1 -0
  72. package/dist/guides/links.test.d.ts +2 -0
  73. package/dist/guides/links.test.d.ts.map +1 -0
  74. package/dist/guides/links.test.js +72 -0
  75. package/dist/guides/links.test.js.map +1 -0
  76. package/dist/guides/render.d.ts +1 -0
  77. package/dist/guides/render.d.ts.map +1 -1
  78. package/dist/guides/render.js +1 -1
  79. package/dist/guides/render.js.map +1 -1
  80. package/dist/guides/sanitize.d.ts.map +1 -1
  81. package/dist/guides/sanitize.js +5 -0
  82. package/dist/guides/sanitize.js.map +1 -1
  83. package/dist/guides/template.d.ts.map +1 -1
  84. package/dist/guides/template.js +7 -2
  85. package/dist/guides/template.js.map +1 -1
  86. package/package.json +2 -2
@@ -0,0 +1,347 @@
1
+ ---
2
+ title: Concepts & Glossary
3
+ topic: concepts
4
+ description: The shared vocabulary — worktrees, phases, lenses, verdicts, and the rest — that the other guides assume
5
+ category: concepts
6
+ order: 5
7
+ ---
8
+
9
+ ## How to read this guide
10
+
11
+ Scaffold's other guides each go deep on one system; this one is the **map of the
12
+ vocabulary** they share. Every term below gets a short definition and a link to
13
+ the guide that owns the full story. When two guides use the same word slightly
14
+ differently (a "verdict" in MMR vs. in the audit engine; a "lens" that lives in
15
+ the audit but reasons about the knowledge base), this guide is where the seam is
16
+ named.
17
+
18
+ Terms cluster into four families:
19
+
20
+ - **Pipeline** — how an idea becomes a build-ready spec.
21
+ - **Observability** — the durable record of what the build actually did.
22
+ - **Review** — how independent models gate changes.
23
+ - **Multi-agent** — how parallel worktrees coordinate without stepping on each other.
24
+
25
+ :::filter-table
26
+ | Term | Cluster | See also |
27
+ | --- | --- | --- |
28
+ | Phase | Pipeline | [pipeline](../pipeline/index.md) |
29
+ | Planning vs. build regime | Pipeline | [pipeline](../pipeline/index.md) |
30
+ | `dependencies` (hard gate) | Pipeline | [pipeline](../pipeline/index.md) |
31
+ | `reads` (soft reference) | Pipeline | [pipeline](../pipeline/index.md) |
32
+ | Conditional / `if-needed` | Pipeline | [pipeline](../pipeline/index.md) |
33
+ | Stateless step | Pipeline | [pipeline](../pipeline/index.md) |
34
+ | CREATE vs. UPDATE mode | Pipeline | [pipeline](../pipeline/index.md) |
35
+ | Methodology preset | Pipeline | [pipeline](../pipeline/index.md) |
36
+ | Depth (1–5) | Pipeline | [pipeline](../pipeline/index.md) |
37
+ | Overlay | Pipeline | [pipeline](../pipeline/index.md) |
38
+ | Ledger | Observability | [observability](../observability/index.md) |
39
+ | Event | Observability | [observability](../observability/index.md) |
40
+ | Adapter | Observability | [observability](../observability/index.md) |
41
+ | Lens (A–I) | Observability | [observability](../observability/index.md) · [knowledge-freshness](../knowledge-freshness/index.md) |
42
+ | Finding | Observability | [observability](../observability/index.md) |
43
+ | Audit verdict | Observability | [observability](../observability/index.md) |
44
+ | `fix_threshold` | Observability · Review | [observability](../observability/index.md) · [mmr](../mmr/index.md) |
45
+ | `--fix` flow | Observability | [observability](../observability/index.md) |
46
+ | Stall signal | Observability | [observability](../observability/index.md) |
47
+ | Phase-boundary audit | Observability · Pipeline | [observability](../observability/index.md) · [pipeline](../pipeline/index.md) |
48
+ | `doc-conformance` channel | Observability · Review | [observability](../observability/index.md) · [mmr](../mmr/index.md) |
49
+ | Knowledge entry | Knowledge | [knowledge-freshness](../knowledge-freshness/index.md) · [knowledge](../knowledge/index.md) |
50
+ | Volatility tier | Knowledge | [knowledge-freshness](../knowledge-freshness/index.md) |
51
+ | Knowledge-gap signal | Knowledge | [knowledge-freshness](../knowledge-freshness/index.md) |
52
+ | Channel | Review | [mmr](../mmr/index.md) · [review-workflow](../review-workflow/index.md) |
53
+ | Compensating pass | Review | [mmr](../mmr/index.md) |
54
+ | Reconcile | Review | [mmr](../mmr/index.md) |
55
+ | `finding_key` | Review | [mmr](../mmr/index.md) |
56
+ | MMR verdict | Review | [mmr](../mmr/index.md) |
57
+ | Worktree | Multi-agent | [multi-agent](../multi-agent/index.md) · [observability](../observability/index.md) |
58
+ | Worktree identity | Multi-agent | [observability](../observability/index.md) |
59
+ | Ledger harvest | Multi-agent | [observability](../observability/index.md) |
60
+ | Teardown | Multi-agent | [observability](../observability/index.md) |
61
+ :::
62
+
63
+ ## Pipeline concepts
64
+
65
+ These describe the meta-prompt pipeline that turns an idea into a frozen,
66
+ build-ready spec. Full treatment: [the pipeline guide](../pipeline/index.md).
67
+
68
+ ### Phase
69
+ One of the **16 ordered stages** the pipeline divides into, numbered 0 (vision)
70
+ through 15 (build). The phase list, slugs, numbers, and display names are defined
71
+ exactly once, in the `PHASES` constant
72
+ :cite[src/types/frontmatter.ts:6]; every doc, skill, and command resolves
73
+ against it. Steps within a phase run in `order` sequence (phase N occupies the
74
+ N00–N99 band). See [the pipeline guide](../pipeline/index.md#the-16-phases-at-a-glance).
75
+
76
+ ### Planning vs. build regime
77
+ The pipeline splits into two regimes. **Planning** (phases 0–14) is *stateful*
78
+ and *sequential* — each step produces a durable artifact and is run roughly once,
79
+ in dependency order, working toward a frozen spec. **Build** (phase 15) is
80
+ *stateless* and *on-demand* — the execution loops you run repeatedly while
81
+ actually writing code. See [the pipeline guide](../pipeline/index.md#the-mental-model).
82
+
83
+ ### `dependencies` (hard gate)
84
+ A step's frontmatter `dependencies` :cite[src/types/frontmatter.ts:114] are
85
+ **hard gates**: `scaffold run` refuses a step until each dependency is
86
+ `completed`, `skipped`, or disabled by the resolved pipeline/overlay (a disabled
87
+ dep counts as satisfied). Contrast `reads`. See
88
+ [Why a step is blocked](../pipeline/index.md#why-a-step-is-blocked).
89
+
90
+ ### `reads` (soft reference)
91
+ A step's `reads` :cite[src/types/frontmatter.ts:122] are **soft references** — a
92
+ step uses an upstream artifact if it's present, but a missing read never blocks
93
+ execution (the assembler silently skips it). The
94
+ [pipeline guide](../pipeline/index.md#why-a-step-is-blocked) explains why
95
+ `reads ≠ dependencies` is a common trip-up.
96
+
97
+ ### Conditional / `if-needed`
98
+ A step marked `conditional: 'if-needed'` :cite[src/types/frontmatter.ts:118] is
99
+ enabled but only *applies* to certain project shapes (e.g. `database-schema`
100
+ runs only if your project has a database layer). Conditional steps that don't
101
+ apply count as "satisfied" for dependency purposes. See
102
+ [Conditional steps](../pipeline/index.md#conditional-if-needed-steps).
103
+
104
+ ### Stateless step
105
+ A phase-15 build step with `stateless: true` :cite[src/types/frontmatter.ts:126]
106
+ — it carries no completion state and can be run over and over (the agent loops,
107
+ resume commands, `quick-task`, `new-enhancement`). The pipeline never tracks or
108
+ gates these. See [the pipeline guide](../pipeline/index.md#the-mental-model).
109
+
110
+ ### CREATE vs. UPDATE mode
111
+ Every document-creating prompt detects whether its output file already exists. On
112
+ first run it's **CREATE mode**; on a re-run it's **UPDATE mode**, which preserves
113
+ human/team customizations and changes only what genuinely needs to change. This
114
+ is what makes planning phases safe to iterate. See
115
+ [CREATE vs UPDATE mode](../pipeline/index.md#create-vs-update-mode).
116
+
117
+ ### Methodology preset
118
+ *Which* steps are enabled. Three presets ship — `mvp`, `custom` (balanced), and
119
+ `deep` (the schema default and most thorough). Presets are layered with
120
+ **overlays**. See [Methodology & depth](../pipeline/index.md#methodology-depth).
121
+
122
+ ### Depth (1–5)
123
+ *How thorough* each enabled step's output is, on a 1–5 scale from Minimal to
124
+ Exhaustive (depth 3 is the recommended default). Orthogonal to the preset:
125
+ the preset picks the steps, depth dials each one's detail. At depth 4–5 some
126
+ review/validation steps add external- or multi-model dispatch. See
127
+ [Depth](../pipeline/index.md#depth-15).
128
+
129
+ ### Overlay
130
+ A preset layer (`content/methodology/*-overlay.yml`) applied on top of a
131
+ preset. Overlays are either **project-type** (keyed by `project-type`, e.g.
132
+ web-app, mobile, CLI, library) or **structural** (e.g. `multi-service`, which
133
+ has no `project-type` and is activated by the presence of `services[]` in
134
+ config). Most overlays only **inject domain knowledge** into existing steps; a
135
+ few **enable whole step families** (game, multi-service). See
136
+ [Project-type playbooks](../pipeline/index.md#project-type-playbooks).
137
+
138
+ ## Observability concepts
139
+
140
+ These describe Build Observability — the durable record of what the build did,
141
+ and the audit that checks it against the planning docs. Full treatment:
142
+ [the build observability guide](../observability/index.md).
143
+
144
+ ### Ledger
145
+ The append-only `.scaffold/activity.jsonl` file where every durable observation
146
+ lands as one JSON object per line. Writes are lock-guarded so parallel worktrees
147
+ never corrupt it, each event is capped at 4 KiB, and secrets and home paths are
148
+ redacted on the way in and out. See [The ledger](../observability/index.md#the-ledger).
149
+
150
+ ### Event
151
+ One typed entry in the ledger, written via `scaffold observe event <type> …`.
152
+ There are **nine event types** :cite[src/observability/engine/types.ts:9]
153
+ (`task_claimed`, `task_completed`, `decision_recorded`, `blocker_hit`,
154
+ `blocker_resolved`, `pr_opened`, `progress_heartbeat`, `finding_acknowledged`,
155
+ `knowledge_gap_signal`), each with its own payload allow-list. See
156
+ [The nine event types](../observability/index.md#the-nine-event-types).
157
+
158
+ ### Adapter
159
+ A component that *synthesizes* events from the surrounding tools (git, GitHub,
160
+ MMR jobs, pipeline state, test runs) so the timeline reflects more than what
161
+ agents chose to record. Eight adapters exist
162
+ :cite[src/observability/engine/types.ts:69]; five emit replay events, three are
163
+ availability probes. See [Adapters](../observability/index.md#adapters).
164
+
165
+ ### Lens (A–I)
166
+ An independent audit check function inside `scaffold observe audit`. The suite
167
+ runs **nine lenses, A through I** — TDD coverage, AC coverage, coding-standards
168
+ drift, tech-stack drift, design-system drift, scope, decisions, cross-doc
169
+ consistency, and knowledge gaps. Lenses A–G run under `--scope code`, H and I
170
+ under `--scope docs`. See
171
+ [The nine-lens audit](../observability/index.md#the-nine-lens-audit). **Lens I**
172
+ (`I-knowledge-gaps`) lives in the audit but reasons about the knowledge base —
173
+ its full behavior is in [the knowledge-freshness guide](../knowledge-freshness/index.md#lens-i-gap-detection-suppression).
174
+
175
+ ### Finding
176
+ A single issue a lens reports, carrying a severity (`P0`–`P3`), a title, a
177
+ source doc, and an optional fix hint. Findings can be `open`, `acknowledged`
178
+ (silenced via `scaffold observe ack`), or `skipped` (a lens whose required
179
+ adapter was missing). See
180
+ [The nine-lens audit](../observability/index.md#the-nine-lens-audit).
181
+
182
+ ### Audit verdict
183
+ The overall result of an audit run. The engine computes exactly **three**
184
+ verdicts :cite[src/observability/engine/types.ts:6]: `pass` (no blocking
185
+ findings, no skipped lenses), `degraded-pass` (no blocking findings but ≥1 lens
186
+ skipped), and `blocked` (≥1 open finding at or above `fix_threshold`). Note
187
+ this is **not** the same set as MMR's four verdicts — see [MMR verdict](#mmr-verdict).
188
+ See [Verdict taxonomy](../observability/index.md#verdict-taxonomy).
189
+
190
+ ### `fix_threshold`
191
+ The severity cutoff that decides which findings count as *blocking*. A finding
192
+ blocks when its status is `open` and its severity is at or above the threshold
193
+ (default **P2**). The threshold never hides findings — it only decides which
194
+ ones drive a `blocked` verdict. The same name and default govern the MMR gate.
195
+ See [`fix_threshold`](../observability/index.md#verdict-taxonomy) and the
196
+ [MMR gate](../mmr/index.md#the-gate-the-four-verdicts).
197
+
198
+ ### `--fix` flow
199
+ `scaffold observe audit --fix` doesn't just report blocking findings — it
200
+ dispatches an agent to fix each one, verifies the fix with a single-lens
201
+ re-audit, and writes a post-fix report, all under abort-safe stashing. See
202
+ [The --fix flow](../observability/index.md#the---fix-flow).
203
+
204
+ ### Stall signal
205
+ A staleness alert raised on the "Needs Attention" surface when
206
+ `scaffold observe progress` runs — e.g. a claimed task with no recent activity,
207
+ a PR that hasn't merged, an unaddressed blocker. Six signals are defined; five
208
+ fire today. Thresholds are configurable under `stall:` in
209
+ `.scaffold/observability.yaml`. See
210
+ [Stall detection](../observability/index.md#stall-detection-the-six-signals).
211
+
212
+ ### Phase-boundary audit
213
+ A non-gating cross-document audit that fires automatically when a planning
214
+ document at a phase boundary is marked complete. It runs only the `H-cross-doc`
215
+ lens at `scope=docs`, prints a one-line summary, and never blocks the state
216
+ transition. The six boundary steps are `user-stories`, `tech-stack`,
217
+ `coding-standards`, `design-system`, `implementation-plan`, and
218
+ `implementation-playbook`. See
219
+ [Phase-boundary triggers](../observability/index.md#phase-boundary-triggers) and
220
+ the [pipeline view](../pipeline/index.md#phase-boundary-audits).
221
+
222
+ ### `doc-conformance` channel
223
+ The seam where the audit plugs into multi-model review: a built-in MMR channel
224
+ that runs `scaffold observe audit --output-mode=mmr-findings` and emits findings
225
+ in MMR's `Finding` shape. Disabled by default; enable with
226
+ `--channels=doc-conformance`. See
227
+ [MMR doc-conformance channel](../observability/index.md#mmr-doc-conformance-channel)
228
+ and the [MMR channel architecture](../mmr/index.md#channel-architecture).
229
+
230
+ ## Knowledge concepts
231
+
232
+ These describe the knowledge base and how it stays current. Full treatment:
233
+ [the knowledge-freshness guide](../knowledge-freshness/index.md) and
234
+ [the knowledge guide](../knowledge/index.md).
235
+
236
+ ### Knowledge entry
237
+ A domain-expertise document under `content/knowledge/<category>/<slug>.md`,
238
+ injected into prompts during assembly. Each declares a `name`, `volatility`
239
+ tier, and a list of `sources`. See
240
+ [the knowledge guide](../knowledge/index.md) and
241
+ [Adding a new entry](../knowledge-freshness/index.md#adding-a-new-entry-to-the-kb).
242
+
243
+ ### Volatility tier
244
+ How often an entry is expected to drift, on a three-tier scale — `fast-moving`,
245
+ `evolving` (default), `stable` — which sets the daily cron's re-audit cadence
246
+ (14 / 60 / 180 days). See
247
+ [the cadence model](../knowledge-freshness/index.md#cadence-model).
248
+
249
+ ### Knowledge-gap signal
250
+ A `knowledge_gap_signal` ledger event emitted when an agent hits a topic the KB
251
+ doesn't cover. **Lens I** aggregates these over a rolling 90-day window into
252
+ P1/P2 findings, suppressing any topic an entry already covers. This is where the
253
+ observability and knowledge-freshness systems meet. See
254
+ [How a gap closes](../knowledge-freshness/index.md#how-a-gap-closes).
255
+
256
+ ## Review concepts
257
+
258
+ These describe Multi-Model Review (MMR). Full treatment:
259
+ [the MMR guide](../mmr/index.md) and
260
+ [the review-workflow guide](../review-workflow/index.md).
261
+
262
+ ### Channel
263
+ One independent AI reviewer in an MMR run — a separate subprocess given the same
264
+ prompt and run in isolation. The built-in channels are `codex`, `gemini`,
265
+ `claude`, `grok`, and the opt-in `doc-conformance`; the `scaffold run` wrappers
266
+ add a Superpowers code-reviewer *agent* channel. A channel is pure config data,
267
+ not per-channel code. See [Channel architecture](../mmr/index.md#channel-architecture).
268
+
269
+ ### Compensating pass
270
+ When a channel is degraded (not installed, auth-failed, timed out), MMR runs a
271
+ `claude -p` pass focused on that channel's strength area, labeled e.g.
272
+ `[compensating: Grok-equivalent]`. These findings are single-source and
273
+ low-confidence. See [Degraded mode](../mmr/index.md#degraded-mode-compensation-auth).
274
+
275
+ ### Reconcile
276
+ The step that groups every channel's findings by a stable key, de-duplicates
277
+ them, and scores each group for agreement and confidence — producing the single
278
+ list and verdict. Agreement *between* channels raises confidence; disagreement
279
+ surfaces ambiguity. `mmr reconcile` also folds an external agent channel's
280
+ findings into an existing job. See
281
+ [Findings, reconciliation & verdicts](../mmr/index.md#findings-reconciliation-verdicts).
282
+
283
+ ### `finding_key`
284
+ The stable identity MMR computes for a finding so the same issue can be tracked
285
+ across rounds and acknowledgments. Line numbers are stripped from the location
286
+ and severity is excluded, so the same issue at P1 vs. P2 collapses to one key;
287
+ a character-5-gram shingle backs a fuzzy match for re-worded findings. See
288
+ [Stable identity](../mmr/index.md#stable-identity-finding-key).
289
+
290
+ ### MMR verdict
291
+ The gate result of a review. MMR computes **four** verdicts: `pass`,
292
+ `degraded-pass`, `blocked`, and `needs-user-decision` (no channel completed).
293
+ Proceed only on `pass` or `degraded-pass`.
294
+
295
+ :::callout{type=warning}
296
+ **Two verdict vocabularies — don't conflate them.** The MMR review gate has
297
+ *four* verdicts (the fourth, `needs-user-decision`, fires when no channel
298
+ completes). The Build Observability audit engine emits only *three* —
299
+ `needs-user-decision` is **not** an audit-engine verdict. See
300
+ [the MMR gate](../mmr/index.md#the-gate-the-four-verdicts) and
301
+ [the audit verdict taxonomy](../observability/index.md#verdict-taxonomy).
302
+ :::
303
+
304
+ ## Multi-agent concepts
305
+
306
+ These describe how parallel agents share a repo without colliding. Full
307
+ treatment: [the multi-agent guide](../multi-agent/index.md), with the durable
308
+ record covered in [the observability guide](../observability/index.md).
309
+
310
+ ### Worktree
311
+ An isolated git working tree used for parallel agent execution, so multiple
312
+ agents (and humans) can build different parts of a project at once without
313
+ sharing a checkout. Each worktree has its own ledger. See
314
+ [the multi-agent guide](../multi-agent/index.md).
315
+
316
+ ### Worktree identity
317
+ The stable per-worktree identity recorded in `.scaffold/identity.json` on first
318
+ write — a `worktree_id` (UUID), a `worktree_label`, and `created_at`. It's what
319
+ lets the harvester tell one worktree's events from another's, and what stamps
320
+ every event's `worktree_id`. See
321
+ [Worktree identity](../observability/index.md#worktree-identity).
322
+
323
+ ### Ledger harvest
324
+ Copying a worktree's local ledger into the primary repo's archive *before* the
325
+ worktree is removed, so the build's reasoning survives teardown.
326
+ `harvest --recover` separately rotates already-harvested stale entries from
327
+ `.scaffold/activity-archive/active/` into the monthly `YYYY-MM.jsonl` archives
328
+ when their worktree is no longer live — it does **not** rescue an unharvested
329
+ ledger; that ledger is lost once the worktree is removed. See
330
+ [Harvest, recover & teardown](../observability/index.md#harvest-recover-teardown).
331
+
332
+ ### Teardown
333
+ Removing a finished worktree the safe way — `scripts/teardown-agent-worktree.sh`
334
+ harvests the ledger first, then runs `git worktree remove`, then deletes the
335
+ workspace branch. Harvesting before removal is what closes the
336
+ decisions-die-at-teardown gap. See
337
+ [Harvest, recover & teardown](../observability/index.md#harvest-recover-teardown).
338
+
339
+ ## See also
340
+
341
+ - [The Scaffold Pipeline](../pipeline/index.md) — phases, dependencies, presets, depth.
342
+ - [Build Observability](../observability/index.md) — ledger, events, the nine lenses, verdicts, `--fix`.
343
+ - [Knowledge Freshness](../knowledge-freshness/index.md) — volatility tiers, gap signals, Lens I.
344
+ - [MMR Reference](../mmr/index.md) — channels, reconciliation, the four verdicts.
345
+ - [Multi-agent](../multi-agent/index.md) — worktrees and parallel execution.
346
+ - [Review workflow](../review-workflow/index.md) — running reviews end to end.
347
+ - [CLI reference](../cli/index.md) — the full command surface.