mailwoman 6.3.0 → 6.5.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.
Files changed (52) hide show
  1. package/out/api-engine.d.ts.map +1 -1
  2. package/out/api-engine.js +21 -21
  3. package/out/api-engine.js.map +1 -1
  4. package/out/commands/corpus/shard/index.d.ts.map +1 -1
  5. package/out/commands/corpus/shard/index.js +5 -0
  6. package/out/commands/corpus/shard/index.js.map +1 -1
  7. package/out/commands/eval/error-analysis.d.ts.map +1 -1
  8. package/out/commands/eval/error-analysis.js +4 -0
  9. package/out/commands/eval/error-analysis.js.map +1 -1
  10. package/out/commands/eval/fragment-board.d.ts.map +1 -0
  11. package/out/commands/eval/fragment-board.js +42 -0
  12. package/out/commands/eval/fragment-board.js.map +1 -0
  13. package/out/commands/eval/oracle-k.d.ts.map +1 -0
  14. package/out/commands/eval/oracle-k.js +50 -0
  15. package/out/commands/eval/oracle-k.js.map +1 -0
  16. package/out/commands/eval/parity.d.ts.map +1 -1
  17. package/out/commands/eval/parity.js +6 -0
  18. package/out/commands/eval/parity.js.map +1 -1
  19. package/out/eval-harness/baseline-assert.d.ts.map +1 -0
  20. package/out/eval-harness/baseline-assert.js +189 -0
  21. package/out/eval-harness/baseline-assert.js.map +1 -0
  22. package/out/eval-harness/digit-board.d.ts.map +1 -0
  23. package/out/eval-harness/digit-board.js +131 -0
  24. package/out/eval-harness/digit-board.js.map +1 -0
  25. package/out/eval-harness/error-analysis.d.ts.map +1 -1
  26. package/out/eval-harness/error-analysis.js +6 -3
  27. package/out/eval-harness/error-analysis.js.map +1 -1
  28. package/out/eval-harness/fragment-board.d.ts.map +1 -0
  29. package/out/eval-harness/fragment-board.js +130 -0
  30. package/out/eval-harness/fragment-board.js.map +1 -0
  31. package/out/eval-harness/gauntlet/cases/regression.d.ts.map +1 -1
  32. package/out/eval-harness/gauntlet/cases/regression.js +68 -0
  33. package/out/eval-harness/gauntlet/cases/regression.js.map +1 -1
  34. package/out/eval-harness/gauntlet/metamorphic.d.ts.map +1 -1
  35. package/out/eval-harness/gauntlet/metamorphic.js +4 -0
  36. package/out/eval-harness/gauntlet/metamorphic.js.map +1 -1
  37. package/out/eval-harness/oracle-k.d.ts.map +1 -0
  38. package/out/eval-harness/oracle-k.js +305 -0
  39. package/out/eval-harness/oracle-k.js.map +1 -0
  40. package/out/eval-harness/parity-corpus.d.ts.map +1 -1
  41. package/out/eval-harness/parity-corpus.js +58 -1
  42. package/out/eval-harness/parity-corpus.js.map +1 -1
  43. package/out/eval-harness/promotion-gate-verdict.d.ts.map +1 -1
  44. package/out/eval-harness/promotion-gate-verdict.js +1 -1
  45. package/out/eval-harness/promotion-gate-verdict.js.map +1 -1
  46. package/out/eval-harness/promotion-gate.d.ts.map +1 -1
  47. package/out/eval-harness/promotion-gate.js +31 -10
  48. package/out/eval-harness/promotion-gate.js.map +1 -1
  49. package/out/geocode-core.d.ts.map +1 -1
  50. package/out/geocode-core.js +3 -1
  51. package/out/geocode-core.js.map +1 -1
  52. package/package.json +23 -23
@@ -1 +1 @@
1
- {"version":3,"file":"api-engine.d.ts","sourceRoot":"","sources":["../api-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,KAAK,EAIX,kBAAkB,EAGlB,MAAM,gBAAgB,CAAA;AAgLvB,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAsI9D"}
1
+ {"version":3,"file":"api-engine.d.ts","sourceRoot":"","sources":["../api-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,KAAK,EAIX,kBAAkB,EAGlB,MAAM,gBAAgB,CAAA;AA6KvB,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAwI9D"}
package/out/api-engine.js CHANGED
@@ -34,8 +34,6 @@ import { createDiagnosticReport } from "./utils/DebugOutputBuilder.js";
34
34
  import { createAddressParser } from "./utils/parser.js";
35
35
  /** Default per-state shard root + interp calibration — mirrors the express server's defaults (`GeocodeRouter.ts`). */
36
36
  const DATA_ROOT = mailwomanDataRoot();
37
- /** Bounded concurrency for `batch()`. Override with `MAILWOMAN_BATCH_CONCURRENCY`. */
38
- const BATCH_CONCURRENCY = Math.max(1, $public.MAILWOMAN_BATCH_CONCURRENCY);
39
37
  /** Same WOF-path resolution as the express `GeocodeRouter`/`HealthRouter` (env override, else the conventional shards). */
40
38
  function wofPaths() {
41
39
  const env = $public.MAILWOMAN_WOF_DB;
@@ -212,29 +210,31 @@ export async function createServeEngine() {
212
210
  // here. Ported from `GeocodeRouter`'s `singleHandler`. The cast mirrors `@mailwoman/api/routes.ts`'s established
213
211
  // "documented wire shape looser than the domain type" idiom — `GeocodeOutcome` is a deliberately loose passthrough.
214
212
  const geocode = async (address) => (await oneGeocode(deps, address));
215
- // Bounded-concurrency worker pool over a shared cursor — results land in input order; a thrown row is isolated to
216
- // its own `{ input, error }` slot. Rows are trimmed here (the route passes the raw validated array through). Ported
217
- // from `GeocodeRouter`'s `batchHandler`.
213
+ // Sequential loop — results land in input order; a thrown row is isolated to its own
214
+ // `{ input, error }` slot. Rows are trimmed here (the route passes the raw validated array through).
215
+ //
216
+ // This was a bounded-concurrency worker pool (`MAILWOMAN_BATCH_CONCURRENCY`, default 8) until
217
+ // 2026-07-16. The pool was measured at 1.00x — a geocode cannot overlap another in-process, because
218
+ // `onnxruntime-node`'s `session.run()` blocks the JS thread rather than releasing to the libuv pool,
219
+ // and `node:sqlite` reads are synchronous. The pool bought nothing but the appearance of tuning, so
220
+ // it's a plain loop now. To actually parallelize, cross a thread boundary — see
221
+ // `mailwoman/geocode-stream.ts`. Receipts: `docs/articles/plan/reference/performance.mdx`.
218
222
  const batch = async (addresses) => {
219
223
  const inputs = addresses.map((a) => a.trim());
220
224
  const results = new Array(inputs.length);
221
- let cursor = 0;
222
- const worker = async () => {
223
- for (let i = cursor++; i < inputs.length; i = cursor++) {
224
- const input = inputs[i];
225
- const t0 = performance.now();
226
- try {
227
- const result = await oneGeocode(deps, input);
228
- recordTimed(performance.now() - t0, result.resolution_tier);
229
- results[i] = result;
230
- }
231
- catch (err) {
232
- recordTimed(performance.now() - t0, "error");
233
- results[i] = { input, error: err instanceof Error ? err.message : String(err) };
234
- }
225
+ for (let i = 0; i < inputs.length; i++) {
226
+ const input = inputs[i];
227
+ const t0 = performance.now();
228
+ try {
229
+ const result = await oneGeocode(deps, input);
230
+ recordTimed(performance.now() - t0, result.resolution_tier);
231
+ results[i] = result;
235
232
  }
236
- };
237
- await Promise.all(Array.from({ length: Math.min(BATCH_CONCURRENCY, inputs.length) }, worker));
233
+ catch (err) {
234
+ recordTimed(performance.now() - t0, "error");
235
+ results[i] = { input, error: err instanceof Error ? err.message : String(err) };
236
+ }
237
+ }
238
238
  return { results };
239
239
  };
240
240
  // Metrics are the engine's own responsibility here — unlike `/v1/geocode`, the route wraps no try/catch around
@@ -1 +1 @@
1
- {"version":3,"file":"api-engine.js","sourceRoot":"","sources":["../api-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAUhC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAmC,MAAM,qBAAqB,CAAA;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EACN,cAAc,EAGd,kBAAkB,EAClB,aAAa,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvD,sHAAsH;AACtH,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAA;AAErC,sFAAsF;AACtF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAA;AAU1E,2HAA2H;AAC3H,SAAS,QAAQ;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAA;IAEpC,IAAI,GAAG;QACN,OAAO,GAAG;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,OAAO,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB;IAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;IAElE,OAAO;QACN,mGAAmG;QACnG,EAAE;QACF,sEAAsE;QACtE,gBAAgB,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QACxC,8FAA8F;QAC9F,YAAY,mBAAmB,EAAE;QACjC,EAAE;QACF,uFAAuF;QACvF,0FAA0F;QAC1F,wGAAwG;QACxG,EAAE;QACF,gDAAgD;KAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa;IACrB,MAAM,UAAU,GAAa,EAAE,CAAA;IAE/B,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC;QACJ,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,CAAA;IAC3G,CAAC;IAAC,MAAM,CAAC;QACR,qDAAqD;IACtD,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IAEvD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC;YACJ,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAA4B,CAAA;QACzF,CAAC;QAAC,MAAM,CAAC;YACR,qDAAqD;QACtD,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,MAAc;IAClD,IAAI,CAAC;QACJ,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,oBAAoB,CAAC,CAAA;QAErD,OAAO,WAAW,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9E,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,CAAA;IACT,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe;IACvB,MAAM,IAAI,GAAG,aAAa,EAAE,CAAA;IAE5B,OAAO;QACN,KAAK,EAAE,IAAI;YACV,CAAC,CAAC;gBACA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;gBAClB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;gBACtB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACzE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;aACtB;YACF,CAAC,CAAC,IAAI;QACP,IAAI,EAAE;YACL,SAAS,EAAE,SAAS;YACpB,yFAAyF;YACzF,QAAQ,EAAE,mBAAmB,CAAC,SAAS,CAAC;YACxC,6FAA6F;YAC7F,oGAAoG;YACpG,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChD,YAAY,EAAE,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;YAC7D,oBAAoB,EAAE,WAAW,CAAC,eAAe,EAAE,eAAe,CAAC;SACnE;KACD,CAAA;AACF,CAAC;AAED,yFAAyF;AACzF,SAAS,UAAU,CAAC,IAAuB,EAAE,OAAe;IAC3D,OAAO,cAAc,CAAC,OAAO,EAAE;QAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;QACvB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,iBAAiB,EAAE,yBAAyB;KAC5C,CAAC,CAAA;AACH,CAAC;AAED,4GAA4G;AAC5G,SAAS,iBAAiB,CACzB,IAAkC;IAElC,MAAM,GAAG,GAAiE,EAAE,CAAA;IAE5E,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC,CAAA;QAE/C,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,CAAC;IACF,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,GAAG,CAAA;AACX,CAAC;AAQD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACtC,kHAAkH;IAClH,gDAAgD;IAChD,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAA;IAEpC,MAAM,KAAK,GAAgC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAClE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;QACrC,MAAM,OAAO,GAAiB;YAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACpF,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAA;QAED,OAAO,OAAO,CAAA;IACf,CAAC,CAAA;IAED,qHAAqH;IACrH,yBAAyB;IACzB,MAAM,MAAM,GAAiC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAA;IAEpE,IAAI,SAA6C,CAAA;IACjD,IAAI,WAA4D,CAAA;IAEhE,IAAI,CAAC;QACJ,SAAS,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAC7C,WAAW,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAA;QAEnG,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAA;IACjG,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,mHAAmH;IACnH,mHAAmH;IACnH,gHAAgH;IAChH,qHAAqH;IACrH,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAA;IAE5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAA;QAErG,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAA;IACjG,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/F,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACxD,MAAM,IAAI,GAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAEhH,kHAAkH;IAClH,iHAAiH;IACjH,oHAAoH;IACpH,MAAM,OAAO,GAAkC,KAAK,EAAE,OAAO,EAAE,EAAE,CAChE,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAA8B,CAAA;IAE/D,kHAAkH;IAClH,oHAAoH;IACpH,yCAAyC;IACzC,MAAM,KAAK,GAAgC,KAAK,EAAE,SAAS,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAe,IAAI,KAAK,CAAW,MAAM,CAAC,MAAM,CAAC,CAAA;QAE9D,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;YACxC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC;gBACxD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;gBACxB,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;gBAE5B,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;oBAC5C,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;oBAC3D,OAAO,CAAC,CAAC,CAAC,GAAG,MAAmC,CAAA;gBACjD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;oBAC5C,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;gBAChF,CAAC;YACF,CAAC;QACF,CAAC,CAAA;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;QAE7F,OAAO,EAAE,OAAO,EAAE,CAAA;IACnB,CAAC,CAAA;IAED,+GAA+G;IAC/G,oHAAoH;IACpH,mEAAmE;IACnE,MAAM,WAAW,GAAsC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC9E,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,EAAE,CAAgB,CAAA;QACnD,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;YACrC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC9D,MAAM,IAAI,GAAgB;gBACzB,GAAG,YAAY;gBACf,cAAc,EAAE,YAAY,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;gBAClE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,aAAa;oBAChB,CAAC,CAAC;wBACA,aAAa;wBACb,8BAA8B,EAC7B,YAAY,CAAC,8BAA8B;4BAC3C,0BAA0B,CAAC,yBAAyB,EAAE,IAAI,CAAC;qBAC5D;oBACF,CAAC,CAAC,EAAE,CAAC;aACN,CAAA;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC5D,2FAA2F;YAC3F,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAChF,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,IAAI,OAAO,CAAC,CAAA;YAEtD,MAAM,OAAO,GAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;YAEtD,OAAO,OAAO,CAAA;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;YAC5C,MAAM,GAAG,CAAA;QACV,CAAC;IACF,CAAC,CAAA;IAED,iDAAiD;IACjD,MAAM,MAAM,GAAiC,KAAK,IAAI,EAAE;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QAErC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IACpC,CAAC,CAAA;IAED,OAAO;QACN,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QAC9D,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;KACvB,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"api-engine.js","sourceRoot":"","sources":["../api-engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/corpus/shard/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAgC,MAAM,2BAA2B,CAAA;AAE/F,iGAAiG;AACjG,eAAO,MAAM,SAAS,OAAO,CAAA;AAE7B,QAAA,MAAM,eAAe,6CAER,CAAA;AAEb,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;qBAqBjB,CAAA;AAEF,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAI5D,QAAA,MAAM,WAAW,EAAE,gBAAgB,CAAC,OAAO,aAAa,EAAE,OAAO,eAAe,CA0E/E,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/corpus/shard/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAgC,MAAM,2BAA2B,CAAA;AAE/F,iGAAiG;AACjG,eAAO,MAAM,SAAS,OAAO,CAAA;AAE7B,QAAA,MAAM,eAAe,6CAER,CAAA;AAEb,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;qBAyBjB,CAAA;AAEF,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAI5D,QAAA,MAAM,WAAW,EAAE,gBAAgB,CAAC,OAAO,aAAa,EAAE,OAAO,eAAe,CA2E/E,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -41,6 +41,10 @@ const OptionsSchema = zod.object({
41
41
  bareProb: zod.string().optional().describe("street-bare: P(bare street)"),
42
42
  hnProb: zod.string().optional().describe("street-bare: P(house number)"),
43
43
  communes: zod.string().optional().describe("fr-admin-split: communes source"),
44
+ excludeSurfaces: zod
45
+ .string()
46
+ .optional()
47
+ .describe("fr-fragment: REQUIRED — reserved street-surface list to exclude (the fragment board's eval set)"),
44
48
  multilocaleCount: zod.string().optional().describe("street-affix: multilocale row count"),
45
49
  });
46
50
  export { ArgumentsSchema as args, OptionsSchema as options };
@@ -85,6 +89,7 @@ const CorpusShard = ({ options, args }) => {
85
89
  bareProb: num(options.bareProb),
86
90
  hnProb: num(options.hnProb),
87
91
  communes: options.communes,
92
+ excludeSurfaces: options.excludeSurfaces,
88
93
  multilocaleCount: num(options.multilocaleCount),
89
94
  };
90
95
  console.error(`▸ shard recipe "${name}" [${recipe.mode}] seed=${seed} → ${options.output}`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../commands/corpus/shard/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../commands/corpus/shard/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-analysis.d.ts","sourceRoot":"","sources":["../../../commands/eval/error-analysis.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,wBAAwB,CAAA;AAG9E,eAAO,MAAM,WAAW,6EAA6E,CAAA;AAErG,QAAA,MAAM,aAAa;;;;;;;qBAUjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAU7D,CAAA;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"error-analysis.d.ts","sourceRoot":"","sources":["../../../commands/eval/error-analysis.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,wBAAwB,CAAA;AAG9E,eAAO,MAAM,WAAW,6EAA6E,CAAA;AAErG,QAAA,MAAM,aAAa;;;;;;;;qBAcjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAU7D,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -20,6 +20,10 @@ const OptionsSchema = zod.object({
20
20
  tokenizer: zod.string().optional().describe("Candidate tokenizer"),
21
21
  modelCard: zod.string().optional().describe("Candidate model-card"),
22
22
  postcodeRepair: zod.boolean().default(false).describe("Parse with postcode repair enabled"),
23
+ wordConsistency: zod
24
+ .boolean()
25
+ .default(false)
26
+ .describe("Parse with the production word-consistency heal (ship default since 2026-07-15)"),
23
27
  strict: zod
24
28
  .boolean()
25
29
  .default(true)
@@ -1 +1 @@
1
- {"version":3,"file":"error-analysis.js","sourceRoot":"","sources":["../../../commands/eval/error-analysis.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG,0EAA0E,CAAA;AAErG,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IACxG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC/F,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAClE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACnE,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC3F,MAAM,EAAE,GAAG;SACT,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,gFAAgF,CAAC;CAC5F,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,iBAAiB,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACjF,MAAM,KAAK,GAAG,cAAc,CAC3B,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAChC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CACtB,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,yDAAyD;IACzD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"error-analysis.js","sourceRoot":"","sources":["../../../commands/eval/error-analysis.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG,0EAA0E,CAAA;AAErG,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IACxG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC/F,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAClE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACnE,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC3F,eAAe,EAAE,GAAG;SAClB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,iFAAiF,CAAC;IAC7F,MAAM,EAAE,GAAG;SACT,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,gFAAgF,CAAC;CAC5F,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,iBAAiB,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACjF,MAAM,KAAK,GAAG,cAAc,CAC3B,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAChC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CACtB,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,yDAAyD;IACzD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment-board.d.ts","sourceRoot":"","sources":["../../../commands/eval/fragment-board.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,wBAAwB,CAAA;AAG9E,eAAO,MAAM,WAAW,kGAA6F,CAAA;AAErH,QAAA,MAAM,aAAa;;;;;qBAQjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAkB7D,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @copyright Sister Software
4
+ * @license AGPL-3.0
5
+ * @author Teffen Ellis, et al.
6
+ *
7
+ * `mailwoman eval fragment-board` — the locale fragment board (#727 stage-2, Tier 1c). Targeted
8
+ * failure classes with confidence intervals, sampled from BAN (Tier A). The second of the two
9
+ * standing boards; `eval parity` is the first (the global "do no harm" floor).
10
+ *
11
+ * A change ships when parity HOLDS and this board MOVES. Neither is a verdict alone.
12
+ * Informational (always exits 0) — the standing floors stay on `eval parity`.
13
+ */
14
+ import { Text } from "ink";
15
+ import zod from "zod";
16
+ import { useCommandTask } from "../../cli-kit/index.js";
17
+ import { runFragmentBoard } from "../../eval-harness/fragment-board.js";
18
+ export const description = "FR fragment board — bare-street / particle / homonym / date-name classes with CIs (#727)";
19
+ const OptionsSchema = zod.object({
20
+ locale: zod.string().optional().default("en-US").describe("Weights package locale (default en-US)"),
21
+ weightsCache: zod
22
+ .string()
23
+ .optional()
24
+ .describe("Package-shaped candidate weights dir (mirrors eval parity --weights-cache)"),
25
+ fixtures: zod.string().optional().describe("Fixture JSONL override (default: the BAN FR fragment board)"),
26
+ klass: zod.string().optional().describe("Score only one class (e.g. bare-street) for a fast loop"),
27
+ });
28
+ export { OptionsSchema as options };
29
+ const EvalFragmentBoard = ({ options }) => {
30
+ const state = useCommandTask(async () => (await runFragmentBoard({
31
+ locale: options.locale,
32
+ weightsCacheRoot: options.weightsCache,
33
+ fixturesPath: options.fixtures,
34
+ klass: options.klass,
35
+ })).exitCode, (exitCode) => exitCode);
36
+ if (state.status === "error")
37
+ return _jsxs(Text, { color: "red", children: ["\u2717 ", state.message] });
38
+ // The runner narrates its table on stdout.
39
+ return null;
40
+ };
41
+ export default EvalFragmentBoard;
42
+ //# sourceMappingURL=fragment-board.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment-board.js","sourceRoot":"","sources":["../../../commands/eval/fragment-board.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG,0FAA0F,CAAA;AAErH,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACnG,YAAY,EAAE,GAAG;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4EAA4E,CAAC;IACxF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IACzG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;CAClG,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,iBAAiB,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACjF,MAAM,KAAK,GAAG,cAAc,CAC3B,KAAK,IAAI,EAAE,CACV,CACC,MAAM,gBAAgB,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB,EAAE,OAAO,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,QAAQ;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;KACpB,CAAC,CACF,CAAC,QAAQ,EACX,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CACtB,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,2CAA2C;IAC3C,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oracle-k.d.ts","sourceRoot":"","sources":["../../../commands/eval/oracle-k.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,wBAAwB,CAAA;AAG9E,eAAO,MAAM,WAAW,gGAA2F,CAAA;AAEnH,QAAA,MAAM,aAAa;;;;;;;qBAgBjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,WAAW,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAoBvD,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @copyright Sister Software
4
+ * @license AGPL-3.0
5
+ * @author Teffen Ellis, et al.
6
+ *
7
+ * `mailwoman eval oracle-k` — oracle-recall@k over segment-level k-best decodes (#727 stage-2
8
+ * instrumentation). Measures the k-best rerank headroom the top-1 gates can't see: how often the
9
+ * gold value appears ANYWHERE in the top-k whole-segmentation hypotheses decoded from the current
10
+ * model's emissions. Informational (always exits 0) — the standing floors stay on `eval parity`.
11
+ */
12
+ import { Text } from "ink";
13
+ import zod from "zod";
14
+ import { useCommandTask } from "../../cli-kit/index.js";
15
+ import { runOracleK } from "../../eval-harness/oracle-k.js";
16
+ export const description = "Oracle-recall@k — k-best segment-decode headroom over the parity corpus (#727 stage-2)";
17
+ const OptionsSchema = zod.object({
18
+ locale: zod.string().optional().default("en-US").describe("Weights package locale (default en-US)"),
19
+ weightsCache: zod
20
+ .string()
21
+ .optional()
22
+ .describe("Package-shaped candidate weights dir (mirrors eval parity --weights-cache)"),
23
+ fixtures: zod.string().optional().describe("Fixture JSONL override (default: the ratified triaged parity corpus)"),
24
+ goldenDir: zod
25
+ .string()
26
+ .optional()
27
+ .describe("Golden dev dir for the transition-bigram estimate (default data/eval/golden/v0.1.2/dev)"),
28
+ k: zod.coerce.number().int().min(1).max(50).optional().default(10).describe("Hypotheses kept per input"),
29
+ assertBaseline: zod
30
+ .string()
31
+ .optional()
32
+ .describe("Registered baseline profile (v264, v301) — refuse to report if the instruments read wrong"),
33
+ });
34
+ export { OptionsSchema as options };
35
+ const EvalOracleK = ({ options }) => {
36
+ const state = useCommandTask(async () => (await runOracleK({
37
+ locale: options.locale,
38
+ weightsCacheRoot: options.weightsCache,
39
+ fixturesPath: options.fixtures,
40
+ goldenDir: options.goldenDir,
41
+ k: options.k,
42
+ assertBaseline: options.assertBaseline,
43
+ })).exitCode, (exitCode) => exitCode);
44
+ if (state.status === "error")
45
+ return _jsxs(Text, { color: "red", children: ["\u2717 ", state.message] });
46
+ // The runner narrates its table on stdout.
47
+ return null;
48
+ };
49
+ export default EvalOracleK;
50
+ //# sourceMappingURL=oracle-k.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oracle-k.js","sourceRoot":"","sources":["../../../commands/eval/oracle-k.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAG,wFAAwF,CAAA;AAEnH,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACnG,YAAY,EAAE,GAAG;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4EAA4E,CAAC;IACxF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IAClH,SAAS,EAAE,GAAG;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yFAAyF,CAAC;IACrG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxG,cAAc,EAAE,GAAG;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2FAA2F,CAAC;CACvG,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,WAAW,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,cAAc,CAC3B,KAAK,IAAI,EAAE,CACV,CACC,MAAM,UAAU,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB,EAAE,OAAO,CAAC,YAAY;QACtC,YAAY,EAAE,OAAO,CAAC,QAAQ;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,cAAc,EAAE,OAAO,CAAC,cAAc;KACtC,CAAC,CACF,CAAC,QAAQ,EACX,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CACtB,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,2CAA2C;IAC3C,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"parity.d.ts","sourceRoot":"","sources":["../../../commands/eval/parity.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,wBAAwB,CAAA;AAG9E,eAAO,MAAM,WAAW,mFAA8E,CAAA;AAEtG,QAAA,MAAM,aAAa;;;;;;;;;qBAgCjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,UAAU,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAsBtD,CAAA;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"parity.d.ts","sourceRoot":"","sources":["../../../commands/eval/parity.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,wBAAwB,CAAA;AAG9E,eAAO,MAAM,WAAW,mFAA8E,CAAA;AAEtG,QAAA,MAAM,aAAa;;;;;;;;;;qBAuCjB,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,QAAA,MAAM,UAAU,EAAE,gBAAgB,CAAC,OAAO,aAAa,CAuBtD,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -35,6 +35,11 @@ const OptionsSchema = zod.object({
35
35
  .optional()
36
36
  .default(false)
37
37
  .describe("Probe 0: decode-time street-morphology emission bias (libpostal street_types, all locales)"),
38
+ wordConsistency: zod
39
+ .boolean()
40
+ .optional()
41
+ .default(true)
42
+ .describe("Ship-config word-consistency heal (default ON per the 2026-07-15 gate revision; --no-word-consistency for pre-heal baselines)"),
38
43
  failing: zod.coerce
39
44
  .number()
40
45
  .int()
@@ -54,6 +59,7 @@ const EvalParity = ({ options }) => {
54
59
  fixturesPath: options.fixtures,
55
60
  weightsCacheRoot: options.weightsCache,
56
61
  streetMorphology: options.streetMorphology,
62
+ wordConsistency: options.wordConsistency,
57
63
  failing: options.failing,
58
64
  })).exitCode, (exitCode) => exitCode);
59
65
  if (state.status === "error")
@@ -1 +1 @@
1
- {"version":3,"file":"parity.js","sourceRoot":"","sources":["../../../commands/eval/parity.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,2EAA2E,CAAA;AAEtG,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACnG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC9F,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC7F,QAAQ,EAAE,GAAG;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACR,2HAA2H,CAC3H;IACF,YAAY,EAAE,GAAG;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACR,wGAAwG;QACvG,uGAAuG;QACvG,wCAAwC,CACzC;IACF,gBAAgB,EAAE,GAAG;SACnB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,4FAA4F,CAAC;IACxG,OAAO,EAAE,GAAG,CAAC,MAAM;SACjB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACjE,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,UAAU,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,cAAc,CAC3B,KAAK,IAAI,EAAE,CACV,CACC,MAAM,aAAa,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,KAAK;QACxB,aAAa,EAAE,OAAO,CAAC,SAAS;QAChC,aAAa,EAAE,OAAO,CAAC,IAAI;QAC3B,YAAY,EAAE,OAAO,CAAC,QAAQ;QAC9B,gBAAgB,EAAE,OAAO,CAAC,YAAY;QACtC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;KACxB,CAAC,CACF,CAAC,QAAQ,EACX,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CACtB,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,sDAAsD;IACtD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"parity.js","sourceRoot":"","sources":["../../../commands/eval/parity.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,2EAA2E,CAAA;AAEtG,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACnG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC9F,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC7F,QAAQ,EAAE,GAAG;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACR,2HAA2H,CAC3H;IACF,YAAY,EAAE,GAAG;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACR,wGAAwG;QACvG,uGAAuG;QACvG,wCAAwC,CACzC;IACF,gBAAgB,EAAE,GAAG;SACnB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,4FAA4F,CAAC;IACxG,eAAe,EAAE,GAAG;SAClB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACR,+HAA+H,CAC/H;IACF,OAAO,EAAE,GAAG,CAAC,MAAM;SACjB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACjE,CAAC,CAAA;AAEF,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAA;AAEnC,MAAM,UAAU,GAA2C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC1E,MAAM,KAAK,GAAG,cAAc,CAC3B,KAAK,IAAI,EAAE,CACV,CACC,MAAM,aAAa,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,KAAK;QACxB,aAAa,EAAE,OAAO,CAAC,SAAS;QAChC,aAAa,EAAE,OAAO,CAAC,IAAI;QAC3B,YAAY,EAAE,OAAO,CAAC,QAAQ;QAC9B,gBAAgB,EAAE,OAAO,CAAC,YAAY;QACtC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,OAAO,EAAE,OAAO,CAAC,OAAO;KACxB,CAAC,CACF,CAAC,QAAQ,EACX,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CACtB,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,KAAK,CAAC,OAAO,IAAQ,CAAA;IAE/E,sDAAsD;IACtD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline-assert.d.ts","sourceRoot":"","sources":["../../eval-harness/baseline-assert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAKH,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IAClC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAA;IACV,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;IACb,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAA;IACrB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;CACZ;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAQD,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED,uCAAuC;AACvC,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,gFAAgF;IAChF,IAAI,EAAE,WAAW,GAAG,cAAc,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,kBAAkB,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,OAAO,CAAA;IACX,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAA;CACf;AAyBD,+EAA+E;AAC/E,wBAAgB,aAAa,IAAI,kBAAkB,EAAE,CAEpD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEvE;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAW5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,eAAe,CAY7F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,eAAe,CAoDpF;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;gBAErB,OAAO,EAAE,eAAe;CAKpC;AAED,mGAAmG;AACnG,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA6C9D;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAIrE"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * Harness baseline assertion — an eval refuses to produce a report when its instruments read
7
+ * wrong (#727 stage-2, Tier 0).
8
+ *
9
+ * This is NOT a promotion gate. `promotion-gate.ts` asks "is this model good enough to ship";
10
+ * this asks "is this harness measuring what it thinks it is". A gate spec's floors are one-sided
11
+ * (higher is better, fail below); a baseline is TWO-SIDED — a metric 40% ABOVE its registered
12
+ * value is as loud a signal as 40% below, because the usual cause is that the number changed
13
+ * meaning, not that the model got better. That two-sidedness is the whole point; a one-sided
14
+ * check would have passed both incidents below.
15
+ *
16
+ * Why it exists — two verdicts nearly went out wrong in a single arc, both from a harness
17
+ * reporting confidently on a broken instrument:
18
+ *
19
+ * - Phase 1 read street token@1 = 0.348 against a v264 known-good of 0.573 (-39%). Two bugs:
20
+ * a missing `map_location` in `from_pretrained()` and piece-concatenation welding words
21
+ * ("5thAve"). The number was reported before the cause was found.
22
+ * - Phase 4a measured a resolver rerank while the resolver reached street tier 0/267 times —
23
+ * no street shards were wired. The instrument was dark and the report read as a finding.
24
+ * The verdict was VOID; see `2026-07-16-phase4a-rerank-invalid-measurement.md`.
25
+ *
26
+ * A registered baseline covers BOTH shapes, because instrument-health preconditions register the
27
+ * same way headline metrics do — `paris.resolver.street_evidence_rate@ban-street-centroids` is a
28
+ * row like any other, and a dark resolver reading 0.000 deviates from it past its band.
29
+ *
30
+ * Usage — declare what the harness depends on, pass observations, let it refuse:
31
+ *
32
+ * ```ts
33
+ * const verdict = assertBaselines([
34
+ * { id: "parity.street.token_at_1@v264", observed: streetTokenAt1 },
35
+ * { id: "paris.resolver.street_evidence_rate@ban-street-centroids", observed: withStreet / total },
36
+ * ])
37
+ * if (!verdict.ok) throw new BaselineDeviationError(verdict)
38
+ * // …or simply: guardReport([...]) — which throws on your behalf.
39
+ * ```
40
+ *
41
+ * A harness with several readings should use a PROFILE instead (`assertProfile("v264", {…})`),
42
+ * which maps its own metric keys to ids in one declared place — see `baselines.json`.
43
+ *
44
+ * Registering a baseline is a deliberate act: `baselines.json` demands a commit, a command, and
45
+ * a note saying what the number means. A baseline you can't reproduce from its own row isn't a
46
+ * baseline, it's a rumor. When a number legitimately moves (new fixture, new tokenizer, a real
47
+ * model change), RE-REGISTER it with a fresh row and a reason — never widen the tolerance to make
48
+ * a deviation quiet. That's the silent-gate-drift failure wearing a different hat.
49
+ */
50
+ import { existsSync, readFileSync } from "node:fs";
51
+ import { fileURLToPath } from "node:url";
52
+ let cachedFile;
53
+ /**
54
+ * `new URL`-relative for the source tree, with a compiled-tree fallback — tsc does not emit readFileSync'd JSON into
55
+ * `out/`, so `mailwoman/out/eval-harness/` reads the source-tree copy at `mailwoman/eval-harness/baselines.json`. Same
56
+ * bridge as `resolveGateSpecPath`.
57
+ */
58
+ function resolveBaselineFilePath() {
59
+ const sibling = new URL("./baselines.json", import.meta.url);
60
+ if (existsSync(sibling))
61
+ return fileURLToPath(sibling);
62
+ return fileURLToPath(new URL("../../eval-harness/baselines.json", import.meta.url));
63
+ }
64
+ function loadBaselineFile() {
65
+ if (!cachedFile) {
66
+ cachedFile = JSON.parse(readFileSync(resolveBaselineFilePath(), "utf8"));
67
+ }
68
+ return cachedFile;
69
+ }
70
+ /** Every registered baseline, for tooling that wants to list or audit them. */
71
+ export function listBaselines() {
72
+ return loadBaselineFile().baselines;
73
+ }
74
+ export function findBaseline(id) {
75
+ return loadBaselineFile().baselines.find((b) => b.id === id);
76
+ }
77
+ export function listProfiles() {
78
+ return Object.keys(loadBaselineFile().profiles);
79
+ }
80
+ /** Look up a profile, refusing loudly on a typo rather than silently checking nothing. */
81
+ export function resolveProfile(name) {
82
+ const profile = loadBaselineFile().profiles[name];
83
+ if (!profile) {
84
+ throw new Error(`Unknown baseline profile "${name}". Registered: ${listProfiles().join(", ") || "(none)"}. ` +
85
+ `Add one to mailwoman/eval-harness/baselines.json, or omit the flag for an unregistered candidate.`);
86
+ }
87
+ return profile;
88
+ }
89
+ /**
90
+ * Check a harness's readings against a profile. Metric keys the profile doesn't map are ignored — a profile declares
91
+ * what it can vouch for, not everything a harness happens to compute.
92
+ */
93
+ export function assertProfile(name, readings) {
94
+ const profile = resolveProfile(name);
95
+ const observations = [];
96
+ for (const [metricKey, id] of Object.entries(profile.observe)) {
97
+ const observed = readings[metricKey];
98
+ if (observed === undefined)
99
+ continue;
100
+ observations.push({ id, observed });
101
+ }
102
+ return assertBaselines(observations);
103
+ }
104
+ /**
105
+ * Check observations against the registry. An unregistered id is a violation, not a pass — an unverifiable reading is
106
+ * exactly the state both incidents were in.
107
+ */
108
+ export function assertBaselines(observations) {
109
+ const file = loadBaselineFile();
110
+ const violations = [];
111
+ for (const observation of observations) {
112
+ const baseline = findBaseline(observation.id);
113
+ if (!baseline) {
114
+ violations.push({ id: observation.id, kind: "unregistered", observed: observation.observed });
115
+ continue;
116
+ }
117
+ const tolerance = baseline.tolerance_rel ?? file.default_tolerance_rel;
118
+ // An absolute tolerance wins when declared. Small-count metrics (a street-evidence rate of
119
+ // 1/63) have a meaningless relative band — one fixture moves it 100% — so those rows opt out
120
+ // of relative checking entirely. A zero-valued row MUST declare one; relative is undefined.
121
+ if (baseline.tolerance_abs !== undefined || baseline.value === 0) {
122
+ const toleranceAbs = baseline.tolerance_abs ?? 0;
123
+ const drift = Math.abs(observation.observed - baseline.value);
124
+ if (drift > toleranceAbs) {
125
+ violations.push({
126
+ id: observation.id,
127
+ kind: "deviation",
128
+ observed: observation.observed,
129
+ expected: baseline.value,
130
+ tolerance: toleranceAbs,
131
+ baseline,
132
+ });
133
+ }
134
+ continue;
135
+ }
136
+ const deviationRel = (observation.observed - baseline.value) / Math.abs(baseline.value);
137
+ // Two-sided on purpose: a metric that jumps is a metric that probably changed meaning.
138
+ if (Math.abs(deviationRel) > tolerance) {
139
+ violations.push({
140
+ id: observation.id,
141
+ kind: "deviation",
142
+ observed: observation.observed,
143
+ expected: baseline.value,
144
+ deviationRel,
145
+ tolerance,
146
+ baseline,
147
+ });
148
+ }
149
+ }
150
+ return { ok: violations.length === 0, violations, checked: observations.length };
151
+ }
152
+ export class BaselineDeviationError extends Error {
153
+ verdict;
154
+ constructor(verdict) {
155
+ super(formatVerdict(verdict));
156
+ this.name = "BaselineDeviationError";
157
+ this.verdict = verdict;
158
+ }
159
+ }
160
+ /** Render a verdict for a terminal — the message a refusing harness prints instead of a report. */
161
+ export function formatVerdict(verdict) {
162
+ if (verdict.ok)
163
+ return `baseline check: ${verdict.checked} observation(s) within tolerance`;
164
+ const lines = [
165
+ `REFUSING TO REPORT — ${verdict.violations.length} of ${verdict.checked} baseline check(s) failed.`,
166
+ "",
167
+ "A harness reading this far from its registered baseline is measuring something other than",
168
+ "what it claims. Find the instrument bug before trusting any number in this run.",
169
+ "",
170
+ ];
171
+ for (const violation of verdict.violations) {
172
+ if (violation.kind === "unregistered") {
173
+ lines.push(` ✗ ${violation.id}`, ` observed ${violation.observed}`, ` NO REGISTERED BASELINE — this reading cannot be verified. Register it in`, ` mailwoman/eval-harness/baselines.json (commit + command + note required).`, "");
174
+ continue;
175
+ }
176
+ const percent = violation.deviationRel === undefined ? "n/a" : `${(violation.deviationRel * 100).toFixed(1)}%`;
177
+ const direction = (violation.deviationRel ?? 0) < 0 ? "LOW" : "HIGH";
178
+ lines.push(` ✗ ${violation.id} reads ${direction}`, ` observed ${violation.observed}`, ` expected ${violation.expected} (±${((violation.tolerance ?? 0) * 100).toFixed(0)}%)`, ` deviation ${percent}`, ` baseline registered ${violation.baseline?.registered_at} @ ${violation.baseline?.commit}`, ` meaning ${violation.baseline?.note}`, ` reproduce ${violation.baseline?.command}`, "");
179
+ }
180
+ lines.push("If the number legitimately moved (new fixture, new tokenizer, a real model change),", "RE-REGISTER the baseline with a new row and a reason. Do not widen tolerance_rel to make", "this quiet — that is silent gate drift.");
181
+ return lines.join("\n");
182
+ }
183
+ /** Assert, or throw. The one-liner a harness puts before it prints anything. */
184
+ export function guardReport(observations) {
185
+ const verdict = assertBaselines(observations);
186
+ if (!verdict.ok)
187
+ throw new BaselineDeviationError(verdict);
188
+ }
189
+ //# sourceMappingURL=baseline-assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline-assert.js","sourceRoot":"","sources":["../../eval-harness/baseline-assert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AA8ExC,IAAI,UAAoC,CAAA;AAExC;;;;GAIG;AACH,SAAS,uBAAuB;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAE5D,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;IAEtD,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACpF,CAAC;AAED,SAAS,gBAAgB;IACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,MAAM,CAAC,CAAiB,CAAA;IACzF,CAAC;IAED,OAAO,UAAU,CAAA;AAClB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa;IAC5B,OAAO,gBAAgB,EAAE,CAAC,SAAS,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACtC,OAAO,gBAAgB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,MAAM,UAAU,YAAY;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;AAChD,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACd,6BAA6B,IAAI,kBAAkB,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI;YAC3F,mGAAmG,CACpG,CAAA;IACF,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgC;IAC3E,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,YAAY,GAA0B,EAAE,CAAA;IAE9C,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAEpC,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAQ;QACpC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,eAAe,CAAC,YAAY,CAAC,CAAA;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,YAAmC;IAClE,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAA;IAC/B,MAAM,UAAU,GAAwB,EAAE,CAAA;IAE1C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC7F,SAAQ;QACT,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,qBAAqB,CAAA;QAEtE,2FAA2F;QAC3F,6FAA6F;QAC7F,4FAA4F;QAC5F,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,IAAI,CAAC,CAAA;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;YAE7D,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC;oBACf,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,QAAQ,EAAE,QAAQ,CAAC,KAAK;oBACxB,SAAS,EAAE,YAAY;oBACvB,QAAQ;iBACR,CAAC,CAAA;YACH,CAAC;YAED,SAAQ;QACT,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEvF,uFAAuF;QACvF,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,SAAS,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,QAAQ,EAAE,QAAQ,CAAC,KAAK;gBACxB,YAAY;gBACZ,SAAS;gBACT,QAAQ;aACR,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAA;AACjF,CAAC;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACvC,OAAO,CAAiB;IAEjC,YAAY,OAAwB;QACnC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED,mGAAmG;AACnG,MAAM,UAAU,aAAa,CAAC,OAAwB;IACrD,IAAI,OAAO,CAAC,EAAE;QAAE,OAAO,mBAAmB,OAAO,CAAC,OAAO,kCAAkC,CAAA;IAE3F,MAAM,KAAK,GAAG;QACb,wBAAwB,OAAO,CAAC,UAAU,CAAC,MAAM,OAAO,OAAO,CAAC,OAAO,4BAA4B;QACnG,EAAE;QACF,2FAA2F;QAC3F,iFAAiF;QACjF,EAAE;KACF,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CACT,OAAO,SAAS,CAAC,EAAE,EAAE,EACrB,mBAAmB,SAAS,CAAC,QAAQ,EAAE,EACvC,gFAAgF,EAChF,iFAAiF,EACjF,EAAE,CACF,CAAA;YACD,SAAQ;QACT,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;QAC9G,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;QAEpE,KAAK,CAAC,IAAI,CACT,OAAO,SAAS,CAAC,EAAE,WAAW,SAAS,EAAE,EACzC,mBAAmB,SAAS,CAAC,QAAQ,EAAE,EACvC,mBAAmB,SAAS,CAAC,QAAQ,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAC7F,mBAAmB,OAAO,EAAE,EAC5B,8BAA8B,SAAS,CAAC,QAAQ,EAAE,aAAa,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EACjG,mBAAmB,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,EAC7C,mBAAmB,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAChD,EAAE,CACF,CAAA;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CACT,qFAAqF,EACrF,0FAA0F,EAC1F,yCAAyC,CACzC,CAAA;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,WAAW,CAAC,YAAmC;IAC9D,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAE7C,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC3D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digit-board.d.ts","sourceRoot":"","sources":["../../eval-harness/digit-board.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAUH,eAAO,MAAM,oBAAoB,oDAAoD,CAAA;AAErF,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAChC,6GAA6G;IAC7G,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,MAAM,CAAA;CAChB;AA6BD,wBAAsB,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmF/F"}