@open-agent-toolkit/cli 0.2.71 → 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,8 +1,10 @@
1
- # Recon Packet Contract v1
1
+ # Recon Packet Contract
2
2
 
3
3
  Every JSON artifact carries a `kind` discriminator and integer
4
- `schemaVersion`. Version 1 rejects unknown versions; extend the contract through
5
- a new version rather than accepting untyped fields.
4
+ `schemaVersion`. Versions are dispatched by artifact kind: packet manifests
5
+ accept version 2, while claim ledgers, raw dossiers, review briefs, and review
6
+ results remain version 1. Unknown kind/version combinations fail closed; extend
7
+ a kind through a new version rather than accepting untyped fields.
6
8
 
7
9
  ## Directory
8
10
 
@@ -28,29 +30,30 @@ a new version rather than accepting untyped fields.
28
30
  consumer view. Each worker owns one unique path; candidates are immutable and
29
31
  never promoted over the last valid canonical artifact in place.
30
32
 
31
- ## Artifact References and Canonical JSON
33
+ ## Artifact References
32
34
 
33
35
  An artifact reference is `{ "path": "packet-relative/path", "digest":
34
36
  "sha256:<64 lowercase hex>" }`. Paths must remain inside the packet directory.
35
37
  Digests cover the exact bytes on disk.
36
38
 
37
- Fingerprints use canonical JSON: UTF-8, object keys sorted lexicographically,
38
- array order preserved, no insignificant whitespace, and SHA-256 with the
39
- `sha256:` prefix.
40
-
41
39
  ## One Validation Boundary
42
40
 
43
- Version 1 compiles persisted packet inputs exactly once into one non-persisted,
41
+ Validation compiles persisted packet inputs exactly once into one non-persisted,
44
42
  deeply immutable `ValidatedRun`. This value is an internal normalized graph,
45
43
  not an artifact kind, schema version, file, cache, or caller-selectable profile.
46
44
  Assurance derivation and rendering accept only `ValidatedRun`; they never
47
45
  reopen or independently reinterpret raw manifest, ledger, review, or
48
46
  reconciliation artifacts.
49
47
 
48
+ The validator checks the original wire shape before it creates the normalized
49
+ routing view. A wave inherits the complete execution target unless it supplies
50
+ a complete replacement target. The
51
+ `ValidatedRun` retains both the original manifest and its exact byte digest plus
52
+ the immutable effective routing view. Consumers do not reparse raw routing data.
53
+
50
54
  Construction is all-or-nothing. A valid graph contains:
51
55
 
52
- - one approved execution envelope whose canonical fingerprint matches the
53
- recorded explicit user approval;
56
+ - one execution envelope with recorded explicit user approval;
54
57
  - complete typed same-run artifacts, each written by an approved wave and lane,
55
58
  from which the achieved profile is derived;
56
59
  - exactly one terminal reconciliation for standard or thorough runs and one
@@ -68,7 +71,7 @@ Construction is all-or-nothing. A valid graph contains:
68
71
  - derived claim assurance, achieved profile, material gaps, and publication
69
72
  status.
70
73
 
71
- Reject approval fingerprint drift, unknown execution fields, artifacts from
74
+ Reject unsupported manifest versions, unknown execution fields, artifacts from
72
75
  unapproved lanes, duplicate or shadow reconciliation results, symlink root
73
76
  aliases, retargeted roots, raw secret-bearing stale excerpts, and
74
77
  caller-downgraded gap materiality. Equivalent-looking inputs do not excuse a
@@ -76,7 +79,7 @@ failed invariant.
76
79
 
77
80
  ## Manifest
78
81
 
79
- `recon.packet-manifest` version 1 contains:
82
+ `recon.packet-manifest` version 2 contains:
80
83
 
81
84
  - `run`: stable ID, topic, status, requested and achieved profile, timestamps;
82
85
  - `request`: objective, questions, included/excluded scope, stable context
@@ -88,32 +91,84 @@ failed invariant.
88
91
  explicit boolean `material` classification and affected source, claim, and
89
92
  coverage-finding IDs when applicable.
90
93
 
94
+ The manifest also carries root-recorded `conditionOutcomes`. They are
95
+ control dispositions, not launcher receipts. Every declared condition has one
96
+ closed `triggered`, `not-triggered`, or `unresolved` outcome with a non-empty
97
+ reason and exact digest-bound predecessor artifact references.
98
+
99
+ The manifest records approved routing intent. Effective targets, selection
100
+ rationales, and condition outcomes do not attest which native process ran, its
101
+ runtime identity, token usage, cost, or the correctness of its conclusions.
102
+ Those claims require evidence from an actual producer outside this contract.
103
+
91
104
  ### Execution Envelope
92
105
 
93
- `execution` is a closed object binding exactly what the user approved:
94
-
95
- - `provider`, `route`, `role`, `model`, `effort`: non-empty strings;
96
- - `reasoningMode`, `serviceTier`: string or `null`;
97
- - `authority`: `provider-enforced` or `contract-enforced`;
98
- - `maxConcurrency`, `deadlineSeconds`: integers of at least 1; `retryLimit`:
99
- integer of at least 0;
100
- - `waves`: closed `{ waveId, mode, taskClass, lanes, conditional }` records
101
- with a unique wave identity, a mode from the wave-mode set, a task class from
102
- the durable task-class order, and at least one closed
103
- `{ laneId, scope, writeRoot }` lane whose identity is unique across the run
104
- and whose write root is a packet-relative path; and
105
- - `approval`: `{ type: "explicit-user-approval", approvedAt, fingerprint }`.
106
-
107
- The fingerprint is the canonical SHA-256 of `execution` with `approval`
108
- removed. Validation recomputes it; any difference is
109
- `APPROVAL_FINGERPRINT_MISMATCH`. The envelope records what will run, not proof
110
- that a launcher ran it. Launch acceptance and per-lane terminal outcomes are
111
- reported in the controller's status and as `PASS_FAILED` gaps, not as packet
112
- artifacts.
113
-
114
- Wave modes are `map`, `gather`, `compile`, `semantic-verification`,
115
- `adversarial`, `coverage`, `reconciliation`, `redundant-gather`,
116
- `redundant-verification`, and `contradiction-resolution`.
106
+ Execution uses a required closed `target` object:
107
+ `provider`, `route`, `role`, and `model` are non-empty strings; `effort`,
108
+ `reasoningMode`, and `serviceTier` are each explicitly a non-empty string or
109
+ `null`. A null axis means the adapter exposes no independently requested control;
110
+ it is not an unknown-value fallback.
111
+
112
+ The other execution fields include `authority` as `provider-enforced` or
113
+ `contract-enforced`; integer `maxConcurrency` and `deadlineSeconds` values of
114
+ at least 1; and an integer `retryLimit` of at least 0. Each closed wave adds:
115
+
116
+ - `classFloor`, from the same durable task-class order and not above
117
+ `taskClass`;
118
+ - a non-empty `selectionReason`; and
119
+ - optional `target`, which must be a complete exact-target replacement. If it
120
+ is absent, the complete execution target is inherited without partial-axis
121
+ merging.
122
+
123
+ The execution object also requires a closed `conditions` array. Each structural
124
+ condition contains `conditionId`, `destinationWaveId`, `afterWaveIds`, one of
125
+ `insufficient-evidence` or `unresolved-material-challenge`, and
126
+ `maxActivations: 1`. Each conditional destination is a uniquely identified
127
+ `contradiction-resolution` evidence wave, has exactly one condition, appears
128
+ after every named predecessor and before the one terminal reconciliation, and
129
+ owns unique lane IDs and write roots. Conversely, every wave marked
130
+ `conditional: true` must be the destination of exactly one activating condition;
131
+ dead conditional waves are invalid. Quick permits no conditional wave;
132
+ standard permits one and thorough two. The profile's 4/10/20 adaptive-lane cap
133
+ counts `gather`, `semantic-verification`, `adversarial`, `coverage`,
134
+ `redundant-gather`, `redundant-verification`, and
135
+ `contradiction-resolution` when those modes are permitted by the profile.
136
+ Every permitted mode outside that counted set is fixed at exactly one lane:
137
+ `map` and `compile` for quick, plus terminal `reconciliation` for standard and
138
+ thorough. The resulting total lane maxima are 6/13/23, and concurrency remains
139
+ capped at 4/6/8.
140
+
141
+ Triggered dispositions require exact complete same-run artifacts from every
142
+ approved predecessor and concrete typed predicate evidence from those same-run
143
+ artifacts. Evidence from another run fails with
144
+ `CONDITION_EVIDENCE_RUN_MISMATCH`. A triggered destination must produce its
145
+ approved output or a material `PASS_FAILED`/`PASS_OMITTED` gap with exact
146
+ `waveId` and `laneId` fields. The gap message is explanatory prose and is never
147
+ parsed for identity.
148
+ Not-triggered and unresolved destinations publish no artifacts and contribute
149
+ no achieved pass. Accepted failed, cancelled, timed-out, or missing predecessor
150
+ work cannot activate replacement work. Required profile passes remain required
151
+ regardless of conditional annotations.
152
+
153
+ `reconciliation-needs-judgment` is a controller escalation outcome, never a
154
+ condition predicate. Foreseeable judgment changes the one terminal target before
155
+ approval. A need discovered later preserves completed work and records an
156
+ unresolved out-of-envelope gap until renewed approval or a new run; it never
157
+ mutates the approved target or launches a second reconciliation.
158
+
159
+ The controller maps the ten manifest wave modes onto the worker contract's
160
+ seven assignment modes: redundant gathering uses `gather`; semantic and
161
+ redundant verification use `verify`; adversarial and contradiction-resolution
162
+ use `adversary`; and only terminal reconciliation uses `reconcile`. This mapping
163
+ does not change the approved manifest mode used for artifact and pass checks.
164
+
165
+ Approval is `{ type: "explicit-user-approval", approvedAt }`. It is valid only
166
+ for the exact proposal shown in the same uninterrupted controller flow. Resume,
167
+ reload, or any pre-launch proposal change returns the run to
168
+ `awaiting-approval`, removes the recorded approval, and requires a fresh preview
169
+ and explicit approval. The exact-target check immediately before launch still
170
+ refuses a candidate whose provider-native axes differ from the current wave.
171
+ The manifest may reference version 1 evidence artifacts.
117
172
 
118
173
  ### Passes and Achieved Profile
119
174
 
@@ -121,24 +176,33 @@ Run status is `preparing`, `awaiting-approval`, `running`, `complete`, `partial`
121
176
  or `failed`. The validator, not a worker, derives the achieved profile from
122
177
  complete typed artifacts of the same run:
123
178
 
124
- | Pass | Complete artifact |
125
- | -------------------------- | ------------------------------------------------------------ |
126
- | `map` | a `recon.raw-dossier` with mode `map` |
127
- | `gather` | a `recon.raw-dossier` with mode `gather` |
128
- | `semantic-verification` | a `recon.review-result` with kind `semantic` |
129
- | `adversarial` | a `recon.review-result` with kind `adversarial` |
130
- | `coverage` | a `recon.review-result` with kind `coverage` |
131
- | `reconciliation` | a `recon.review-result` with kind `reconciliation` |
132
- | `redundant-gather` | complete `gather` dossiers from at least two distinct lanes |
133
- | `redundant-verification` | a `recon.review-result` with kind `redundant-verification` |
134
- | `contradiction-resolution` | a `recon.review-result` with kind `contradiction-resolution` |
179
+ | Pass | Complete artifact |
180
+ | -------------------------- | ------------------------------------------------------------------------- |
181
+ | `map` | a `recon.raw-dossier` with mode `map` |
182
+ | `gather` | a complete `gather` dossier owned by the approved primary `gather` wave |
183
+ | `semantic-verification` | a `recon.review-result` with kind `semantic` |
184
+ | `adversarial` | a `recon.review-result` with kind `adversarial` |
185
+ | `coverage` | a `recon.review-result` with kind `coverage` |
186
+ | `reconciliation` | a `recon.review-result` with kind `reconciliation` |
187
+ | `redundant-gather` | a complete `gather` dossier owned by the approved `redundant-gather` wave |
188
+ | `redundant-verification` | a `recon.review-result` with kind `redundant-verification` |
189
+ | `contradiction-resolution` | a `recon.review-result` with kind `contradiction-resolution` |
135
190
 
136
191
  `quick` requires `map` and `gather`; the canonical ledger itself is the
137
192
  compile result, so an approved `compile` lane needs no separate artifact, and
138
193
  locator validation is performed by the validator.
139
194
  `standard` adds `semantic-verification`, `adversarial`, `coverage`, and
140
- `reconciliation`. `thorough` adds `redundant-gather`,
141
- `redundant-verification`, and `contradiction-resolution`.
195
+ `reconciliation`. `thorough` adds `redundant-gather` and
196
+ `redundant-verification`. A predeclared conditional
197
+ `contradiction-resolution` evidence pass may feed the same mandatory terminal
198
+ reconciliation when its predicate triggers; it is not a second terminal pass.
199
+
200
+ Thorough routing completes `redundant-gather` before `compile`. The compiled
201
+ ledger must directly reference by exact path and digest at least one complete
202
+ dossier from every approved primary and redundant gather lane. This makes both
203
+ independent gathering outputs part of the immutable ledger consumed to create
204
+ review briefs. Omitting one fails with
205
+ `MISSING_THOROUGH_GATHER_LEDGER_INPUT`.
142
206
 
143
207
  Every dossier records the approved `waveId` and `laneId` that wrote it; every
144
208
  review result records its approved `reviewerLane`. The lane must belong to a
@@ -147,12 +211,22 @@ wave whose mode matches the artifact (a semantic result to a
147
211
  `redundant-gather` wave, and so on); otherwise the artifact is
148
212
  `UNAPPROVED_LANE`. The artifact path must equal or sit under the lane's
149
213
  approved `writeRoot`; otherwise it is `LANE_WRITE_PATH_VIOLATION`. Every
150
- non-conditional approved lane must either have written an artifact or be
151
- covered by a material `PASS_FAILED` or `PASS_OMITTED` gap naming its wave
152
- mode; otherwise the packet fails with `MISSING_LANE_OUTCOME`. Each required
153
- pass of the requested profile that has no complete artifact must likewise be
154
- named by such a gap, or the packet fails with
155
- `MISSING_PASS_OUTCOME_EVIDENCE`.
214
+ primary and redundant gathering pass is derived from this exact approved wave
215
+ ownership, not from aggregate dossier mode or lane cardinality. Multiple
216
+ complete lanes from one gathering wave cannot satisfy the other wave's pass.
217
+ Every non-conditional approved lane must either have written an artifact or be
218
+ covered by a material `PASS_FAILED` or `PASS_OMITTED` gap carrying its exact
219
+ `waveId` and `laneId`; otherwise the packet fails with
220
+ `MISSING_LANE_OUTCOME`. A legacy mode-only gap is accepted only when that mode
221
+ unambiguously identifies one wave containing exactly one lane. A complete
222
+ artifact contradicts material failed or omitted outcome evidence only when both
223
+ identify the same exact wave and lane, or when an accepted legacy mode-only gap
224
+ unambiguously identifies that singleton lane; validation then fails with
225
+ `CONTRADICTORY_PASS_OUTCOME`. Complete evidence from one lane and exact material
226
+ failure evidence from another lane preserve the achieved pass while making the
227
+ run an honest partial. Each required pass of the requested profile that has no
228
+ complete artifact must likewise be named by such a gap, or the packet fails
229
+ with `MISSING_PASS_OUTCOME_EVIDENCE`.
156
230
 
157
231
  ## Source Descriptors and Locators
158
232
 
@@ -301,7 +375,7 @@ record under `raw/quarantine/`. Never promote invalid output.
301
375
  Run `scripts/validate-packet.mjs <packet-dir>` before rendering or publication.
302
376
  It delegates to the single validation boundary, which validates schemas, IDs,
303
377
  references, containment, hashes, source reopening, locators, the approval
304
- fingerprint, approved lanes, pass outcomes, the one terminal reconciliation,
378
+ presence, approved lanes, pass outcomes, the one terminal reconciliation,
305
379
  legal transitions, secret-safe persistence, derived gaps, assurance, and
306
380
  requested vs achieved profile. Candidate validation is non-destructive for
307
381
  canonical diagnostic artifacts, but a non-publishable candidate withdraws any
@@ -315,12 +389,20 @@ declared, including honest same-profile partials.
315
389
 
316
390
  Use `scripts/render-packet.mjs <packet-dir>` to generate the deterministic
317
391
  consumer view. Its public path entry point first obtains `ValidatedRun`; the
318
- render core accepts only that graph. It writes an exclusive unpredictable
319
- temporary sibling, retains that file's identity through hashing and atomic
320
- promotion, and verifies the promoted digest. Immediately before and after
321
- promotion it also verifies that the canonical manifest, ledger, and validated
322
- referenced artifacts still match the byte digests retained by `ValidatedRun`.
323
- A mismatch is a categorical integrity failure and withdraws `packet.md`.
392
+ render core accepts only that graph. The document
393
+ includes a compact Intended Routing summary from the normalized view: approved
394
+ authority and limits, each wave's effective exact target/class/floor/rationale,
395
+ and every root-recorded conditional disposition. It labels those values as
396
+ approved intent rather than launch receipts or observations of runtime identity,
397
+ usage, cost, or correctness. Evidence, claims, contradictions, and gaps remain
398
+ the primary consumer context.
399
+
400
+ The renderer writes an exclusive unpredictable temporary sibling, retains that
401
+ file's identity through hashing and atomic promotion, and verifies the promoted
402
+ digest. Immediately before and after promotion it also verifies that the
403
+ canonical manifest, ledger, and validated referenced artifacts still match the
404
+ byte digests retained by `ValidatedRun`. A mismatch is a categorical integrity
405
+ failure and withdraws `packet.md`.
324
406
  Withdrawal first proves the retained packet-root identity; if the root changed,
325
407
  the renderer preserves that identity failure and does not follow or unlink the
326
408
  replacement path. Rendering or promotion failure on an unchanged root likewise
@@ -328,11 +410,12 @@ withdraws `packet.md` while leaving canonical diagnostics available. Its result
328
410
  is the directory path plus a compact status summary and digest, never raw
329
411
  dossier content.
330
412
 
331
- ## Version 1 Non-Goals
413
+ ## Compatibility and Non-Goals
332
414
 
333
- This boundary does not add another schema version, review pass, persisted
334
- intermediate, generalized plugin artifact kind, saved validation profile,
335
- provider behavior, or integration surface. It does not require launcher-emitted
415
+ Legacy manifest compatibility is intentionally out of scope. This boundary does
416
+ not add another review pass, persisted intermediate, generalized plugin
417
+ artifact kind, saved validation profile, provider behavior, or integration
418
+ surface. It does not require launcher-emitted
336
419
  dispatch receipts; reintroduce those only when a launcher exists that produces
337
420
  them itself. It does not change research-pack distribution, documentation,
338
421
  backlog integrations, `quick`/`standard`/`thorough`, selective blindness,
@@ -3,7 +3,8 @@
3
3
  Profiles define assurance topology, not a model tier. The controller sizes
4
4
  adaptive lanes from a mechanical source inventory, shows exact counts before
5
5
  approval, and never exceeds the approved hard cap. Every wave remains
6
- homogeneous and every pass uses the same approved model and effort.
6
+ homogeneous, but each wave has an independently selected and approved exact
7
+ target. A harder wave never raises unrelated evidence waves' targets.
7
8
 
8
9
  ## quick
9
10
 
@@ -12,10 +13,15 @@ claims are sufficient.
12
13
 
13
14
  - Required: one mapping wave, one or more non-overlapping gather lanes, one
14
15
  compile lane, deterministic schema and locator validation, and rendering.
15
- - Adaptive lane range: 1–4 gather lanes; hard cap 4.
16
+ - Adaptive evidence lanes: 1–4 `gather` lanes; hard cap 4. The required `map`
17
+ and `compile` waves are fixed at exactly one lane each, so the total maximum
18
+ is 6 lanes.
16
19
  - Maximum concurrency: 4.
17
20
  - Assurance ceiling: `supported`; a quick packet is never `verified`.
18
21
  - Conditional work: no semantic, adversarial, or coverage worker is implied.
22
+ - Consumer boundary: quick is an evidence packet for an intelligent consumer;
23
+ it has no independent semantic pass by design, and the caller judges
24
+ sufficiency and conclusions.
19
25
 
20
26
  ## standard
21
27
 
@@ -23,36 +29,52 @@ Use for load-bearing evidence that needs independent semantic challenge.
23
29
 
24
30
  - Required: quick topology plus selectively blind semantic verification,
25
31
  adversarial review, coverage review, and reconciliation.
26
- - Adaptive lane range: 1–6 gather lanes and 1–3 verification lanes; hard cap 10
27
- total worker lanes.
32
+ - Adaptive evidence lanes: `gather`, `semantic-verification`, `adversarial`,
33
+ `coverage`, and any predeclared `contradiction-resolution`; hard cap 10
34
+ across those counted modes. Required `map`, `compile`, and terminal
35
+ `reconciliation` waves are fixed at exactly one lane each, so the total
36
+ maximum is 13 lanes.
28
37
  - Maximum concurrency: 6.
29
38
  - Assurance ceiling: `verified` only after exact locator validation, affirmative
30
39
  independent semantic review, no unresolved material challenge, and adequate
31
40
  coverage.
32
- - Conditional work: at most one approved reconciliation lane for a material
33
- contradiction.
41
+ - Conditional work: at most one predeclared `contradiction-resolution`
42
+ evidence wave for a material challenge, followed when triggered or not by
43
+ the same one mandatory terminal reconciliation.
34
44
 
35
45
  ## thorough
36
46
 
37
47
  Use when expensive failure or correlated blind spots justify redundant source
38
- reopening and explicit contradiction resolution.
48
+ reopening and verification.
39
49
 
40
50
  - Required: standard topology plus redundant independent gathering and
41
- verification for load-bearing claims and explicit contradiction resolution.
42
- - Adaptive lane range: 2–10 gather lanes and 2–6 verification or adversarial
43
- lanes; hard cap 20 total worker lanes.
51
+ redundant verification for load-bearing claims. Redundant gathering finishes
52
+ before compilation, and every completed primary or redundant gather lane is
53
+ represented in the compiled ledger inputs before review briefs are created.
54
+ - Adaptive evidence lanes: the standard counted modes plus `redundant-gather`
55
+ and `redundant-verification`; hard cap 20 across those counted modes.
56
+ Required `map`, `compile`, and terminal `reconciliation` waves are fixed at
57
+ exactly one lane each, so the total maximum is 23 lanes.
44
58
  - Maximum concurrency: 8.
45
59
  - Assurance ceiling: `verified` only for claims affirmed by the required
46
60
  independent passes and left without unresolved material challenge.
47
- - Conditional work: up to two approved contradiction-resolution lanes within
48
- the manifest's hard cap.
61
+ - Conditional work: optionally predeclare up to two condition-bound
62
+ `contradiction-resolution` evidence waves within the manifest's hard cap.
63
+ Each runs only when its approved predicate triggers; both branches feed
64
+ exactly one mandatory terminal reconciliation.
49
65
 
50
66
  ## Planning Rules
51
67
 
52
68
  1. Partition by source or question so lane inputs and outputs never overlap.
53
69
  2. Classify required and conditional waves before target preparation.
54
- 3. Compute the run-wide maximum model-class floor from every allowed wave.
55
- 4. Reduce lanes when scope is small; never invent work to fill a profile cap.
56
- 5. If runtime limits prevent the requested topology, prepare a different
70
+ 3. Classify the actual bounded assignment. Citation reopening, explicit
71
+ inventory comparison, counterexample search, and mechanical dossier
72
+ compilation can remain economical; judgment-bearing interpretation or
73
+ reconciliation may require a stronger independently approved wave.
74
+ 4. Resolve and explain each wave's exact provider-native target and unsupported
75
+ controls without cross-harness normalization.
76
+ 5. Reduce lanes when scope is small; never invent work to fill a profile cap.
77
+ 6. If runtime limits prevent the requested topology, prepare a different
57
78
  profile for approval or publish an honest partial after an accepted failure.
58
- 6. Never add a lane, retry, or replacement beyond the approved envelope.
79
+ 7. Never add a lane, retry, replacement, or target change beyond the approved
80
+ envelope.
@@ -7,7 +7,8 @@ the complete assignment; a worker does not infer broader authority.
7
7
 
8
8
  The assignment must declare:
9
9
 
10
- - `runId`, `waveId`, `laneId`, and exactly one mode;
10
+ - `runId`, `waveId`, `laneId`, the approved manifest wave mode, and exactly one
11
+ worker assignment mode;
11
12
  - bounded objective, included scope, and excluded scope;
12
13
  - allowed inputs and excluded inputs;
13
14
  - source-read authority in `readSources`, including allowed read-only tools;
@@ -20,6 +21,25 @@ Reject an incomplete or contradictory assignment before reading sources. Never
20
21
  request credentials, mutate an investigated source, broaden scope, or choose an
21
22
  alternate write path.
22
23
 
24
+ The manifest's ten wave modes map to the worker's closed seven-mode vocabulary:
25
+
26
+ | Manifest wave mode | Worker assignment mode |
27
+ | -------------------------- | ---------------------- |
28
+ | `map` | `map` |
29
+ | `gather` | `gather` |
30
+ | `compile` | `compile` |
31
+ | `semantic-verification` | `verify` |
32
+ | `adversarial` | `adversary` |
33
+ | `coverage` | `coverage` |
34
+ | `reconciliation` | `reconcile` |
35
+ | `redundant-gather` | `gather` |
36
+ | `redundant-verification` | `verify` |
37
+ | `contradiction-resolution` | `adversary` |
38
+
39
+ A `contradiction-resolution` assignment seeks discriminating evidence and
40
+ never produces a ledger candidate. The assignment inherits its exact approved
41
+ wave target; the worker neither selects nor upgrades it.
42
+
23
43
  ## Modes
24
44
 
25
45
  - `map`: inventory only the assigned source partition and report candidate
@@ -41,14 +61,23 @@ No other mode is valid.
41
61
 
42
62
  ## Output Contract
43
63
 
44
- Write exactly one JSON artifact at `writePath`. The artifact must include:
64
+ Write exactly one JSON artifact at `writePath` using only the supplied closed
65
+ schema's fields:
66
+
67
+ - a `recon.raw-dossier` records the approved manifest wave through `waveId` and
68
+ records the closed worker assignment mode in `mode`; it also carries `laneId`
69
+ and `outcome`;
70
+ - a `recon.review-result` records its approved lane in `reviewerLane` and its
71
+ approved review discriminator in `reviewKind`; and
72
+ - every artifact includes its required `kind`, `schemaVersion`, run identity,
73
+ honored inputs and exclusions, findings or dispositions, explicit
74
+ uncertainty, contradictions and gaps, safe categorical diagnostics, and
75
+ direct input references where its supplied schema permits them.
45
76
 
46
- - `kind`, `schemaVersion`, run/wave/lane identity, mode, and outcome;
47
- - the exact allowed and excluded inputs actually honored;
48
- - findings or dispositions with evidence IDs and typed locators;
49
- - uncertainty, contradictions, and gaps as explicit arrays;
50
- - safe categorical diagnostics for unavailable or invalid inputs; and
51
- - direct input artifact references and digests when applicable.
77
+ Do not add a second mode field or any other field absent from the supplied
78
+ schema. The controller validates the artifact's `waveId` and `mode`, or its
79
+ `reviewerLane` and `reviewKind`, against the approved manifest wave before the
80
+ artifact can be promoted.
52
81
 
53
82
  Persist minimal excerpts only. Detect and redact secret spans before writing;
54
83
  never persist the secret or its sensitive-span digest. Finish by returning the
@@ -69,3 +98,5 @@ or launch a replacement.
69
98
  the selected mode is required to remain blind to.
70
99
  - Report uncertainty and contradiction instead of converting them to
71
100
  confidence scores.
101
+ - Return evidence and explicit gaps to the controller; never decide downstream
102
+ sufficiency, product implications, or final conclusions.