@mmnto/totem 1.65.0 → 1.67.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.
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/spine/selection-rule.d.ts +102 -0
- package/dist/spine/selection-rule.d.ts.map +1 -0
- package/dist/spine/selection-rule.js +216 -0
- package/dist/spine/selection-rule.js.map +1 -0
- package/dist/spine/selection-rule.test.d.ts +2 -0
- package/dist/spine/selection-rule.test.d.ts.map +1 -0
- package/dist/spine/selection-rule.test.js +204 -0
- package/dist/spine/selection-rule.test.js.map +1 -0
- package/dist/spine/windtunnel-lock.d.ts +60 -0
- package/dist/spine/windtunnel-lock.d.ts.map +1 -1
- package/dist/spine/windtunnel-lock.js +18 -0
- package/dist/spine/windtunnel-lock.js.map +1 -1
- package/dist/spine/windtunnel-scorer.d.ts +32 -9
- package/dist/spine/windtunnel-scorer.d.ts.map +1 -1
- package/dist/spine/windtunnel-scorer.js +97 -82
- package/dist/spine/windtunnel-scorer.js.map +1 -1
- package/dist/spine/windtunnel-scorer.test.js +182 -3
- package/dist/spine/windtunnel-scorer.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,13 +4,17 @@
|
|
|
4
4
|
* Score a wind-tunnel run. Pure function: no IO, no clock, no randomness.
|
|
5
5
|
* Implements ADR-110 §4/§5 done-criterion exactly per spec invariants.
|
|
6
6
|
*
|
|
7
|
-
* Verdict ordering (highest precedence first):
|
|
8
|
-
* 1.
|
|
9
|
-
* 2.
|
|
10
|
-
* 3.
|
|
11
|
-
* 4.
|
|
12
|
-
* 5. Any unlabeled firing → HONEST-NEGATIVE (needs adjudication, not PASS)
|
|
13
|
-
* 6. All labeled TP → PASS
|
|
7
|
+
* Verdict ordering (highest precedence first) — #2189 ruling:
|
|
8
|
+
* 1. Any firing labeled FP → FAIL (confirmed FP is a claim; precision = breaching value)
|
|
9
|
+
* 2. Positive control does not fire its target → FAIL (vacuous pass; precision = null)
|
|
10
|
+
* 3. Exposure floor below minimum → HONEST-NEGATIVE (masquerade guard; precision = null)
|
|
11
|
+
* 4. Cull rate exceeds threshold → HONEST-NEGATIVE (cull-laundering guard; precision = null)
|
|
12
|
+
* 5. Any unlabeled firing → HONEST-NEGATIVE (needs adjudication, not PASS; precision = null)
|
|
13
|
+
* 6. All labeled TP → PASS (precision = 1.0)
|
|
14
|
+
*
|
|
15
|
+
* The FAIL tier (1–2) outranks the masquerade guards (3–4): a guard may only
|
|
16
|
+
* DEMOTE a would-be PASS, never UPGRADE a FAIL. survivorPrecision (diagnostics)
|
|
17
|
+
* carries the informative survivor ratio distinct from the certifying precision.
|
|
14
18
|
*/
|
|
15
19
|
export function scoreWindtunnel(input) {
|
|
16
20
|
const { firings, groundTruth, positiveControlTargets, mintedRuleIds, cullRateThreshold, exposureFloors, actualExposure, } = input;
|
|
@@ -41,35 +45,71 @@ export function scoreWindtunnel(input) {
|
|
|
41
45
|
actualExposure.filesTouchedInWindow,
|
|
42
46
|
actualExposure.positiveControlsExercised,
|
|
43
47
|
];
|
|
44
|
-
// Step 2:
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
// Step 2: Label surviving (non-negative-control, non-culled) firings. Computed
|
|
49
|
+
// BEFORE the masquerade guards because the FAIL tier outranks them (#2189) — we
|
|
50
|
+
// must know hasFp/nonVacuity before deciding whether a guard may short-circuit.
|
|
51
|
+
let hasFp = false;
|
|
52
|
+
let tpCount = 0;
|
|
53
|
+
let labeledCount = 0;
|
|
54
|
+
for (const firing of firings) {
|
|
55
|
+
if (firing.controlKind === 'negative')
|
|
56
|
+
continue;
|
|
57
|
+
if (culledRuleIds.has(firing.ruleId))
|
|
58
|
+
continue;
|
|
59
|
+
const label = groundTruth.get(firing.labelId);
|
|
60
|
+
if (label === undefined) {
|
|
61
|
+
needsAdjudication.push(firing.labelId);
|
|
62
|
+
}
|
|
63
|
+
else if (label === 'FP') {
|
|
64
|
+
hasFp = true;
|
|
65
|
+
labeledCount++;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
tpCount++;
|
|
69
|
+
labeledCount++;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// survivorPrecision (diagnostic, descriptive): TP/(TP+FP) over labeled surviving
|
|
73
|
+
// firings — informative even on no-claim verdicts, NEVER the gate decision.
|
|
74
|
+
const survivorPrecision = labeledCount > 0 ? tpCount / labeledCount : null;
|
|
75
|
+
const diagnostics = { survivorPrecision };
|
|
76
|
+
// Step 3: Positive control non-vacuity check. Every positive control target
|
|
77
|
+
// must have its targetRuleId fire on an un-culled rule. A vacuous pass → FAIL.
|
|
78
|
+
let nonVacuity = true;
|
|
79
|
+
for (const target of positiveControlTargets) {
|
|
80
|
+
const fired = firings.some((f) => f.controlKind === 'positive' &&
|
|
81
|
+
f.pr === target.pr &&
|
|
82
|
+
f.ruleId === target.targetRuleId &&
|
|
83
|
+
!culledRuleIds.has(f.ruleId));
|
|
84
|
+
if (!fired) {
|
|
85
|
+
nonVacuity = false;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// ── FAIL tier (outranks the masquerade guards, #2189) ──
|
|
90
|
+
// Step 4a: Confirmed FP → FAIL. precision = the breaching value (the evidence,
|
|
91
|
+
// must be reported). A 0 here is a REAL all-FP measurement, never a sentinel.
|
|
92
|
+
// labeledCount ≥ 1 whenever hasFp, so the ratio is always defined.
|
|
93
|
+
if (hasFp) {
|
|
48
94
|
return {
|
|
49
|
-
verdict: '
|
|
50
|
-
precision:
|
|
95
|
+
verdict: 'FAIL',
|
|
96
|
+
precision: tpCount / labeledCount,
|
|
51
97
|
mintedRuleCount,
|
|
52
98
|
culledCount,
|
|
53
99
|
survivingRuleCount,
|
|
54
100
|
exposureTuple,
|
|
55
101
|
cullLedger,
|
|
56
|
-
nonVacuity
|
|
102
|
+
nonVacuity,
|
|
57
103
|
needsAdjudication,
|
|
104
|
+
diagnostics,
|
|
58
105
|
};
|
|
59
106
|
}
|
|
60
|
-
// Step
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
// harness phase where mintedRuleCount ≈ 0).
|
|
64
|
-
if (mintedRuleCount > 0 && culledCount / mintedRuleCount > cullRateThreshold) {
|
|
107
|
+
// Step 4b: Vacuous positive control → FAIL. precision = null — a structural
|
|
108
|
+
// failure makes no precision claim (#2189 Q-A); 0 would falsely read as all-FP.
|
|
109
|
+
if (!nonVacuity) {
|
|
65
110
|
return {
|
|
66
|
-
verdict: '
|
|
67
|
-
|
|
68
|
-
// at Step 5), so report the same "not-computed" sentinel the exposure-floor
|
|
69
|
-
// HONEST-NEGATIVE path uses (0) — never a survival ratio mislabeled as
|
|
70
|
-
// precision. Whether a HONEST-NEGATIVE should instead carry the real
|
|
71
|
-
// precision-over-survivors is a §4/§5 contract question deferred to #2189.
|
|
72
|
-
precision: 0,
|
|
111
|
+
verdict: 'FAIL',
|
|
112
|
+
precision: null,
|
|
73
113
|
mintedRuleCount,
|
|
74
114
|
culledCount,
|
|
75
115
|
survivingRuleCount,
|
|
@@ -77,100 +117,75 @@ export function scoreWindtunnel(input) {
|
|
|
77
117
|
cullLedger,
|
|
78
118
|
nonVacuity: false,
|
|
79
119
|
needsAdjudication,
|
|
120
|
+
diagnostics,
|
|
80
121
|
};
|
|
81
122
|
}
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
f.pr === target.pr &&
|
|
89
|
-
f.ruleId === target.targetRuleId &&
|
|
90
|
-
!culledRuleIds.has(f.ruleId));
|
|
91
|
-
if (!fired) {
|
|
92
|
-
nonVacuity = false;
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (!nonVacuity) {
|
|
123
|
+
// ── Masquerade guards (may only DEMOTE a would-be PASS) ──
|
|
124
|
+
// Step 5: Exposure floor (P2). activeRules/positiveControls below floor →
|
|
125
|
+
// HONEST-NEGATIVE (no claim → precision null). Ranked above needs-adjudication
|
|
126
|
+
// (Step 7): labeling won't rescue a sub-floor run (strategy-claude tie-break).
|
|
127
|
+
if (actualExposure.activeRulesEvaluated < exposureFloors.activeRulesEvaluated ||
|
|
128
|
+
actualExposure.positiveControlsExercised < exposureFloors.positiveControlsExercised) {
|
|
97
129
|
return {
|
|
98
|
-
verdict: '
|
|
99
|
-
precision:
|
|
130
|
+
verdict: 'HONEST-NEGATIVE',
|
|
131
|
+
precision: null,
|
|
100
132
|
mintedRuleCount,
|
|
101
133
|
culledCount,
|
|
102
134
|
survivingRuleCount,
|
|
103
135
|
exposureTuple,
|
|
104
136
|
cullLedger,
|
|
105
|
-
nonVacuity
|
|
137
|
+
nonVacuity,
|
|
106
138
|
needsAdjudication,
|
|
139
|
+
diagnostics,
|
|
107
140
|
};
|
|
108
141
|
}
|
|
109
|
-
// Step
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
let labeledCount = 0;
|
|
114
|
-
for (const firing of firings) {
|
|
115
|
-
if (firing.controlKind === 'negative')
|
|
116
|
-
continue;
|
|
117
|
-
if (culledRuleIds.has(firing.ruleId))
|
|
118
|
-
continue;
|
|
119
|
-
const label = groundTruth.get(firing.labelId);
|
|
120
|
-
if (label === undefined) {
|
|
121
|
-
needsAdjudication.push(firing.labelId);
|
|
122
|
-
}
|
|
123
|
-
else if (label === 'FP') {
|
|
124
|
-
hasFp = true;
|
|
125
|
-
labeledCount++;
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
tpCount++;
|
|
129
|
-
labeledCount++;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// FP → FAIL (precision < 1.0; zero-confirmed-FP floor violated)
|
|
133
|
-
if (hasFp) {
|
|
134
|
-
const precision = labeledCount > 0 ? tpCount / labeledCount : 0;
|
|
142
|
+
// Step 6: Cull-rate guard (C5/S2). culledCount / mintedRuleCount > threshold →
|
|
143
|
+
// HONEST-NEGATIVE. Guard applies only when mintedRuleCount > 0 (avoids division
|
|
144
|
+
// by zero at the harness phase). No claim → precision null.
|
|
145
|
+
if (mintedRuleCount > 0 && culledCount / mintedRuleCount > cullRateThreshold) {
|
|
135
146
|
return {
|
|
136
|
-
verdict: '
|
|
137
|
-
precision,
|
|
147
|
+
verdict: 'HONEST-NEGATIVE',
|
|
148
|
+
precision: null,
|
|
138
149
|
mintedRuleCount,
|
|
139
150
|
culledCount,
|
|
140
151
|
survivingRuleCount,
|
|
141
152
|
exposureTuple,
|
|
142
153
|
cullLedger,
|
|
143
|
-
nonVacuity
|
|
154
|
+
nonVacuity,
|
|
144
155
|
needsAdjudication,
|
|
156
|
+
diagnostics,
|
|
145
157
|
};
|
|
146
158
|
}
|
|
147
|
-
// Unlabeled firings → not PASS (operator must adjudicate first)
|
|
159
|
+
// Step 7: Unlabeled firings → not PASS (operator must adjudicate first). No
|
|
160
|
+
// claim → precision null.
|
|
148
161
|
if (needsAdjudication.length > 0) {
|
|
149
|
-
const precision = labeledCount > 0 ? tpCount / labeledCount : 1.0;
|
|
150
162
|
return {
|
|
151
163
|
verdict: 'HONEST-NEGATIVE',
|
|
152
|
-
precision,
|
|
164
|
+
precision: null,
|
|
153
165
|
mintedRuleCount,
|
|
154
166
|
culledCount,
|
|
155
167
|
survivingRuleCount,
|
|
156
168
|
exposureTuple,
|
|
157
169
|
cullLedger,
|
|
158
|
-
nonVacuity
|
|
170
|
+
nonVacuity,
|
|
159
171
|
needsAdjudication,
|
|
172
|
+
diagnostics,
|
|
160
173
|
};
|
|
161
174
|
}
|
|
162
|
-
// All firings labeled TP, exposure floors met, positive controls
|
|
163
|
-
|
|
175
|
+
// Step 8: All firings labeled TP, exposure floors met, positive controls
|
|
176
|
+
// verified → PASS. precision = 1.0 (tpCount === labeledCount here; vacuously
|
|
177
|
+
// 1.0 when no firings — the harness phase).
|
|
164
178
|
return {
|
|
165
179
|
verdict: 'PASS',
|
|
166
|
-
precision,
|
|
180
|
+
precision: labeledCount > 0 ? tpCount / labeledCount : 1.0,
|
|
167
181
|
mintedRuleCount,
|
|
168
182
|
culledCount,
|
|
169
183
|
survivingRuleCount,
|
|
170
184
|
exposureTuple,
|
|
171
185
|
cullLedger,
|
|
172
|
-
nonVacuity
|
|
173
|
-
needsAdjudication
|
|
186
|
+
nonVacuity,
|
|
187
|
+
needsAdjudication,
|
|
188
|
+
diagnostics,
|
|
174
189
|
};
|
|
175
190
|
}
|
|
176
191
|
//# sourceMappingURL=windtunnel-scorer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windtunnel-scorer.js","sourceRoot":"","sources":["../../src/spine/windtunnel-scorer.ts"],"names":[],"mappings":"AAAA,uDAAuD;
|
|
1
|
+
{"version":3,"file":"windtunnel-scorer.js","sourceRoot":"","sources":["../../src/spine/windtunnel-scorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -179,9 +179,10 @@ describe('cull-rate guard (C5/S2)', () => {
|
|
|
179
179
|
}));
|
|
180
180
|
expect(result.verdict).toBe('HONEST-NEGATIVE');
|
|
181
181
|
expect(result.culledCount).toBe(2);
|
|
182
|
-
// precision is the not-computed sentinel
|
|
183
|
-
//
|
|
184
|
-
|
|
182
|
+
// precision is the NULL not-computed sentinel on a no-claim verdict (#2189
|
|
183
|
+
// ruling) — NEVER 0 (a real all-FP value) and NEVER a survival ratio. Locks
|
|
184
|
+
// the greptile-P1 / CR fix + the strategy-claude 2026-06-17 sentinel ruling.
|
|
185
|
+
expect(result.precision).toBeNull();
|
|
185
186
|
});
|
|
186
187
|
it('does not apply cull-rate guard when mintedRuleCount = 0 (harness phase)', () => {
|
|
187
188
|
const result = scoreWindtunnel(baseInput({
|
|
@@ -204,6 +205,184 @@ describe('cull-rate guard (C5/S2)', () => {
|
|
|
204
205
|
expect(result.verdict).toBe('PASS');
|
|
205
206
|
});
|
|
206
207
|
});
|
|
208
|
+
// ─── #2189 ruling: FAIL outranks the masquerade guards ──
|
|
209
|
+
//
|
|
210
|
+
// strategy-claude verdict-semantics RULING (2026-06-17): a confirmed FP — or a
|
|
211
|
+
// vacuous positive control — is a *claim*, not a no-claim. It must FAIL even
|
|
212
|
+
// when an exposure-floor / cull-rate masquerade guard would otherwise return
|
|
213
|
+
// HONEST-NEGATIVE. The guards may only DEMOTE a would-be PASS; they may never
|
|
214
|
+
// UPGRADE a FAIL. Under the pre-#2189 order these returned HONEST-NEGATIVE.
|
|
215
|
+
describe('#2189: FAIL precedence outranks the masquerade guards', () => {
|
|
216
|
+
it('unconditionally evaluates to FAIL when a firing is labeled FP, ignoring a sub-floor exposure', () => {
|
|
217
|
+
const fp = makeFiring('rule-a', 1, 'corpus', '// const secret = "x"');
|
|
218
|
+
const gt = new Map([[fp.labelId, 'FP']]);
|
|
219
|
+
const result = scoreWindtunnel(baseInput({
|
|
220
|
+
firings: [fp],
|
|
221
|
+
groundTruth: gt,
|
|
222
|
+
// sub-floor exposure that WOULD trip HONEST-NEGATIVE first under the old order
|
|
223
|
+
actualExposure: {
|
|
224
|
+
activeRulesEvaluated: 1,
|
|
225
|
+
filesTouchedInWindow: 0,
|
|
226
|
+
positiveControlsExercised: 0,
|
|
227
|
+
},
|
|
228
|
+
exposureFloors: {
|
|
229
|
+
activeRulesEvaluated: 2,
|
|
230
|
+
filesTouchedInWindow: 0,
|
|
231
|
+
positiveControlsExercised: 0,
|
|
232
|
+
},
|
|
233
|
+
}));
|
|
234
|
+
expect(result.verdict).toBe('FAIL');
|
|
235
|
+
});
|
|
236
|
+
it('evaluates to FAIL when a firing is labeled FP, ignoring an over-threshold cull rate', () => {
|
|
237
|
+
// rule-a culled on a negative control (1/2 = 0.5 > threshold 0.4 → cull-rate HN
|
|
238
|
+
// under the old order); rule-b (surviving) fires a confirmed FP → must FAIL.
|
|
239
|
+
const culled = makeFiring('rule-a', 99, 'negative');
|
|
240
|
+
const fp = makeFiring('rule-b', 1, 'corpus', 'fp line');
|
|
241
|
+
const gt = new Map([[fp.labelId, 'FP']]);
|
|
242
|
+
const result = scoreWindtunnel(baseInput({
|
|
243
|
+
firings: [culled, fp],
|
|
244
|
+
mintedRuleIds: ['rule-a', 'rule-b'],
|
|
245
|
+
groundTruth: gt,
|
|
246
|
+
cullRateThreshold: 0.4,
|
|
247
|
+
}));
|
|
248
|
+
expect(result.verdict).toBe('FAIL');
|
|
249
|
+
});
|
|
250
|
+
it('evaluates to FAIL on a vacuous positive control even under a sub-floor exposure', () => {
|
|
251
|
+
const result = scoreWindtunnel(baseInput({
|
|
252
|
+
positiveControlTargets: [{ pr: 10, targetRuleId: 'rule-a' }],
|
|
253
|
+
firings: [], // target never fires → vacuous
|
|
254
|
+
actualExposure: {
|
|
255
|
+
activeRulesEvaluated: 1,
|
|
256
|
+
filesTouchedInWindow: 0,
|
|
257
|
+
positiveControlsExercised: 0,
|
|
258
|
+
},
|
|
259
|
+
exposureFloors: {
|
|
260
|
+
activeRulesEvaluated: 2,
|
|
261
|
+
filesTouchedInWindow: 0,
|
|
262
|
+
positiveControlsExercised: 0,
|
|
263
|
+
},
|
|
264
|
+
}));
|
|
265
|
+
expect(result.verdict).toBe('FAIL');
|
|
266
|
+
expect(result.nonVacuity).toBe(false);
|
|
267
|
+
});
|
|
268
|
+
it('FP takes precedence over a vacuous positive control when both occur', () => {
|
|
269
|
+
// A confirmed FP on a corpus firing AND a positive control whose target
|
|
270
|
+
// never fires (vacuous). Step 4a (FP) precedes Step 4b (vacuous): the
|
|
271
|
+
// verdict is FAIL with the breaching precision 0.5 — NOT null (which the
|
|
272
|
+
// vacuous-control FAIL would have returned).
|
|
273
|
+
const fp = makeFiring('rule-b', 1, 'corpus', 'fp');
|
|
274
|
+
const tp = makeFiring('rule-c', 2, 'corpus', 'tp');
|
|
275
|
+
const result = scoreWindtunnel(baseInput({
|
|
276
|
+
firings: [fp, tp],
|
|
277
|
+
mintedRuleIds: ['rule-a', 'rule-b', 'rule-c'],
|
|
278
|
+
groundTruth: new Map([
|
|
279
|
+
[fp.labelId, 'FP'],
|
|
280
|
+
[tp.labelId, 'TP'],
|
|
281
|
+
]),
|
|
282
|
+
positiveControlTargets: [{ pr: 10, targetRuleId: 'rule-a' }],
|
|
283
|
+
}));
|
|
284
|
+
expect(result.verdict).toBe('FAIL');
|
|
285
|
+
expect(result.nonVacuity).toBe(false);
|
|
286
|
+
expect(result.precision).toBe(0.5);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
// ─── #2189 ruling: precision is a null no-claim sentinel ─
|
|
290
|
+
//
|
|
291
|
+
// precision carries a real value ONLY on verdicts that make a precision claim —
|
|
292
|
+
// PASS (1.0) and confirmed-FP FAIL (the breaching value, which IS the evidence).
|
|
293
|
+
// On every no-claim verdict it is null — NEVER 0 (a real all-FP value).
|
|
294
|
+
describe('#2189: precision null-sentinel on no-claim verdicts', () => {
|
|
295
|
+
it('precision is null on an exposure-floor HONEST-NEGATIVE', () => {
|
|
296
|
+
const result = scoreWindtunnel(baseInput({
|
|
297
|
+
actualExposure: {
|
|
298
|
+
activeRulesEvaluated: 1,
|
|
299
|
+
filesTouchedInWindow: 0,
|
|
300
|
+
positiveControlsExercised: 0,
|
|
301
|
+
},
|
|
302
|
+
exposureFloors: {
|
|
303
|
+
activeRulesEvaluated: 2,
|
|
304
|
+
filesTouchedInWindow: 0,
|
|
305
|
+
positiveControlsExercised: 0,
|
|
306
|
+
},
|
|
307
|
+
}));
|
|
308
|
+
expect(result.verdict).toBe('HONEST-NEGATIVE');
|
|
309
|
+
expect(result.precision).toBeNull();
|
|
310
|
+
});
|
|
311
|
+
it('precision is null on a needs-adjudication HONEST-NEGATIVE', () => {
|
|
312
|
+
const firing = makeFiring('rule-a', 1, 'corpus');
|
|
313
|
+
const result = scoreWindtunnel(baseInput({ firings: [firing], groundTruth: new Map() }));
|
|
314
|
+
expect(result.verdict).toBe('HONEST-NEGATIVE');
|
|
315
|
+
expect(result.needsAdjudication).toContain(firing.labelId);
|
|
316
|
+
expect(result.precision).toBeNull();
|
|
317
|
+
});
|
|
318
|
+
it('precision is null on a vacuous-control FAIL (structural failure, no precision claim — Q-A)', () => {
|
|
319
|
+
const result = scoreWindtunnel(baseInput({ positiveControlTargets: [{ pr: 10, targetRuleId: 'rule-a' }], firings: [] }));
|
|
320
|
+
expect(result.verdict).toBe('FAIL');
|
|
321
|
+
expect(result.precision).toBeNull();
|
|
322
|
+
});
|
|
323
|
+
it('precision is a real value on PASS (1.0) and on FP-FAIL (the breaching value, never null)', () => {
|
|
324
|
+
const tp = makeFiring('rule-a', 1, 'corpus');
|
|
325
|
+
const pass = scoreWindtunnel(baseInput({ firings: [tp], groundTruth: new Map([[tp.labelId, 'TP']]) }));
|
|
326
|
+
expect(pass.verdict).toBe('PASS');
|
|
327
|
+
expect(pass.precision).toBe(1.0);
|
|
328
|
+
// 1 FP + 1 TP → breaching precision 0.5, a real number (the evidence)
|
|
329
|
+
const fp = makeFiring('rule-a', 2, 'corpus', 'fp');
|
|
330
|
+
const tp2 = makeFiring('rule-b', 3, 'corpus', 'tp');
|
|
331
|
+
const fail = scoreWindtunnel(baseInput({
|
|
332
|
+
firings: [fp, tp2],
|
|
333
|
+
groundTruth: new Map([
|
|
334
|
+
[fp.labelId, 'FP'],
|
|
335
|
+
[tp2.labelId, 'TP'],
|
|
336
|
+
]),
|
|
337
|
+
}));
|
|
338
|
+
expect(fail.verdict).toBe('FAIL');
|
|
339
|
+
expect(fail.precision).toBe(0.5);
|
|
340
|
+
});
|
|
341
|
+
it('precision is 0 (a real all-FP measurement, never the not-computed sentinel) when every labeled firing is FP', () => {
|
|
342
|
+
// The ruling reserves 0 for a REAL all-FP value (precision = 0/N). A pure
|
|
343
|
+
// all-FP run must report precision === 0, distinct from the null sentinel
|
|
344
|
+
// — a regression that re-introduced 0-as-"not-computed" would break here.
|
|
345
|
+
const fpA = makeFiring('rule-a', 1, 'corpus', 'fp a');
|
|
346
|
+
const fpB = makeFiring('rule-b', 2, 'corpus', 'fp b');
|
|
347
|
+
const result = scoreWindtunnel(baseInput({
|
|
348
|
+
firings: [fpA, fpB],
|
|
349
|
+
mintedRuleIds: ['rule-a', 'rule-b'],
|
|
350
|
+
groundTruth: new Map([
|
|
351
|
+
[fpA.labelId, 'FP'],
|
|
352
|
+
[fpB.labelId, 'FP'],
|
|
353
|
+
]),
|
|
354
|
+
}));
|
|
355
|
+
expect(result.verdict).toBe('FAIL');
|
|
356
|
+
expect(result.precision).toBe(0);
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
// ─── #2189 ruling: diagnostics.survivorPrecision is separate ─
|
|
360
|
+
//
|
|
361
|
+
// CR's survivor-precision is informative ("culled 8/10, the 2 survivors were
|
|
362
|
+
// clean") but must NOT live on the certifying field. It is descriptive and
|
|
363
|
+
// distinct from `precision`.
|
|
364
|
+
describe('#2189: diagnostics.survivorPrecision is a separate descriptive field', () => {
|
|
365
|
+
it('carries the survivor ratio on a HONEST-NEGATIVE while certifying precision stays null', () => {
|
|
366
|
+
// Cull rule-a (over-threshold cull rate), survivor rule-b fires clean TP →
|
|
367
|
+
// survivor ratio 1.0, but the verdict is a no-claim HONEST-NEGATIVE so the
|
|
368
|
+
// certifying precision is null.
|
|
369
|
+
const culled = makeFiring('rule-a', 99, 'negative');
|
|
370
|
+
const survivorTp = makeFiring('rule-b', 1, 'corpus', 'clean');
|
|
371
|
+
const result = scoreWindtunnel(baseInput({
|
|
372
|
+
firings: [culled, survivorTp],
|
|
373
|
+
mintedRuleIds: ['rule-a', 'rule-b'],
|
|
374
|
+
groundTruth: new Map([[survivorTp.labelId, 'TP']]),
|
|
375
|
+
cullRateThreshold: 0.4, // 1/2 = 0.5 > 0.4 → cull-rate HONEST-NEGATIVE
|
|
376
|
+
}));
|
|
377
|
+
expect(result.verdict).toBe('HONEST-NEGATIVE');
|
|
378
|
+
expect(result.precision).toBeNull();
|
|
379
|
+
expect(result.diagnostics.survivorPrecision).toBe(1.0);
|
|
380
|
+
});
|
|
381
|
+
it('survivorPrecision is null when no surviving firing is labeled', () => {
|
|
382
|
+
const result = scoreWindtunnel(baseInput({ firings: [] }));
|
|
383
|
+
expect(result.diagnostics.survivorPrecision).toBeNull();
|
|
384
|
+
});
|
|
385
|
+
});
|
|
207
386
|
// ─── exposureTuple is always a 3-tuple (never collapsed) ─
|
|
208
387
|
describe('exposureTuple invariant', () => {
|
|
209
388
|
it('emits a 3-tuple, never collapsed to a product', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windtunnel-scorer.test.js","sourceRoot":"","sources":["../../src/spine/windtunnel-scorer.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"windtunnel-scorer.test.js","sourceRoot":"","sources":["../../src/spine/windtunnel-scorer.test.ts"],"names":[],"mappings":"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"}
|