review-council 2.1.1 → 2.1.4

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/README.md CHANGED
@@ -273,7 +273,7 @@ Place `.review-council.yml` in your project root (or any parent directory). All
273
273
  models:
274
274
  - anthropic/claude-fable-5
275
275
  - openai/gpt-5.6-sol
276
- - google/gemini-3.6-flash
276
+ - google/gemini-3.8-flash
277
277
 
278
278
  # Async bonus reviewers — fired with each round, never awaited. Results that
279
279
  # have arrived by the next round of the same target are merged into that
@@ -318,7 +318,7 @@ thresholds:
318
318
  gating:
319
319
  mode: verified-consensus # or all-findings (legacy: severity alone decides)
320
320
  minModels: 2 # distinct models for consensus gating
321
- verificationModel: google/gemini-3.6-flash # direct-API only
321
+ verificationModel: google/gemini-3.8-flash # direct-API only
322
322
  verificationTimeout: 60000 # ms for the single batched refutation call
323
323
 
324
324
  # Output defaults
@@ -329,7 +329,7 @@ output:
329
329
 
330
330
  # Concurrency and reliability
331
331
  concurrency: 6
332
- timeout: 300000 # ms per blocking model call (every direct-API p90 is under 260s)
332
+ timeout: 540000 # ms per blocking model call (matches the current default)
333
333
  asyncTimeout: 900000 # ms per async-lane call (slow reasoning models get headroom; nothing waits on them)
334
334
  # quorumFraction: 0.75 # round closes once this share of calls has completed; stragglers
335
335
  # are canceled and recorded (core `models` are never canceled).
@@ -2,11 +2,12 @@
2
2
  * Core (blocking) council — every round waits for these and only these.
3
3
  * Direct-API models only: the RCL-21 audit (922 rounds, 15,268 calls) found
4
4
  * the OpenRouter wing at p50 7–9.5 min per call with 19–39% dead calls,
5
- * last-finisher in 97.6% of rounds; the direct trio answers in 45–70 s with
6
- * ~0% dead calls. Replaying the corpus with this trio alone drops the median
7
- * round from 14.4 to 2.0 min while 91% of multi-model findings still surface.
5
+ * last-finisher in 97.6% of rounds; the audited direct trio answered in
6
+ * 45–70 s with ~0% dead calls. Replaying the corpus with that direct-provider
7
+ * topology drops the median round from 14.4 to 2.0 min while 91% of
8
+ * multi-model findings still surface.
8
9
  */
9
- export declare const DEFAULT_MODELS: readonly ["anthropic/claude-fable-5", "openai/gpt-5.6-sol", "google/gemini-3.6-flash"];
10
+ export declare const DEFAULT_MODELS: readonly ["anthropic/claude-fable-5", "openai/gpt-5.6-sol", "google/gemini-3.8-flash"];
10
11
  /**
11
12
  * Async bonus reviewers — fired with the round but never awaited; whatever
12
13
  * has arrived by the NEXT round's dedup is merged then, marked async in the
@@ -2,14 +2,15 @@
2
2
  * Core (blocking) council — every round waits for these and only these.
3
3
  * Direct-API models only: the RCL-21 audit (922 rounds, 15,268 calls) found
4
4
  * the OpenRouter wing at p50 7–9.5 min per call with 19–39% dead calls,
5
- * last-finisher in 97.6% of rounds; the direct trio answers in 45–70 s with
6
- * ~0% dead calls. Replaying the corpus with this trio alone drops the median
7
- * round from 14.4 to 2.0 min while 91% of multi-model findings still surface.
5
+ * last-finisher in 97.6% of rounds; the audited direct trio answered in
6
+ * 45–70 s with ~0% dead calls. Replaying the corpus with that direct-provider
7
+ * topology drops the median round from 14.4 to 2.0 min while 91% of
8
+ * multi-model findings still surface.
8
9
  */
9
10
  export const DEFAULT_MODELS = [
10
11
  'anthropic/claude-fable-5',
11
12
  'openai/gpt-5.6-sol',
12
- 'google/gemini-3.6-flash',
13
+ 'google/gemini-3.8-flash',
13
14
  ];
14
15
  /**
15
16
  * Async bonus reviewers — fired with the round but never awaited; whatever
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,0BAA0B;IAC1B,oBAAoB;IACpB,yBAAyB;CACjB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,+BAA+B,CAAU,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAW,CAAC;AAEpD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,iBAAiB,EAAE,GAAG;IACtB,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,CAAC;IACnB;;;;;;;;OAQG;IACH,gBAAgB,EAAE,GAAG;CACb,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU;IACV,WAAW;IACX,OAAO;IACP,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;CACA,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,0BAA0B;IAC1B,oBAAoB;IACpB,yBAAyB;CACjB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,+BAA+B,CAAU,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAW,CAAC;AAEpD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,iBAAiB,EAAE,GAAG;IACtB,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,CAAC;IACnB;;;;;;;;OAQG;IACH,gBAAgB,EAAE,GAAG;CACb,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU;IACV,WAAW;IACX,OAAO;IACP,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;CACA,CAAC"}
@@ -86,7 +86,7 @@ export interface ResolvedGatingConfig {
86
86
  export declare const DEFAULT_GATING_CONFIG: {
87
87
  readonly mode: "verified-consensus";
88
88
  readonly minModels: 2;
89
- readonly verificationModel: "google/gemini-3.6-flash";
89
+ readonly verificationModel: "google/gemini-3.8-flash";
90
90
  readonly verificationTimeoutMs: 60000;
91
91
  };
92
92
  /**
@@ -100,10 +100,10 @@ export declare const DEFAULT_GATING_CONFIG: {
100
100
  export declare function resolveGatingConfig(input: GatingConfigInput | undefined, rosterModels?: readonly string[]): ResolvedGatingConfig;
101
101
  /**
102
102
  * Reduce a unified diff to the hunks that overlap the findings' line ranges.
103
- * Blind tail-truncation could cut the exact hunk a finding refers to and let
104
- * the verifier judge (and refute) from unrelated context. Returns the whole
105
- * patch when it has no hunk headers (plan pseudo-files), and '' when no hunk
106
- * overlaps — the caller then treats the finding as having no usable context.
103
+ * Oversized hunks are excerpted around every requested range with accurate
104
+ * synthetic headers. Returns short non-hunk content unchanged for backward
105
+ * compatibility, and '' when trustworthy context cannot fit in the bound —
106
+ * the caller then keeps the finding gating without invoking the verifier.
107
107
  */
108
108
  export declare function relevantPatchExcerpt(patch: string, ranges: Array<{
109
109
  start: number;
@@ -1,13 +1,14 @@
1
1
  import { defaultAdapterFactory } from '../dispatch/runner.js';
2
2
  import { detectProvider } from '../roles/dispatcher.js';
3
3
  import { neutralizeDelimiters, wrapDiff } from '../prompts/hardening.js';
4
+ import { formatSyntheticHunkHeader, parseUnifiedDiff, } from '../prepare/unified-diff.js';
4
5
  const DIRECT_PROVIDERS = new Set(['anthropic', 'openai', 'google']);
5
6
  export const DEFAULT_GATING_CONFIG = {
6
7
  mode: 'verified-consensus',
7
8
  minModels: 2,
8
- // Fastest direct-API council member (corpus p50 well under a minute);
9
- // the verification pass must add ≤60s p50 to a round.
10
- verificationModel: 'google/gemini-3.6-flash',
9
+ // Use the stable Flash council member for this latency-sensitive pass;
10
+ // verification remains capped at 60 s so it cannot dominate round time.
11
+ verificationModel: 'google/gemini-3.8-flash',
11
12
  verificationTimeoutMs: 60_000,
12
13
  };
13
14
  /**
@@ -69,35 +70,225 @@ When unsure, answer "confirmed".`;
69
70
  const MAX_PATCH_CHARS = 4_000;
70
71
  /** Lines of slack when matching a finding's range against a hunk's span. */
71
72
  const HUNK_MARGIN_LINES = 16;
73
+ function isChangedLine(line) {
74
+ return !line.marker && line.oldCount !== line.newCount;
75
+ }
76
+ function replacementBlock(body, index) {
77
+ let start = index;
78
+ while (start > 0) {
79
+ const previous = body[start - 1];
80
+ if (isChangedLine(previous)) {
81
+ start -= 1;
82
+ }
83
+ else if (previous.marker && start > 1 && isChangedLine(body[start - 2])) {
84
+ start -= 2;
85
+ }
86
+ else {
87
+ break;
88
+ }
89
+ }
90
+ let end = index + 1;
91
+ while (end < body.length) {
92
+ const next = body[end];
93
+ if (isChangedLine(next)) {
94
+ end += 1;
95
+ }
96
+ else if (next.marker && end > start && isChangedLine(body[end - 1])) {
97
+ end += 1;
98
+ }
99
+ else {
100
+ break;
101
+ }
102
+ }
103
+ return {
104
+ start,
105
+ end,
106
+ hasDeletion: body
107
+ .slice(start, end)
108
+ .some((line) => line.oldCount === 1 && line.newCount === 0),
109
+ };
110
+ }
111
+ function windowForMatches(hunk, hunkIndex, matches) {
112
+ const first = matches[0];
113
+ const last = matches.at(-1);
114
+ if (first === undefined || last === undefined)
115
+ return undefined;
116
+ let start = first;
117
+ let end = last + 1;
118
+ let processedBlockEnd = 0;
119
+ for (const index of matches) {
120
+ // requiredWindow collects matches in body order. Once one changed line
121
+ // expands to its contiguous replacement block, later matches inside that
122
+ // block cannot widen the required evidence and must not rescan it.
123
+ if (index < processedBlockEnd)
124
+ continue;
125
+ const line = hunk.body[index];
126
+ if (!isChangedLine(line))
127
+ continue;
128
+ const block = replacementBlock(hunk.body, index);
129
+ processedBlockEnd = block.end;
130
+ if (block.hasDeletion) {
131
+ start = Math.min(start, block.start);
132
+ end = Math.max(end, block.end);
133
+ }
134
+ }
135
+ return { hunkIndex, start, end };
136
+ }
137
+ function hunkDistance(hunk, range) {
138
+ // A zero-count range is anchored after newStart and its deletion body uses
139
+ // newStart + 1 as the effective new-file coordinate. Treat both sides of
140
+ // that boundary as adjacent so either conventional line reference keeps
141
+ // the complete removal in view.
142
+ const hunkStart = hunk.newStart;
143
+ let hunkEnd = hunk.newCount === 0 ? hunk.newStart + 1 : hunk.newStart + hunk.newCount - 1;
144
+ // A deletion after the hunk's final new-file line is anchored at the next
145
+ // coordinate. Parsed body coordinates are monotonic; only a legal trailing
146
+ // no-newline marker can follow the last real line.
147
+ const last = hunk.body.at(-1);
148
+ const lastBodyLine = last?.marker ? hunk.body.at(-2) : last;
149
+ if (lastBodyLine)
150
+ hunkEnd = Math.max(hunkEnd, lastBodyLine.newLine);
151
+ if (range.end < hunkStart)
152
+ return hunkStart - range.end;
153
+ if (range.start > hunkEnd)
154
+ return range.start - hunkEnd;
155
+ return 0;
156
+ }
157
+ function requiredWindow(hunk, hunkIndex, range) {
158
+ const exact = [];
159
+ for (let index = 0; index < hunk.body.length; index += 1) {
160
+ const line = hunk.body[index];
161
+ if (!line.marker && line.newLine >= range.start && line.newLine <= range.end) {
162
+ exact.push(index);
163
+ }
164
+ }
165
+ // Deletions and the following new-file line share a coordinate. Keep the
166
+ // whole span: omitting either side can let a verifier refute a finding from
167
+ // incomplete replacement evidence. If it cannot fit, the caller fails
168
+ // closed instead of sending a partial removal.
169
+ if (exact.length > 0) {
170
+ return windowForMatches(hunk, hunkIndex, exact);
171
+ }
172
+ const closest = [];
173
+ let closestDistance = Number.POSITIVE_INFINITY;
174
+ for (let index = 0; index < hunk.body.length; index += 1) {
175
+ const line = hunk.body[index];
176
+ if (line.marker)
177
+ continue;
178
+ const distance = line.newLine < range.start
179
+ ? range.start - line.newLine
180
+ : line.newLine > range.end
181
+ ? line.newLine - range.end
182
+ : 0;
183
+ if (distance < closestDistance) {
184
+ closestDistance = distance;
185
+ closest.length = 0;
186
+ closest.push(index);
187
+ }
188
+ else if (distance === closestDistance) {
189
+ closest.push(index);
190
+ }
191
+ }
192
+ return windowForMatches(hunk, hunkIndex, closest);
193
+ }
194
+ function mergeWindows(windows) {
195
+ const sorted = [...windows].sort((left, right) => left.hunkIndex - right.hunkIndex || left.start - right.start);
196
+ const merged = [];
197
+ for (const window of sorted) {
198
+ const previous = merged.at(-1);
199
+ if (previous && previous.hunkIndex === window.hunkIndex && window.start <= previous.end) {
200
+ previous.end = Math.max(previous.end, window.end);
201
+ }
202
+ else {
203
+ merged.push({ ...window });
204
+ }
205
+ }
206
+ return merged;
207
+ }
208
+ function expandWindows(hunks, required, margin) {
209
+ const expanded = required.map((window) => {
210
+ const body = hunks[window.hunkIndex].body;
211
+ let start = Math.max(0, window.start - margin);
212
+ let end = Math.min(body.length, window.end + margin);
213
+ while (start > 0 && body[start].marker)
214
+ start -= 1;
215
+ while (end < body.length && body[end].marker)
216
+ end += 1;
217
+ return { hunkIndex: window.hunkIndex, start, end };
218
+ });
219
+ return mergeWindows(expanded);
220
+ }
221
+ function renderWindows(hunks, windows) {
222
+ return windows
223
+ .map((window) => {
224
+ const hunk = hunks[window.hunkIndex];
225
+ const body = hunk.body.slice(window.start, window.end);
226
+ const header = formatSyntheticHunkHeader(body);
227
+ if (!header)
228
+ return '';
229
+ return [header, ...body.map((line) => line.text)].join('\n');
230
+ })
231
+ .join('\n');
232
+ }
72
233
  /**
73
234
  * Reduce a unified diff to the hunks that overlap the findings' line ranges.
74
- * Blind tail-truncation could cut the exact hunk a finding refers to and let
75
- * the verifier judge (and refute) from unrelated context. Returns the whole
76
- * patch when it has no hunk headers (plan pseudo-files), and '' when no hunk
77
- * overlaps — the caller then treats the finding as having no usable context.
235
+ * Oversized hunks are excerpted around every requested range with accurate
236
+ * synthetic headers. Returns short non-hunk content unchanged for backward
237
+ * compatibility, and '' when trustworthy context cannot fit in the bound —
238
+ * the caller then keeps the finding gating without invoking the verifier.
78
239
  */
79
240
  export function relevantPatchExcerpt(patch, ranges) {
80
- const hunks = [];
81
- let current;
82
- for (const line of patch.split('\n')) {
83
- const header = /^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@/.exec(line);
84
- if (header) {
85
- current = {
86
- startNew: Number(header[1]),
87
- countNew: header[2] !== undefined ? Number(header[2]) : 1,
88
- text: [line],
89
- };
90
- hunks.push(current);
91
- }
92
- else if (current) {
93
- current.text.push(line);
241
+ if (ranges.length === 0)
242
+ return '';
243
+ if (!/^@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@/m.test(patch)) {
244
+ return patch.length <= MAX_PATCH_CHARS ? patch : '';
245
+ }
246
+ if (ranges.some(({ start, end }) => !Number.isSafeInteger(start) || !Number.isSafeInteger(end) || start < 1 || end < start)) {
247
+ return '';
248
+ }
249
+ const parsed = parseUnifiedDiff(patch);
250
+ if (!parsed.ok)
251
+ return '';
252
+ const { hunks } = parsed.diff;
253
+ const required = [];
254
+ const selectedHunks = new Set();
255
+ for (const range of ranges) {
256
+ const distances = hunks.map((hunk) => hunkDistance(hunk, range));
257
+ const overlapping = distances
258
+ .map((distance, index) => ({ distance, index }))
259
+ .filter(({ distance }) => distance === 0);
260
+ const closestDistance = distances.reduce((closest, distance) => Math.min(closest, distance), Number.POSITIVE_INFINITY);
261
+ const matches = overlapping.length > 0
262
+ ? overlapping
263
+ : distances
264
+ .map((distance, index) => ({ distance, index }))
265
+ .filter(({ distance }) => distance === closestDistance && distance <= HUNK_MARGIN_LINES);
266
+ if (matches.length === 0)
267
+ return '';
268
+ for (const { index } of matches) {
269
+ const window = requiredWindow(hunks[index], index, range);
270
+ if (!window)
271
+ return '';
272
+ required.push(window);
273
+ selectedHunks.add(index);
94
274
  }
95
275
  }
96
- if (hunks.length === 0)
97
- return patch;
98
- const selected = hunks.filter((h) => ranges.some((r) => h.startNew - HUNK_MARGIN_LINES <= r.end &&
99
- r.start - HUNK_MARGIN_LINES <= h.startNew + h.countNew));
100
- return selected.map((h) => h.text.join('\n')).join('\n');
276
+ const selected = [...selectedHunks]
277
+ .sort((left, right) => left - right)
278
+ .map((index) => {
279
+ const hunk = hunks[index];
280
+ return [hunk.originalHeader, ...hunk.body.map((line) => line.text)].join('\n');
281
+ })
282
+ .join('\n');
283
+ if (selected.length <= MAX_PATCH_CHARS)
284
+ return selected;
285
+ const minimal = mergeWindows(required);
286
+ for (let margin = HUNK_MARGIN_LINES; margin >= 0; margin -= 1) {
287
+ const excerpt = renderWindows(hunks, expandWindows(hunks, minimal, margin));
288
+ if (excerpt.length <= MAX_PATCH_CHARS)
289
+ return excerpt;
290
+ }
291
+ return '';
101
292
  }
102
293
  function buildVerifierPrompt(candidates, patches) {
103
294
  // Finding text originates from council models reading an untrusted diff —
@@ -108,8 +299,7 @@ function buildVerifierPrompt(candidates, patches) {
108
299
  });
109
300
  lines.push('## The change under review (relevant files, untrusted content)', '');
110
301
  for (const [filename, patch] of patches) {
111
- const bounded = patch.length > MAX_PATCH_CHARS ? `${patch.slice(0, MAX_PATCH_CHARS)}\n… (truncated)` : patch;
112
- lines.push(`### ${neutralizeDelimiters(filename)}`, wrapDiff(bounded), '');
302
+ lines.push(`### ${neutralizeDelimiters(filename)}`, wrapDiff(patch), '');
113
303
  }
114
304
  return lines.join('\n');
115
305
  }
@@ -239,7 +429,7 @@ export async function applyGating(findings, options) {
239
429
  }
240
430
  else {
241
431
  markUnavailable(findingIndex, fullPatches.has(f.file)
242
- ? 'finding lines match no hunk in the diff — not sent to the verifier'
432
+ ? 'no hunk context fits the safe verifier bound — not sent to the verifier'
243
433
  : 'no diff context for this file — not sent to the verifier');
244
434
  }
245
435
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gating.js","sourceRoot":"","sources":["../../src/consensus/gating.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AA8FzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,CAAC;IACZ,sEAAsE;IACtE,sDAAsD;IACtD,iBAAiB,EAAE,yBAAyB;IAC5C,qBAAqB,EAAE,MAAM;CACrB,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAoC,EACpC,YAAgC;IAEhC,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS,IAAI,qBAAqB,CAAC,SAAS,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,gDAAgD,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,iBAAqC,CAAC;IAC1C,IAAI,KAAK,EAAE,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC3C,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAC5C,sEAAsE;QACtE,qEAAqE;QACrE,SAAS;QACT,IAAI,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,6DAA6D,iBAAiB,GAAG,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,iBAAiB,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;YACjF,iBAAiB,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,qBAAqB,CAAC,IAAI;QAC/C,SAAS;QACT,iBAAiB;QACjB,qBAAqB,EACnB,KAAK,EAAE,mBAAmB,IAAI,qBAAqB,CAAC,qBAAqB;KAC5E,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;iCAaE,CAAC;AAElC,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,MAA6C;IAE7C,MAAM,KAAK,GAAkE,EAAE,CAAC;IAChF,IAAI,OAA2E,CAAC;IAChF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG;gBACR,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC3B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,IAAI,EAAE,CAAC,IAAI,CAAC;aACb,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAErC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClC,MAAM,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,GAAG,iBAAiB,IAAI,CAAC,CAAC,GAAG;QACvC,CAAC,CAAC,KAAK,GAAG,iBAAiB,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CACzD,CACF,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA8B,EAAE,OAA4B;IACvF,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,KAAK,GAAa,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IACtD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,GAAG,CAAC,EAAE,EACf,WAAW,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE,EACrE,eAAe,CAAC,CAAC,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,EAAE,EACrD,YAAY,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAC3C,YAAY,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EACjD,EAAE,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,gEAAgE,EAAE,EAAE,CAAC,CAAC;IACjF,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/F,KAAK,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC1D,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAA8D,CAAC;QAC/F,IAAI,OAAO,EAAE,KAAK,QAAQ;YAAE,SAAS;QACrC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,WAAW;YAAE,SAAS;QAC/D,iEAAiE;QACjE,gCAAgC;QAChC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;YACf,OAAO,EAAE,OAAO,KAAK,SAAS;YAC9B,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAA4B,EAC5B,OAAsB;IAEtB,MAAM,SAAS,GAAuB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IACrC,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAU,EAAE,CAC5D,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,WAAW,CAAC;QACrF,kEAAkE;QAClE,qEAAqE;QACrE,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;QACxC,MAAM,cAAc,GAClB,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;QACrF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAC5D,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;QACjE,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC3C,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,IAAI,QAAQ,CAAC;IAC5D,MAAM,KAAK,GAAsB;QAC/B,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,gBAAgB,CAAC,MAAM;QACnC,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;KACd,CAAC;IAEF,SAAS,eAAe,CAAC,YAAoB,EAAE,IAAY;QACzD,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,SAAS,CAAC,YAAY,CAAC,GAAG;YACxB,GAAG,QAAQ,CAAC,YAAY,CAAE;YAC1B,MAAM,EAAE;gBACN,MAAM,EAAE,UAAU;gBAClB,YAAY,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;aACrE;SACF,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IACD,yEAAyE;IACzE,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAiD,CAAC;IACvF,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACvC,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,qBAAqB,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAE,CAAC;QAClC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,eAAe,CACb,YAAY,EACZ,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrB,CAAC,CAAC,oEAAoE;gBACtE,CAAC,CAAC,0DAA0D,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC5C,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;YACtC,eAAe,CAAC,YAAY,EAAE,2DAA2D,CAAC,CAAC;QAC7F,CAAC;QACD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;IACtE,IAAI,OAA2B,CAAC;IAChC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC,CACtF,CAAC;QACF,IAAI,CAAC;YACH,oEAAoE;YACpE,qEAAqE;YACrE,uCAAuC;YACvC,MAAM,GAAG,GACP,OAAO,CAAC,GAAG;gBACX,CAAC,GAAU,EAAE;oBACX,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,iBAAkB,CAAC,CAAC,CAAC;oBAClF,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC/F,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,MAAM,GAAG,MAAM,GAAG,CACtB,OAAO,CAAC,iBAAiB,EACzB,sBAAsB,EACtB,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,EAChD,EAAE,SAAS,EAAE,OAAO,CAAC,qBAAqB,EAAE,UAAU,EAAE,CAAC,EAAE,CAC5D,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAE,CAAC;QACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,eAAe,CACb,YAAY,EACZ,OAAO,IAAI,8CAA8C,CAC1D,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,MAAkB,CAAC;QACvB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,GAAG;gBACP,MAAM,EAAE,MAAM;gBACd,YAAY,EAAE;oBACZ,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,SAAS;oBAClB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChD;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,GAAG;gBACP,MAAM,EAAE,UAAU;gBAClB,YAAY,EAAE;oBACZ,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,WAAW;oBACpB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChD;aACF,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"gating.js","sourceRoot":"","sources":["../../src/consensus/gating.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,14 @@ import type { ModelReview } from '../consensus/types.js';
5
5
  * review per reviewer before consensus, or a single reviewer would be
6
6
  * counted once per chunk — inflating `total`, diversity, and vote counts.
7
7
  *
8
- * A reviewer counts as successful if it succeeded on at least one chunk;
9
- * findings from every successful chunk are concatenated. When no chunk
10
- * succeeded, the first non-success status and error are preserved.
8
+ * A blocking reviewer counts as successful only when every returned chunk
9
+ * succeeded. One failed or canceled part makes its coverage incomplete, so
10
+ * findings from its successful parts must not vote in consensus. Async-only
11
+ * results remain opportunistic: any arrived success may contribute, while an
12
+ * async result can neither rescue nor poison a same-key blocking reviewer.
11
13
  *
12
- * Dropped-finding counts and parser warnings are summed across ALL chunks,
13
- * including the ones that failed: a reviewer that parsed cleanly on chunk 1
14
- * and lost everything on chunk 2 is only partially covered, and the merged
15
- * review is the last place that can still say so.
14
+ * Accounting and diagnostics cover ALL returned parts, including failed and
15
+ * async ones: those calls still consumed time and produced diagnostics even
16
+ * when they do not affect the blocking reviewer's status or findings.
16
17
  */
17
18
  export declare function mergeChunkReviews(reviews: ModelReview[]): ModelReview[];
@@ -4,14 +4,15 @@
4
4
  * review per reviewer before consensus, or a single reviewer would be
5
5
  * counted once per chunk — inflating `total`, diversity, and vote counts.
6
6
  *
7
- * A reviewer counts as successful if it succeeded on at least one chunk;
8
- * findings from every successful chunk are concatenated. When no chunk
9
- * succeeded, the first non-success status and error are preserved.
7
+ * A blocking reviewer counts as successful only when every returned chunk
8
+ * succeeded. One failed or canceled part makes its coverage incomplete, so
9
+ * findings from its successful parts must not vote in consensus. Async-only
10
+ * results remain opportunistic: any arrived success may contribute, while an
11
+ * async result can neither rescue nor poison a same-key blocking reviewer.
10
12
  *
11
- * Dropped-finding counts and parser warnings are summed across ALL chunks,
12
- * including the ones that failed: a reviewer that parsed cleanly on chunk 1
13
- * and lost everything on chunk 2 is only partially covered, and the merged
14
- * review is the last place that can still say so.
13
+ * Accounting and diagnostics cover ALL returned parts, including failed and
14
+ * async ones: those calls still consumed time and produced diagnostics even
15
+ * when they do not affect the blocking reviewer's status or findings.
15
16
  */
16
17
  export function mergeChunkReviews(reviews) {
17
18
  const byReviewer = new Map();
@@ -32,18 +33,22 @@ export function mergeChunkReviews(reviews) {
32
33
  if (parts.length === 1)
33
34
  return parts[0];
34
35
  const first = parts[0];
35
- const successes = parts.filter((p) => p.status === 'success');
36
- const durationMs = parts.reduce((sum, p) => sum + p.durationMs, 0);
37
- const dropped = parts.reduce((sum, p) => sum + (p.droppedFindings ?? 0), 0);
38
- const warnings = parts.flatMap((p) => p.warnings ?? []);
36
+ const blockingParts = parts.filter((part) => part.async !== true);
37
+ const outcomeParts = blockingParts.length > 0 ? blockingParts : parts;
38
+ const successes = outcomeParts.filter((part) => part.status === 'success');
39
+ const requireComplete = blockingParts.length > 0;
40
+ const successful = requireComplete
41
+ ? successes.length === outcomeParts.length
42
+ : successes.length > 0;
43
+ const durationMs = parts.reduce((sum, part) => sum + part.durationMs, 0);
44
+ const dropped = parts.reduce((sum, part) => sum + (part.droppedFindings ?? 0), 0);
45
+ const warnings = parts.flatMap((part) => part.warnings ?? []);
39
46
  const degraded = {
40
47
  ...(dropped > 0 ? { droppedFindings: dropped } : {}),
41
48
  ...(warnings.length > 0 ? { warnings } : {}),
42
- // A reviewer is homogeneous across chunks, so any async part means the
43
- // whole merged review came from the async lane.
44
- ...(parts.some((p) => p.async) ? { async: true } : {}),
49
+ ...(blockingParts.length === 0 ? { async: true } : {}),
45
50
  };
46
- if (successes.length > 0) {
51
+ if (successful) {
47
52
  return {
48
53
  model: first.model,
49
54
  role: first.role,
@@ -54,7 +59,13 @@ export function mergeChunkReviews(reviews) {
54
59
  ...degraded,
55
60
  };
56
61
  }
57
- const failed = parts.find((p) => p.error) ?? first;
62
+ const failed = outcomeParts.find((part) => part.status !== 'success' && part.error) ??
63
+ outcomeParts.find((part) => part.status !== 'success') ??
64
+ first;
65
+ const incompleteError = requireComplete && successes.length > 0
66
+ ? `Incomplete chunk coverage: ${successes.length}/${outcomeParts.length} parts succeeded; ` +
67
+ `${failed.status}${failed.error ? `: ${failed.error}` : ''}`
68
+ : failed.error;
58
69
  return {
59
70
  model: first.model,
60
71
  role: first.role,
@@ -62,7 +73,7 @@ export function mergeChunkReviews(reviews) {
62
73
  findings: [],
63
74
  durationMs,
64
75
  status: failed.status,
65
- error: failed.error,
76
+ ...(incompleteError ? { error: incompleteError } : {}),
66
77
  ...degraded,
67
78
  };
68
79
  });
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dispatch/merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/dispatch/merge.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -29,7 +29,7 @@ import { printReviewSummary } from './output/terminal.js';
29
29
  import { postGitHubReview } from './output/github.js';
30
30
  import { toJson, writeJsonOutput } from './output/json.js';
31
31
  import { writeMarkdownOutput } from './output/markdown.js';
32
- import { buildCouncilRunPlan, CouncilProgressReporter, formatCouncilRunPlan, } from './output/progress.js';
32
+ import { assertReviewWorkWithinLimit, buildCouncilRunPlan, CouncilProgressReporter, formatCouncilRunPlan, } from './output/progress.js';
33
33
  import { resolveFinding, buildDiscussPrompts, runDiscussion, loadContextDocs, } from './discuss.js';
34
34
  import { DEFAULT_CONVERGE_ATTEMPT_CAP, claimConvergeAttempt, ConvergeAttemptBudgetExceededError, convergeAttemptErrorExitCode, ConvergeAttemptStateError, resolveGitCommonDir, } from './converge/attempt-budget.js';
35
35
  import { DEFAULT_CONVERGE_ROUND_CAP, HARD_CONVERGE_ROUND_CAP, processRoundReport, recordVerdicts, findingGatingReason, ConvergeRoundCapError, ConvergeRunStateError, } from './converge/run-state.js';
@@ -700,6 +700,7 @@ async function executeCouncil(spinner, prepared, diff, opts, extra) {
700
700
  const planContext = extra?.focus !== undefined ? { focus: extra.focus } : undefined;
701
701
  // Chunk the diff
702
702
  const chunks = chunkDiff(diff.files);
703
+ assertReviewWorkWithinLimit(chunks.length, assignments.length);
703
704
  spinner.text = `Building prompts (${chunks.length} chunk(s), ${assignments.length} reviewer(s))...`;
704
705
  // Fan out every assignment across every chunk so the whole diff is
705
706
  // reviewed, not just the first ~2000 lines. The spec is NOT passed as a