@open-agent-toolkit/cli 0.2.72 → 0.2.73

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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-reviewer
3
- version: 1.2.4
3
+ version: 1.2.5
4
4
  description: Unified reviewer for OAT projects - mode-aware verification of requirements/design alignment and code quality. Writes a review artifact to disk by default, or returns structured findings in-memory when dispatched in structured-output mode.
5
5
  tools: Read, Bash, Grep, Glob, Write, Task
6
6
  color: yellow
@@ -93,8 +93,9 @@ When delegation is eligible:
93
93
  Mechanical workers may execute checks and report exact output, but interpretation and policy judgment require stronger classes or stay with the root reviewer.
94
94
 
95
95
  5. The generic dispatch contract owns capability, catalog, model, effort, route, authorization, launch evidence, class-floor selection, and floor-satisfaction evidence. It applies active user and repository instructions, the active-provider reference, the live nested catalog, and the supplied policy/ceiling. Select an explicit target meeting the declared floor; never silently inherit the primary reviewer's model and never hard-code provider model names. Prefer a cheaper/faster worker only when the host reliably exposes that control and the target still satisfies the floor.
96
- 6. Give each lane an exact scope and a compact return contract: coverage, checks performed, exact `file:line` evidence, gaps, and explicit uncertainty. Reports are advisory candidate observations, not accepted findings.
97
- 7. Workers must not mutate files, emit final findings, assign severity, make validation decisions, write review artifacts or `StructuredFindings`, or otherwise write either output sink.
96
+ 6. When the selected lane worker is the canonical `recon-worker`, construct and validate its complete Assignment Gate envelope before launch: run, wave, and lane IDs; approved manifest wave mode; worker assignment mode; bounded objective; included and excluded scope; allowed and excluded inputs; source-read authority and read-only tools; sole write path; artifact kind, schema version, and closed output schema; enforcement; deadline; and escalation path. If the complete envelope cannot be constructed, do not launch the worker; record the attempt as not attempted or failed as appropriate and cover the lane inline. Other worker roles follow their own contracts.
97
+ 7. Give each lane an exact scope and a compact return contract: coverage, checks performed, exact `file:line` evidence, gaps, and explicit uncertainty. Reports are advisory candidate observations, not accepted findings.
98
+ 8. Workers must not mutate files, emit final findings, assign severity, make validation decisions, write review artifacts or `StructuredFindings`, or otherwise write either output sink.
98
99
 
99
100
  Lanes may share one homogeneous dispatch wave only when every existing dispatch axis, `task_class`, and `model_class_floor` match. Mixed task classes require separate records and waves. The one-level fan-out limit applies across all waves.
100
101
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: recon-worker
3
- version: 1.0.0
3
+ version: 1.0.1
4
4
  description: Executes one bounded recon packet assignment as a non-interactive leaf worker and writes exactly one declared artifact.
5
5
  tools: Read, Bash, Grep, Glob, Write, WebSearch, WebFetch
6
6
  color: cyan
@@ -12,12 +12,31 @@ You are a non-interactive recon leaf worker. Execute exactly one assignment in
12
12
  one declared mode: `map`, `gather`, `compile`, `verify`, `adversary`, `coverage`,
13
13
  or `reconcile`. No other mode is valid.
14
14
 
15
+ The controller maps approved manifest waves to this closed vocabulary:
16
+
17
+ | Manifest wave mode | Worker assignment mode |
18
+ | -------------------------- | ---------------------- |
19
+ | `map` | `map` |
20
+ | `gather` | `gather` |
21
+ | `compile` | `compile` |
22
+ | `semantic-verification` | `verify` |
23
+ | `adversarial` | `adversary` |
24
+ | `coverage` | `coverage` |
25
+ | `reconciliation` | `reconcile` |
26
+ | `redundant-gather` | `gather` |
27
+ | `redundant-verification` | `verify` |
28
+ | `contradiction-resolution` | `adversary` |
29
+
30
+ Preserve the approved wave identity and target; never select or upgrade a
31
+ route yourself.
32
+
15
33
  ## Assignment Gate
16
34
 
17
35
  Before work, require a complete envelope containing run, wave, and lane IDs;
18
- mode; bounded objective; included and excluded scope; allowed inputs; excluded
19
- inputs; source-read authority and read-only tools; sole write path; artifact
20
- kind and schema version; output schema; enforcement level; and deadline.
36
+ the approved manifest wave mode; exactly one worker assignment mode; bounded
37
+ objective; included and excluded scope; allowed inputs; excluded inputs;
38
+ source-read authority and read-only tools; sole write path; artifact kind and
39
+ schema version; output schema; enforcement level; and deadline.
21
40
 
22
41
  Reject the assignment if inputs overlap exclusions, source authority is
23
42
  missing, the write path is not unique and packet-contained, the schema is
@@ -70,6 +89,9 @@ reasoning, synthesis prose, or prior reviews.
70
89
  Consume only declared scope, questions, and provisional statements. Search for
71
90
  counterevidence, unsupported inference, incompatible interpretations, and
72
91
  missing alternatives. Do not read gathering or prior-review conclusions.
92
+ When assigned a `contradiction-resolution` wave, seek discriminating evidence
93
+ for that named contradiction; do not reconcile the ledger or decide which
94
+ interpretation wins.
73
95
 
74
96
  ### `coverage`
75
97
 
@@ -86,14 +108,26 @@ the existing ledger in place.
86
108
 
87
109
  ## Output
88
110
 
89
- Write one JSON artifact matching the supplied schema. Include kind, schema
90
- version, identities, mode, outcome, honored inputs and exclusions, findings or
91
- dispositions, uncertainty, contradictions, gaps, safe diagnostics, and direct
92
- input references where applicable.
111
+ Write one JSON artifact using only the supplied closed schema's fields. A
112
+ `recon.raw-dossier` identifies its approved manifest wave with `waveId` and its
113
+ closed worker assignment with `mode`; it also includes `laneId` and `outcome`.
114
+ A `recon.review-result` identifies its approved lane with `reviewerLane` and its
115
+ approved review discriminator with `reviewKind`. Include the remaining
116
+ required identity, input, exclusion, finding or disposition, uncertainty,
117
+ contradiction, gap, diagnostic, and direct-reference fields only as the
118
+ supplied schema permits.
119
+
120
+ Do not add a second mode field or any other unknown field. The controller
121
+ validates `waveId` and `mode`, or `reviewerLane` and `reviewKind`, against the
122
+ approved manifest wave before promoting the artifact.
93
123
 
94
124
  Return only the artifact path and compact outcome. Do not return source bodies,
95
125
  worker reasoning, or dossier contents to the controller.
96
126
 
127
+ The controller and caller decide whether the evidence is sufficient. Never turn
128
+ an assignment result into a downstream recommendation, architecture verdict, or
129
+ final review conclusion.
130
+
97
131
  ## Critical Rules
98
132
 
99
133
  **ONE MODE. ONE ARTIFACT.** Perform only the assigned mode and write only its
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "oatVersion": "0.2.72"
3
+ "oatVersion": "0.2.73"
4
4
  }
@@ -10,6 +10,12 @@ It gathers source-grounded findings through approved worker waves, validates
10
10
  their locators and assurance state, and gives the next consumer one compact
11
11
  entry point instead of every worker transcript.
12
12
 
13
+ Recon controls the profile, routing proposal, and evidence flow. Shared
14
+ orchestration guidance classifies the concrete assignments, the dispatch skill
15
+ resolves and launches exact targets supported by the active harness, and the
16
+ calling agent owns scope, approval dialogue, sufficiency judgment, and final
17
+ conclusions.
18
+
13
19
  The first release is standalone. It does not automatically run from project
14
20
  discovery, quick start, `analyze`, or `deep-research`. Those workflows can
15
21
  consume an explicitly supplied packet path without changing their own
@@ -45,10 +51,11 @@ oat tools update --pack research --scope project
45
51
 
46
52
  The research pack acquires its two dispatch dependencies from the utility pack
47
53
  at the same scope. You do not need to select a named model during installation.
48
- At run time, OAT resolves a currently available target that meets the planned
49
- work's task-class floor and asks you to approve the exact provider, model,
50
- effort, role, topology, authority, and execution limits before any worker
51
- launches.
54
+ At run time, OAT resolves each wave independently against its task class and
55
+ floor, then asks you to approve every wave's exact supported provider-native
56
+ axes, role, topology, rationale, conditions, authority, and finite execution
57
+ limits before any worker launches. Active provider guidance and the live
58
+ catalog own current qualification; recon does not maintain a second model list.
52
59
 
53
60
  ## Run a Recon
54
61
 
@@ -59,21 +66,31 @@ context source, output directory, or strict authority:
59
66
  /recon "How is provider sync materialized?" --profile standard --scope packages/cli/src/providers
60
67
  ```
61
68
 
62
- The default profile is `standard`. Every run uses one approved model and effort
63
- for every pass. Profiles change pass topology, redundancy, lane caps, and
64
- maximum concurrency; they do not silently choose a different model tier.
65
-
66
- | Profile | Use it for | Required assurance work | Claim ceiling |
67
- | ---------- | ------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------- |
68
- | `quick` | Bounded orientation | Mapping, gathering, compilation, schema validation, and locator validation | `supported` |
69
- | `standard` | Load-bearing evidence | Quick work plus blind semantic verification, adversarial review, coverage, and reconcile | `verified` |
70
- | `thorough` | Expensive failure or correlated blind spots | Standard work plus redundant gathering and verification and contradiction resolution | `verified` |
71
-
72
- The approval manifest shows the exact adaptive lane count, concurrency, pass
73
- topology, deadlines, retries, and source/write authority. Declining approval
74
- launches nothing. A change to a provider, model, effort, route, role, service
75
- tier, or execution cap requires renewed approval; there is no silent
76
- substitution after approval.
69
+ The default profile is `standard`. Each homogeneous wave has an independently
70
+ selected and approved exact target. Bounded mapping, extraction, citation
71
+ reopening, counterexample search, and mechanical dossier compilation start with
72
+ economical qualified routes. A wave that genuinely requires interpretation or
73
+ reconciliation judgment can use a stronger approved target without raising the
74
+ cost of unrelated evidence waves.
75
+
76
+ | Profile | Use it for | Required assurance work | Claim ceiling |
77
+ | ---------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------- |
78
+ | `quick` | Bounded orientation | Mapping, gathering, compilation, schema validation, and locator validation; no independent semantic pass by design | `supported` |
79
+ | `standard` | Load-bearing evidence | Quick work plus blind semantic verification, adversarial review, coverage, and reconcile | `verified` |
80
+ | `thorough` | Expensive failure or correlated blind spots | Standard work plus required redundant gathering and redundant verification | `verified` |
81
+
82
+ A thorough run may additionally predeclare an optional, condition-bound
83
+ `contradiction-resolution` evidence wave. It runs only when its approved
84
+ predicate triggers and is not required when that branch is not triggered.
85
+
86
+ The approval manifest shows each wave's exact target, task class, class floor,
87
+ selection rationale, adaptive lane count, conditional rule, concurrency,
88
+ deadlines, retries, and source/write authority. An unsupported provider-native
89
+ control is shown explicitly as unavailable or null; recon never translates an
90
+ effort label across harnesses or infers capability from an opaque selector.
91
+ Declining approval launches nothing. Any target, topology, condition, or limit
92
+ change requires renewed approval; there is no silent substitution after
93
+ approval.
77
94
 
78
95
  Before any worker launches, recon confirms that the live launch surface can run
79
96
  the approved role, model, effort, and authority level. If it cannot, the run
@@ -82,6 +99,48 @@ launched. Deadlines are approved execution limits chosen for the task class,
82
99
  not short watchdogs; an accepted lane is never interrupted by hand because a
83
100
  displayed deadline elapsed.
84
101
 
102
+ ### Preview and Check Routing
103
+
104
+ The installed proposal helper renders the complete envelope in Markdown or
105
+ JSON without recording approval or launching work. From a project-scoped
106
+ installation:
107
+
108
+ ```bash
109
+ node .agents/skills/recon/scripts/prepare-routing.mjs --manifest draft-manifest.json --format markdown
110
+ node .agents/skills/recon/scripts/prepare-routing.mjs --manifest draft-manifest.json --format json
111
+ ```
112
+
113
+ Immediately before a launch, the controller uses the same production logic to
114
+ compare the constructed target with that wave's approved exact target:
115
+
116
+ ```bash
117
+ node .agents/skills/recon/scripts/prepare-routing.mjs --manifest manifest.json --wave gather-1 --check-target candidate-target.json
118
+ ```
119
+
120
+ These commands validate structure, approval integrity, and exact identity. They
121
+ do not launch a worker, rank model names, attest actual runtime identity, or
122
+ measure cost.
123
+
124
+ ### Bounded Conditional Evidence
125
+
126
+ Standard and thorough may predeclare finite conditional
127
+ `contradiction-resolution` evidence waves. A completed predecessor can trigger
128
+ one such wave to seek discriminating evidence; accepted failure, cancellation,
129
+ timeout, or missing output cannot trigger a replacement. Triggered,
130
+ not-triggered, and unresolved dispositions remain visible. Both branches feed
131
+ the same single mandatory terminal reconciliation.
132
+
133
+ A triggered condition must cite complete, digest-bound evidence from an approved
134
+ predecessor in the same run. Evidence copied from another run cannot activate
135
+ the destination wave and fails packet validation with
136
+ `CONDITION_EVIDENCE_RUN_MISMATCH`.
137
+
138
+ If a need for stronger reconciliation judgment is foreseeable, select that one
139
+ terminal target before approval. If it appears only after approval, recon
140
+ preserves completed evidence and returns an unresolved, out-of-envelope gap for
141
+ renewed approval or a new run. It never mutates the target, silently retries,
142
+ or launches a second reconciliation.
143
+
85
144
  ## Destination Precedence
86
145
 
87
146
  `recon` always creates a new topic-and-run directory. It never overwrites an
@@ -119,6 +178,26 @@ non-publishable candidate generation withdraws any existing `packet.md`:
119
178
  - `raw/` contains worker dossiers, candidate artifacts, and safe failure
120
179
  diagnostics. It is not normal consumer input.
121
180
 
181
+ The `recon.packet-manifest` contract accepts version 2 only. Evidence artifact
182
+ kinds remain independently versioned at version 1. Approval is session-local
183
+ and records only `{ type, approvedAt }`: resuming, reloading, or changing the
184
+ proposal requires a fresh preview and explicit approval before launch.
185
+
186
+ Every valid packet renders a compact Intended Routing section from the already
187
+ validated normalized view. It labels exact targets and condition dispositions
188
+ as approved intent, not proof of the native process that ran, launcher receipts,
189
+ token or billing totals, or universal correctness. A valid packet continues to
190
+ reference version 1 evidence artifacts. Evidence, claims, contradictions, and
191
+ gaps remain the packet's main consumer context.
192
+
193
+ Every dossier and review result identifies the approved wave and lane that wrote
194
+ it. Primary and redundant gather artifacts therefore satisfy only their owning
195
+ waves; lanes from one gather wave cannot impersonate the other pass. In a
196
+ thorough run, redundant gathering finishes before compilation, and the compiled
197
+ ledger must reference every completed primary and redundant gather dossier by
198
+ exact path and digest before review briefs are created. Missing provenance fails
199
+ with `MISSING_THOROUGH_GATHER_LEDGER_INPUT`.
200
+
122
201
  The ledger compiler and packet validator enforce categorical referential
123
202
  integrity on `synthesis.keyClaimIds` and `synthesis.unresolvedQuestionIds`. Any
124
203
  reference to an unknown claim or question ID fails validation with
@@ -143,9 +222,11 @@ percentages:
143
222
  - `unresolved`: available evidence cannot settle the claim; and
144
223
  - `unsupported`: valid supporting evidence is absent or verification failed.
145
224
 
146
- A quick packet never promotes a claim to `verified`. Stronger profiles can do
147
- so only when their required review artifacts validate and were written by
148
- approved lanes.
225
+ A quick packet is an evidence packet for an intelligent consumer and has no
226
+ independent semantic pass by design. It never promotes a claim to `verified`;
227
+ the caller assesses sufficiency and conclusions. Stronger profiles can promote
228
+ claims only when their required independent review artifacts validate and were
229
+ written by approved lanes.
149
230
 
150
231
  When an independent semantic review rejects a proposed claim, the reconciler
151
232
  transitions it to `unsupported` rather than deleting it. This preserves the
@@ -189,7 +270,17 @@ omitted passes, material gaps, affected claims, and required assurance
189
270
  downgrades. A run may be partial even when it achieved the requested profile if
190
271
  a material evidence gap remains. The achieved profile is derived from the
191
272
  complete typed artifacts in the packet; each required pass without a complete
192
- result needs a material `PASS_FAILED` or `PASS_OMITTED` gap naming it.
273
+ result needs a material `PASS_FAILED` or `PASS_OMITTED` gap. Each approved lane
274
+ must likewise have a complete artifact or a material outcome gap carrying its
275
+ exact `waveId` and `laneId`; legacy mode-only gaps remain valid only when the mode
276
+ unambiguously identifies one single-lane wave.
277
+
278
+ A complete artifact and material failure or omission for the same exact wave and
279
+ lane are contradictory, so validation fails closed with
280
+ `CONTRADICTORY_PASS_OUTCOME`. Complete evidence from one lane and exact failure
281
+ evidence from a different lane are not contradictory: the completed lane can
282
+ preserve the achieved pass while the failed lane makes the published run an
283
+ honest `partial` packet at that achieved profile.
193
284
 
194
285
  Status updates and the final handoff label each failure as `worker`,
195
286
  `provider/dispatch`, `contract validation`, or `source availability`, and
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.2.72",
3
- "docs-config": "0.2.72",
4
- "docs-theme": "0.2.72",
5
- "docs-transforms": "0.2.72"
2
+ "cli": "0.2.73",
3
+ "docs-config": "0.2.73",
4
+ "docs-theme": "0.2.73",
5
+ "docs-transforms": "0.2.73"
6
6
  }
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 1.6.4
8
+ version: 1.6.6
9
9
  ---
10
10
 
11
11
  # Receive Review
@@ -82,6 +82,19 @@ When executing this skill, provide lightweight progress feedback so the user can
82
82
  - Routing to oat-project-implement
83
83
  - For `artifact` reviews: updating reviewed artifact files directly after user confirmation
84
84
 
85
+ ## Review Artifact Ownership
86
+
87
+ The receiving/root agent reads the selected review artifact completely and
88
+ interprets every finding. Do not delegate review-artifact reading, parsing,
89
+ finding analysis, disposition judgment, or artifact edits to an explorer or
90
+ reconnaissance worker.
91
+
92
+ After the root has read the artifact, it may delegate a bounded inspection of
93
+ explicitly scoped related code or evidence when corroboration is useful. That
94
+ assignment must exclude the review artifact, return exact `file:line` evidence,
95
+ and leave finding analysis, disposition, and all lifecycle mutations with the
96
+ receiving/root agent.
97
+
85
98
  ## Artifact Hygiene
86
99
 
87
100
  Artifact hygiene contract: Before finishing or committing, format every file you created or edited. Use the concrete write/fix formatting command supplied by the governing plan, task, or brief. If none is usable, discover the repository's documented write/fix command from applicable `AGENTS.md`/`CLAUDE.md` instructions and relevant package manifests; do not infer or hardcode a formatter. Prefer a file-scoped invocation when supported, and avoid rewriting unrelated files. If no command is discoverable, warn once with `no format command discovered in repo instructions; skipping`, then continue.
@@ -6,15 +6,18 @@ disable-model-invocation: true
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Glob, Grep, Bash, AskUserQuestion, Agent, mcp__*
8
8
  metadata:
9
- version: 1.1.1
9
+ version: 1.1.2
10
10
  ---
11
11
 
12
12
  # Recon
13
13
 
14
14
  Compile a bounded investigation into a durable, validated evidence-packet
15
- directory. `recon` is a provider-neutral controller: it owns decomposition,
16
- artifact boundaries, assurance, and user interaction while installed dispatch
17
- dependencies own live catalogs, target selection, and launch mechanics.
15
+ directory. `recon` is a provider-neutral controller: it owns profile topology,
16
+ routing proposals, evidence flow, artifact boundaries, and assurance.
17
+ `subagent-orchestration` owns task-class and qualification guidance;
18
+ `oat-dispatch-subagents` owns live target resolution and launch mechanics. The
19
+ calling agent owns scope, approval dialogue, evidence-sufficiency judgment, and
20
+ all downstream conclusions.
18
21
 
19
22
  ## When to Use
20
23
 
@@ -115,12 +118,19 @@ Initialize `manifest.json` and the directory skeleton, but do not create
115
118
 
116
119
  Read `references/profiles.md`. Partition the scope into non-overlapping,
117
120
  adaptive lanes within the profile's hard caps. Classify every required and
118
- conditionally allowed wave before selection. Record each wave's task class and
119
- floor, then compute the run-wide maximum model-class floor.
120
-
121
- All lanes within a launch are a homogeneous wave. All waves use the same
122
- approved model and effort. Profiles change topology, redundancy, and
123
- concurrency—not the target tier.
121
+ conditionally allowed wave from its concrete bounded assignment, not its phase
122
+ label. Start with the economical provider-qualified route for the actual work;
123
+ narrow the assignment before escalating, and preserve stronger capability when
124
+ the work itself requires judgment.
125
+
126
+ Use the complete mode policy from `references/profiles.md` and
127
+ `scripts/lib/routing.mjs`. Map manifest wave modes to the worker's closed
128
+ assignment vocabulary: `redundant-gather` to `gather`;
129
+ `semantic-verification` and `redundant-verification` to `verify`; `adversarial`
130
+ and `contradiction-resolution` to `adversary`; and only `reconciliation` to
131
+ `reconcile`. The remaining modes keep their same-named assignment. All lanes
132
+ within one launch are a homogeneous wave. Select each wave independently; a
133
+ stronger wave never raises unrelated waves' targets or effort.
124
134
 
125
135
  ### Step 4: Prepare One Exact Dispatch Manifest
126
136
 
@@ -141,34 +151,55 @@ pack is already installed, `oat tools update --pack utility --scope
141
151
 
142
152
  Read `${UTILITY_SKILLS_ROOT}/oat-dispatch-subagents/SKILL.md` and perform
143
153
  only the selection steps of its Full-Information Selection: observe the
144
- catalog, resolve one exact target, and record the selection. Stop before its
145
- launch step; nothing launches until Step 5 runs after approval. From the same
146
- root, read
154
+ catalog, resolve each wave's exact target, and record each selection. Stop
155
+ before its launch step; nothing launches until Step 5 runs after approval. From
156
+ the same root, read
147
157
  `subagent-orchestration/references/model-selection-principles.md`, exactly one
148
158
  active-provider selection reference, and the matching
149
159
  `oat-dispatch-subagents` provider mechanics reference. Do not copy provider
150
160
  catalogs or exact launch construction into this skill.
151
161
 
152
- Resolve every planned and conditional wave against one exact target satisfying
153
- the run-wide floor. Prefer the canonical `recon-worker` role. If that role is
154
- unavailable, plan the generic role with the complete worker contract as a
155
- visible generic role fallback before approval. A fallback after approval is
156
- forbidden.
162
+ Resolve every planned and conditional wave independently against its recorded
163
+ task class and class floor. Preserve provider, route, role, model, effort,
164
+ reasoning mode, and service tier as separate provider-native axes. A null axis
165
+ means the adapter exposes no independently requested control; never translate
166
+ effort between harnesses or normalize an opaque selector. Prefer the canonical
167
+ `recon-worker` role. If that role is unavailable, plan the generic role with the
168
+ complete worker contract as a visible generic role fallback before approval. A
169
+ fallback after approval is forbidden.
170
+
171
+ Prepare a `schemaVersion: 2` draft manifest. Its execution object contains a
172
+ complete inherited `target`, limits, waves, conditions, and later the approval.
173
+ Every wave records `taskClass`, `classFloor`, a substantive
174
+ `selectionReason`, its lanes and conditional flag, and an optional complete
175
+ replacement `target`. Partial target overrides are invalid. Use the production
176
+ proposal helper rather than manually reinterpreting the manifest:
177
+
178
+ ```bash
179
+ node scripts/prepare-routing.mjs --manifest manifest.json --format markdown
180
+ ```
157
181
 
158
- Write the approval envelope into `manifest.execution`. It binds:
182
+ The proposal shown for approval includes:
159
183
 
160
- - provider, route, role, model, effort, reasoning mode, and service tier;
184
+ - every wave's exact effective provider, route, role, model, effort, reasoning
185
+ mode, and service tier;
161
186
  - authority level, maximum concurrency, per-lane deadline, and retry limit; and
162
- - every wave with its mode, task class, and conditional flag, and every lane
163
- with its identity, read scope, and worker-owned write root.
164
-
165
- Its canonical fingerprint covers every field above.
166
-
167
- Present the exact provider, model and effort for explicit approval before any
168
- worker launch, together with the full topology and hard execution limits. Named model examples are
169
- illustrative and non-normative; never route from an example. Declining approval
170
- leaves the run at `awaiting-approval` and launches nothing. Approval records
171
- `explicit-user-approval`, the approval time, and the fingerprint.
187
+ - every wave with its mode, task class, class floor, selection reason, target,
188
+ and conditional flag; every condition with its predecessor, destination,
189
+ predicate, and single-activation cap; and every lane with its identity, read
190
+ scope, and worker-owned write root.
191
+
192
+ Present every wave's exact supported target axes, class/floor, lane count,
193
+ selection rationale, conditions, and finite worst-case concurrency, deadline,
194
+ retry, lane, and condition limits for explicit approval before any worker
195
+ launch. Name unsupported controls as null instead of inventing them. Named
196
+ model examples are illustrative and non-normative; never route from an example.
197
+ Declining approval leaves the run at `awaiting-approval` and launches nothing.
198
+ Approval records `explicit-user-approval` and the approval time. Approval is
199
+ session-local: it authorizes only the exact proposal shown in the same
200
+ uninterrupted control flow. If the run is resumed, reloaded, or changed before
201
+ launch, remove the approval, return to `awaiting-approval`, render the current
202
+ proposal again, and obtain fresh approval.
172
203
 
173
204
  **Deadlines.** Choose the per-lane deadline from the expected task class and
174
205
  scope, and show it in the approval envelope; it is an approved execution limit,
@@ -187,18 +218,30 @@ result. If any approved axis cannot be satisfied, stop with a
187
218
  launch nothing. Never substitute a different axis to make the launch fit.
188
219
 
189
220
  Launch each wave through the dispatch dependency with exactly the approved
190
- axes. Immediately before each launch, compare the axes that will actually run
191
- against the approval fingerprint. Any drift returns the complete manifest for
192
- renewed approval. Launch acceptance is distinct from worker completion. After
193
- acceptance there is no replacement child, alternate route, target
194
- substitution, or no silent retry. If an accepted lane fails, is cancelled, or
195
- times out, record that pass as failed with a material `PASS_FAILED` gap
196
- naming the pass.
221
+ axes. Immediately before each launch, check the constructed target through the
222
+ same production helper used by preview:
223
+
224
+ ```bash
225
+ node scripts/prepare-routing.mjs --manifest manifest.json --wave <wave-id> --check-target <candidate-target.json>
226
+ ```
227
+
228
+ Any constructed-target mismatch returns the complete manifest for renewed
229
+ approval. This check proves invocation intent, not actual runtime
230
+ identity. Launch acceptance is distinct from worker completion. After
231
+ acceptance there is no replacement child, alternate route, target substitution,
232
+ and no silent retry. If an accepted lane fails, is cancelled, or times out,
233
+ record that lane as failed with a material `PASS_FAILED` gap carrying its exact
234
+ approved `waveId` and `laneId`. This structured identity is required for
235
+ conditional and non-conditional lanes alike; prose is descriptive, not
236
+ identity.
197
237
 
198
238
  Run the passes in this order:
199
239
 
200
240
  1. `map` and `gather` workers write unique dossiers under `raw/dossiers/`.
201
- 2. `compile` writes a candidate canonical claim ledger.
241
+ Thorough runs complete their independent `redundant-gather` wave here too.
242
+ 2. `compile` writes a candidate canonical claim ledger. A thorough candidate
243
+ directly references a complete dossier from every approved primary and
244
+ redundant gather lane before any review brief is created.
202
245
  3. Source preflight: run `scripts/validate-artifact.mjs` on the candidate
203
246
  manifest and ledger, then reopen every declared source and evidence locator
204
247
  with the checks in `scripts/validate-packet.mjs`. Resolve source roots to
@@ -206,10 +249,26 @@ Run the passes in this order:
206
249
  mark them unavailable, and add a material gap for every ineligible source
207
250
  and each affected claim. Do not create review briefs until the candidate
208
251
  manifest and ledger pair validates.
209
- 4. profile-required `verify`, `adversary`, and `coverage` workers consume only
252
+ 4. Profile-required `verify`, `adversary`, and `coverage` workers consume only
210
253
  immutable selectively blind briefs created by
211
254
  `scripts/create-review-brief.mjs` at unique paths.
212
- 5. `reconcile` writes a new candidate ledger without mutating the prior ledger.
255
+ 5. Evaluate each predeclared evidence condition only after its completed
256
+ predecessor artifacts exist. Record exactly one root-authored condition
257
+ outcome. A triggered `contradiction-resolution` wave runs once as an
258
+ `adversary` evidence assignment; a not-triggered or unresolved wave supplies
259
+ no artifact. Accepted failure, cancellation, timeout, or missing output never
260
+ authorizes replacement work.
261
+ 6. Standard and thorough execute exactly one terminal `reconciliation` wave,
262
+ mapped to `reconcile`, after required review evidence and any triggered
263
+ contradiction investigation. It writes a new candidate ledger without
264
+ mutating the prior ledger.
265
+
266
+ If `reconciliation-needs-judgment` is foreseeable, select an adequate target
267
+ for that one terminal wave before approval. If it appears after approval and
268
+ the approved target is inadequate, preserve completed evidence and return an
269
+ explicit unresolved, out-of-envelope gap for renewed approval or a new run.
270
+ Never mutate the target, launch a second reconciliation, or substitute a
271
+ contradiction search for synthesis.
213
272
 
214
273
  Use `references/worker-contract.md` for every assignment. Never allow two
215
274
  workers to share a write path. Every dossier records its approved wave and lane;
@@ -247,6 +306,10 @@ refer to a different canonical generation.
247
306
  Derive the achieved profile from complete, typed, digest-bound same-run
248
307
  artifacts written by approved lanes. Do not accept a worker or manifest
249
308
  assertion of achievement. A `quick` run can reach `supported` but never `verified`.
309
+ Quick is deliberately an evidence packet for an intelligent consumer and has
310
+ no independent semantic pass. Its consumer, not the packet, judges sufficiency
311
+ and conclusions. Standard and thorough retain their independent typed semantic,
312
+ adversarial, coverage, and single-terminal reconciliation requirements.
250
313
  `verified` claims require unique complete semantic, adversarial, and coverage
251
314
  results bound to immutable briefs and correct claim dispositions. Unresolved
252
315
  material challenge prevents verification. A run with contested claims may