@nexus-cortex/cli 4.44.2 → 4.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,6 +21,15 @@ export interface AutoResearchLoopOptions {
21
21
  * every scored run so the matrix can rank (model × temperature × strategy). */
22
22
  temperature?: string;
23
23
  strategy?: string;
24
+ /** Parallel candidate arms per round (FWER family width). Default 1 = classic loop. */
25
+ width?: string;
26
+ /** Explicit comma-separated model ids rotated across arms (arm 1 keeps --model). */
27
+ armModels?: string;
28
+ /** Comma-separated providers to draw arm models from (flagship tool-supporting model each). */
29
+ providers?: string;
30
+ /** What to do with an arm whose provider key is missing:
31
+ * platform_fallback (run anyway) | omit (drop the arm) | redistribute (reassign). */
32
+ missingProviderKeyPolicy?: string;
24
33
  /** Opt-in qualitative gate: run `cortex autoresearch judge` on each candidate the
25
34
  * STATISTICAL gate accepted, and require it to APPROVE before merging
26
35
  * (accept = gate-accept ∧ judge-approve). Default off → unchanged behavior. */
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/commands/autoresearch/loop.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;oFACgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;oFAEgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0LtF"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/commands/autoresearch/loop.ts"],"names":[],"mappings":"AAwCA,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;oFACgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;0FACsF;IACtF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;oFAEgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA+DD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoRtF"}
@@ -7,14 +7,21 @@
7
7
  *
8
8
  * Each round:
9
9
  * 1. Goal = --prompt, else the highest-priority workable backlog deficiency.
10
- * 2. Create a candidate worktree detached at the current base ref.
11
- * 3. Mutate it: --fixer-cmd (any transformer), else the LLM `cortex autoresearch fix`.
12
- * 4. Commit the candidate (no change skip the round).
13
- * 5. Run `cortex autoresearch experiment` (base vs candidate) and read the verdict.
10
+ * 2. Fan out into `--width` parallel candidate ARMS (default 1). Each arm gets its own
11
+ * worktree detached at the current base ref and its own Fixer model — provider/model
12
+ * diversity competing on the SAME goal (see armPlan.ts for model assignment and the
13
+ * --missing-provider-key-policy semantics).
14
+ * 3. Mutate each arm: --fixer-cmd (any transformer; sees CORTEX_ARM_INDEX/MODEL/STRATEGY
15
+ * in its environment), else the LLM `cortex autoresearch fix --model <arm model>`.
16
+ * 4. Commit each candidate (no change → that arm is skipped).
17
+ * 5. Run `cortex autoresearch experiment` per arm (base vs candidate, FWER-adjusted with
18
+ * --n-family = the number of arms launched) and read the verdicts.
14
19
  * 6. ACCEPT = mergeEligible when a holdout is given (keep + FWER + holdout-verified); with
15
20
  * no holdout, accept = keep-on-train (logged as UNVERIFIED — provide --holdout-set for
16
- * the overfitting guard). On accept: advance base to the candidate + anchor the loop
17
- * branch to it. On reject: drop the worktree.
21
+ * the overfitting guard). The WINNER is the gate-accepted arm with the highest effect;
22
+ * with --require-judge the judge reviews accepted arms in effect order until one is
23
+ * approved. On accept: advance base to the winner + anchor the loop branch to it.
24
+ * Losing/rejected arms are dropped.
18
25
  * 7. Stop on: success metric met, max rounds, max consecutive stale rounds, or a dry backlog.
19
26
  *
20
27
  * GIT SAFETY: all work happens in throwaway worktrees off a dedicated loop branch
@@ -22,13 +29,14 @@
22
29
  * candidate commits are anchored to the loop branch so detached-HEAD commits survive
23
30
  * worktree removal; the operator merges the loop branch when satisfied.
24
31
  */
25
- import { execFileSync, spawnSync } from 'node:child_process';
32
+ import { execFileSync, spawn, spawnSync } from 'node:child_process';
26
33
  import { mkdtempSync } from 'node:fs';
27
34
  import { tmpdir } from 'node:os';
28
35
  import { join, resolve } from 'node:path';
29
36
  import { ResearchBacklog } from '@nexus-cortex/core';
30
37
  import { ThemeManager } from '../../themes/ThemeManager.js';
31
38
  import { resolveRepoDir, resolveTaskSet } from './repoResolve.js';
39
+ import { planArms, parseMissingKeyPolicy } from './armPlan.js';
32
40
  /** Default judge rubric used when --require-judge is set without an explicit
33
41
  * --judge-rubric / --judge-rubric-file. Tuned for the autoresearch loop: the
34
42
  * statistical gate already proved a measurable, holdout-verified gain, so the
@@ -49,6 +57,24 @@ const DEFAULT_JUDGE_RUBRIC = 'You are judging a candidate code change produced b
49
57
  'or bundles unrelated rewrites. A measurable, holdout-verified gain is NECESSARY but NOT ' +
50
58
  'SUFFICIENT — be skeptical and refute-first; when in doubt, do not approve.';
51
59
  function shQuote(s) { return `'${s.replace(/'/g, `'\\''`)}'`; }
60
+ /** Async spawn that resolves with status + captured stdio (never rejects on non-zero exit). */
61
+ function spawnAsync(cmd, args, opts) {
62
+ return new Promise((resolvePromise) => {
63
+ const capture = opts.stdio === 'capture' || opts.stdio === undefined;
64
+ const stdio = capture
65
+ ? ['ignore', 'pipe', 'pipe']
66
+ : opts.stdio === 'inherit' ? 'inherit' : 'ignore';
67
+ const child = spawn(cmd, args, { cwd: opts.cwd, env: opts.env, stdio });
68
+ let stdout = '';
69
+ let stderr = '';
70
+ if (capture) {
71
+ child.stdout?.on('data', (d) => { stdout += d; });
72
+ child.stderr?.on('data', (d) => { stderr += d; });
73
+ }
74
+ child.on('error', (err) => resolvePromise({ status: null, stdout, stderr: stderr || String(err) }));
75
+ child.on('close', (status) => resolvePromise({ status, stdout, stderr }));
76
+ });
77
+ }
52
78
  export async function autoResearchLoop(options) {
53
79
  const theme = ThemeManager.getTheme();
54
80
  const json = !!options.json;
@@ -91,6 +117,33 @@ export async function autoResearchLoop(options) {
91
117
  const successMetric = options.successMetric
92
118
  ? { taskId: options.successMetric.split(':')[0], threshold: Number(options.successMetric.split(':')[1]) }
93
119
  : undefined;
120
+ // ---- Multi-provider arm plan (width 1 = classic single-arm loop) ------------
121
+ let policy;
122
+ try {
123
+ policy = parseMissingKeyPolicy(options.missingProviderKeyPolicy);
124
+ }
125
+ catch (e) {
126
+ console.error(theme.colors.error(`Error: ${e.message}`));
127
+ process.exit(1);
128
+ return;
129
+ }
130
+ const splitList = (s) => s?.split(',').map((x) => x.trim()).filter(Boolean);
131
+ const plan = planArms({
132
+ width: Number(options.width ?? '1'),
133
+ baseModel: options.model,
134
+ armModels: splitList(options.armModels),
135
+ providers: splitList(options.providers),
136
+ strategy: options.strategy,
137
+ policy,
138
+ });
139
+ const width = plan.arms.length;
140
+ if (width > 1 || plan.notes.length) {
141
+ emit({ event: 'arm_plan', width, arms: plan.arms, notes: plan.notes });
142
+ for (const n of plan.notes)
143
+ log(`arm-plan: ${n}`);
144
+ if (width > 1)
145
+ log(`arm-plan: ${plan.arms.map(a => `a${a.arm}=${a.model ?? 'default'}${a.funded ? '' : ' (unfunded)'}`).join(' ')}`);
146
+ }
94
147
  // The loop branch anchors accepted candidate commits (so detached worktree commits survive).
95
148
  try {
96
149
  git(['branch', '-f', branch, baseRef]);
@@ -112,10 +165,108 @@ export async function autoResearchLoop(options) {
112
165
  let stale = 0;
113
166
  let stop = 'max-rounds';
114
167
  if (!json)
115
- console.log(`\n ${theme.colors.highlight('Auto-research loop')} repo=${repo} branch=${branch} base=${baseRef.slice(0, 8)} max=${maxRounds}\n`);
168
+ console.log(`\n ${theme.colors.highlight('Auto-research loop')} repo=${repo} branch=${branch} base=${baseRef.slice(0, 8)} width=${width} max=${maxRounds}\n`);
169
+ /** Run one arm: worktree → fixer → commit → experiment. Never throws. */
170
+ const runArm = async (assign, r, goal) => {
171
+ const out = { arm: assign.arm, model: assign.model, strategy: assign.strategy };
172
+ const candDir = addWorktree(baseRef);
173
+ out.candDir = candDir;
174
+ // 3. Mutate (fixer). Single-arm keeps today's interactive stdio; parallel arms are quiet.
175
+ const fixerStdio = json || width > 1 ? 'ignore' : 'inherit';
176
+ emit({ event: 'fix', round: r, arm: assign.arm, model: assign.model, fixer: options.fixerCmd ? 'command' : 'llm' });
177
+ if (options.fixerCmd) {
178
+ const cmd = options.fixerCmd.replace(/\{prompt\}/g, shQuote(goal));
179
+ const env = {
180
+ ...process.env,
181
+ CORTEX_ARM_INDEX: String(assign.arm),
182
+ ...(assign.model ? { CORTEX_ARM_MODEL: assign.model } : {}),
183
+ ...(assign.strategy ? { CORTEX_ARM_STRATEGY: assign.strategy } : {}),
184
+ };
185
+ const f = width > 1
186
+ ? await spawnAsync('sh', ['-c', cmd], { cwd: candDir, env, stdio: fixerStdio })
187
+ : { status: sh(cmd, candDir).status, stdout: '', stderr: '' };
188
+ if (f.status !== 0) {
189
+ out.skipped = 'fixer-failed';
190
+ out.exitCode = f.status;
191
+ return out;
192
+ }
193
+ }
194
+ else {
195
+ const fixArgs = [self, 'autoresearch', 'fix', '--cwd', candDir, '--prompt', goal, '--json'];
196
+ if (assign.model)
197
+ fixArgs.push('--model', assign.model);
198
+ const f = await spawnAsync('node', fixArgs, { stdio: fixerStdio });
199
+ if (f.status !== 0) {
200
+ out.skipped = 'fixer-failed';
201
+ out.exitCode = f.status;
202
+ return out;
203
+ }
204
+ }
205
+ // 4. Commit candidate (no change → skip this arm).
206
+ git(['add', '-A'], candDir);
207
+ const dirty = spawnSync('git', ['-C', candDir, 'diff', '--cached', '--quiet']).status !== 0;
208
+ if (!dirty) {
209
+ out.skipped = 'no-change';
210
+ return out;
211
+ }
212
+ git(['commit', '-q', '-m', `autoresearch loop r${r}${width > 1 ? `a${assign.arm}` : ''}: ${goal.slice(0, 60)}`], candDir);
213
+ out.candRef = git(['rev-parse', '--short', 'HEAD'], candDir);
214
+ // 5. Experiment base vs candidate (subprocess → JSON verdict). FWER-adjusted with the
215
+ // real family width so N parallel arms don't inflate the false-keep rate.
216
+ const tag = width > 1 ? `loop-r${r}a${assign.arm}` : `loop-r${r}`;
217
+ const expArgs = ['autoresearch', 'experiment',
218
+ '--experiment-tag', tag,
219
+ '--base-dir', baseDir, '--candidate-dir', candDir,
220
+ '--base-ref', git(['rev-parse', '--short', 'HEAD'], baseDir), '--candidate-ref', out.candRef,
221
+ '--task-set', resolveTaskSet(options.taskSet, repo), '--no-build',
222
+ '--n-family', String(width),
223
+ '--cortex-dir', store, '--runs', options.runs ?? '3', '--json'];
224
+ if (options.holdoutSet)
225
+ expArgs.push('--holdout-set', resolveTaskSet(options.holdoutSet, repo));
226
+ if (options.model)
227
+ expArgs.push('--model', options.model);
228
+ if (options.temperature)
229
+ expArgs.push('--temperature', options.temperature);
230
+ if (assign.strategy)
231
+ expArgs.push('--strategy', assign.strategy);
232
+ if (options.runCmd) {
233
+ expArgs.push('--run-cmd', options.runCmd, '--accept-exit', options.acceptExit ?? '0');
234
+ if (options.buildCmd)
235
+ expArgs.push('--build-cmd', options.buildCmd);
236
+ }
237
+ emit({ event: 'experiment', round: r, arm: assign.arm, model: assign.model, candidateRef: out.candRef });
238
+ const exp = await spawnAsync('node', [self, ...expArgs], { stdio: 'capture' });
239
+ try {
240
+ out.res = JSON.parse(exp.stdout);
241
+ }
242
+ catch {
243
+ // Capture WHY this arm produced no verdict (missing/invalid provider key,
244
+ // inference error, crash) so the driving model / fixer / PM is NOTIFIED —
245
+ // not just told "skipped". Surfaced in the round history + emitted event +
246
+ // the final result, so the driver can react (retry / reassign / report).
247
+ out.skipped = 'no-verdict';
248
+ out.reason = ((exp.stderr || '').trim().split('\n').filter(Boolean).slice(-3).join(' ')
249
+ || (exp.status != null ? `exit ${exp.status}` : 'no parseable verdict')).slice(0, 500);
250
+ out.exitCode = exp.status ?? null;
251
+ return out;
252
+ }
253
+ if (!out.res?.verdict) {
254
+ // Parseable JSON but no verdict (e.g. {"error": ...} from a bad task-set or a
255
+ // missing provider key) — surface the reason instead of silently rejecting.
256
+ out.skipped = 'no-verdict';
257
+ out.reason = String(out.res?.error ?? 'experiment output had no verdict').slice(0, 500);
258
+ out.exitCode = exp.status ?? null;
259
+ out.res = undefined;
260
+ return out;
261
+ }
262
+ const keep = out.res.verdict?.decision === 'keep';
263
+ out.gateAccepted = options.holdoutSet ? !!out.res.mergeEligible : keep;
264
+ emit({ event: 'gate', round: r, arm: assign.arm, model: assign.model, decision: out.res.verdict?.decision, effect: out.res.verdict?.effect, mergeEligible: !!out.res.mergeEligible, accepted: out.gateAccepted });
265
+ return out;
266
+ };
116
267
  try {
117
268
  for (let r = 1; r <= maxRounds; r++) {
118
- emit({ event: 'round_start', round: r });
269
+ emit({ event: 'round_start', round: r, width });
119
270
  // 1. Goal
120
271
  let goal = options.prompt;
121
272
  let defId;
@@ -129,93 +280,36 @@ export async function autoResearchLoop(options) {
129
280
  defId = d.id;
130
281
  backlog.markInProgress(d.id, `loop-r${r}`);
131
282
  }
132
- // 2. Candidate worktree at the current base.
133
- const candDir = addWorktree(baseRef);
134
- // 3. Mutate (fixer).
135
- log(`r${r}: fixing ${goal.slice(0, 80)}`);
136
- emit({ event: 'fix', round: r, fixer: options.fixerCmd ? 'command' : 'llm' });
137
- if (options.fixerCmd) {
138
- const cmd = options.fixerCmd.replace(/\{prompt\}/g, shQuote(goal));
139
- const f = sh(cmd, candDir);
140
- if (f.status !== 0) {
141
- log(`r${r}: fixer-cmd failed (exit ${f.status}) → skip`);
142
- emit({ event: 'round_done', round: r, merged: false, skipped: 'fixer-failed' });
143
- removeWorktree(candDir);
144
- stale++;
145
- if (stale >= maxStale) {
146
- stop = 'max-stale';
147
- break;
148
- }
149
- continue;
150
- }
283
+ // 2-5. Fan out the arms (width 1 = the classic single-candidate round).
284
+ log(`r${r}: fixing${width > 1 ? ` ×${width} arms` : ''} → ${goal.slice(0, 80)}`);
285
+ const results = await Promise.all(plan.arms.map((a) => runArm(a, r, goal)));
286
+ for (const a of results.filter((x) => x.skipped)) {
287
+ log(`r${r}${width > 1 ? ` a${a.arm}` : ''}: ${a.skipped}${a.reason ? ` (${a.reason})` : ''} → skip`);
151
288
  }
152
- else {
153
- const f = spawnSync('node', [self, 'autoresearch', 'fix', '--cwd', candDir, '--prompt', goal, '--json'], { stdio: json ? 'ignore' : 'inherit' });
154
- if (f.status !== 0) {
155
- log(`r${r}: fixer failed → skip`);
156
- emit({ event: 'round_done', round: r, merged: false, skipped: 'fixer-failed' });
157
- removeWorktree(candDir);
158
- stale++;
159
- if (stale >= maxStale) {
160
- stop = 'max-stale';
161
- break;
162
- }
163
- continue;
289
+ // 5a. Choose the winner among gate-accepted arms (highest effect; ties → lowest arm).
290
+ const verdictArms = results.filter((a) => a.res);
291
+ const acceptedArms = verdictArms
292
+ .filter((a) => a.gateAccepted)
293
+ .sort((x, y) => (y.res.verdict?.effect ?? -Infinity) - (x.res.verdict?.effect ?? -Infinity) || x.arm - y.arm);
294
+ // Round-level skip handling (compat: width 1 keeps today's per-reason round_done events).
295
+ if (!verdictArms.length) {
296
+ const first = results[0];
297
+ const failedNoVerdict = results.filter((a) => a.skipped === 'no-verdict');
298
+ if (failedNoVerdict.length) {
299
+ rounds.push({
300
+ round: r, candRef: failedNoVerdict[0].candRef, failed: true, accepted: false,
301
+ reason: failedNoVerdict[0].reason, exitCode: failedNoVerdict[0].exitCode ?? null,
302
+ ...(width > 1 ? { arms: results.map(armHistory) } : {}),
303
+ });
304
+ emit({ event: 'round_done', round: r, merged: false, skipped: 'no-verdict', reason: failedNoVerdict[0].reason, exitCode: failedNoVerdict[0].exitCode ?? null });
164
305
  }
165
- }
166
- // 4. Commit candidate (no change skip the round).
167
- git(['add', '-A'], candDir);
168
- const dirty = spawnSync('git', ['-C', candDir, 'diff', '--cached', '--quiet']).status !== 0;
169
- if (!dirty) {
170
- log(`r${r}: no change → skip`);
171
- emit({ event: 'round_done', round: r, merged: false, skipped: 'no-change' });
172
- removeWorktree(candDir);
173
- stale++;
174
- if (stale >= maxStale) {
175
- stop = 'max-stale';
176
- break;
306
+ else {
307
+ emit({ event: 'round_done', round: r, merged: false, skipped: first.skipped });
308
+ }
309
+ for (const a of results) {
310
+ if (a.candDir)
311
+ removeWorktree(a.candDir);
177
312
  }
178
- continue;
179
- }
180
- git(['commit', '-q', '-m', `autoresearch loop r${r}: ${goal.slice(0, 60)}`], candDir);
181
- const candRef = git(['rev-parse', '--short', 'HEAD'], candDir);
182
- // 5. Experiment base vs candidate (subprocess → JSON verdict).
183
- const expArgs = ['autoresearch', 'experiment',
184
- '--experiment-tag', `loop-r${r}`,
185
- '--base-dir', baseDir, '--candidate-dir', candDir,
186
- '--base-ref', git(['rev-parse', '--short', 'HEAD'], baseDir), '--candidate-ref', candRef,
187
- '--task-set', resolveTaskSet(options.taskSet, repo), '--no-build',
188
- '--cortex-dir', store, '--runs', options.runs ?? '3', '--json'];
189
- if (options.holdoutSet)
190
- expArgs.push('--holdout-set', resolveTaskSet(options.holdoutSet, repo));
191
- if (options.model)
192
- expArgs.push('--model', options.model);
193
- if (options.temperature)
194
- expArgs.push('--temperature', options.temperature);
195
- if (options.strategy)
196
- expArgs.push('--strategy', options.strategy);
197
- if (options.runCmd) {
198
- expArgs.push('--run-cmd', options.runCmd, '--accept-exit', options.acceptExit ?? '0');
199
- if (options.buildCmd)
200
- expArgs.push('--build-cmd', options.buildCmd);
201
- }
202
- emit({ event: 'experiment', round: r, candidateRef: candRef });
203
- const exp = spawnSync('node', [self, ...expArgs], { encoding: 'utf8' });
204
- let res;
205
- try {
206
- res = JSON.parse(exp.stdout);
207
- }
208
- catch {
209
- // Capture WHY this arm produced no verdict (missing/invalid provider key,
210
- // inference error, crash) so the driving model / fixer / PM is NOTIFIED —
211
- // not just told "skipped". Surfaced in the round history + emitted event +
212
- // the final result, so the driver can react (retry / reassign / report).
213
- const reason = ((exp.stderr || '').trim().split('\n').filter(Boolean).slice(-3).join(' ')
214
- || (exp.status != null ? `exit ${exp.status}` : 'no parseable verdict')).slice(0, 500);
215
- log(`r${r}: experiment produced no verdict → skip (${reason})`);
216
- rounds.push({ round: r, candRef, failed: true, accepted: false, reason, exitCode: exp.status ?? null });
217
- emit({ event: 'round_done', round: r, merged: false, skipped: 'no-verdict', reason, exitCode: exp.status ?? null });
218
- removeWorktree(candDir);
219
313
  stale++;
220
314
  if (stale >= maxStale) {
221
315
  stop = 'max-stale';
@@ -223,72 +317,92 @@ export async function autoResearchLoop(options) {
223
317
  }
224
318
  continue;
225
319
  }
226
- const keep = res.verdict?.decision === 'keep';
227
- const gateAccept = options.holdoutSet ? !!res.mergeEligible : keep;
228
- emit({ event: 'gate', round: r, decision: res.verdict?.decision, effect: res.verdict?.effect, mergeEligible: !!res.mergeEligible, accepted: gateAccept });
229
- // 5b. Optional qualitative judge gate (opt-in, default off). Runs ONLY on a
230
- // candidate the STATISTICAL gate already accepted the judge can SUBTRACT
231
- // acceptance, never resurrect a rejected candidate. Final accept =
232
- // gate-accept ∧ judge-approve. Fail-closed: a judge that errors or returns
233
- // no parseable verdict blocks the merge (approve defaults to false).
234
- let accept = gateAccept;
235
- if (options.requireJudge && accept) {
236
- const baseShort = git(['rev-parse', '--short', 'HEAD'], baseDir);
237
- const jArgs = ['autoresearch', 'judge',
238
- '--cwd', candDir, '--base-ref', baseShort, '--candidate-ref', candRef, '--json'];
239
- if (options.judgeRubricFile)
240
- jArgs.push('--rubric-file', options.judgeRubricFile);
241
- else
242
- jArgs.push('--rubric', options.judgeRubric ?? DEFAULT_JUDGE_RUBRIC);
243
- const jModel = options.judgeModel ?? options.model;
244
- if (jModel)
245
- jArgs.push('--model', jModel);
246
- if (goal)
247
- jArgs.push('--mission', goal.slice(0, 500));
248
- emit({ event: 'judge_start', round: r, candidateRef: candRef });
249
- const j = spawnSync('node', [self, ...jArgs], { encoding: 'utf8' });
250
- let jv = null;
251
- try {
252
- jv = JSON.parse(j.stdout);
253
- }
254
- catch {
255
- jv = null;
320
+ // 5b. Optional qualitative judge gate (opt-in, default off). Runs ONLY on
321
+ // candidates the STATISTICAL gate already accepted — the judge can SUBTRACT
322
+ // acceptance, never resurrect a rejected candidate. With multiple accepted
323
+ // arms the judge reviews them in effect order until one is APPROVED.
324
+ // Fail-closed: a judge that errors or returns no parseable verdict blocks
325
+ // that candidate (approve defaults to false).
326
+ let winner;
327
+ if (options.requireJudge) {
328
+ for (const cand of acceptedArms) {
329
+ const baseShort = git(['rev-parse', '--short', 'HEAD'], baseDir);
330
+ const jArgs = ['autoresearch', 'judge',
331
+ '--cwd', cand.candDir, '--base-ref', baseShort, '--candidate-ref', cand.candRef, '--json'];
332
+ if (options.judgeRubricFile)
333
+ jArgs.push('--rubric-file', options.judgeRubricFile);
334
+ else
335
+ jArgs.push('--rubric', options.judgeRubric ?? DEFAULT_JUDGE_RUBRIC);
336
+ const jModel = options.judgeModel ?? options.model;
337
+ if (jModel)
338
+ jArgs.push('--model', jModel);
339
+ if (goal)
340
+ jArgs.push('--mission', goal.slice(0, 500));
341
+ emit({ event: 'judge_start', round: r, arm: cand.arm, candidateRef: cand.candRef });
342
+ const j = await spawnAsync('node', [self, ...jArgs], { stdio: 'capture' });
343
+ let jv = null;
344
+ try {
345
+ jv = JSON.parse(j.stdout);
346
+ }
347
+ catch {
348
+ jv = null;
349
+ }
350
+ const approve = !!jv?.approve;
351
+ emit({ event: 'judge', round: r, arm: cand.arm, approve, score: jv?.score, confidence: jv?.confidence });
352
+ log(`r${r}${width > 1 ? ` a${cand.arm}` : ''}: judge ${approve ? theme.colors.success('APPROVE') : theme.colors.error('reject')}${jv?.score != null ? ` (score ${jv.score})` : ''}`);
353
+ if (approve) {
354
+ winner = cand;
355
+ break;
356
+ }
256
357
  }
257
- const approve = !!jv?.approve;
258
- if (!approve)
259
- accept = false;
260
- emit({ event: 'judge', round: r, approve, score: jv?.score, confidence: jv?.confidence });
261
- log(`r${r}: judge ${approve ? theme.colors.success('APPROVE') : theme.colors.error('reject')}${jv?.score != null ? ` (score ${jv.score})` : ''}`);
262
358
  }
359
+ else {
360
+ winner = acceptedArms[0];
361
+ }
362
+ const accept = !!winner;
263
363
  const candScore = (() => {
264
- const s = res.benchSummaries?.candidate?.holdout ?? res.benchSummaries?.candidate?.train;
364
+ const src = winner ?? acceptedArms[0] ?? verdictArms[0];
365
+ const s = src?.res?.benchSummaries?.candidate?.holdout ?? src?.res?.benchSummaries?.candidate?.train;
265
366
  const t = s?.tasks?.find((x) => x.taskId === successMetric?.taskId);
266
367
  return t?.meanScore;
267
368
  })();
268
- rounds.push({ round: r, candRef, decision: res.verdict?.decision, effect: res.verdict?.effect, mergeEligible: res.mergeEligible, accepted: accept, candScore });
269
- log(`r${r}: ${res.verdict?.decision?.toUpperCase()} effect ${res.verdict?.effect} ${accept ? theme.colors.success('ACCEPT') : theme.colors.error('reject')}${options.holdoutSet ? '' : ' (train-only, UNVERIFIED — pass --holdout-set)'}`);
369
+ const lead = winner ?? acceptedArms[0] ?? verdictArms[0];
370
+ rounds.push({
371
+ round: r, candRef: lead.candRef, decision: lead.res?.verdict?.decision, effect: lead.res?.verdict?.effect,
372
+ mergeEligible: lead.res?.mergeEligible, accepted: accept, candScore,
373
+ ...(width > 1 ? { winnerArm: winner?.arm, arms: results.map(armHistory) } : {}),
374
+ });
375
+ log(`r${r}: ${lead.res?.verdict?.decision?.toUpperCase()} effect ${lead.res?.verdict?.effect} ${accept ? theme.colors.success('ACCEPT') : theme.colors.error('reject')}${options.holdoutSet ? '' : ' (train-only, UNVERIFIED — pass --holdout-set)'}${width > 1 && winner ? ` (arm ${winner.arm}${winner.model ? ` · ${winner.model}` : ''})` : ''}`);
270
376
  // 6. Advance or discard.
271
- if (accept) {
272
- git(['branch', '-f', branch, candRef]); // anchor the accepted commit
377
+ if (accept && winner) {
378
+ git(['branch', '-f', branch, winner.candRef]); // anchor the accepted commit
273
379
  removeWorktree(baseDir); // old base
274
- baseDir = candDir;
275
- baseRef = candRef;
380
+ for (const a of results) {
381
+ if (a !== winner && a.candDir && !options.keepWorktrees)
382
+ removeWorktree(a.candDir);
383
+ }
384
+ baseDir = winner.candDir;
385
+ baseRef = winner.candRef;
276
386
  stale = 0;
277
387
  if (defId) {
278
388
  if (options.holdoutSet)
279
389
  backlog.markVerified(defId, `loop-r${r}`);
280
390
  else
281
- backlog.markFixed(defId, candRef);
391
+ backlog.markFixed(defId, winner.candRef);
282
392
  }
283
- emit({ event: 'round_done', round: r, merged: true, ref: candRef });
393
+ emit({ event: 'round_done', round: r, merged: true, ref: winner.candRef, ...(width > 1 ? { arm: winner.arm, model: winner.model } : {}) });
284
394
  if (successMetric && candScore != null && candScore >= successMetric.threshold) {
285
395
  stop = 'success';
286
396
  break;
287
397
  }
288
398
  }
289
399
  else {
290
- if (!options.keepWorktrees)
291
- removeWorktree(candDir);
400
+ if (!options.keepWorktrees) {
401
+ for (const a of results) {
402
+ if (a.candDir)
403
+ removeWorktree(a.candDir);
404
+ }
405
+ }
292
406
  emit({ event: 'round_done', round: r, merged: false });
293
407
  stale++;
294
408
  if (stale >= maxStale) {
@@ -309,7 +423,7 @@ export async function autoResearchLoop(options) {
309
423
  }
310
424
  emit({ event: 'stop', reason: stop });
311
425
  const failedArms = rounds.filter(r => r.failed).map(r => ({ round: r.round, reason: r.reason, exitCode: r.exitCode }));
312
- const out = { repo, branch, finalRef: baseRef, rounds: rounds.length, merges: rounds.filter(r => r.accepted).length, failures: failedArms.length, failedArms, stop, history: rounds };
426
+ const out = { repo, branch, finalRef: baseRef, rounds: rounds.length, merges: rounds.filter(r => r.accepted).length, failures: failedArms.length, failedArms, stop, ...(width > 1 ? { width } : {}), history: rounds };
313
427
  if (json) {
314
428
  console.log(JSON.stringify(out, null, 2));
315
429
  return;
@@ -319,4 +433,16 @@ export async function autoResearchLoop(options) {
319
433
  console.log(theme.colors.muted(` Result on branch ${branch} → ${baseRef.slice(0, 8)}. Merge it when satisfied: git -C ${repo} merge ${branch}`));
320
434
  console.log();
321
435
  }
436
+ /** Compact per-arm history entry for the round record / final JSON. */
437
+ function armHistory(a) {
438
+ return {
439
+ arm: a.arm,
440
+ ...(a.model ? { model: a.model } : {}),
441
+ ...(a.candRef ? { candRef: a.candRef } : {}),
442
+ ...(a.skipped ? { skipped: a.skipped } : {}),
443
+ ...(a.reason ? { reason: a.reason } : {}),
444
+ ...(a.res ? { decision: a.res.verdict?.decision, effect: a.res.verdict?.effect, mergeEligible: a.res.mergeEligible } : {}),
445
+ ...(a.gateAccepted != null ? { gateAccepted: a.gateAccepted } : {}),
446
+ };
447
+ }
322
448
  //# sourceMappingURL=loop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/commands/autoresearch/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/commands/autoresearch/loop.ts"],"names":[],"mappings":"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"}