@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.
- package/content/guides/AUTHORING.md +146 -0
- package/content/guides/cli/index.html +1855 -0
- package/content/guides/cli/index.md +206 -0
- package/content/guides/concepts/index.html +1970 -0
- package/content/guides/concepts/index.md +347 -0
- package/content/guides/dashboard/index.html +1913 -0
- package/content/guides/dashboard/index.md +264 -0
- package/content/guides/index.html +368 -15
- package/content/guides/install/.diagrams/diagram-0.svg +1 -0
- package/content/guides/install/.diagrams/manifest.json +3 -0
- package/content/guides/install/index.html +1653 -0
- package/content/guides/install/index.md +186 -0
- package/content/guides/knowledge/.diagrams/diagram-0.svg +1 -0
- package/content/guides/knowledge/.diagrams/manifest.json +3 -0
- package/content/guides/knowledge/index.html +1765 -0
- package/content/guides/knowledge/index.md +209 -0
- package/content/guides/knowledge-freshness/.diagrams/diagram-0.svg +1 -0
- package/content/guides/knowledge-freshness/.diagrams/manifest.json +3 -0
- package/content/guides/knowledge-freshness/index.html +2795 -0
- package/content/guides/knowledge-freshness/index.md +893 -0
- package/content/guides/mmr/index.html +407 -36
- package/content/guides/mmr/index.md +39 -16
- package/content/guides/multi-agent/.diagrams/diagram-0.svg +1 -0
- package/content/guides/multi-agent/.diagrams/manifest.json +3 -0
- package/content/guides/multi-agent/index.html +1715 -0
- package/content/guides/multi-agent/index.md +243 -0
- package/content/guides/observability/.diagrams/diagram-0.svg +1 -0
- package/content/guides/observability/.diagrams/diagram-1.svg +1 -0
- package/content/guides/observability/.diagrams/diagram-2.svg +1 -0
- package/content/guides/observability/.diagrams/diagram-3.svg +1 -0
- package/content/guides/observability/.diagrams/manifest.json +6 -0
- package/content/guides/observability/index.html +3257 -0
- package/content/guides/observability/index.md +1097 -0
- package/content/guides/pipeline/.diagrams/diagram-0.svg +1 -0
- package/content/guides/pipeline/.diagrams/diagram-1.svg +1 -0
- package/content/guides/pipeline/.diagrams/manifest.json +4 -0
- package/content/guides/pipeline/index.html +1973 -0
- package/content/guides/pipeline/index.md +387 -0
- package/content/guides/review-workflow/.diagrams/diagram-0.svg +1 -0
- package/content/guides/review-workflow/.diagrams/diagram-1.svg +1 -0
- package/content/guides/review-workflow/.diagrams/manifest.json +4 -0
- package/content/guides/review-workflow/index.html +1790 -0
- package/content/guides/review-workflow/index.md +248 -0
- package/dist/guides/build.d.ts +1 -1
- package/dist/guides/build.d.ts.map +1 -1
- package/dist/guides/build.js +21 -9
- package/dist/guides/build.js.map +1 -1
- package/dist/guides/build.test.js +47 -0
- package/dist/guides/build.test.js.map +1 -1
- package/dist/guides/chrome.d.ts.map +1 -1
- package/dist/guides/chrome.js +83 -12
- package/dist/guides/chrome.js.map +1 -1
- package/dist/guides/dashboard-theme.css +8 -0
- package/dist/guides/directives-cite.test.d.ts +2 -0
- package/dist/guides/directives-cite.test.d.ts.map +1 -0
- package/dist/guides/directives-cite.test.js +26 -0
- package/dist/guides/directives-cite.test.js.map +1 -0
- package/dist/guides/directives-tabs.test.js +47 -0
- package/dist/guides/directives-tabs.test.js.map +1 -1
- package/dist/guides/directives.d.ts +1 -0
- package/dist/guides/directives.d.ts.map +1 -1
- package/dist/guides/directives.js +38 -0
- package/dist/guides/directives.js.map +1 -1
- package/dist/guides/guides.css +268 -0
- package/dist/guides/index-page.d.ts.map +1 -1
- package/dist/guides/index-page.js +41 -8
- package/dist/guides/index-page.js.map +1 -1
- package/dist/guides/links.d.ts +14 -0
- package/dist/guides/links.d.ts.map +1 -0
- package/dist/guides/links.js +56 -0
- package/dist/guides/links.js.map +1 -0
- package/dist/guides/links.test.d.ts +2 -0
- package/dist/guides/links.test.d.ts.map +1 -0
- package/dist/guides/links.test.js +72 -0
- package/dist/guides/links.test.js.map +1 -0
- package/dist/guides/render.d.ts +1 -0
- package/dist/guides/render.d.ts.map +1 -1
- package/dist/guides/render.js +1 -1
- package/dist/guides/render.js.map +1 -1
- package/dist/guides/sanitize.d.ts.map +1 -1
- package/dist/guides/sanitize.js +5 -0
- package/dist/guides/sanitize.js.map +1 -1
- package/dist/guides/template.d.ts.map +1 -1
- package/dist/guides/template.js +7 -2
- package/dist/guides/template.js.map +1 -1
- 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.
|