@gaunt-sloth/batch 2.0.0-beta.1 → 2.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
1
  import { checkHardline } from '@gaunt-sloth/core/core/shell/hardline.js';
2
2
  import { APPROVAL_RUNGS, isNegotiatingRung, isRatedRung, resolveApprovals, } from '@gaunt-sloth/core/config/shell-policy.js';
3
+ import { isAlignmentFailClosed, runAlignmentCheck, } from '@gaunt-sloth/core/core/shell/alignment.js';
3
4
  import { ShellNegotiationState } from '@gaunt-sloth/core/core/shell/negotiation.js';
4
- import { FAIL_CLOSED_VERDICT, RATER_OUTCOMES, mapVerdictToAction, preflightFloorFinding, rateShellCommand, } from '@gaunt-sloth/core/core/shell/rater.js';
5
+ import { FAIL_CLOSED_VERDICT, RATER_OUTCOMES, effectivePreflightFloorFinding, isFailClosed, isNegotiableCall, mapVerdictToAction, preflightFloorFinding, rateShellCommand, } from '@gaunt-sloth/core/core/shell/rater.js';
5
6
  import { resolveRaterModel } from '@gaunt-sloth/core/core/shell/raterModel.js';
6
7
  import { displayWarning } from '@gaunt-sloth/core/utils/consoleUtils.js';
7
8
  import { env } from '@gaunt-sloth/core/utils/systemUtils.js';
@@ -24,7 +25,8 @@ import { FORCED_BY_ASSERTIONS, HARDLINE_REFUSAL_MARKER, mechanismNeedsPermissive
24
25
  export { HARDLINE_REFUSAL_MARKER };
25
26
  /**
26
27
  * The marker a rationale carries when the decision cost NO rating call, followed by which of the
27
- * two reasons applied (the case declared `model_free`, or the rung is not rated).
28
+ * **three** reasons applied: the §8 hardline floor refused the command before any rating
29
+ * ({@link HARDLINE_NO_RATING_REASON}), the case declared `model_free`, or the rung is not rated.
28
30
  *
29
31
  * It exists because the honest alternative was worse. `mapVerdictToAction` treats a missing verdict
30
32
  * as core's fail-closed one, whose reason says the rater "could not evaluate" the command — true
@@ -32,8 +34,19 @@ export { HARDLINE_REFUSAL_MARKER };
32
34
  * written into every model-free case's per-case JSON, and a reader diagnosing a corpus would have
33
35
  * concluded the rater was broken. So the placeholder reason is dropped on this path and replaced by
34
36
  * this: what actually happened.
37
+ *
38
+ * **The reasons are not mutually exclusive, and the floor outranks the other two** — it is the one
39
+ * production acts on, so a `model_free` case whose command the floor also refuses reports the floor.
40
+ * Its `model_free` declaration is then redundant rather than wrong: both say zero calls.
35
41
  */
36
42
  export const NO_RATING_CALL_MARKER = 'no rating call';
43
+ /**
44
+ * The {@link NO_RATING_CALL_MARKER} reason for a command §8's floor refuses outright.
45
+ *
46
+ * Named rather than spelled at the call site so a suite (and the unit suite) can assert the
47
+ * short-circuit by the reason it reports, without pinning prose in two places.
48
+ */
49
+ export const HARDLINE_NO_RATING_REASON = 'refused at the floor before rating';
37
50
  /**
38
51
  * BATCH-34 — the marker a rationale carries when the round's `reject` became an **escalation because
39
52
  * a §5.3 bound was spent**, not because the rating said so.
@@ -218,16 +231,27 @@ function resolveRung(target, config) {
218
231
  * floor marker when the floor refuses this command, which preflight forced the decision when one
219
232
  * did, and the reason behind it.
220
233
  *
221
- * All of it is present on BOTH paths. The floor check is deterministic and free, so it is run
222
- * whether or not the case is model-free — a rated case whose command the floor also refuses says so
223
- * too, which is the honest reading of production (the gate rates it, and the shell refuses it
224
- * anyway).
234
+ * All of it is present on every path. The floor check is deterministic and free, so it is run
235
+ * whether or not the case is model-free.
236
+ *
237
+ * **What production does with a floor match, stated because a stale reading of it is what this
238
+ * function's rationale used to assert:** the approvals gate consults `checkHardline` ITSELF, one arm
239
+ * below the `bypass` early return, and refuses there — before any rating call and before any §5
240
+ * round. It does not rate the command and let the shell refuse it afterwards. The exec-time check in
241
+ * `GthDevToolkit.executeCommand` still stands behind that and is what makes the refusal a guarantee,
242
+ * but it is the second line of the two, not the only one.
243
+ *
244
+ * So a rated case whose command the floor refuses does not exist, and cannot: the two rated rungs
245
+ * are refused at the floor arm before reaching a rating ({@link classifyOneRound}), and `bypass` —
246
+ * the one rung that arm does not cover — is not a rated rung either. The marker therefore never
247
+ * accompanies a rater verdict. At `bypass` it accompanies an `approve`, which is the honest report:
248
+ * the gate approved before the arm and only the exec-time check refuses.
225
249
  *
226
250
  * **The mechanism markers are what make a deterministic case gradeable at all**, because the ACTION
227
251
  * is not: with no verdict, `mapVerdictToAction` returns the same action for every command at a rated
228
252
  * rung. See {@link ../evalTypes.js FORCED_BY_MECHANISMS}.
229
253
  */
230
- function buildRationale(command, floorDescription, decision, noRatingReason, ratingIn, boundSpent) {
254
+ function buildRationale(command, floorDescription, decision, noRatingReason, ratingIn, boundSpent, alignment) {
231
255
  const parts = [];
232
256
  if (floorDescription !== undefined) {
233
257
  parts.push(`${HARDLINE_REFUSAL_MARKER} (${floorDescription})`);
@@ -258,6 +282,15 @@ function buildRationale(command, floorDescription, decision, noRatingReason, rat
258
282
  else if (reason !== undefined) {
259
283
  parts.push(reason);
260
284
  }
285
+ // [[EXT-127]] — **what the ALIGNMENT CHECKER said, when one was consulted.** It belongs in the
286
+ // rationale for the same reason the rater's own sentence does: after the split the gate speaks
287
+ // with two voices, and a report carrying only the classifier's would attribute an action the
288
+ // checker took to a component that did not take it. Named, so a reader can tell the two apart.
289
+ if (alignment !== undefined) {
290
+ parts.push(alignment.reason.trim()
291
+ ? `alignment check (${alignment.kind}): ${alignment.reason.trim()}`
292
+ : `alignment check (${alignment.kind})`);
293
+ }
261
294
  // BATCH-34 — last, because it is the only part that describes the ACTION rather than the rating:
262
295
  // the rating said `destructive` and the negotiation is what turned it into a human's decision.
263
296
  if (boundSpent) {
@@ -270,8 +303,9 @@ function buildRationale(command, floorDescription, decision, noRatingReason, rat
270
303
  * PRODUCTION runner would have taken.
271
304
  *
272
305
  * It mirrors `GthAgentRunner`'s four arms and adds nothing: an approved call is progress (§5.3 —
273
- * clears the transcript *and* the consecutive counter), a halt reaches a human, and a `reject` is
274
- * recorded before either bound is tested, so the attempt being ruled on is itself on the transcript.
306
+ * resets the consecutive counter and, since [[EXT-108]], leaves the rounds standing, so the round
307
+ * after it is rated as a round 2), a halt reaches a human, and a `reject` is recorded before either
308
+ * bound is tested, so the attempt being ruled on is itself on the transcript.
275
309
  * The remaining arm carries the one assumption in here — that an action which is neither approved,
276
310
  * halted nor rejected has already reached a person — so it ends the negotiation and hands the
277
311
  * action back untouched.
@@ -291,7 +325,7 @@ function buildRationale(command, floorDescription, decision, noRatingReason, rat
291
325
  *
292
326
  * @returns the action to report, and whether a spent bound is what produced it (for the rationale).
293
327
  */
294
- function advanceNegotiation(negotiation, command, justification, decision) {
328
+ function advanceNegotiation(negotiation, command, justification, decision, alignment) {
295
329
  if (decision.action === 'approve') {
296
330
  negotiation.noteProgress();
297
331
  return { action: decision.action, boundSpent: false };
@@ -309,6 +343,8 @@ function advanceNegotiation(negotiation, command, justification, decision) {
309
343
  // just decided from rather than a second guess at it.
310
344
  outcome: decision.verdict?.outcome ?? FAIL_CLOSED_VERDICT.outcome,
311
345
  reason: decision.verdict?.reason ?? '',
346
+ // [[EXT-127]] — carried so the NEXT round's check replays this one as its own turn.
347
+ ...(alignment ? { alignment } : {}),
312
348
  });
313
349
  // A served round is the whole of it: the refusal goes back to the agent and the argument
314
350
  // continues. Anything else means the bound is spent and this round goes out to a person, exactly
@@ -329,27 +365,44 @@ function advanceNegotiation(negotiation, command, justification, decision) {
329
365
  /**
330
366
  * Classify ONE round: one command, rated (or not) and mapped to an action.
331
367
  *
332
- * **When no model is rung.** Two conditions short-circuit the rating call, and both report
368
+ * **When no model is rung.** THREE conditions short-circuit the rating call, and all report
333
369
  * `modelCalls: 0`:
370
+ * - **[[BATCH-37]] §8's hardline floor refuses the command, at every rung but `bypass`** — the
371
+ * runner's own pre-rating arm, mirrored here so the target does not measure a rating production
372
+ * never buys. It is the only one of the three that also fixes the ACTION (`reject`, the runner's
373
+ * word) and the only one that skips {@link advanceNegotiation}: the refusal opens no §5 round, so
374
+ * it spends neither bound. See the arm's own comment below;
334
375
  * - the case declares `model_free` — the suite asserting that this command is decided by the
335
376
  * deterministic layer alone, which is what makes 17-odd cases of an approvals corpus free to run
336
377
  * and is the EXT-55 regression gate;
337
378
  * - the rung is not a RATED rung — `manual`, `write` and `bypass` consult no model in production
338
379
  * either, so ringing one here would bill for a call the gate would never make.
339
380
  *
340
- * **A model-free decision reports NO label.** The action is real `mapVerdictToAction` produces it
341
- * from the rung and its own preflights, exactly as production would before the rater is consulted
342
- * but the LABEL is the rater's judgement, and on this path nobody asked. Reporting core's
343
- * fail-closed placeholder as though it were a verdict would write a judgement nobody rendered into
344
- * the confusion matrix and count it as a MISS against the corpus's expected label. So the label is
345
- * omitted.
381
+ * The first outranks the other two where they overlap, because it is the one production acts on.
382
+ * Anything that enumerates these a docblock, a marker's reason list, a suite's guidance has to
383
+ * grow with them; a corrected statement in one place above a stale list in another is the same
384
+ * defect one screen down.
385
+ *
386
+ * **A model-free decision reports NO label — and no rating either.** The action is real —
387
+ * `mapVerdictToAction` produces it from the rung and its own preflights, exactly as production
388
+ * would before the rater is consulted — but the LABEL is the rater's judgement, and on this path
389
+ * nobody asked. Reporting core's fail-closed placeholder as though it were a verdict would write a
390
+ * judgement nobody rendered into the confusion matrix and count it as a MISS against the corpus's
391
+ * expected label. So both {@link ../evalTypes.js ClassifyOutcome.label} and its BATCH-26 sibling
392
+ * {@link ../evalTypes.js ClassifyOutcome.modelLabel} are omitted, on the one condition.
346
393
  *
347
- * Omitting it is the better of the two, not a clean escape: the cell is still scored, so it still
394
+ * Omitting them is the better of the two, not a clean escape: the cell is still scored, so it still
348
395
  * enters a label metric's denominator, where two absent values compare EQUAL and score as a free
349
396
  * hit. A rater suite's label metrics must narrow their own denominator —
350
397
  * `over: ["expected.label != none"]` — which is what `computeMetric`'s absent-field warning says
351
398
  * when it fires. See {@link ../evalTypes.js ClassifyOutcome.label}.
352
399
  *
400
+ * **BATCH-26 — on a RATED round the two are both reported, and on some commands they differ.** The
401
+ * label is read off the verdict the gate returned, so a preflight that raised a permissive rating
402
+ * has already moved it; `modelLabel` is the verdict that went in. Neither is a second opinion —
403
+ * both are relayed — and the difference is what lets a rater-accuracy metric include the commands a
404
+ * preflight floors instead of scoring the floor against the corpus and calling it the rater.
405
+ *
353
406
  * **And a model-free case does not grade on its `action` either.** At a rated rung the action is
354
407
  * the same for every command with no verdict, so it discriminates nothing; what discriminates is
355
408
  * the mechanism, in the rationale ({@link buildRationale}).
@@ -360,24 +413,33 @@ function advanceNegotiation(negotiation, command, justification, decision) {
360
413
  * flatter the case — when the claimed preflight really fires the action is the same either way, and
361
414
  * when it does not, the marker and the action go red together.
362
415
  *
363
- * **BATCH-34 — the negotiation state advances on EVERY path, including the model-free one.** It is
364
- * driven by the ACTION the gate returned, never by how the round was decided, for the same reason
365
- * the rest of this file is: what a `reject` costs the negotiation is a property of the decision, and
366
- * a target that spent the bound only on rounds it happened to ring a model for would report a
367
- * different exchange than production for the same corpus. At a rung that rates nothing there is
368
- * nothing to spend either way — no round is ever rejected there.
416
+ * **BATCH-34 — the negotiation state advances on every path that reaches a DECISION, the model-free
417
+ * one included.** It is driven by the ACTION the gate returned, never by how the round was decided,
418
+ * for the same reason the rest of this file is: what a `reject` costs the negotiation is a property
419
+ * of the decision, and a target that spent the bound only on rounds it happened to ring a model for
420
+ * would report a different exchange than production for the same corpus. At a rung that rates
421
+ * nothing there is nothing to spend either way — no round is ever rejected there.
422
+ *
423
+ * **[[BATCH-37]] — the floor arm is the one exception, and it is production's exception, not ours.**
424
+ * A round §8 refuses returns above without advancing the state at all, because the runner's floor
425
+ * arm does the same: the refusal opens no round, and counting it would walk an unappealable refusal
426
+ * toward a human escalation §4.2 says it must not reach. So a floored round costs a case neither of
427
+ * its §5.3 bounds, and the rounds around it are rated with the exchange they would have had if it
428
+ * had not been attempted.
369
429
  *
370
430
  * **At a rung that DOES rate, `model_free` spends the bound for real, and that is worth knowing
371
431
  * before authoring one.** With no verdict, `mapVerdictToAction` reads core's fail-closed verdict,
372
432
  * whose outcome is `destructive`; at a negotiating rung that is a `reject`, so every model-free round
373
433
  * of such a case is recorded as one and the third ends at a human carrying
374
- * {@link NEGOTIATION_BOUND_MARKER} — a full §5.3 negotiation for zero model calls. The rounds are
434
+ * {@link NEGOTIATION_BOUND_MARKER} — a full §5.3 negotiation for zero model calls. (A model-free
435
+ * round whose command §8 refuses is NOT one of those: it returns at the floor arm, spending
436
+ * nothing.) The rounds are
375
437
  * not fabrications (this is production's own action for a rating nobody rendered) but they are
376
438
  * indistinguishable from one another, so an author reading only the action column sees an escalation
377
439
  * the corpus never argued for. `model_free` is CASE-level, so it costs a multi-round case all of its
378
440
  * ratings or none: a case that wants one deterministic round beside rated ones cannot say so.
379
441
  */
380
- async function classifyOneRound(round, roundIndex, request, rung, negotiation, config, model, options) {
442
+ async function classifyOneRound(round, roundIndex, request, rung, negotiation, config, model, checkerModel, options) {
381
443
  const trimmed = round.command.trim();
382
444
  if (trimmed.length === 0) {
383
445
  // Excluded from every metric denominator rather than counted as a miss: an empty round is a
@@ -388,17 +450,64 @@ async function classifyOneRound(round, roundIndex, request, rung, negotiation, c
388
450
  error: `case "${request.caseId}": a rater case's prompt must be a command, not an empty string.`,
389
451
  };
390
452
  }
391
- // Free and deterministic, so it runs on both paths — see buildRationale.
453
+ // Free and deterministic, so it runs on every path — see buildRationale.
392
454
  const floor = checkHardline(trimmed);
393
455
  // BATCH-34 §5.1 — what the user said before this round enters the conversation's memory FIRST, so
394
456
  // this round's own context can carry it. Core owns the retention bound and the last-5 window; a
395
457
  // round declaring none adds none, which is how a single-round case keeps a byte-identical prompt.
458
+ //
459
+ // **This must stay ABOVE the floor arm below, and `raterTarget.spec.ts` pins that it does.**
460
+ // Production notes the user's words at a turn boundary, upstream of the approvals gate entirely,
461
+ // so a mandate given alongside a floor-matching command still has to reach the §5.1 window that
462
+ // LATER rounds are rated against. Hoisting the arm above this line reads like a harmless
463
+ // guard-clause tidy and silently drops that mandate from every later rating.
396
464
  negotiation.noteUserMessages(round.userMessages ?? []);
465
+ // BATCH-37 — **§8's floor refuses BEFORE any rating, exactly as `GthAgentRunner` does.**
466
+ //
467
+ // The runner consults `checkHardline` in the approvals gate itself, one arm below the `bypass`
468
+ // early return, and returns `reject` there: "without this line `auto` spends three rating calls
469
+ // and a human dialog arguing about a fork bomb that was never going to run". A target that rated
470
+ // such a command would be measuring a rating production never buys — the divergence this node
471
+ // exists to close.
472
+ //
473
+ // **The condition is the runner's, not a new one.** `bypass` is excluded because the runner
474
+ // approves a gated shell call and returns before this arm is reached, NOT because the floor stops
475
+ // applying there — the exec-time check in `GthDevToolkit.executeCommand` still refuses it, which
476
+ // is why the marker is still emitted below at `bypass`. Every other rung reaches the arm
477
+ // deliberately, the deterministic ones included: §4.2 is a statement about the COMMAND, not about
478
+ // who was going to be asked about it.
479
+ //
480
+ // **`advanceNegotiation` is deliberately NOT called**, and that is the half of this a rating count
481
+ // alone would miss. The runner's floor arm returns without touching either §5.3 bound: "this
482
+ // refusal opens no round, so counting it would walk an unappealable refusal toward the human
483
+ // escalation §4.2 says it must not reach". A target that short-circuited the rating but still
484
+ // spent the bound would replace one divergence with another in the same direction.
485
+ //
486
+ // **No label**, for the model-free path's reason: the label is the rater's judgement and on this
487
+ // path nobody was asked. The mechanism lands in the rationale, where a `forced_by: hardline-floor`
488
+ // case grades it.
489
+ if (floor !== null && rung !== 'bypass') {
490
+ return {
491
+ ok: true,
492
+ // The runner's own word for it — `{ type: 'reject' }` at stage `hardline-floor`. It is the
493
+ // only refusal in `RATER_ACTIONS`; that this `reject` opens no round, while a §5 `reject`
494
+ // does, is what the floor marker in the rationale says.
495
+ action: 'reject',
496
+ rationale: buildRationale(trimmed, floor.description, { action: 'reject', verdict: undefined }, HARDLINE_NO_RATING_REASON, undefined, false, undefined),
497
+ modelCalls: 0,
498
+ };
499
+ }
397
500
  // §5.2 — a rejection is addressed to the AGENT only at a negotiating rung, and saying so changes
398
501
  // the rating prompt. Read from the resolved rung rather than from whether a context exists: the
399
- // two are independent by construction (a cleared transcript is still a round of a negotiation),
502
+ // two are independent by construction (an empty transcript is still a round of a negotiation),
400
503
  // and a corpus rated without it would be measuring a prompt production never sends.
401
- const negotiable = isNegotiatingRung(rung);
504
+ //
505
+ // [[EXT-106]] §3 — which is also why it goes through core's `isNegotiableCall` and not through
506
+ // the rung alone: production withholds the same guidance from a command §4.6's preflight floors,
507
+ // because nothing the agent argues can move an outcome recomputed from the raw command every
508
+ // round. A corpus that kept the guidance on a floored command would be scoring a prompt against
509
+ // an instruction production no longer sends with it.
510
+ const negotiable = isNegotiableCall(rung, trimmed);
402
511
  // Gated on the rung exactly as production gates it, and handed over RAW. §5.1 withholds it from a
403
512
  // round-1 rating, and `contextFor` is the single implementation of that rule — while the
404
513
  // transcript records what the agent actually argued, whatever the round.
@@ -444,23 +553,94 @@ async function classifyOneRound(round, roundIndex, request, rung, negotiation, c
444
553
  // to every rating at `auto` including the first. A corpus rated without it was measuring a
445
554
  // prompt no session ever sends — so an `auto` suite's numbers may move here, toward the gate
446
555
  // it claims to describe. Nothing changes at the other rungs.
447
- negotiation: negotiable ? negotiation.contextFor(justification) : undefined,
448
556
  negotiable,
449
557
  });
450
558
  modelCalls = 1;
451
559
  }
452
560
  const decision = mapVerdictToAction(trimmed, verdict, { rung });
561
+ // [[EXT-127]] — **the alignment check, driven exactly where production drives it.** Reached only
562
+ // on a `destructive` decline at a negotiating rung, and only for the two arms the node grants it
563
+ // authority over: a plain `reject`, or an `escalate` that §4.6's open-world floor produced. Its
564
+ // decision then REPLACES the classifier's action, which is what makes a corpus before/after a
565
+ // measurement of the gate rather than of half of it.
566
+ //
567
+ // **The count is what a suite author reads, so the call is counted.** A check is a model call, and
568
+ // an `auto` suite whose `modelCalls` said 1 while spending 2 would understate the cost of the very
569
+ // feature it was measuring.
570
+ let alignment;
571
+ const alignmentReachable = !deterministicOnly &&
572
+ isNegotiatingRung(rung) &&
573
+ decision.verdict?.outcome === 'destructive' &&
574
+ (decision.action === 'reject' ||
575
+ (decision.action === 'escalate' &&
576
+ effectivePreflightFloorFinding(trimmed, { rung })?.kind === 'open-world'));
577
+ if (alignmentReachable) {
578
+ alignment = await runAlignmentCheck({
579
+ command: trimmed,
580
+ outcome: 'destructive',
581
+ reason: decision.verdict?.reason ?? '',
582
+ ...(round.justification ? { justification: round.justification } : {}),
583
+ }, config, {
584
+ model: checkerModel,
585
+ userMessages: negotiation.retainedUserMessages(),
586
+ priorRounds: negotiation.alignmentRounds(),
587
+ ...((options?.home ?? env?.HOME) ? { home: options?.home ?? env?.HOME } : {}),
588
+ ...(options?.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {}),
589
+ });
590
+ // A check that never happened changes nothing — the classifier's action stands, exactly as it
591
+ // does in production. See core's ALIGNMENT_FAIL_CLOSED.
592
+ //
593
+ // **And it is not COUNTED either.** `modelCalls` is what a suite author reads as the cost of a
594
+ // case and what a reporter divides by; a check the gate could not obtain contributed no label,
595
+ // no action and no judgement, so counting it would report a rating that nobody made. A check
596
+ // that DID happen is counted, because an `auto` suite spending two calls per declined command
597
+ // must not report one.
598
+ if (isAlignmentFailClosed(alignment)) {
599
+ alignment = undefined;
600
+ }
601
+ else {
602
+ modelCalls += 1;
603
+ }
604
+ }
605
+ if (alignment !== undefined) {
606
+ decision.action =
607
+ alignment.kind === 'approve'
608
+ ? 'approve'
609
+ : alignment.kind === 'suggest'
610
+ ? 'reject'
611
+ : 'escalate';
612
+ }
453
613
  // BATCH-34 — record the decision with §5's state and take the action production would take. This
454
614
  // is the only step between the mapping and the reported action; see `advanceNegotiation`.
455
- const negotiated = advanceNegotiation(negotiation, trimmed, justification, decision);
615
+ const negotiated = advanceNegotiation(negotiation, trimmed, justification, decision, alignment);
456
616
  return {
457
617
  ok: true,
458
618
  // Opaque both ways: whatever the gate decided, reported verbatim. Omitted on the model-free
459
619
  // path — the docblock above says why, and a stubbed rating does not change that: the outcome it
460
620
  // would report is OUR lever floored by a preflight, never a judgement anyone rendered.
461
- ...(deterministicOnly ? {} : { label: decision.verdict?.outcome }),
621
+ //
622
+ // BATCH-26 — and the RATING beside the decision, on the same condition and for the same reason.
623
+ // `label` is read off the verdict the gate returned, i.e. after a preflight may have raised it;
624
+ // `modelLabel` is the verdict that went IN, which is the rater's own answer and the only thing
625
+ // a rater-accuracy metric can honestly divide by on a floored command. Both are relayed, never
626
+ // compared: this file does not decide whether they differ, it reports both and lets the metric
627
+ // layer say so.
628
+ //
629
+ // **Except where the gate FAILED CLOSED, where there is no rating to report.** `label` still
630
+ // carries core's default — that IS the decision, and it is `destructive` whether a rater judged
631
+ // the command or the call timed out. `modelLabel` claims to be what the MODEL said, so
632
+ // reporting the default there would count a timeout as a rater judgement: EXT-66's finding, and
633
+ // EXT-62 measured a whole sweep column reading exactly that as rater coverage. Asked of core's
634
+ // own `isFailClosed` rather than recognised from the reason here — the distinction has one
635
+ // implementation and this file relays it like every other.
636
+ ...(deterministicOnly
637
+ ? {}
638
+ : {
639
+ label: decision.verdict?.outcome,
640
+ ...(isFailClosed(verdict) ? {} : { modelLabel: verdict?.outcome }),
641
+ }),
462
642
  action: negotiated.action,
463
- rationale: buildRationale(trimmed, floor?.description, decision, noRatingReason, verdict, negotiated.boundSpent),
643
+ rationale: buildRationale(trimmed, floor?.description, decision, noRatingReason, verdict, negotiated.boundSpent, alignment),
464
644
  modelCalls,
465
645
  };
466
646
  }
@@ -479,11 +659,22 @@ async function classifyOneRound(round, roundIndex, request, rung, negotiation, c
479
659
  */
480
660
  export async function buildRaterClassifier(target, config, options) {
481
661
  const rung = resolveRung(target, config);
482
- const raterProfile = config.approvals !== undefined ? resolveApprovals(config, undefined).rater : undefined;
662
+ const approvals = config.approvals !== undefined ? resolveApprovals(config, undefined) : undefined;
663
+ const raterProfile = approvals?.rater;
483
664
  // `undefined` lets `rateShellCommand` use the run's own `config.llm` — the same fallback
484
665
  // production has, so the sweep's `model:` axis moves the rater exactly when no rater profile is
485
666
  // pinned (a pinned profile wins over the sweep, in the eval as in the session).
486
- const model = options?.model ?? (raterProfile ? await resolveRaterModel(raterProfile) : undefined);
667
+ const model = options?.model ??
668
+ (raterProfile ? await resolveRaterModel(raterProfile, 'approvals.rater') : undefined);
669
+ // [[EXT-127]] — the ALIGNMENT CHECKER's model, resolved once for the same reason the rater's is.
670
+ // `approvals.alignmentChecker` has already been defaulted to the rater's profile by
671
+ // `resolveApprovals`, so a suite that names one rater measures both halves on it — which is what
672
+ // makes a sweep's `model:` axis move the whole gate rather than half of it.
673
+ const checkerProfile = approvals?.alignmentChecker;
674
+ const checkerModel = options?.model ??
675
+ (checkerProfile
676
+ ? await resolveRaterModel(checkerProfile, 'approvals.alignmentChecker')
677
+ : undefined);
487
678
  return async (request) => {
488
679
  const outcomes = [];
489
680
  // BATCH-34 — ONE negotiation per REQUEST, i.e. per (case × cell). It is built here rather than
@@ -491,12 +682,22 @@ export async function buildRaterClassifier(target, config, options) {
491
682
  // suite and the runner may run several concurrently: a shared instance would let one case's
492
683
  // transcript be rated into another's, and one case's rejections spend another's bound.
493
684
  const negotiation = new ShellNegotiationState();
685
+ // [[EXT-127]] — **a corpus case's `user_messages` ARE the user's own words, by declaration.**
686
+ // The provenance window fails closed for a session whose driver nobody has classified, and a
687
+ // suite is exactly such a driver — so without this the alignment checker would meet an empty
688
+ // mandate on every case and escalate every one of them, measuring nothing.
689
+ //
690
+ // **It changes only what the CHECKER sees.** Nothing else in this file reads
691
+ // `retainedUserMessages`, and `mapVerdictToAction` below is still called with no `provenance` —
692
+ // deliberately, per its own contract: §4.6's carve-out must not move a published corpus label
693
+ // for a reason no suite author asked for.
694
+ negotiation.admitUserProvenance(true);
494
695
  // ONE outcome per round, in order, and SERIALLY: the rounds of a case are a sequence, and the
495
696
  // suite runner already parallelizes across cases (`concurrency`), so racing within a case would
496
697
  // only make the eval's own load harder to reason about. Serial is now also REQUIRED rather than
497
698
  // merely tidy — each round is rated with the exchange the rounds before it produced.
498
699
  for (const [roundIndex, round] of request.rounds.entries()) {
499
- outcomes.push(await classifyOneRound(round, roundIndex, request, rung, negotiation, config, model, options));
700
+ outcomes.push(await classifyOneRound(round, roundIndex, request, rung, negotiation, config, model, checkerModel, options));
500
701
  }
501
702
  return outcomes;
502
703
  };
@@ -1 +1 @@
1
- {"version":3,"file":"raterTarget.js","sourceRoot":"","sources":["../src/raterTarget.ts"],"names":[],"mappings":"AA2CA,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAEzE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GACjB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAC;AAE7D,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAW3B;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAiD;IAC5E,2BAA2B,EAAE,gCAAgC;IAC7D,gGAAgG;IAChG,gGAAgG;IAChG,sCAAsC;IACtC,sBAAsB,EAAE,kCAAkC;CAC3D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAYzD,8DAA8D;AAC9D,IAAI,WAAwC,CAAC;AAE7C;;;GAGG;AACH,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;IACnD,IAAI,UAA8B,CAAC;IACnC,mEAAmE;IACnE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAErD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAG7D,EAAE,CAAC;QACJ,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO;gBAC3F,EAAE,MAAM,CAAC;YACX,4FAA4F;YAC5F,iEAAiE;YACjE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,YAAY;gBAAE,SAAS;YAC9D,UAAU,KAAK,OAAO,CAAC;YACvB,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,wFAAwF;gBACxF,4FAA4F;gBAC5F,4FAA4F;gBAC5F,4FAA4F;gBAC5F,4EAA4E;gBAC5E,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,EAAE,CAAC,UAAU,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,QAAuB;IAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACpE,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,sFAAsF;AACtF,SAAS,UAAU;IACjB,WAAW,KAAK,aAAa,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC;AACrB,CAAC;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,WAAW,CAAC,MAAmB,EAAE,MAAiB;IACzD,MAAM,YAAY,GAChB,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;IACnF,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAEnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,UAAU,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,cAAc,CACZ,yBAAyB,UAAU,wDAAwD;YACzF,aAAa,MAAM,CAAC,IAAI,oCAAoC,UAAU,IAAI,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,cAAc,CACrB,OAAe,EACf,gBAAoC,EACpC,QAAuB,EACvB,cAAkC,EAClC,QAAwC,EACxC,UAAmB;IAEnB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,uBAAuB,KAAK,gBAAgB,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,KAAK,cAAc,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,iGAAiG;IACjG,kGAAkG;IAClG,8FAA8F;IAC9F,+FAA+F;IAC/F,gGAAgG;IAChG,mDAAmD;IACnD,MAAM,UAAU,GACd,cAAc,KAAK,SAAS;QAC5B,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,KAAK,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,4FAA4F;QAC5F,4FAA4F;QAC5F,6FAA6F;QAC7F,uBAAuB;QACvB,KAAK,CAAC,IAAI,CACR,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC;YACjC,CAAC,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,MAAM,GAAG,CACrD,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IACD,iGAAiG;IACjG,+FAA+F;IAC/F,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,kBAAkB,CACzB,WAAkC,EAClC,OAAe,EACf,aAAiC,EACjC,QAAuB;IAEvB,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,WAAW,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,WAAW,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC;YACzC,OAAO;YACP,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,yFAAyF;YACzF,6FAA6F;YAC7F,sDAAsD;YACtD,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,mBAAmB,CAAC,OAAO;YACjE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;SACvC,CAAC,CAAC;QACH,yFAAyF;QACzF,iGAAiG;QACjG,4FAA4F;QAC5F,iFAAiF;QACjF,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACtE,WAAW,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,2FAA2F;IAC3F,iGAAiG;IACjG,iGAAiG;IACjG,uDAAuD;IACvD,WAAW,CAAC,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,KAAK,UAAU,gBAAgB,CAC7B,KAAoB,EACpB,UAAkB,EAClB,OAAwB,EACxB,IAAkB,EAClB,WAAkC,EAClC,MAAiB,EACjB,KAAgC,EAChC,OAA2C;IAE3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,4FAA4F;QAC5F,2FAA2F;QAC3F,OAAO;YACL,EAAE,EAAE,KAAK;YACT,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,SAAS,OAAO,CAAC,MAAM,kEAAkE;SACjG,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAErC,kGAAkG;IAClG,gGAAgG;IAChG,kGAAkG;IAClG,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACvD,iGAAiG;IACjG,gGAAgG;IAChG,gGAAgG;IAChG,oFAAoF;IACpF,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,kGAAkG;IAClG,yFAAyF;IACzF,yEAAyE;IACzE,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnE,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS;QACtC,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,IAAI,iBAAiB,CAAC;IACrC,MAAM,iBAAiB,GAAG,cAAc,KAAK,SAAS,CAAC;IACvD,IAAI,OAAuC,CAAC;IAC5C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,iBAAiB,EAAE,CAAC;QACtB,2FAA2F;QAC3F,8FAA8F;QAC9F,6FAA6F;QAC7F,qFAAqF;QACrF,EAAE;QACF,+FAA+F;QAC/F,gGAAgG;QAChG,8FAA8F;QAC9F,4FAA4F;QAC5F,6FAA6F;QAC7F,+FAA+F;QAC/F,6FAA6F;QAC7F,gEAAgE;QAChE,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC,UAAU,CAAC;QAC3C,IAAI,8BAA8B,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7F,OAAO,GAAG,EAAE,OAAO,EAAE,UAA2C,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAC3F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE;YAChD,KAAK;YACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI;YAChC,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,6FAA6F;YAC7F,+FAA+F;YAC/F,uDAAuD;YACvD,EAAE;YACF,4FAA4F;YAC5F,+FAA+F;YAC/F,2FAA2F;YAC3F,6FAA6F;YAC7F,6DAA6D;YAC7D,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3E,UAAU;SACX,CAAC,CAAC;QACH,UAAU,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,iGAAiG;IACjG,0FAA0F;IAC1F,MAAM,UAAU,GAAG,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IACrF,OAAO;QACL,EAAE,EAAE,IAAI;QACR,4FAA4F;QAC5F,gGAAgG;QAChG,uFAAuF;QACvF,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAClE,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,SAAS,EAAE,cAAc,CACvB,OAAO,EACP,KAAK,EAAE,WAAW,EAClB,QAAQ,EACR,cAAc,EACd,OAAO,EACP,UAAU,CAAC,UAAU,CACtB;QACD,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAmB,EACnB,MAAiB,EACjB,OAAgC;IAEhC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,YAAY,GAChB,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,yFAAyF;IACzF,gGAAgG;IAChG,gFAAgF;IAChF,MAAM,KAAK,GACT,OAAO,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEvF,OAAO,KAAK,EAAE,OAAwB,EAA8B,EAAE;QACpE,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,+FAA+F;QAC/F,6FAA6F;QAC7F,4FAA4F;QAC5F,uFAAuF;QACvF,MAAM,WAAW,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAChD,8FAA8F;QAC9F,gGAAgG;QAChG,gGAAgG;QAChG,qFAAqF;QACrF,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CACX,MAAM,gBAAgB,CACpB,KAAK,EACL,UAAU,EACV,OAAO,EACP,IAAI,EACJ,WAAW,EACX,MAAM,EACN,KAAK,EACL,OAAO,CACR,CACF,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"raterTarget.js","sourceRoot":"","sources":["../src/raterTarget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gaunt-sloth/batch",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.3",
4
4
  "description": "Batch matrix runtime for Gaunt Sloth (BATCH-1): run a prompt-executable over a matrix of models and/or content-bound inputs",
5
5
  "license": "MIT",
6
6
  "author": "Andrew Kondratev",
@@ -34,11 +34,11 @@
34
34
  "#src/*.js": "./dist/*.js"
35
35
  },
36
36
  "dependencies": {
37
- "@langchain/core": "^1.2.5",
37
+ "@langchain/core": "^1.2.9",
38
38
  "yaml": "^2.9.0",
39
39
  "zod": "^4.4.3",
40
- "@gaunt-sloth/agent": "2.0.0-beta.1",
41
- "@gaunt-sloth/core": "2.0.0-beta.1"
40
+ "@gaunt-sloth/core": "2.0.0-beta.3",
41
+ "@gaunt-sloth/agent": "2.0.0-beta.3"
42
42
  },
43
43
  "files": [
44
44
  "./dist/*"