jev-recipes 0.9.12 → 0.9.13

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.
@@ -50,7 +50,7 @@ export const recipeMetadata = [
50
50
  experimental: true,
51
51
  measurement: {
52
52
  model: 'jev-1.13.0',
53
- date: '2026-10-04T18:15:49.490Z',
53
+ date: '2026-10-04T20:42:48.259Z',
54
54
  operation: 'live',
55
55
  replayedAt: null,
56
56
  scoringRevision: 2,
@@ -94,7 +94,7 @@ export const recipeMetadata = [
94
94
  experimental: true,
95
95
  measurement: {
96
96
  model: 'jev-1.13.0',
97
- date: '2026-10-04T18:15:52.868Z',
97
+ date: '2026-10-04T20:42:51.224Z',
98
98
  operation: 'live',
99
99
  replayedAt: null,
100
100
  scoringRevision: 2,
@@ -319,7 +319,7 @@ export const recipeMetadata = [
319
319
  experimental: true,
320
320
  measurement: {
321
321
  model: 'jev-1.13.0',
322
- date: '2026-10-04T18:15:54.294Z',
322
+ date: '2026-10-04T20:42:52.472Z',
323
323
  operation: 'live',
324
324
  replayedAt: null,
325
325
  scoringRevision: 2,
@@ -601,7 +601,7 @@ export const recipeMetadata = [
601
601
  experimental: true,
602
602
  measurement: {
603
603
  model: 'jev-1.13.0',
604
- date: '2026-10-04T18:15:55.707Z',
604
+ date: '2026-10-04T20:42:53.964Z',
605
605
  operation: 'live',
606
606
  replayedAt: null,
607
607
  scoringRevision: 2,
@@ -669,7 +669,7 @@ export const recipeMetadata = [
669
669
  experimental: true,
670
670
  measurement: {
671
671
  model: 'jev-1.13.0',
672
- date: '2026-10-04T18:15:57.971Z',
672
+ date: '2026-10-04T20:42:56.097Z',
673
673
  operation: 'live',
674
674
  replayedAt: null,
675
675
  scoringRevision: 2,
@@ -930,7 +930,7 @@ export const recipeMetadata = [
930
930
  experimental: true,
931
931
  measurement: {
932
932
  model: 'jev-1.13.0',
933
- date: '2026-10-04T18:15:59.898Z',
933
+ date: '2026-10-04T20:42:57.724Z',
934
934
  operation: 'live',
935
935
  replayedAt: null,
936
936
  scoringRevision: 2,
@@ -992,7 +992,7 @@ export const recipeMetadata = [
992
992
  experimental: true,
993
993
  measurement: {
994
994
  model: 'jev-1.13.0',
995
- date: '2026-10-04T18:16:00.877Z',
995
+ date: '2026-10-04T20:42:58.654Z',
996
996
  operation: 'live',
997
997
  replayedAt: null,
998
998
  scoringRevision: 2,
@@ -1115,7 +1115,7 @@ export const recipeMetadata = [
1115
1115
  experimental: true,
1116
1116
  measurement: {
1117
1117
  model: 'jev-1.13.0',
1118
- date: '2026-10-04T18:16:01.826Z',
1118
+ date: '2026-10-04T20:42:59.711Z',
1119
1119
  operation: 'live',
1120
1120
  replayedAt: null,
1121
1121
  scoringRevision: 2,
@@ -1155,14 +1155,14 @@ export const recipeMetadata = [
1155
1155
  experimental: true,
1156
1156
  measurement: {
1157
1157
  model: 'jev-1.13.0',
1158
- date: '2026-10-04T18:16:03.355Z',
1158
+ date: '2026-10-04T20:43:01.233Z',
1159
1159
  operation: 'live',
1160
1160
  replayedAt: null,
1161
1161
  scoringRevision: 2,
1162
1162
  split: 'development',
1163
1163
  cases: 50,
1164
- ready: 29,
1165
- reviewRate: 0.42,
1164
+ ready: 30,
1165
+ reviewRate: 0.4,
1166
1166
  readyAccuracy: 1,
1167
1167
  failed: 0,
1168
1168
  provenance: [
@@ -1342,14 +1342,14 @@ export const recipeMetadata = [
1342
1342
  experimental: true,
1343
1343
  measurement: {
1344
1344
  model: 'jev-1.13.0',
1345
- date: '2026-10-04T18:16:04.886Z',
1345
+ date: '2026-10-04T20:43:02.671Z',
1346
1346
  operation: 'live',
1347
1347
  replayedAt: null,
1348
1348
  scoringRevision: 2,
1349
1349
  split: 'development',
1350
1350
  cases: 144,
1351
- ready: 92,
1352
- reviewRate: 0.361,
1351
+ ready: 91,
1352
+ reviewRate: 0.368,
1353
1353
  readyAccuracy: 1,
1354
1354
  failed: 0,
1355
1355
  provenance: [
@@ -1501,7 +1501,7 @@ export const recipeMetadata = [
1501
1501
  experimental: true,
1502
1502
  measurement: {
1503
1503
  model: 'jev-1.13.0',
1504
- date: '2026-10-04T18:16:09.083Z',
1504
+ date: '2026-10-04T20:43:06.812Z',
1505
1505
  operation: 'live',
1506
1506
  replayedAt: null,
1507
1507
  scoringRevision: 2,
@@ -1600,14 +1600,14 @@ export const recipeMetadata = [
1600
1600
  experimental: true,
1601
1601
  measurement: {
1602
1602
  model: 'jev-1.13.0',
1603
- date: '2026-10-04T18:16:10.820Z',
1603
+ date: '2026-10-04T20:43:08.518Z',
1604
1604
  operation: 'live',
1605
1605
  replayedAt: null,
1606
1606
  scoringRevision: 2,
1607
1607
  split: 'development',
1608
1608
  cases: 136,
1609
- ready: 84,
1610
- reviewRate: 0.382,
1609
+ ready: 81,
1610
+ reviewRate: 0.404,
1611
1611
  readyAccuracy: 1,
1612
1612
  failed: 0,
1613
1613
  provenance: [
@@ -1841,14 +1841,14 @@ export const recipeMetadata = [
1841
1841
  experimental: true,
1842
1842
  measurement: {
1843
1843
  model: 'jev-1.13.0',
1844
- date: '2026-10-04T18:16:14.817Z',
1844
+ date: '2026-10-04T20:43:12.519Z',
1845
1845
  operation: 'live',
1846
1846
  replayedAt: null,
1847
1847
  scoringRevision: 2,
1848
1848
  split: 'development',
1849
1849
  cases: 43,
1850
- ready: 34,
1851
- reviewRate: 0.209,
1850
+ ready: 35,
1851
+ reviewRate: 0.186,
1852
1852
  readyAccuracy: 0.971,
1853
1853
  failed: 0,
1854
1854
  provenance: [
@@ -2040,7 +2040,7 @@ export const recipeMetadata = [
2040
2040
  experimental: true,
2041
2041
  measurement: {
2042
2042
  model: 'jev-1.13.0',
2043
- date: '2026-10-04T18:16:16.162Z',
2043
+ date: '2026-10-04T20:43:14.302Z',
2044
2044
  operation: 'live',
2045
2045
  replayedAt: null,
2046
2046
  scoringRevision: 2,
@@ -2339,7 +2339,7 @@ export const recipeMetadata = [
2339
2339
  experimental: true,
2340
2340
  measurement: {
2341
2341
  model: 'jev-1.13.0',
2342
- date: '2026-10-04T18:16:17.997Z',
2342
+ date: '2026-10-04T20:43:16.085Z',
2343
2343
  operation: 'live',
2344
2344
  replayedAt: null,
2345
2345
  scoringRevision: 2,
@@ -2486,14 +2486,14 @@ export const recipeMetadata = [
2486
2486
  experimental: true,
2487
2487
  measurement: {
2488
2488
  model: 'jev-1.13.0',
2489
- date: '2026-10-04T18:16:19.851Z',
2489
+ date: '2026-10-04T20:43:17.929Z',
2490
2490
  operation: 'live',
2491
2491
  replayedAt: null,
2492
2492
  scoringRevision: 2,
2493
2493
  split: 'development',
2494
2494
  cases: 60,
2495
- ready: 45,
2496
- reviewRate: 0.25,
2495
+ ready: 44,
2496
+ reviewRate: 0.267,
2497
2497
  readyAccuracy: 1,
2498
2498
  failed: 0,
2499
2499
  provenance: [
@@ -2578,7 +2578,7 @@ export const recipeMetadata = [
2578
2578
  experimental: true,
2579
2579
  measurement: {
2580
2580
  model: 'jev-1.13.0',
2581
- date: '2026-10-04T18:16:21.678Z',
2581
+ date: '2026-10-04T20:43:19.595Z',
2582
2582
  operation: 'live',
2583
2583
  replayedAt: null,
2584
2584
  scoringRevision: 2,
@@ -2631,7 +2631,7 @@ export const recipeMetadata = [
2631
2631
  experimental: true,
2632
2632
  measurement: {
2633
2633
  model: 'jev-1.13.0',
2634
- date: '2026-10-04T18:16:23.554Z',
2634
+ date: '2026-10-04T20:43:21.226Z',
2635
2635
  operation: 'live',
2636
2636
  replayedAt: null,
2637
2637
  scoringRevision: 2,
@@ -2833,7 +2833,7 @@ export const recipeMetadata = [
2833
2833
  experimental: true,
2834
2834
  measurement: {
2835
2835
  model: 'jev-1.13.0',
2836
- date: '2026-10-04T18:16:25.286Z',
2836
+ date: '2026-10-04T20:43:22.858Z',
2837
2837
  operation: 'live',
2838
2838
  replayedAt: null,
2839
2839
  scoringRevision: 2,
@@ -2916,7 +2916,7 @@ export const recipeMetadata = [
2916
2916
  experimental: true,
2917
2917
  measurement: {
2918
2918
  model: 'jev-1.13.0',
2919
- date: '2026-10-04T18:16:26.623Z',
2919
+ date: '2026-10-04T20:43:24.162Z',
2920
2920
  operation: 'live',
2921
2921
  replayedAt: null,
2922
2922
  scoringRevision: 2,
@@ -3049,7 +3049,7 @@ export const recipeMetadata = [
3049
3049
  experimental: true,
3050
3050
  measurement: {
3051
3051
  model: 'jev-1.13.0',
3052
- date: '2026-10-04T18:16:28.363Z',
3052
+ date: '2026-10-04T20:43:25.936Z',
3053
3053
  operation: 'live',
3054
3054
  replayedAt: null,
3055
3055
  scoringRevision: 2,
@@ -3782,7 +3782,7 @@ export const recipeMetadata = [
3782
3782
  experimental: true,
3783
3783
  measurement: {
3784
3784
  model: 'jev-1.13.0',
3785
- date: '2026-10-04T18:16:29.618Z',
3785
+ date: '2026-10-04T20:43:27.171Z',
3786
3786
  operation: 'live',
3787
3787
  replayedAt: null,
3788
3788
  scoringRevision: 2,
@@ -4222,14 +4222,14 @@ export const recipeMetadata = [
4222
4222
  experimental: true,
4223
4223
  measurement: {
4224
4224
  model: 'jev-1.13.0',
4225
- date: '2026-10-04T18:16:32.849Z',
4225
+ date: '2026-10-04T20:43:30.092Z',
4226
4226
  operation: 'live',
4227
4227
  replayedAt: null,
4228
4228
  scoringRevision: 2,
4229
4229
  split: 'development',
4230
4230
  cases: 112,
4231
- ready: 54,
4232
- reviewRate: 0.518,
4231
+ ready: 55,
4232
+ reviewRate: 0.509,
4233
4233
  readyAccuracy: 1,
4234
4234
  failed: 0,
4235
4235
  provenance: [
@@ -4518,7 +4518,7 @@ export const recipeMetadata = [
4518
4518
  experimental: true,
4519
4519
  measurement: {
4520
4520
  model: 'jev-1.13.0',
4521
- date: '2026-10-04T18:16:36.170Z',
4521
+ date: '2026-10-04T20:43:33.245Z',
4522
4522
  operation: 'live',
4523
4523
  replayedAt: null,
4524
4524
  scoringRevision: 2,
@@ -4770,7 +4770,7 @@ export const recipeMetadata = [
4770
4770
  experimental: true,
4771
4771
  measurement: {
4772
4772
  model: 'jev-1.13.0',
4773
- date: '2026-10-04T18:16:37.444Z',
4773
+ date: '2026-10-04T20:43:34.650Z',
4774
4774
  operation: 'live',
4775
4775
  replayedAt: null,
4776
4776
  scoringRevision: 2,
@@ -4818,14 +4818,14 @@ export const recipeMetadata = [
4818
4818
  experimental: true,
4819
4819
  measurement: {
4820
4820
  model: 'jev-1.13.0',
4821
- date: '2026-10-04T18:16:40.383Z',
4821
+ date: '2026-10-04T20:43:37.293Z',
4822
4822
  operation: 'live',
4823
4823
  replayedAt: null,
4824
4824
  scoringRevision: 2,
4825
4825
  split: 'development',
4826
4826
  cases: 102,
4827
- ready: 94,
4828
- reviewRate: 0.078,
4827
+ ready: 93,
4828
+ reviewRate: 0.088,
4829
4829
  readyAccuracy: 1,
4830
4830
  failed: 0,
4831
4831
  provenance: [
@@ -5210,7 +5210,7 @@ export const recipeMetadata = [
5210
5210
  experimental: true,
5211
5211
  measurement: {
5212
5212
  model: 'jev-1.13.0',
5213
- date: '2026-10-04T18:16:43.177Z',
5213
+ date: '2026-10-04T20:43:40.159Z',
5214
5214
  operation: 'live',
5215
5215
  replayedAt: null,
5216
5216
  scoringRevision: 2,
@@ -5271,7 +5271,7 @@ export const recipeMetadata = [
5271
5271
  experimental: true,
5272
5272
  measurement: {
5273
5273
  model: 'jev-1.13.0',
5274
- date: '2026-10-04T18:16:44.778Z',
5274
+ date: '2026-10-04T20:43:41.765Z',
5275
5275
  operation: 'live',
5276
5276
  replayedAt: null,
5277
5277
  scoringRevision: 2,
@@ -5332,7 +5332,7 @@ export const recipeMetadata = [
5332
5332
  experimental: true,
5333
5333
  measurement: {
5334
5334
  model: 'jev-1.13.0',
5335
- date: '2026-10-04T18:16:46.560Z',
5335
+ date: '2026-10-04T20:43:43.607Z',
5336
5336
  operation: 'live',
5337
5337
  replayedAt: null,
5338
5338
  scoringRevision: 2,
@@ -5453,7 +5453,7 @@ export const recipeMetadata = [
5453
5453
  experimental: true,
5454
5454
  measurement: {
5455
5455
  model: 'jev-1.13.0',
5456
- date: '2026-10-04T18:16:47.876Z',
5456
+ date: '2026-10-04T20:43:44.923Z',
5457
5457
  operation: 'live',
5458
5458
  replayedAt: null,
5459
5459
  scoringRevision: 2,
@@ -5644,14 +5644,14 @@ export const recipeMetadata = [
5644
5644
  experimental: true,
5645
5645
  measurement: {
5646
5646
  model: 'jev-1.13.0',
5647
- date: '2026-10-04T18:16:49.661Z',
5647
+ date: '2026-10-04T20:43:46.575Z',
5648
5648
  operation: 'live',
5649
5649
  replayedAt: null,
5650
5650
  scoringRevision: 2,
5651
5651
  split: 'development',
5652
5652
  cases: 110,
5653
- ready: 72,
5654
- reviewRate: 0.345,
5653
+ ready: 73,
5654
+ reviewRate: 0.336,
5655
5655
  readyAccuracy: 1,
5656
5656
  failed: 0,
5657
5657
  provenance: [
@@ -5697,15 +5697,15 @@ export const recipeMetadata = [
5697
5697
  experimental: true,
5698
5698
  measurement: {
5699
5699
  model: 'jev-1.13.0',
5700
- date: '2026-10-04T18:16:52.787Z',
5700
+ date: '2026-10-04T20:43:49.817Z',
5701
5701
  operation: 'live',
5702
5702
  replayedAt: null,
5703
5703
  scoringRevision: 2,
5704
5704
  split: 'development',
5705
5705
  cases: 87,
5706
- ready: 49,
5707
- reviewRate: 0.437,
5708
- readyAccuracy: 0.98,
5706
+ ready: 47,
5707
+ reviewRate: 0.46,
5708
+ readyAccuracy: 0.979,
5709
5709
  failed: 0,
5710
5710
  provenance: [
5711
5711
  {
@@ -6329,7 +6329,7 @@ export const recipeMetadata = [
6329
6329
  experimental: true,
6330
6330
  measurement: {
6331
6331
  model: 'jev-1.13.0',
6332
- date: '2026-10-04T18:16:55.531Z',
6332
+ date: '2026-10-04T20:43:52.490Z',
6333
6333
  operation: 'live',
6334
6334
  replayedAt: null,
6335
6335
  scoringRevision: 2,
@@ -6337,7 +6337,7 @@ export const recipeMetadata = [
6337
6337
  cases: 126,
6338
6338
  ready: 92,
6339
6339
  reviewRate: 0.27,
6340
- readyAccuracy: 0.957,
6340
+ readyAccuracy: 0.967,
6341
6341
  failed: 0,
6342
6342
  provenance: [
6343
6343
  {
@@ -6497,7 +6497,7 @@ export const recipeMetadata = [
6497
6497
  experimental: true,
6498
6498
  measurement: {
6499
6499
  model: 'jev-1.13.0',
6500
- date: '2026-10-04T18:16:59.405Z',
6500
+ date: '2026-10-04T20:43:55.923Z',
6501
6501
  operation: 'live',
6502
6502
  replayedAt: null,
6503
6503
  scoringRevision: 2,
@@ -6719,14 +6719,14 @@ export const recipeMetadata = [
6719
6719
  experimental: true,
6720
6720
  measurement: {
6721
6721
  model: 'jev-1.13.0',
6722
- date: '2026-10-04T18:17:02.531Z',
6722
+ date: '2026-10-04T20:43:58.961Z',
6723
6723
  operation: 'live',
6724
6724
  replayedAt: null,
6725
6725
  scoringRevision: 2,
6726
6726
  split: 'development',
6727
6727
  cases: 50,
6728
- ready: 44,
6729
- reviewRate: 0.12,
6728
+ ready: 43,
6729
+ reviewRate: 0.14,
6730
6730
  readyAccuracy: 1,
6731
6731
  failed: 0,
6732
6732
  provenance: [
@@ -6763,15 +6763,15 @@ export const recipeMetadata = [
6763
6763
  experimental: true,
6764
6764
  measurement: {
6765
6765
  model: 'jev-1.13.0',
6766
- date: '2026-10-04T18:17:04.220Z',
6766
+ date: '2026-10-04T20:44:00.345Z',
6767
6767
  operation: 'live',
6768
6768
  replayedAt: null,
6769
6769
  scoringRevision: 2,
6770
6770
  split: 'development',
6771
6771
  cases: 44,
6772
- ready: 35,
6773
- reviewRate: 0.205,
6774
- readyAccuracy: 0.971,
6772
+ ready: 33,
6773
+ reviewRate: 0.25,
6774
+ readyAccuracy: 0.97,
6775
6775
  failed: 0,
6776
6776
  provenance: [
6777
6777
  { method: 'unspecified', source: 'Not recorded by the dataset author.', cases: 44 },
@@ -5,5 +5,6 @@ export declare function comparableDecision(value: unknown, recipe: string): unkn
5
5
  export declare function matchesExpected(actual: unknown, expected: unknown, recipe: string): boolean;
6
6
  export declare function isReady(result: unknown, recipe: string): boolean;
7
7
  export declare function isMetadataPath(schema: Schema, segments: string[]): boolean;
8
+ export declare function gatedTwinFor(schema: Schema, segments: string[]): string | undefined;
8
9
  export declare function schemaAtPath(schema: Schema, segments: string[]): Schema | undefined;
9
10
  export {};
@@ -76,6 +76,19 @@ export function isMetadataPath(schema, segments) {
76
76
  const child = schemaAtPath(schema, [first]);
77
77
  return child !== undefined && isMetadataPath(child, rest);
78
78
  }
79
+ export function gatedTwinFor(schema, segments) {
80
+ const name = segments.at(-1);
81
+ if (name === undefined || !name.length)
82
+ return undefined;
83
+ const twin = `suggested${name[0].toUpperCase()}${name.slice(1)}`;
84
+ const parent = schemaAtPath(schema, segments.slice(0, -1));
85
+ return parent !== undefined && hasProperty(parent, twin) ? twin : undefined;
86
+ }
87
+ function hasProperty(schema, name) {
88
+ if (Array.isArray(schema.anyOf))
89
+ return schema.anyOf.some((branch) => isRecord(branch) && hasProperty(branch, name));
90
+ return isRecord(schema.properties) && Object.hasOwn(schema.properties, name);
91
+ }
79
92
  export function schemaAtPath(schema, segments) {
80
93
  if (!segments.length)
81
94
  return schema;
@@ -3,7 +3,7 @@ import { readFile } from 'node:fs/promises';
3
3
  import { z } from 'zod';
4
4
  import { recipeNameSchema } from '../catalog/schema.js';
5
5
  import { isRecord } from './decisions.js';
6
- import { comparableDecision, isMetadataPath, schemaAtPath, resultSchemaFor } from './comparison.js';
6
+ import { comparableDecision, gatedTwinFor, isMetadataPath, schemaAtPath, resultSchemaFor, } from './comparison.js';
7
7
  import { evaluationCaseSchema } from './schema.js';
8
8
  export async function loadEvaluationRecipe(name) {
9
9
  const id = recipeNameSchema.parse(name);
@@ -45,9 +45,13 @@ export function validateCases(recipe, values) {
45
45
  }
46
46
  recipe.inputSchema.parse(entry.input);
47
47
  for (const [path, expected] of Object.entries(entry.expected)) {
48
- if (isMetadataPath(resultSchema, path.split('.')))
48
+ const segments = path.split('.');
49
+ if (isMetadataPath(resultSchema, segments))
49
50
  throw new Error(`${entry.id}: expected must name an ungated decision, not ${path}.`);
50
- const field = schemaAtPath(resultSchema, path.split('.'));
51
+ const twin = gatedTwinFor(resultSchema, segments);
52
+ if (twin)
53
+ throw new Error(`${entry.id}: ${path} is gated by the review policy; label ${twin} instead.`);
54
+ const field = schemaAtPath(resultSchema, segments);
51
55
  if (!field)
52
56
  throw new Error(`${entry.id}: unknown result field ${path}.`);
53
57
  if (!acceptsValue(field, expected))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jev-recipes",
3
- "version": "0.9.12",
3
+ "version": "0.9.13",
4
4
  "description": "248 small Jev decisions for JavaScript and TypeScript: route, rerank, gate, grade, compare, and label text for agents, RAG, support, code review, and music. Each returns a typed result with explicit uncertainty. Plug into Vercel AI SDK or LangChain agents, import one recipe, or run the CLI with JSON from any language.",
5
5
  "type": "module",
6
6
  "license": "MIT",