@allocator-one/rcl 4.5.12 → 4.5.14
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 +2 -0
- package/dist/config/harness.d.ts +4 -0
- package/dist/config/harness.js +43 -16
- package/dist/config/harness.js.map +1 -1
- package/dist/consensus/parser.js +9 -2
- package/dist/consensus/parser.js.map +1 -1
- package/dist/converge/launch-guard.d.ts +28 -1
- package/dist/converge/launch-guard.js +113 -4
- package/dist/converge/launch-guard.js.map +1 -1
- package/dist/converge/launch-preflight.d.ts +1 -1
- package/dist/converge/launch-preflight.js +3 -2
- package/dist/converge/launch-preflight.js.map +1 -1
- package/dist/converge/terminal-rejection.js +19 -6
- package/dist/converge/terminal-rejection.js.map +1 -1
- package/dist/dispatch/journaled-council.d.ts +56 -0
- package/dist/dispatch/journaled-council.js +158 -0
- package/dist/dispatch/journaled-council.js.map +1 -0
- package/dist/index.js +75 -16
- package/dist/index.js.map +1 -1
- package/dist/telemetry/recovery/source.d.ts +202 -0
- package/dist/telemetry/recovery/source.js +10 -0
- package/dist/telemetry/recovery/source.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@ import { readStable } from '../telemetry/recovery/files.js';
|
|
|
7
7
|
import { decodeOriginalReport } from '../evidence/original-run/decode.js';
|
|
8
8
|
import { syncDirectory } from '../evidence/original-run/journal.js';
|
|
9
9
|
import { inspectRecoveryDirectory, prepareLockRoot } from '../evidence/original-run/lock-path.js';
|
|
10
|
-
import {
|
|
10
|
+
import { locallyRefusedReportSchema } from '../telemetry/recovery/source.js';
|
|
11
11
|
import { Quarantine, QUARANTINE_DIR } from '../telemetry/quarantine.js';
|
|
12
12
|
import { OUTBOX_DIR } from '../telemetry/outbox.js';
|
|
13
13
|
import { REVIEWER_OUTBOX_DIR } from '../telemetry/reviewer-delivery.js';
|
|
@@ -23,6 +23,8 @@ import { withRecoveryTarget } from './target-ownership.js';
|
|
|
23
23
|
import { retainStaleFile as retain, selectedStaleFile as selected } from './stale-report-storage.js';
|
|
24
24
|
import { rejectionManifest, rejectionManifestSchema, rejectionSelectionSchema, validateTerminalRejectionAudit } from './terminal-rejection-schema.js';
|
|
25
25
|
const parse = (file) => decodeOriginalReport(file.text).value;
|
|
26
|
+
const LABEL_PATH = /^(findings|belowThresholdFindings)\.\d+\.gating\.reason$/;
|
|
27
|
+
const BLANK_TEXT_PATH = /^findings\.(\d+)\.(file|title)$/;
|
|
26
28
|
function refuse(code) { throw new Error(`terminal_rejection_${code}`); }
|
|
27
29
|
export function assertDeadOwner(pid) {
|
|
28
30
|
try {
|
|
@@ -78,7 +80,7 @@ function eligible(state, attemptBytes, m) {
|
|
|
78
80
|
async function proof(state, attempts, m, dataDir, retainedDirectory) {
|
|
79
81
|
const launch = eligible(state, attempts, m);
|
|
80
82
|
const reportBytes = await selected(retainedDirectory ? join(retainedDirectory, 'report.json') : m.reportPath, m.reportSha256);
|
|
81
|
-
const raw = parse(reportBytes), report =
|
|
83
|
+
const raw = parse(reportBytes), report = locallyRefusedReportSchema.parse(raw);
|
|
82
84
|
if (report.run.id !== launch.runId || report.run.target.head_sha !== launch.headSha ||
|
|
83
85
|
report.run.converge?.target !== m.target || report.run.converge?.attempt !== launch.attempt ||
|
|
84
86
|
report.run.converge?.round !== launch.round || report.run.cycle_id !== state.cycle?.id ||
|
|
@@ -99,19 +101,30 @@ async function proof(state, attempts, m, dataDir, retainedDirectory) {
|
|
|
99
101
|
if (retained.manifest.artifacts['report_md'])
|
|
100
102
|
artifacts.report_md = (await readStable(join(retained.path, 'report.md'))).text;
|
|
101
103
|
const storedEnvelope = parse(await readStable(join(retained.path, 'envelope.json')));
|
|
102
|
-
// Only
|
|
104
|
+
// Only two pre-network rejections are disposable: a missing gating label,
|
|
105
|
+
// or a finding whose blank file or title the evidence protocol refuses. A
|
|
103
106
|
// transport/server refusal, malformed envelope or valid report is not proof.
|
|
104
|
-
const
|
|
105
|
-
|
|
107
|
+
const labels = verifiedConsensusDiagnostics(raw);
|
|
108
|
+
const blank = [...report.findings, ...(report.belowThresholdFindings ?? [])].some(f => !f.file.trim() || !f.title.trim());
|
|
109
|
+
if ((labels.length === 0 && !blank) || labels.some(d => !LABEL_PATH.test(d.path)))
|
|
106
110
|
refuse('unsupported_local_rejection');
|
|
107
111
|
const levels = ['full', 'findings', 'envelope'];
|
|
108
112
|
const projections = levels.flatMap(level => [false, true].map(parseFailures => buildRunEnvelope(raw, artifacts, { level, parseFailures, delivery: { mode: 'direct' } })));
|
|
109
113
|
const envelope = projections.find(candidate => isDeepStrictEqual(candidate, storedEnvelope));
|
|
110
|
-
|
|
114
|
+
// Delivery records envelope-schema diagnostics before label diagnostics.
|
|
115
|
+
const refused = envelope ? validateRunEnvelope(envelope, artifacts) : [];
|
|
116
|
+
const diagnostics = [...refused, ...labels];
|
|
117
|
+
if (!envelope || diagnostics.length === 0 || !refused.every(d => blankText(envelope, d)) ||
|
|
111
118
|
!isDeepStrictEqual(retained.manifest.diagnostics, diagnostics))
|
|
112
119
|
refuse('rejection_diagnostics');
|
|
113
120
|
return { launch, reportBytes, manifest, quarantinePath: retained.path, quarantineManifest: retained.manifest };
|
|
114
121
|
}
|
|
122
|
+
/** The envelope-schema refusal of a blank finding file or title, checked against the projected row. */
|
|
123
|
+
function blankText(envelope, d) {
|
|
124
|
+
const [, index, field] = BLANK_TEXT_PATH.exec(d.path) ?? [];
|
|
125
|
+
const value = index === undefined ? undefined : envelope.findings[Number(index)]?.[field];
|
|
126
|
+
return d.message === 'Invalid text' && typeof value === 'string' && value.trim() === '';
|
|
127
|
+
}
|
|
115
128
|
function bound(m, state, launch) {
|
|
116
129
|
if (m.cycleId !== (state.cycle?.id ?? null) || m.attempt !== launch.attempt || m.round !== launch.round ||
|
|
117
130
|
m.headSha !== launch.headSha || m.inputSha256 !== launch.inputSha256)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-rejection.js","sourceRoot":"","sources":["../../src/converge/terminal-rejection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terminal-rejection.js","sourceRoot":"","sources":["../../src/converge/terminal-rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAA6B,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAwC,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AACnG,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAyB,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,iBAAiB,IAAI,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,8BAA8B,EACrC,MAAM,gCAAgC,CAAC;AAE/G,MAAM,KAAK,GAAG,CAAC,IAA4C,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACtG,MAAM,UAAU,GAAG,0DAA0D,CAAC;AAC9E,MAAM,eAAe,GAAG,iCAAiC,CAAC;AAC1D,SAAS,MAAM,CAAC,IAAY,IAAW,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvF,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAAC,CAAC;IAC7B,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;IAAC,CAAC;IAChF,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACpC,CAAC;AACD,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAC1B,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;IAC9F,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC7B,CAAC;AACD,4FAA4F;AAC5F,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,KAAa;IACtD,MAAM,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAC/B,OAAO,KAAK,EAAE,CAAC;YAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;QAChG,MAAM,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AACD,SAAS,QAAQ,CAAC,KAAuB,EAAE,YAAoD,EAAE,CAAqB;IACpH,MAAM,QAAQ,GAAG,4BAA4B,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACnG,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QACxF,MAAM,CAAC,gBAAgB,KAAK,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,aAAa;QAChH,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC;QAC9H,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc;QACzE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;QAC5E,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;QAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACnG,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,KAAK,UAAU,KAAK,CAAC,KAAuB,EAAE,QAAgD,EAC5F,CAAqB,EAAE,OAAe,EAAE,iBAA0B;IAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9H,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/E,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,OAAO;QACjF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC,OAAO;QAC3F,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,KAAK,EAAE,EAAE;QACtF,MAAM,CAAC,GAAG,CAAC,UAAU,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAoB;QACvF,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,MAAM,CAAC,iBAAiB;QAChH,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB;QACvI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,cAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;QAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC5I,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAC/H,MAAM,wBAAwB,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,QAAQ,EAAE,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAS,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAa,CAAC,MAAM,GAAG,CAAC;QACzG,QAAQ,CAAC,QAAS,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAS,CAAC,QAAQ;QAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACrI,MAAM,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAkB,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,QAAQ,CAAC,QAAS,CAAC,SAAS,CAAC,WAAW,CAAC;QAAE,SAAS,CAAC,SAAS,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/H,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACrF,0EAA0E;IAC1E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAmB,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1H,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACzH,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAC5E,gBAAgB,CAAC,GAAmB,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7F,yEAAyE;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAS,CAAC,WAAW,EAAE,WAAW,CAAC;QAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,QAAS,EAAE,CAAC;AAClH,CAAC;AACD,uGAAuG;AACvG,SAAS,SAAS,CAAC,QAAqB,EAAE,CAAqB;IAC7D,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAyB,CAAC,CAAC;IAC9G,OAAO,CAAC,CAAC,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1F,CAAC;AACD,SAAS,KAAK,CAAC,CAAoB,EAAE,KAAuB,EAAE,MAA6C;IACzG,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;QACrG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW;QAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrG,CAAC;AACD,SAAS,SAAS,CAAC,MAAc,EAAE,CAAoB,IAAY,OAAO,IAAI,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnI,SAAS,SAAS,CAAC,MAAwB,EAAE,KAAqB,EAAE,CAAoB;IACtF,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAW,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE;QACjH,kBAAkB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;QACjE,sBAAsB,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AACnG,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAAyB,EAAE,YAAoB,EAAE,aAAqB;IACnH,MAAM,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IACvD,MAAM,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAChF,MAAM,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/F,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC1G,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM;QACzF,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI;QAC5E,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAChJ,MAAM,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5E,OAAO,CAAC,CAAC;AACX,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAmD,EAAE,YAAoB,EAAE,aAAqB;IAC3I,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACtE,MAAM,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACzG,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAAE,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC9H,MAAM,KAAK,GAAmB,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/F,OAAO,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAC,SAAS,EAAC,EAAE;QAC5D,MAAM,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACjF,MAAM,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;QACtG,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;gBAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAqB,CAAC;YAC1H,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,eAAe,CAAC,CAAC;YACpF,MAAM,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;YAC5E,eAAe,CAAC,KAAK,CAAC,UAAW,CAAC,GAAG,CAAC,CAAC;YAAC,MAAM,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAC7E,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;YACrC,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,aAAa,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,aAAa,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,CAAC;QAC1F,CAAC,CAAC;YAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QAC7F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,gBAAgB;YAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClF,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,MAAM,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAAC,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0BAA0B,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAAC,MAAM,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa;YAC3F,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpI,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,gBAAgB;YAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC1F,2EAA2E;QAC3E,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,gBAAgB;YAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC/E,MAAM,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QAC5E,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,MAAM,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAAc,EAAE,KAAuB;IACpF,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS;QAAE,OAAO;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,KAAK;QAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1J,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YACxH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACvE,MAAM,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAAC,MAAM,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9F,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAqB,CAAC;QACzG,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QACpF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,EAAE,MAAM,CAAC;YAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACxF,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QACzD,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,0BAA0B,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAClE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,gBAAgB;YAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAAc,EAAE,KAAuB;IACtF,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAqB,CAAC;IAC1H,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;QACnH,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IAC5E,eAAe,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { ModelReview } from '../consensus/types.js';
|
|
2
|
+
import type { BuiltPrompt } from '../prepare/prompt-builder.js';
|
|
3
|
+
import type { ReviewAssignment } from '../roles/types.js';
|
|
4
|
+
import type { NativeTargetOwnership } from '../converge/target-ownership.js';
|
|
5
|
+
import { type CheckpointJournal, type CheckpointState } from './checkpoint.js';
|
|
6
|
+
import { type RunnerOptions } from './runner.js';
|
|
7
|
+
/**
|
|
8
|
+
* Ordinary guarded councils journal every call so an interrupted process can
|
|
9
|
+
* resume without repeating paid work (RCL-80). A call in flight when its
|
|
10
|
+
* process ended may already be billed: it is dispatched at most once more.
|
|
11
|
+
* Each dispatch keeps the runner's bounded in-call retries, so one intent
|
|
12
|
+
* covers one logical call, not one provider request.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MAX_DISPATCHES_PER_CELL = 2;
|
|
15
|
+
export type JournaledRunnerOptions = Omit<RunnerOptions, 'retainedReviews' | 'eligibleCallIndices' | 'beforeReview' | 'acceptReview' | 'seatIds'>;
|
|
16
|
+
export interface JournaledCouncilInput {
|
|
17
|
+
journal: CheckpointJournal;
|
|
18
|
+
ownership: NativeTargetOwnership;
|
|
19
|
+
/** Chunk-major matrix in the journal plan's cell order. */
|
|
20
|
+
assignments: ReviewAssignment[];
|
|
21
|
+
prompts: BuiltPrompt[];
|
|
22
|
+
runner: JournaledRunnerOptions;
|
|
23
|
+
/**
|
|
24
|
+
* Slice budget: once this returns false no new call starts, while calls
|
|
25
|
+
* already running finish and are journaled. Declined calls stay open for a
|
|
26
|
+
* resume and never count as interrupted dispatches.
|
|
27
|
+
*/
|
|
28
|
+
admit?: () => boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface JournaledCouncilResult {
|
|
31
|
+
reviews: ModelReview[];
|
|
32
|
+
/** The slice or signal stopped the council before it would have closed; the journal stays open for a resume. */
|
|
33
|
+
interrupted: boolean;
|
|
34
|
+
/** Successful calls reused from the journal instead of dispatched again. */
|
|
35
|
+
retained: number;
|
|
36
|
+
/** Calls dispatched by this invocation. */
|
|
37
|
+
dispatched: number;
|
|
38
|
+
}
|
|
39
|
+
interface CellPlan {
|
|
40
|
+
retained: Map<number, ModelReview>;
|
|
41
|
+
recorded: Map<number, ModelReview>;
|
|
42
|
+
exhausted: Set<number>;
|
|
43
|
+
eligible: number[];
|
|
44
|
+
}
|
|
45
|
+
/** Pure selection over a validated journal; matrix order is kept as dispatch priority. */
|
|
46
|
+
export declare function planJournaledCouncil(cells: readonly {
|
|
47
|
+
id: string;
|
|
48
|
+
}[], state: CheckpointState): CellPlan;
|
|
49
|
+
/**
|
|
50
|
+
* Run the ordinary council over its journal: reuse recorded successes, keep
|
|
51
|
+
* recorded failures, give an interrupted call one more dispatch, and run the
|
|
52
|
+
* rest with the unchanged ordinary scheduling, provider caps and quorum.
|
|
53
|
+
* The caller holds target ownership and binds the journal to its launch.
|
|
54
|
+
*/
|
|
55
|
+
export declare function runJournaledCouncil(input: JournaledCouncilInput): Promise<JournaledCouncilResult>;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { normalizeGeneratedText } from '../telemetry/scrub.js';
|
|
3
|
+
import { blockingCheckpointReviewSchema } from './checkpoint.js';
|
|
4
|
+
import { hasSuccessfulQuorum, resolveQuorumPolicy } from './quorum.js';
|
|
5
|
+
import { reviewCallIdentity, runReviews } from './runner.js';
|
|
6
|
+
/**
|
|
7
|
+
* Ordinary guarded councils journal every call so an interrupted process can
|
|
8
|
+
* resume without repeating paid work (RCL-80). A call in flight when its
|
|
9
|
+
* process ended may already be billed: it is dispatched at most once more.
|
|
10
|
+
* Each dispatch keeps the runner's bounded in-call retries, so one intent
|
|
11
|
+
* covers one logical call, not one provider request.
|
|
12
|
+
*/
|
|
13
|
+
export const MAX_DISPATCHES_PER_CELL = 2;
|
|
14
|
+
const INTERRUPTED = 'Previous process ended without a recorded outcome; the call remains possibly billed.';
|
|
15
|
+
const EXHAUSTED = 'Interrupted twice without a recorded outcome; possibly billed and not dispatched again.';
|
|
16
|
+
/**
|
|
17
|
+
* The report normalizes reviewer prose before hashing; the journal keeps that
|
|
18
|
+
* same normalized text, because its strict schema refuses raw control bytes.
|
|
19
|
+
* One journaled dispatch may include the runner's in-call retries, so the
|
|
20
|
+
* diagnostic adapter counter is not kept: the journal reserves it for the
|
|
21
|
+
* one-request-per-intent retained executor.
|
|
22
|
+
*/
|
|
23
|
+
function journalable(review) {
|
|
24
|
+
const { adapterAttempts: _diagnostic, ...rest } = review;
|
|
25
|
+
return { ...rest, findings: review.findings.map(finding => ({ ...finding, id: normalizeGeneratedText(finding.id),
|
|
26
|
+
title: normalizeGeneratedText(finding.title), description: normalizeGeneratedText(finding.description),
|
|
27
|
+
...(finding.suggestedFix === undefined ? {} : { suggestedFix: normalizeGeneratedText(finding.suggestedFix) }) })) };
|
|
28
|
+
}
|
|
29
|
+
/** Pure selection over a validated journal; matrix order is kept as dispatch priority. */
|
|
30
|
+
export function planJournaledCouncil(cells, state) {
|
|
31
|
+
const intents = new Map();
|
|
32
|
+
for (const record of state.records) {
|
|
33
|
+
if (record.type !== 'intent')
|
|
34
|
+
continue;
|
|
35
|
+
intents.set(record.cell, [...intents.get(record.cell) ?? [], record.paidAttempt]);
|
|
36
|
+
}
|
|
37
|
+
const outcomes = new Map(state.outcomes.map(outcome => [`${outcome.cell}\0${outcome.paidAttempt.id}`, outcome.result]));
|
|
38
|
+
const plan = { retained: new Map(), recorded: new Map(), exhausted: new Set(), eligible: [] };
|
|
39
|
+
cells.forEach((cell, index) => {
|
|
40
|
+
const attempts = intents.get(cell.id) ?? [];
|
|
41
|
+
const last = attempts.at(-1);
|
|
42
|
+
const outcome = last && outcomes.get(`${cell.id}\0${last.id}`);
|
|
43
|
+
if (outcome?.kind === 'success')
|
|
44
|
+
plan.retained.set(index, JSON.parse(outcome.reviewBytes));
|
|
45
|
+
else if (outcome)
|
|
46
|
+
plan.recorded.set(index, JSON.parse(outcome.reviewBytes));
|
|
47
|
+
else if (attempts.length >= MAX_DISPATCHES_PER_CELL)
|
|
48
|
+
plan.exhausted.add(index);
|
|
49
|
+
else
|
|
50
|
+
plan.eligible.push(index);
|
|
51
|
+
});
|
|
52
|
+
return plan;
|
|
53
|
+
}
|
|
54
|
+
/** Whether the ordinary runner would close this council at quorum; wait-for-all never closes early. */
|
|
55
|
+
function closesAtQuorum(assignments, reviews, quorum) {
|
|
56
|
+
if (!quorum)
|
|
57
|
+
return false;
|
|
58
|
+
const expected = new Map(), succeeded = new Map();
|
|
59
|
+
assignments.forEach((assignment, index) => {
|
|
60
|
+
if (quorum.blocking && !quorum.blocking[index])
|
|
61
|
+
return;
|
|
62
|
+
const seat = JSON.stringify([assignment.provider, assignment.model, assignment.role.name]);
|
|
63
|
+
expected.set(seat, (expected.get(seat) ?? 0) + 1);
|
|
64
|
+
if (reviews[index]?.status === 'success')
|
|
65
|
+
succeeded.set(seat, (succeeded.get(seat) ?? 0) + 1);
|
|
66
|
+
});
|
|
67
|
+
const complete = [...expected].filter(([seat, count]) => succeeded.get(seat) === count).length;
|
|
68
|
+
const policy = resolveQuorumPolicy(expected.size, quorum.fraction);
|
|
69
|
+
return policy.fraction < 1 && hasSuccessfulQuorum(policy, complete);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Run the ordinary council over its journal: reuse recorded successes, keep
|
|
73
|
+
* recorded failures, give an interrupted call one more dispatch, and run the
|
|
74
|
+
* rest with the unchanged ordinary scheduling, provider caps and quorum.
|
|
75
|
+
* The caller holds target ownership and binds the journal to its launch.
|
|
76
|
+
*/
|
|
77
|
+
export async function runJournaledCouncil(input) {
|
|
78
|
+
const { journal, ownership, assignments, prompts } = input;
|
|
79
|
+
const cells = journal.getPlan().cells;
|
|
80
|
+
if (assignments.length !== cells.length || prompts.length !== cells.length)
|
|
81
|
+
throw new Error('journaled_council_matrix_mismatch');
|
|
82
|
+
assignments.forEach((assignment, index) => {
|
|
83
|
+
const cell = cells[index];
|
|
84
|
+
if (assignment.model !== cell.model || assignment.provider !== cell.route || assignment.role.name !== cell.role) {
|
|
85
|
+
throw new Error('journaled_council_matrix_mismatch');
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
let state = await journal.read();
|
|
89
|
+
if (!state.finalized) {
|
|
90
|
+
for (const pending of state.uncertain) {
|
|
91
|
+
if (!state.records.some(record => record.type === 'uncertain' && record.cell === pending.cell &&
|
|
92
|
+
record.paidAttempt?.id === pending.paidAttempt.id)) {
|
|
93
|
+
await journal.recordUncertain(pending.cell, pending.paidAttempt, INTERRUPTED, ownership);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
state = await journal.read();
|
|
97
|
+
}
|
|
98
|
+
const plan = planJournaledCouncil(cells, state);
|
|
99
|
+
const placeholder = (index, error) => ({ model: assignments[index].model,
|
|
100
|
+
role: assignments[index].role.name, provider: assignments[index].provider, status: 'canceled',
|
|
101
|
+
findings: [], durationMs: 0, error });
|
|
102
|
+
const merge = (reviews) => reviews.map((review, index) => plan.recorded.get(index) ?? (plan.exhausted.has(index) ? placeholder(index, EXHAUSTED) : review));
|
|
103
|
+
if (state.finalized) {
|
|
104
|
+
const reviews = cells.map((_, index) => plan.retained.get(index) ?? plan.recorded.get(index) ??
|
|
105
|
+
placeholder(index, plan.exhausted.has(index) ? EXHAUSTED : INTERRUPTED));
|
|
106
|
+
return { reviews, interrupted: false, retained: plan.retained.size, dispatched: 0 };
|
|
107
|
+
}
|
|
108
|
+
const attempts = new Map();
|
|
109
|
+
const declined = new Set();
|
|
110
|
+
const reviews = merge(await runReviews(assignments, prompts, {
|
|
111
|
+
...input.runner,
|
|
112
|
+
retainedReviews: [...plan.retained].map(([callIndex, review]) => ({ callIndex, review,
|
|
113
|
+
callIdentity: reviewCallIdentity(assignments[callIndex], prompts[callIndex], callIndex) })),
|
|
114
|
+
eligibleCallIndices: plan.eligible,
|
|
115
|
+
beforeReview: async (index, signal) => {
|
|
116
|
+
if (signal.aborted)
|
|
117
|
+
return false;
|
|
118
|
+
if (input.admit && !input.admit()) {
|
|
119
|
+
declined.add(index);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
const attempt = { id: randomUUID(), kind: 'paid' };
|
|
123
|
+
await journal.recordIntent(cells[index].id, attempt, ownership);
|
|
124
|
+
attempts.set(index, attempt);
|
|
125
|
+
},
|
|
126
|
+
acceptReview: async (review, index) => {
|
|
127
|
+
const attempt = attempts.get(index), cell = cells[index];
|
|
128
|
+
if (!attempt)
|
|
129
|
+
throw new Error('journaled_council_missing_intent');
|
|
130
|
+
if (review.status === 'canceled') {
|
|
131
|
+
await journal.recordUncertain(cell.id, attempt, review.error ?? 'Canceled with an unknown provider outcome.', ownership);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const stored = journalable(review);
|
|
135
|
+
try {
|
|
136
|
+
if (!blockingCheckpointReviewSchema.safeParse(stored).success)
|
|
137
|
+
throw new Error('checkpoint_invalid_result');
|
|
138
|
+
await journal.recordResult(cell.id, attempt, stored.status === 'success'
|
|
139
|
+
? { kind: 'success', chunk: cell.chunk, reviewBytes: JSON.stringify(stored) }
|
|
140
|
+
: { kind: 'failure', chunk: cell.chunk, reviewBytes: JSON.stringify(stored), possiblyBilled: true }, ownership);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
// Validation refuses before any write. This run still reports the
|
|
144
|
+
// result; only a later resume would dispatch the call again.
|
|
145
|
+
if (!(error instanceof Error) || !['checkpoint_invalid_result', 'checkpoint_result_cell_mismatch'].includes(error.message))
|
|
146
|
+
throw error;
|
|
147
|
+
await journal.recordUncertain(cell.id, attempt, 'Reviewer result could not be journaled; a resume treats it as interrupted.', ownership);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
}));
|
|
151
|
+
const stopped = declined.size > 0 || input.runner.signal?.aborted === true;
|
|
152
|
+
const interrupted = stopped && reviews.some(review => review.status === 'canceled') &&
|
|
153
|
+
!closesAtQuorum(assignments, reviews, input.runner.quorum);
|
|
154
|
+
if (!interrupted)
|
|
155
|
+
await journal.finalize(ownership);
|
|
156
|
+
return { reviews, interrupted, retained: plan.retained.size, dispatched: attempts.size };
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=journaled-council.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journaled-council.js","sourceRoot":"","sources":["../../src/dispatch/journaled-council.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -49,7 +49,7 @@ import { DEFAULT_CONVERGE_ATTEMPT_CAP, claimConvergeAttempt, ConvergeAttemptBudg
|
|
|
49
49
|
import { DEFAULT_CONVERGE_ROUND_CAP, HARD_CONVERGE_ROUND_CAP, processRoundReport, recordVerdicts, findingGatingReason, ConvergeRoundCapError, ConvergeRunStateError, } from './converge/run-state.js';
|
|
50
50
|
import { applyRoundGap, previewRoundGap } from './converge/round-gap.js';
|
|
51
51
|
import { withNativeTarget } from './converge/target-ownership.js';
|
|
52
|
-
import { guardReviewLaunch, ReviewLaunchRefused } from './converge/launch-guard.js';
|
|
52
|
+
import { guardReviewLaunch, ReviewCouncilInterrupted, ReviewLaunchRefused } from './converge/launch-guard.js';
|
|
53
53
|
import { selectCurrentRecoveredProduction } from './converge/recovered-production.js';
|
|
54
54
|
import { createBoundFixRecovery } from './converge/bound-fix-recovery.js';
|
|
55
55
|
import { openReadSink } from './telemetry/read-sink.js';
|
|
@@ -87,7 +87,8 @@ import { exportOrdinaryPendingPackage, retainOrdinaryLaunchInputs } from './conv
|
|
|
87
87
|
import { capturePreparedCouncil } from './dispatch/capture-council.js';
|
|
88
88
|
import { executeCapturedOriginal } from './dispatch/original-execution.js';
|
|
89
89
|
import { resolveFinalizedAsyncExecution } from './dispatch/checkpoint-async-store.js';
|
|
90
|
-
import { exportCheckpointProof } from './dispatch/checkpoint.js';
|
|
90
|
+
import { CheckpointJournal, checkpointPath, exportCheckpointProof } from './dispatch/checkpoint.js';
|
|
91
|
+
import { runJournaledCouncil } from './dispatch/journaled-council.js';
|
|
91
92
|
import { captureAggregationInputs, AGGREGATION_ALGORITHM } from './report/aggregation-inputs.js';
|
|
92
93
|
import { decodeSupplementalAsync } from './report/supplemental-async.js';
|
|
93
94
|
import { projectCheckpointReport } from './report/checkpoint-projection.js';
|
|
@@ -253,6 +254,7 @@ program
|
|
|
253
254
|
.option('--resume-async-sha256 <hashes>', 'Comma-separated SHA-256 bindings for every legacy async result retained as historical evidence')
|
|
254
255
|
.option('--retry-reason <reason>', 'Explicit bounded recovery decision for a previous failed or unknown launch; never resets caps')
|
|
255
256
|
.option('--max-attempts <n>', 'Guarded convergence: explicitly authorized attempt cap (omitting preserves the cap)')
|
|
257
|
+
.option('--max-slice-minutes <n>', 'Guarded convergence: start no new reviewer call after N minutes; running calls finish, then exit 5. Rerunning the same command resumes without a new attempt')
|
|
256
258
|
.option('--max-rounds <n>', 'Guarded convergence: explicitly authorized round cap (2–99; omitting preserves the cap)')
|
|
257
259
|
.option('--no-telemetry', 'Do not deliver this review as evidence to Harness')
|
|
258
260
|
.option('--evidence-required', 'Exit 4 unless Harness acknowledged the evidence (spools first; retry with rcl telemetry flush)')
|
|
@@ -1420,11 +1422,12 @@ rolesCmd
|
|
|
1420
1422
|
* see any injected keys.
|
|
1421
1423
|
*/
|
|
1422
1424
|
async function fetchHarnessKeys(spinner, credential) {
|
|
1423
|
-
const { note } = await applyHarnessModelKeys(credential ? { credential } : {});
|
|
1425
|
+
const { note, fetchFailure } = await applyHarnessModelKeys(credential ? { credential } : {});
|
|
1424
1426
|
if (note) {
|
|
1425
1427
|
spinner.info(note);
|
|
1426
1428
|
spinner.start('Loading configuration...');
|
|
1427
1429
|
}
|
|
1430
|
+
return fetchFailure;
|
|
1428
1431
|
}
|
|
1429
1432
|
async function prepareCouncil(spinner, opts, fallbackRoles, attestation) {
|
|
1430
1433
|
const startedAt = new Date();
|
|
@@ -1444,8 +1447,7 @@ async function prepareCouncil(spinner, opts, fallbackRoles, attestation) {
|
|
|
1444
1447
|
if (opts.guardedConverge && converge?.attempt !== undefined && !recoveredProduction) {
|
|
1445
1448
|
throw new ReviewLaunchRefused('preclaimed_attempt_ineligible', 'An explicit guarded attempt may only hand off the exact standalone claim for recovered-v3 production.');
|
|
1446
1449
|
}
|
|
1447
|
-
|
|
1448
|
-
await fetchHarnessKeys(spinner, attestation?.credential);
|
|
1450
|
+
const keyFetchFailure = opts.exportPendingPackage ? undefined : await fetchHarnessKeys(spinner, attestation?.credential);
|
|
1449
1451
|
const config = await loadConfig(opts.config, undefined, { preserveDefaultRoster: opts.guardedConverge });
|
|
1450
1452
|
// Validate mutually exclusive role options
|
|
1451
1453
|
const roleOptionCount = [opts.role, opts.roles, opts.reviewer?.length].filter(Boolean).length;
|
|
@@ -1642,6 +1644,7 @@ async function prepareCouncil(spinner, opts, fallbackRoles, attestation) {
|
|
|
1642
1644
|
} } : {}) } } : {}),
|
|
1643
1645
|
...(recoveredProduction ? { recoveredProduction } : {}),
|
|
1644
1646
|
startedAt,
|
|
1647
|
+
...(keyFetchFailure ? { keyFetchFailure } : {}),
|
|
1645
1648
|
};
|
|
1646
1649
|
}
|
|
1647
1650
|
function reviewConvergeEnvironment(opts) {
|
|
@@ -1762,8 +1765,11 @@ async function runReview(target, opts) {
|
|
|
1762
1765
|
catch { /* Startup delivery remains best-effort for legacy reviews. */ }
|
|
1763
1766
|
}
|
|
1764
1767
|
if (!opts.guardedConverge && (opts.launchIntent !== undefined || opts.retryReason !== undefined || opts.retryReport !== undefined ||
|
|
1765
|
-
opts.maxAttempts !== undefined || opts.maxRounds !== undefined)) {
|
|
1766
|
-
throw new ReviewLaunchRefused('guard_required', 'Launch intent, retry reason
|
|
1768
|
+
opts.maxAttempts !== undefined || opts.maxRounds !== undefined || opts.maxSliceMinutes !== undefined)) {
|
|
1769
|
+
throw new ReviewLaunchRefused('guard_required', 'Launch intent, retry reason, launch caps and slice budgets require --guarded-converge.');
|
|
1770
|
+
}
|
|
1771
|
+
if (opts.maxSliceMinutes !== undefined && (!/^[1-9]\d{0,3}$/.test(opts.maxSliceMinutes) || Number(opts.maxSliceMinutes) > 1440)) {
|
|
1772
|
+
throw new ReviewLaunchRefused('invalid_slice_budget', '--max-slice-minutes must be a whole number of minutes from 1 to 1440.');
|
|
1767
1773
|
}
|
|
1768
1774
|
if (opts.guardedConverge) {
|
|
1769
1775
|
const converge = resolveConvergeContext(opts, reviewConvergeEnvironment(opts));
|
|
@@ -1911,7 +1917,8 @@ async function runReview(target, opts) {
|
|
|
1911
1917
|
console.error(err);
|
|
1912
1918
|
}
|
|
1913
1919
|
process.exitCode = opts.guardedConverge && (err instanceof ConvergeAttemptBudgetExceededError || err instanceof ConvergeRoundCapError)
|
|
1914
|
-
? 2 : opts.guardedConverge && (err instanceof ConvergeAttemptStateError || err instanceof ConvergeRunStateError) ? 3
|
|
1920
|
+
? 2 : opts.guardedConverge && (err instanceof ConvergeAttemptStateError || err instanceof ConvergeRunStateError) ? 3
|
|
1921
|
+
: opts.guardedConverge && err instanceof ReviewCouncilInterrupted ? 5 : 1;
|
|
1915
1922
|
}
|
|
1916
1923
|
}
|
|
1917
1924
|
/**
|
|
@@ -2170,7 +2177,10 @@ async function executeCouncil(spinner, prepared, diff, opts, extra, preparedWork
|
|
|
2170
2177
|
maxDurationMs: Math.min(2_147_483_647, (config.timeout ?? DEFAULT_TIMEOUT_MS) * Math.max(1, Math.ceil(captured.plan.cells.length / (config.concurrency ?? DEFAULT_CONCURRENCY))) *
|
|
2171
2178
|
((config.maxRetries ?? DEFAULT_MAX_RETRIES) + 1) +
|
|
2172
2179
|
prepared.gatingConfig.verificationTimeoutMs),
|
|
2173
|
-
validate: async () => {
|
|
2180
|
+
validate: async () => {
|
|
2181
|
+
validateLaunchProviders(roster.map(entry => entry.provider), process.env, prepared.keyFetchFailure);
|
|
2182
|
+
await validateLaunchOutputs(opts);
|
|
2183
|
+
},
|
|
2174
2184
|
loadRetainedAsync: migrationPackage ? loadMigrationRetainedAsync : async () => {
|
|
2175
2185
|
const snapshot = await snapshotAsyncResults(asyncStoreDir, asyncKey, pendingClaimPlan.assignments.map(assignment => ({
|
|
2176
2186
|
model: assignment.model, role: assignment.role.name,
|
|
@@ -2214,10 +2224,38 @@ async function executeCouncil(spinner, prepared, diff, opts, extra, preparedWork
|
|
|
2214
2224
|
}
|
|
2215
2225
|
return result.completion;
|
|
2216
2226
|
}
|
|
2227
|
+
// Journal the ordinary council so an interrupted process resumes without
|
|
2228
|
+
// repeating successful calls (RCL-80). Without an exact head and base, or
|
|
2229
|
+
// inputs beyond the capture limits, dispatch stays unjournaled.
|
|
2230
|
+
let ordinaryPlan;
|
|
2231
|
+
if (/^[a-f0-9]{40}$/.test(extra.target.headSha ?? '') && /^[a-f0-9]{40}$/.test(extra.target.baseSha ?? '')) {
|
|
2232
|
+
try {
|
|
2233
|
+
ordinaryPlan = capturePreparedCouncil({ target: prepared.converge.target,
|
|
2234
|
+
headSha: extra.target.headSha, mergeBaseSha: extra.target.baseSha, diff, assignments,
|
|
2235
|
+
lanes: assignments.map(item => assignmentLane(item.model, prepared.coreModels, prepared.explicit)),
|
|
2236
|
+
chunks, prompts, config, specBytes: prepared.specContent ?? '', contextDocs,
|
|
2237
|
+
compatibility: { parser: { name: 'findings-json', version: 1 }, aggregation: AGGREGATION_ALGORITHM } }).plan;
|
|
2238
|
+
}
|
|
2239
|
+
catch (error) {
|
|
2240
|
+
process.stderr.write(`Council journal unavailable (${scrubText(String(error), 200)}); an interrupted run cannot resume.\n`);
|
|
2241
|
+
}
|
|
2242
|
+
}
|
|
2243
|
+
const journalPlan = ordinaryPlan;
|
|
2244
|
+
if (opts.maxSliceMinutes !== undefined && !journalPlan) {
|
|
2245
|
+
throw new ReviewLaunchRefused('slice_budget_unavailable', '--max-slice-minutes needs a journaled council (an exact head and base within the capture limits); rerun without it.');
|
|
2246
|
+
}
|
|
2217
2247
|
const claim = await guardReviewLaunch({
|
|
2218
2248
|
gitCommonDir: await resolveGitCommonDir(),
|
|
2219
2249
|
target: prepared.converge.target,
|
|
2220
2250
|
startOver: opts.startOver, cycleRemote,
|
|
2251
|
+
...(journalPlan ? { ordinaryCheckpoint: { exists: async (namespace) => {
|
|
2252
|
+
try {
|
|
2253
|
+
return !!await CheckpointJournal.openRead(checkpointPath(common, prepared.converge.target, namespace), journalPlan);
|
|
2254
|
+
}
|
|
2255
|
+
catch {
|
|
2256
|
+
return false;
|
|
2257
|
+
}
|
|
2258
|
+
} } } : {}),
|
|
2221
2259
|
boundFixRecovery,
|
|
2222
2260
|
recoverySource: prepared.converge.recovery_source,
|
|
2223
2261
|
headSha: extra.target.headSha ?? '',
|
|
@@ -2231,7 +2269,7 @@ async function executeCouncil(spinner, prepared, diff, opts, extra, preparedWork
|
|
|
2231
2269
|
consumeAttempt: prepared.recoveredProduction ? prepared.converge.attempt : undefined,
|
|
2232
2270
|
maxRounds: opts.maxRounds === undefined ? undefined : Number(opts.maxRounds),
|
|
2233
2271
|
validate: async () => {
|
|
2234
|
-
validateLaunchProviders(roster.map(entry => entry.provider));
|
|
2272
|
+
validateLaunchProviders(roster.map(entry => entry.provider), process.env, prepared.keyFetchFailure);
|
|
2235
2273
|
if (assignments.length < 2) {
|
|
2236
2274
|
throw new ReviewLaunchRefused('insufficient_reviewers', 'Convergence needs at least two reviewer assignments for a conclusive round.');
|
|
2237
2275
|
}
|
|
@@ -2259,8 +2297,10 @@ async function executeCouncil(spinner, prepared, diff, opts, extra, preparedWork
|
|
|
2259
2297
|
if (boundFixRecovery)
|
|
2260
2298
|
process.stderr.write(`Bound fix recovery verified from run ${boundFixRecovery.runId}; attempt ${claim.attempt} retains the existing review history.\n`);
|
|
2261
2299
|
},
|
|
2262
|
-
run: async (converge) => {
|
|
2263
|
-
|
|
2300
|
+
run: async (converge, ownership, _original, checkpoint) => {
|
|
2301
|
+
if (checkpoint?.resumed)
|
|
2302
|
+
process.stderr.write(`Resuming the interrupted council of attempt ${converge.attempt}; journaled calls are not repeated.\n`);
|
|
2303
|
+
const guardedCompletion = await executeCouncil(spinner, { ...prepared, converge }, diff, { ...opts, guardedConverge: false, exclusiveOutputs: true }, { ...extra, ...(checkpoint && journalPlan ? { ordinaryCheckpoint: { ...checkpoint, ownership, plan: journalPlan } } : {}) }, work);
|
|
2264
2304
|
if (!guardedCompletion)
|
|
2265
2305
|
throw new Error('guarded_launch_missing_completion');
|
|
2266
2306
|
completion = guardedCompletion;
|
|
@@ -2285,7 +2325,7 @@ async function executeCouncil(spinner, prepared, diff, opts, extra, preparedWork
|
|
|
2285
2325
|
let asyncStoreDir;
|
|
2286
2326
|
let asyncKey;
|
|
2287
2327
|
let asyncLaunched = 0;
|
|
2288
|
-
if (!extra.pendingResume &&
|
|
2328
|
+
if (!extra.pendingResume && !extra.ordinaryCheckpoint?.resumed &&
|
|
2289
2329
|
asyncTargetLabel !== undefined &&
|
|
2290
2330
|
(asyncAssignments.length > 0 || (config.asyncModels?.length ?? 0) > 0)) {
|
|
2291
2331
|
try {
|
|
@@ -2392,8 +2432,8 @@ async function executeCouncil(spinner, prepared, diff, opts, extra, preparedWork
|
|
|
2392
2432
|
policy: { version: 1, fraction: config.quorumFraction ?? DEFAULT_QUORUM_FRACTION } });
|
|
2393
2433
|
chunkReviews = pendingProjection.seatReviews.map(seat => structuredClone(seat.review));
|
|
2394
2434
|
}
|
|
2395
|
-
else
|
|
2396
|
-
|
|
2435
|
+
else {
|
|
2436
|
+
const ordinaryRunner = {
|
|
2397
2437
|
// Fall back to the shared constants, never to inline literals:
|
|
2398
2438
|
// duplicated defaults drift (this read 120_000 after the default
|
|
2399
2439
|
// moved to 600_000).
|
|
@@ -2414,7 +2454,26 @@ async function executeCouncil(spinner, prepared, diff, opts, extra, preparedWork
|
|
|
2414
2454
|
blocking: chunkAssignments.map((ca) => assignmentLane(ca.assignment.model, prepared.coreModels, prepared.explicit) === 'blocking'),
|
|
2415
2455
|
},
|
|
2416
2456
|
onReviewComplete: (review) => progress.complete(review),
|
|
2417
|
-
}
|
|
2457
|
+
};
|
|
2458
|
+
const checkpoint = extra.ordinaryCheckpoint;
|
|
2459
|
+
if (checkpoint) {
|
|
2460
|
+
const open = { commonDir: await resolveGitCommonDir(), namespace: checkpoint.namespace,
|
|
2461
|
+
plan: checkpoint.plan, ownership: checkpoint.ownership };
|
|
2462
|
+
const journal = await (checkpoint.resumed ? CheckpointJournal.openWrite(open) : CheckpointJournal.create(open));
|
|
2463
|
+
const sliceEndsAt = opts.maxSliceMinutes === undefined ? undefined : Date.now() + Number(opts.maxSliceMinutes) * 60_000;
|
|
2464
|
+
const journaled = await runJournaledCouncil({ journal, ownership: checkpoint.ownership,
|
|
2465
|
+
assignments: chunkAssignments.map((ca) => ca.assignment), prompts, runner: ordinaryRunner,
|
|
2466
|
+
...(sliceEndsAt === undefined ? {} : { admit: () => Date.now() < sliceEndsAt }) });
|
|
2467
|
+
if (journaled.retained > 0)
|
|
2468
|
+
process.stderr.write(`Reused ${journaled.retained} journaled call(s) from the interrupted council.\n`);
|
|
2469
|
+
if (journaled.interrupted) {
|
|
2470
|
+
throw new ReviewCouncilInterrupted(journaled.reviews.filter(review => review.status !== 'canceled').length, totalCalls);
|
|
2471
|
+
}
|
|
2472
|
+
chunkReviews = journaled.reviews;
|
|
2473
|
+
}
|
|
2474
|
+
else
|
|
2475
|
+
chunkReviews = await runReviews(chunkAssignments.map((ca) => ca.assignment), prompts, ordinaryRunner);
|
|
2476
|
+
}
|
|
2418
2477
|
}
|
|
2419
2478
|
finally {
|
|
2420
2479
|
progress.stop();
|