@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.
package/dist/evalTypes.js CHANGED
@@ -8,12 +8,22 @@ export const DEFAULT_EVAL_PASS_THRESHOLD = 6;
8
8
  * BATCH-25 Half B — the stable marker a `rater` rationale carries when the §8 hardline floor refuses
9
9
  * the command: the one gradeable form of "this never reaches a shell, whatever the rater said".
10
10
  *
11
- * It is a RATIONALE marker rather than a label or an action on purpose. The floor is not a rung
12
- * decision: it fires at execution time inside the shell tool, under every rung, after the approvals
13
- * gate has already returned. It therefore has no representation in the rater's label/action
14
- * vocabulary, and inventing one here would be this package forming an opinion about a mechanism it
15
- * does not own. Instead it lands in the text, where a `forced_by: hardline-floor` case (or a plain
16
- * `must_contain`) grades it.
11
+ * It is a RATIONALE marker rather than a LABEL on purpose. A label is the rater's judgement, and the
12
+ * floor renders none — it is a lexical test that runs whether or not a model was ever asked, so
13
+ * there is no verdict for it to occupy. Inventing one here would be this package forming an opinion
14
+ * about a mechanism it does not own. Instead it lands in the text, where a `forced_by: hardline-floor`
15
+ * case (or a plain `must_contain`) grades it.
16
+ *
17
+ * **The floor fires at TWO call sites, and the difference decides what a case reports.** The
18
+ * approvals gate consults it before any rating, at every rung but `bypass`, and refuses there; the
19
+ * shell tool consults it again at execution time, under every rung including `bypass`, which is what
20
+ * makes the refusal a guarantee rather than a courtesy. So since [[BATCH-37]] the marker accompanies
21
+ * an ACTION of `reject` wherever the gate arm reached it, and an action of `approve` at `bypass`,
22
+ * where the gate approves before the arm and only the exec-time check refuses.
23
+ *
24
+ * **No rung rates a floored command.** The gate arm covers the two rated rungs, and `bypass` — the
25
+ * one rung it does not cover — is not a rated rung either. So the marker never accompanies a rater
26
+ * verdict, which is the deeper reason it could never have been a label.
17
27
  *
18
28
  * It lives in this module rather than beside its producer so the SUITE PARSER can desugar
19
29
  * `forced_by:` without importing `raterTarget.js` — which would pull `@gaunt-sloth/agent` and core's
@@ -47,10 +57,11 @@ const PREFLIGHT_MECHANISM_OF = {
47
57
  * BATCH-25 Half B — the deterministic mechanisms of the approvals gate that a case can assert fired:
48
58
  * the §8 hardline floor, plus one per deterministic preflight core declares.
49
59
  *
50
- * The floor is spelled here because it is not a preflight — it fires at execution time inside the
51
- * shell tool, under every rung, and core keeps no list of it to derive from. The preflights are NOT
52
- * spelled: they come from {@link PREFLIGHT_MECHANISM_OF}, which is core's own
53
- * `PREFLIGHT_FLOOR_KINDS` with our `forced_by` spelling attached.
60
+ * The floor is spelled here because it is not a preflight — it is a lexical scan core keeps no list
61
+ * of, consulted by the approvals gate before any rating (every rung but `bypass`) and again by the
62
+ * shell tool at execution time (every rung). The preflights are NOT spelled: they come from
63
+ * {@link PREFLIGHT_MECHANISM_OF}, which is core's own `PREFLIGHT_FLOOR_KINDS` with our `forced_by`
64
+ * spelling attached.
54
65
  *
55
66
  * ## Why a case asserts a mechanism at all (the I1 finding)
56
67
  *
@@ -98,13 +109,18 @@ export const FORCED_BY_ASSERTIONS = {
98
109
  * it a permissive rating is not a hypothetical: **overriding a permissive rating is the entire job of
99
110
  * a preflight**, so it is the one path on which the mechanism is real.
100
111
  *
101
- * The §8 hardline floor is the opposite by design. The corpus defines `floor_refuses` as a refusal
102
- * *at execution time*, "regardless of the rating, the approval, or the allow-list", and explicitly
103
- * "a SEPARATE assertion from `action`". The target reads it from `checkHardline`, which never sees a
104
- * verdict — so a rating cannot change the answer, and supplying one buys nothing. It also costs:
112
+ * The §8 hardline floor is the opposite by design, and since [[BATCH-37]] the point is
113
+ * over-determined. The target reads the floor from `checkHardline`, which never sees a verdict — so
114
+ * a rating cannot change the answer, and supplying one buys nothing. It also costs:
105
115
  * `mapVerdictToAction` does not consult the floor, so a permissive rating on `rm -rf /` returns
106
- * `approve`, which would move the action column of **5 of the corpus's 6 `fl-*` cases** off the
107
- * `escalate` they author. Measured over all 22 deterministic corpus cases.
116
+ * `approve`. And at every rung but `bypass` the question no longer arises at all: the target refuses
117
+ * a floored command before the rating step is reached, exactly as the runner does, so there is no
118
+ * stub for a preflight to override.
119
+ *
120
+ * (The corpus's own `floor_refuses` gloss describes the refusal as happening *at execution time*,
121
+ * "regardless of the rating, the approval, or the allow-list", and calls it "a SEPARATE assertion
122
+ * from `action`". The first half is the exec-time call site and remains true; it predates the gate's
123
+ * pre-rating arm and so does not mention it.)
108
124
  *
109
125
  * ## The property that makes this self-justifying
110
126
  *
@@ -1 +1 @@
1
- {"version":3,"file":"evalTypes.js","sourceRoot":"","sources":["../src/evalTypes.ts"],"names":[],"mappings":"AAqBA;;;;mGAImG;AACnG,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB,EAAE,2BAA2B;IAC9C,YAAY,EAAE,sBAAsB;CAC2B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,gBAAgB;IAChB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;CAChC,CAAC;AAiBX,mGAAmG;AACnG,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsC;IACrE,gBAAgB,EAAE,uBAAuB;IACzC,2BAA2B,EAAE,GAAG,gBAAgB,6BAA6B;IAC7E,sBAAsB,EAAE,GAAG,gBAAgB,wBAAwB;CACpE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAW1E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC5D,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAAC,SAAwC;IACrF,OAAO,CACL,SAAS,KAAK,SAAS;QACtB,oBAAqD,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC3E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"evalTypes.js","sourceRoot":"","sources":["../src/evalTypes.ts"],"names":[],"mappings":"AAqBA;;;;mGAImG;AACnG,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB,EAAE,2BAA2B;IAC9C,YAAY,EAAE,sBAAsB;CAC2B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,gBAAgB;IAChB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;CAChC,CAAC;AAiBX,mGAAmG;AACnG,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsC;IACrE,gBAAgB,EAAE,uBAAuB;IACzC,2BAA2B,EAAE,GAAG,gBAAgB,6BAA6B;IAC7E,sBAAsB,EAAE,GAAG,gBAAgB,wBAAwB;CACpE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAW1E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC5D,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAAC,SAAwC;IACrF,OAAO,CACL,SAAS,KAAK,SAAS;QACtB,oBAAqD,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC3E,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -25,7 +25,7 @@ export type { ComparisonColumn, RunDiff, RunDiffEntry, SweepCell } from '#src/ev
25
25
  export { UNRECOGNIZED_LABEL, NO_EXPECTATION } from '#src/classificationTypes.js';
26
26
  export type { ClassificationExtractor, ClassifiedCell, EvalCaseClassification, EvalClassificationReport, EvalClassificationSpec, EvalConfusionMatrix, EvalMetricCoverage, EvalMetricResult, EvalMetricSpec, EvalMetricTally, MetricField, MetricPredicate, } from '#src/classificationTypes.js';
27
27
  export type { ClassifyOutcome, ClassifyRequest, ClassifyRound, EvalSweep, EvalSweepValue, RaterTarget, RunClassifyFn, } from '#src/evalTypes.js';
28
- export { buildRaterClassifier, HARDLINE_REFUSAL_MARKER, NEGOTIATION_BOUND_MARKER, NO_RATING_CALL_MARKER, } from '#src/raterTarget.js';
28
+ export { buildRaterClassifier, HARDLINE_NO_RATING_REASON, HARDLINE_REFUSAL_MARKER, NEGOTIATION_BOUND_MARKER, NO_RATING_CALL_MARKER, } from '#src/raterTarget.js';
29
29
  export type { RaterClassifierOptions } from '#src/raterTarget.js';
30
30
  export { resolveReporters, availableReporterNames } from '#src/reporters/registry.js';
31
31
  export { driveReporters } from '#src/reporters/drive.js';
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ export { expandSweep, deepMerge, renderComparison, diffRuns, renderRunDiff, } fr
22
22
  export { UNRECOGNIZED_LABEL, NO_EXPECTATION } from '#src/classificationTypes.js';
23
23
  // BATCH-25 Half B — the `rater` target: the one implementation of the `RunClassifyFn` seam, which
24
24
  // drives gth's own approvals rater over a corpus of commands.
25
- export { buildRaterClassifier, HARDLINE_REFUSAL_MARKER, NEGOTIATION_BOUND_MARKER, NO_RATING_CALL_MARKER, } from '#src/raterTarget.js';
25
+ export { buildRaterClassifier, HARDLINE_NO_RATING_REASON, HARDLINE_REFUSAL_MARKER, NEGOTIATION_BOUND_MARKER, NO_RATING_CALL_MARKER, } from '#src/raterTarget.js';
26
26
  // BATCH-19 — the `gth eval` reporter facility (A1 seam). These are the public plugin contract an
27
27
  // out-of-core `@gaunt-sloth/eval-reporter-*` package implements, exported from the package root so a
28
28
  // reporter package can type its factory against ONE import.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAWlD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,gGAAgG;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAqBrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,mGAAmG;AACnG,8FAA8F;AAC9F,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,WAAW,EACX,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,GACb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAyBjF,kGAAkG;AAClG,8DAA8D;AAC9D,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,iGAAiG;AACjG,qGAAqG;AACrG,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAQpE,kGAAkG;AAClG,6CAA6C;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAWlD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,gGAAgG;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAqBrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,mGAAmG;AACnG,8FAA8F;AAC9F,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,WAAW,EACX,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,GACb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAyBjF,kGAAkG;AAClG,8DAA8D;AAC9D,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,iGAAiG;AACjG,qGAAqG;AACrG,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAQpE,kGAAkG;AAClG,6CAA6C;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC"}
package/dist/metrics.d.ts CHANGED
@@ -36,7 +36,10 @@ export declare function evaluatePredicates(predicates: MetricPredicate[], cell:
36
36
  * and cells lost to SUT failures;
37
37
  * - **excluded cells** — cells that never produced a classification at all;
38
38
  * - **empty denominator** — the metric measured nothing, so its value is `null` rather than a
39
- * flattering zero.
39
+ * flattering zero;
40
+ * - **a raised label** (BATCH-26) — cells whose `actual.label` a deterministic step raised after the
41
+ * model answered, so a metric on that field is scoring the gate rather than the model. The two
42
+ * questions are written identically and only one of them is being answered.
40
43
  *
41
44
  * @param cells Every cell in the suite, scored and unscored alike (the unscored ones are what make
42
45
  * the coverage numbers honest).
package/dist/metrics.js CHANGED
@@ -24,16 +24,21 @@ import { METRIC_NONE_LITERAL, NO_EXPECTATION, UNRECOGNIZED_LABEL, } from '#src/c
24
24
  * silently always-zero — a perfect score for a predicate that can never match. {@link
25
25
  * parseMetricPredicate} rejects any literal outside the suite's declared enum.
26
26
  */
27
- /** The four readable fields. `expected.*` is what the corpus declares, `actual.*` is what the SUT
28
- * produced spelled out because a corpus plan's prose says "label" for one and "action" for the
29
- * other, and that ambiguity is what produces a silently-wrong metric. */
27
+ /** The five readable fields. `expected.*` is what the corpus declares, `actual.*` is what the SUT
28
+ * produced, `model.label` is what the model itself judged before any deterministic step overrode it
29
+ * spelled out because a corpus plan's prose says "label" for one and "action" for the other, and
30
+ * that ambiguity is what produces a silently-wrong metric. */
30
31
  const METRIC_FIELDS = [
31
32
  'expected.label',
32
33
  'expected.action',
33
34
  'actual.label',
34
35
  'actual.action',
36
+ 'model.label',
35
37
  ];
36
- const FIELD_PATTERN = '(expected|actual)\\.(label|action)';
38
+ /** Matches the SHAPE of a field reference as one group; whether that shape is a field this engine
39
+ * has is decided by {@link assertKnownField}, so `model.action` is refused by name rather than
40
+ * falling through to the generic parse error. */
41
+ const FIELD_PATTERN = '((?:expected|actual|model)\\.(?:label|action))';
37
42
  const TAG_RE = new RegExp(`^(not\\s+)?has_tag\\(\\s*([^)]*?)\\s*\\)$`);
38
43
  const IN_RE = new RegExp(`^${FIELD_PATTERN}\\s+(not\\s+in|in)\\s*\\[([^\\]]*)\\]$`);
39
44
  const COMPARE_RE = new RegExp(`^${FIELD_PATTERN}\\s*(==|!=)\\s*(.+)$`);
@@ -83,9 +88,9 @@ export function parseMetricPredicate(raw, spec, where) {
83
88
  }
84
89
  const inMatch = IN_RE.exec(text);
85
90
  if (inMatch) {
86
- const field = `${inMatch[1]}.${inMatch[2]}`;
87
- const negated = inMatch[3].startsWith('not');
88
- const values = inMatch[4]
91
+ const field = assertKnownField(inMatch[1], where, text);
92
+ const negated = inMatch[2].startsWith('not');
93
+ const values = inMatch[3]
89
94
  .split(',')
90
95
  .map((value) => unquote(value))
91
96
  .filter((value) => value.length > 0);
@@ -99,11 +104,11 @@ export function parseMetricPredicate(raw, spec, where) {
99
104
  }
100
105
  const compareMatch = COMPARE_RE.exec(text);
101
106
  if (compareMatch) {
102
- const field = `${compareMatch[1]}.${compareMatch[2]}`;
103
- const negated = compareMatch[3] === '!=';
104
- const rhs = unquote(compareMatch[4]);
105
- if (METRIC_FIELDS.includes(rhs)) {
106
- const other = rhs;
107
+ const field = assertKnownField(compareMatch[1], where, text);
108
+ const negated = compareMatch[2] === '!=';
109
+ const rhs = unquote(compareMatch[3]);
110
+ if (/^(?:expected|actual|model)\.(?:label|action)$/.test(rhs)) {
111
+ const other = assertKnownField(rhs, where, text);
107
112
  if (field.endsWith('.label') !== other.endsWith('.label')) {
108
113
  throw new Error(`${where}: "${text}" compares a label field to an action field — they are different ` +
109
114
  'enums, so the comparison can never be true.');
@@ -118,6 +123,28 @@ export function parseMetricPredicate(raw, spec, where) {
118
123
  '`<field> not in [a, b]`, or `has_tag(x)` / `not has_tag(x)`. Fields: ' +
119
124
  `${METRIC_FIELDS.join(', ')}. There is no \`or\` and no nesting.`);
120
125
  }
126
+ /**
127
+ * Reject a field reference whose SHAPE parsed but which this engine does not have.
128
+ *
129
+ * Today that is exactly `model.action`, and it is refused with its own sentence rather than by
130
+ * falling through to the generic "could not parse predicate" error. The generic message would list
131
+ * the legal fields and leave an author to notice the absence; the specific one says WHY there is no
132
+ * such field, which is the difference between a typo and a misconception about the gate. A
133
+ * predicate on a field that does not exist can never match — the permanent, trusted zero this file
134
+ * exists to prevent.
135
+ */
136
+ function assertKnownField(raw, where, text) {
137
+ if (METRIC_FIELDS.includes(raw))
138
+ return raw;
139
+ if (raw === 'model.action') {
140
+ throw new Error(`${where}: "${text}" reads \`model.action\`, and there is no \`model.action\`. The model ` +
141
+ 'renders a JUDGEMENT, not an action: the deterministic layer decides what is done about ' +
142
+ 'it. Read `actual.action` for what the system did, or `model.label` for what the model ' +
143
+ 'judged.');
144
+ }
145
+ throw new Error(`${where}: "${text}" reads "${raw}", which is not a field this engine has. Fields: ` +
146
+ `${METRIC_FIELDS.join(', ')}.`);
147
+ }
121
148
  /** Reject a literal the suite's enum does not declare. `none`, and the two synthetic buckets, are
122
149
  * always legal — they are how a metric talks about "absent" and "the model said something we could
123
150
  * not interpret", both of which are real, checkable states. */
@@ -159,6 +186,8 @@ function fieldValue(cell, field) {
159
186
  return cell.actualLabel;
160
187
  case 'actual.action':
161
188
  return cell.actualAction;
189
+ case 'model.label':
190
+ return cell.modelLabel;
162
191
  }
163
192
  }
164
193
  /** Compare a field to a literal, with `none` meaning "absent". */
@@ -221,7 +250,10 @@ function formatPercent(value) {
221
250
  * and cells lost to SUT failures;
222
251
  * - **excluded cells** — cells that never produced a classification at all;
223
252
  * - **empty denominator** — the metric measured nothing, so its value is `null` rather than a
224
- * flattering zero.
253
+ * flattering zero;
254
+ * - **a raised label** (BATCH-26) — cells whose `actual.label` a deterministic step raised after the
255
+ * model answered, so a metric on that field is scoring the gate rather than the model. The two
256
+ * questions are written identically and only one of them is being answered.
225
257
  *
226
258
  * @param cells Every cell in the suite, scored and unscored alike (the unscored ones are what make
227
259
  * the coverage numbers honest).
@@ -303,6 +335,28 @@ export function computeMetric(spec, cells, tags) {
303
335
  'which is how a corpus of deterministic, unlabelled cases scores 100% on label accuracy. ' +
304
336
  'Narrow `over:` to the cases the metric is about (e.g. `over: ["expected.label != none"]`).');
305
337
  }
338
+ // BATCH-26 — **this metric is about the GATE, and part of its denominator is a case where the
339
+ // gate and the model disagreed.** `actual.label` is the outcome the decision settled on, which a
340
+ // deterministic step may have RAISED after the model answered. That is the right field for
341
+ // measuring what a user experiences and the wrong one for measuring the rater — and the two
342
+ // questions are written identically, which is why the number has to say which one it answered.
343
+ // Fired only when the metric actually reads `actual.label`: a metric already on `model.label` is
344
+ // asking the other question and needs no note.
345
+ if (fields.includes('actual.label')) {
346
+ const raised = denominatorCells.filter((cell) => cell.modelLabel !== undefined &&
347
+ cell.actualLabel !== undefined &&
348
+ cell.modelLabel !== cell.actualLabel);
349
+ if (raised.length > 0) {
350
+ warnings.push(`${raised.length} of ${denominatorCells.length} case(s) in this denominator had their ` +
351
+ `label RAISED by a deterministic step after the model answered (e.g. ${raised
352
+ .slice(0, 3)
353
+ .map((cell) => cell.id)
354
+ .join(', ')}). On those, \`actual.label\` is the decision the GATE reached and not the ` +
355
+ "judgement the model rendered, so this metric scores the gate — the model's own answer " +
356
+ 'is excluded from it by construction. Read `model.label` for a metric about the model ' +
357
+ 'itself; it is recorded per cell in results.json as `modelLabel` wherever a model judged.');
358
+ }
359
+ }
306
360
  const byTag = {};
307
361
  for (const tag of tags) {
308
362
  const tagDenominator = denominatorCells.filter((cell) => cell.tags.includes(tag));
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -32,8 +32,9 @@
32
32
  * ## Two rules this file exists to keep
33
33
  *
34
34
  * 1. **It drives the gate; it never re-decides it.** Nothing here inspects, compares or defaults an
35
- * outcome value: the label is whatever `mapVerdictToAction` reports and the action is whatever it
36
- * returns, both passed through as opaque strings. That is why the CFG-28 rename of the outcome
35
+ * outcome value: the label is whatever `mapVerdictToAction` reports, the rating beside it is
36
+ * whatever `rateShellCommand` returned, and the action is whatever the mapping returns all
37
+ * passed through as opaque strings. That is why the CFG-28 rename of the outcome
37
38
  * vocabulary (`exfiltration` → `attack`, plus `catastrophic`) needed no edit in this package: the
38
39
  * eval facility has no second opinion about what a rating MEANS, and cannot drift from the thing
39
40
  * it measures. A suite's `classification.labels` is the only place the vocabulary is written
@@ -62,7 +63,8 @@ import type { ForcedByMechanism, PreflightMechanism, RaterTarget, RunClassifyFn
62
63
  export { HARDLINE_REFUSAL_MARKER };
63
64
  /**
64
65
  * The marker a rationale carries when the decision cost NO rating call, followed by which of the
65
- * two reasons applied (the case declared `model_free`, or the rung is not rated).
66
+ * **three** reasons applied: the §8 hardline floor refused the command before any rating
67
+ * ({@link HARDLINE_NO_RATING_REASON}), the case declared `model_free`, or the rung is not rated.
66
68
  *
67
69
  * It exists because the honest alternative was worse. `mapVerdictToAction` treats a missing verdict
68
70
  * as core's fail-closed one, whose reason says the rater "could not evaluate" the command — true
@@ -70,8 +72,19 @@ export { HARDLINE_REFUSAL_MARKER };
70
72
  * written into every model-free case's per-case JSON, and a reader diagnosing a corpus would have
71
73
  * concluded the rater was broken. So the placeholder reason is dropped on this path and replaced by
72
74
  * this: what actually happened.
75
+ *
76
+ * **The reasons are not mutually exclusive, and the floor outranks the other two** — it is the one
77
+ * production acts on, so a `model_free` case whose command the floor also refuses reports the floor.
78
+ * Its `model_free` declaration is then redundant rather than wrong: both say zero calls.
73
79
  */
74
80
  export declare const NO_RATING_CALL_MARKER = "no rating call";
81
+ /**
82
+ * The {@link NO_RATING_CALL_MARKER} reason for a command §8's floor refuses outright.
83
+ *
84
+ * Named rather than spelled at the call site so a suite (and the unit suite) can assert the
85
+ * short-circuit by the reason it reports, without pinning prose in two places.
86
+ */
87
+ export declare const HARDLINE_NO_RATING_REASON = "refused at the floor before rating";
75
88
  /**
76
89
  * BATCH-34 — the marker a rationale carries when the round's `reject` became an **escalation because
77
90
  * a §5.3 bound was spent**, not because the rating said so.