jev-recipes 0.3.0 → 0.4.1

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 (98) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +139 -39
  3. package/dist/catalog/generated/details/attribution-match.json +55 -0
  4. package/dist/catalog/generated/details/choose-action.json +102 -0
  5. package/dist/catalog/generated/details/claim-stance.json +55 -0
  6. package/dist/catalog/generated/details/constraint-strength.json +48 -0
  7. package/dist/catalog/generated/details/evaluation-mention.json +48 -0
  8. package/dist/catalog/generated/details/evidence-independence.json +52 -0
  9. package/dist/catalog/generated/details/instruction-conflict.json +52 -0
  10. package/dist/catalog/generated/details/question-leading.json +52 -0
  11. package/dist/catalog/generated/details/requirement-testability.json +45 -0
  12. package/dist/catalog/generated/details/response-refusal.json +55 -0
  13. package/dist/catalog/generated/details/take-turn.json +68 -0
  14. package/dist/catalog/generated/details/task-dependency.json +61 -0
  15. package/dist/catalog/generated/details/task-duplicate.json +49 -0
  16. package/dist/catalog/generated/details/uncertainty-expression.json +55 -0
  17. package/dist/catalog/generated/loaders.js +14 -0
  18. package/dist/catalog/generated/metadata.js +459 -5
  19. package/dist/catalog/generated/names.d.ts +1 -1
  20. package/dist/catalog/generated/names.js +14 -0
  21. package/dist/catalog/schema.d.ts +14 -0
  22. package/dist/cli/schema.d.ts +42 -0
  23. package/dist/recipes/attribution-match/demo.json +27 -0
  24. package/dist/recipes/attribution-match/index.d.ts +5 -0
  25. package/dist/recipes/attribution-match/index.js +16 -0
  26. package/dist/recipes/attribution-match/schema.d.ts +40 -0
  27. package/dist/recipes/attribution-match/schema.js +20 -0
  28. package/dist/recipes/choose-action/demo.json +32 -0
  29. package/dist/recipes/choose-action/index.d.ts +5 -0
  30. package/dist/recipes/choose-action/index.js +8 -0
  31. package/dist/recipes/choose-action/schema.d.ts +42 -0
  32. package/dist/recipes/choose-action/schema.js +19 -0
  33. package/dist/recipes/claim-stance/demo.json +27 -0
  34. package/dist/recipes/claim-stance/index.d.ts +5 -0
  35. package/dist/recipes/claim-stance/index.js +17 -0
  36. package/dist/recipes/claim-stance/schema.d.ts +43 -0
  37. package/dist/recipes/claim-stance/schema.js +23 -0
  38. package/dist/recipes/constraint-strength/demo.json +25 -0
  39. package/dist/recipes/constraint-strength/index.d.ts +5 -0
  40. package/dist/recipes/constraint-strength/index.js +16 -0
  41. package/dist/recipes/constraint-strength/schema.d.ts +39 -0
  42. package/dist/recipes/constraint-strength/schema.js +21 -0
  43. package/dist/recipes/evaluation-mention/demo.json +25 -0
  44. package/dist/recipes/evaluation-mention/index.d.ts +5 -0
  45. package/dist/recipes/evaluation-mention/index.js +16 -0
  46. package/dist/recipes/evaluation-mention/schema.d.ts +39 -0
  47. package/dist/recipes/evaluation-mention/schema.js +21 -0
  48. package/dist/recipes/evidence-conflict/schema.d.ts +3 -3
  49. package/dist/recipes/evidence-independence/demo.json +26 -0
  50. package/dist/recipes/evidence-independence/index.d.ts +5 -0
  51. package/dist/recipes/evidence-independence/index.js +15 -0
  52. package/dist/recipes/evidence-independence/schema.d.ts +37 -0
  53. package/dist/recipes/evidence-independence/schema.js +19 -0
  54. package/dist/recipes/instruction-conflict/demo.json +27 -0
  55. package/dist/recipes/instruction-conflict/index.d.ts +5 -0
  56. package/dist/recipes/instruction-conflict/index.js +16 -0
  57. package/dist/recipes/instruction-conflict/schema.d.ts +40 -0
  58. package/dist/recipes/instruction-conflict/schema.js +22 -0
  59. package/dist/recipes/preference-kind/schema.d.ts +3 -3
  60. package/dist/recipes/question-leading/demo.json +26 -0
  61. package/dist/recipes/question-leading/index.d.ts +5 -0
  62. package/dist/recipes/question-leading/index.js +16 -0
  63. package/dist/recipes/question-leading/schema.d.ts +40 -0
  64. package/dist/recipes/question-leading/schema.js +17 -0
  65. package/dist/recipes/requirement-testability/demo.json +24 -0
  66. package/dist/recipes/requirement-testability/index.d.ts +5 -0
  67. package/dist/recipes/requirement-testability/index.js +15 -0
  68. package/dist/recipes/requirement-testability/schema.d.ts +36 -0
  69. package/dist/recipes/requirement-testability/schema.js +16 -0
  70. package/dist/recipes/response-refusal/demo.json +28 -0
  71. package/dist/recipes/response-refusal/index.d.ts +5 -0
  72. package/dist/recipes/response-refusal/index.js +18 -0
  73. package/dist/recipes/response-refusal/schema.d.ts +46 -0
  74. package/dist/recipes/response-refusal/schema.js +24 -0
  75. package/dist/recipes/take-turn/demo.json +22 -0
  76. package/dist/recipes/take-turn/index.d.ts +5 -0
  77. package/dist/recipes/take-turn/index.js +16 -0
  78. package/dist/recipes/take-turn/schema.d.ts +44 -0
  79. package/dist/recipes/take-turn/schema.js +23 -0
  80. package/dist/recipes/task-dependency/demo.json +28 -0
  81. package/dist/recipes/task-dependency/index.d.ts +5 -0
  82. package/dist/recipes/task-dependency/index.js +17 -0
  83. package/dist/recipes/task-dependency/schema.d.ts +43 -0
  84. package/dist/recipes/task-dependency/schema.js +23 -0
  85. package/dist/recipes/task-duplicate/demo.json +27 -0
  86. package/dist/recipes/task-duplicate/index.d.ts +5 -0
  87. package/dist/recipes/task-duplicate/index.js +16 -0
  88. package/dist/recipes/task-duplicate/schema.d.ts +40 -0
  89. package/dist/recipes/task-duplicate/schema.js +22 -0
  90. package/dist/recipes/topic-shift/schema.d.ts +3 -3
  91. package/dist/recipes/uncertainty-expression/demo.json +27 -0
  92. package/dist/recipes/uncertainty-expression/index.d.ts +5 -0
  93. package/dist/recipes/uncertainty-expression/index.js +17 -0
  94. package/dist/recipes/uncertainty-expression/schema.d.ts +43 -0
  95. package/dist/recipes/uncertainty-expression/schema.js +23 -0
  96. package/dist/src/index.d.ts +28 -0
  97. package/dist/src/index.js +14 -0
  98. package/package.json +57 -1
@@ -21,7 +21,7 @@ export const recipeMetadata = [
21
21
  title: 'Check answer consistency',
22
22
  description: 'Do firstStatement and secondStatement make compatible claims about the same subject and circumstances?',
23
23
  category: 'answer-quality',
24
- tags: ['answer-quality', 'answer', 'consistency', 'rag', 'evidence'],
24
+ tags: ['answer-quality', 'answer', 'consistency', 'rag', 'evidence', 'alignment-research'],
25
25
  limitations: [
26
26
  'Checks semantic consistency between two statements. Exact numeric and date comparisons belong in code.',
27
27
  ],
@@ -137,6 +137,41 @@ export const recipeMetadata = [
137
137
  },
138
138
  ],
139
139
  },
140
+ {
141
+ id: 'attribution-match',
142
+ title: "Check a statement's attributed source",
143
+ description: 'Check whether supplied source text attributes a statement to the claimed speaker or source.',
144
+ category: 'knowledge',
145
+ tags: [
146
+ 'attribution',
147
+ 'speaker',
148
+ 'who said',
149
+ 'source ownership',
150
+ 'quotation',
151
+ 'annotation',
152
+ 'alignment-research',
153
+ ],
154
+ limitations: [
155
+ 'Checks only the supplied attribution record. It does not authenticate a source or establish original authorship, truth, or copyright ownership.',
156
+ 'Missing statements and unresolved speaker identities require review; absence from an excerpt is not proof of false attribution.',
157
+ 'Nested quotation and endorsement are distinct. Include enough surrounding text to establish who is speaking.',
158
+ ],
159
+ useWhen: 'You need to check who said a statement in a transcript or source excerpt, separately from whether it is true.',
160
+ related: [
161
+ {
162
+ id: 'citation-match',
163
+ reason: 'Use citation-match to check which passages support a claim, rather than who made it.',
164
+ },
165
+ {
166
+ id: 'claim-stance',
167
+ reason: "Use claim-stance to label a response's own position toward a claim, rather than verifying a named attribution.",
168
+ },
169
+ {
170
+ id: 'reference-resolve',
171
+ reason: 'Use reference-resolve to select the referent of an ambiguous expression from supplied candidates.',
172
+ },
173
+ ],
174
+ },
140
175
  {
141
176
  id: 'audience-fit',
142
177
  title: 'Check audience fit',
@@ -190,7 +225,7 @@ export const recipeMetadata = [
190
225
  title: 'Check certainty wording',
191
226
  description: 'Does the certainty expressed in draft match assessment?',
192
227
  category: 'answer-quality',
193
- tags: ['answer-quality', 'certainty', 'match', 'rag', 'evidence'],
228
+ tags: ['answer-quality', 'certainty', 'match', 'rag', 'evidence', 'alignment-research'],
194
229
  limitations: [
195
230
  'Compares wording with a supplied assessment. It does not calibrate probabilities or establish the assessment itself.',
196
231
  ],
@@ -216,6 +251,42 @@ export const recipeMetadata = [
216
251
  },
217
252
  ],
218
253
  },
254
+ {
255
+ id: 'choose-action',
256
+ title: 'Choose a game action from supplied candidates',
257
+ description: 'Recommend one eligible game action against a supplied goal, using rules, current state, and optional player history.',
258
+ category: 'workflow',
259
+ tags: [
260
+ 'gameplay',
261
+ 'game',
262
+ 'choose action',
263
+ 'best move',
264
+ 'strategy',
265
+ 'players',
266
+ 'turn',
267
+ 'simulation',
268
+ ],
269
+ limitations: [
270
+ 'Produces a model judgment, not a game solver, legality proof, or guarantee of optimal play. Use an authoritative game engine for exact legality checks.',
271
+ 'Uses only supplied player-visible information. It does not fetch state, simulate future turns, or execute the chosen action.',
272
+ 'History may be incomplete. Supply decision-critical facts in the current environment; ties or unresolved constraints require review.',
273
+ ],
274
+ useWhen: 'You need to choose the next game action from a list using the current environment, game rules, and previous player actions.',
275
+ related: [
276
+ {
277
+ id: 'take-turn',
278
+ reason: 'Use take-turn to assess whether the player has an opportunity to act now before selecting an action.',
279
+ },
280
+ {
281
+ id: 'tool-fit',
282
+ reason: "Use tool-fit to check one tool's capability for a task; it does not compare game actions under a goal and game rules.",
283
+ },
284
+ {
285
+ id: 'step-progress',
286
+ reason: 'Use step-progress to assess an observed outcome after a move; this recipe recommends a candidate before execution.',
287
+ },
288
+ ],
289
+ },
219
290
  {
220
291
  id: 'citation-match',
221
292
  title: 'Match claims to citations',
@@ -249,6 +320,40 @@ export const recipeMetadata = [
249
320
  },
250
321
  ],
251
322
  },
323
+ {
324
+ id: 'claim-stance',
325
+ title: "Label a response's stance toward a claim",
326
+ description: 'Label whether a response affirms, denies, mixes positions on, or does not address a supplied claim.',
327
+ category: 'answer-quality',
328
+ tags: [
329
+ 'claim',
330
+ 'stance',
331
+ 'agreement',
332
+ 'disagreement',
333
+ 'annotation',
334
+ 'sycophancy',
335
+ 'alignment-research',
336
+ ],
337
+ limitations: [
338
+ 'Labels only the expressed stance toward one supplied claim. It does not infer beliefs, intention, deception, or alignment from text.',
339
+ 'A single agreement label does not establish sycophancy. Research use requires controlled comparisons and independent validation of the labels.',
340
+ ],
341
+ useWhen: 'You need to label whether a response agrees or disagrees with a claim, including in AI alignment research.',
342
+ related: [
343
+ {
344
+ id: 'verify',
345
+ reason: 'Use verify to check whether a claim is supported by evidence; stance does not establish truth.',
346
+ },
347
+ {
348
+ id: 'answer-consistency',
349
+ reason: 'Use answer-consistency to compare the compatibility of two statements.',
350
+ },
351
+ {
352
+ id: 'draft-compare',
353
+ reason: 'Use draft-compare for a preference between two responses under a supplied rubric.',
354
+ },
355
+ ],
356
+ },
252
357
  {
253
358
  id: 'clarify',
254
359
  title: 'Check required information',
@@ -284,6 +389,42 @@ export const recipeMetadata = [
284
389
  },
285
390
  ],
286
391
  },
392
+ {
393
+ id: 'constraint-strength',
394
+ title: 'Distinguish requirements from preferences',
395
+ description: 'Classify a stated constraint as required, preferred, optional, or unclear.',
396
+ category: 'conversation',
397
+ tags: [
398
+ 'constraint',
399
+ 'requirement',
400
+ 'preference',
401
+ 'optional',
402
+ 'mandatory',
403
+ 'must',
404
+ 'should',
405
+ 'hard',
406
+ 'soft',
407
+ ],
408
+ limitations: [
409
+ 'Reports how the supplied wording presents a constraint; it does not establish authority, consent, or permission.',
410
+ 'Evaluate one constraint at a time. Split mixed requirements in caller code before comparing their strength.',
411
+ ],
412
+ useWhen: 'You need to distinguish a hard requirement from a preference or an optional suggestion.',
413
+ related: [
414
+ {
415
+ id: 'preference-kind',
416
+ reason: 'Use preference-kind to distinguish lasting preferences from facts and temporary requests.',
417
+ },
418
+ {
419
+ id: 'instruction-fit',
420
+ reason: 'Use instruction-fit to decide whether the constraint applies in the current circumstances.',
421
+ },
422
+ {
423
+ id: 'instruction-conflict',
424
+ reason: 'Use instruction-conflict to compare the requirements of two instructions.',
425
+ },
426
+ ],
427
+ },
287
428
  {
288
429
  id: 'context-role',
289
430
  title: 'Identify a passage role',
@@ -336,7 +477,7 @@ export const recipeMetadata = [
336
477
  title: 'Compare two drafts',
337
478
  description: 'Which draft better satisfies request under rubric?',
338
479
  category: 'answer-quality',
339
- tags: ['answer-quality', 'draft', 'compare', 'rag', 'evidence'],
480
+ tags: ['answer-quality', 'draft', 'compare', 'rag', 'evidence', 'alignment-research'],
340
481
  limitations: [
341
482
  'Makes a relative judgment against your rubric. A preferred draft can still contain unsupported facts.',
342
483
  ],
@@ -348,6 +489,41 @@ export const recipeMetadata = [
348
489
  },
349
490
  ],
350
491
  },
492
+ {
493
+ id: 'evaluation-mention',
494
+ title: 'Label explicit mentions of model evaluation',
495
+ description: 'Distinguish a response referring to its own evaluation from general evaluation discussion or no such mention.',
496
+ category: 'answer-quality',
497
+ tags: [
498
+ 'evaluation',
499
+ 'being tested',
500
+ 'benchmark',
501
+ 'graded',
502
+ 'self reference',
503
+ 'annotation',
504
+ 'alignment-research',
505
+ ],
506
+ limitations: [
507
+ 'Detects explicit wording only. It does not infer hidden evaluation awareness, strategic behavior, or internal goals.',
508
+ 'Self-reference includes uncertainty and denial. It does not establish that evaluation is occurring or that the model believes it is.',
509
+ 'A missing mention does not show absence of awareness. Quoted or hypothetical first-person text needs careful attribution.',
510
+ ],
511
+ useWhen: 'You need to find explicit mentions of being tested, graded, or evaluated in saved model responses.',
512
+ related: [
513
+ {
514
+ id: 'claim-stance',
515
+ reason: 'Use claim-stance to distinguish affirming from denying a specific evaluation claim.',
516
+ },
517
+ {
518
+ id: 'context-role',
519
+ reason: 'Use context-role to classify the role of supplied text rather than mentions inside a response.',
520
+ },
521
+ {
522
+ id: 'uncertainty-expression',
523
+ reason: 'Use uncertainty-expression to label how certain the response sounds about a specific evaluation claim.',
524
+ },
525
+ ],
526
+ },
351
527
  {
352
528
  id: 'evidence-conflict',
353
529
  title: 'Compare evidence for conflicts',
@@ -365,6 +541,41 @@ export const recipeMetadata = [
365
541
  },
366
542
  ],
367
543
  },
544
+ {
545
+ id: 'evidence-independence',
546
+ title: 'Compare the origins of two pieces of evidence',
547
+ description: 'Check whether supplied provenance shows shared or separate evidence origins for one claim, or leaves their relationship unresolved.',
548
+ category: 'retrieval',
549
+ tags: [
550
+ 'evidence independence',
551
+ 'provenance',
552
+ 'shared source',
553
+ 'corroboration',
554
+ 'origin',
555
+ 'annotation',
556
+ 'alignment-research',
557
+ ],
558
+ limitations: [
559
+ 'Evaluates supplied provenance descriptions only. It does not fetch sources, verify provenance, or discover hidden dependencies.',
560
+ 'Separate origins are not a guarantee of statistical independence, reliability, or truth.',
561
+ 'The claim scopes material overlap. Shared background unrelated to the claim is not sufficient for a shared-origin label.',
562
+ ],
563
+ useWhen: 'You need to check whether two reports rely on the same underlying source before treating them as corroboration.',
564
+ related: [
565
+ {
566
+ id: 'passage-duplicate',
567
+ reason: 'Use passage-duplicate to compare information overlap in passages, not the origins of their evidence.',
568
+ },
569
+ {
570
+ id: 'attribution-match',
571
+ reason: 'Use attribution-match to check a named statement attribution against a source excerpt.',
572
+ },
573
+ {
574
+ id: 'evidence-conflict',
575
+ reason: 'Use evidence-conflict to compare what sources say; conflicting reports can still share an origin.',
576
+ },
577
+ ],
578
+ },
368
579
  {
369
580
  id: 'evidence-novelty',
370
581
  title: 'Check new evidence',
@@ -533,6 +744,28 @@ export const recipeMetadata = [
533
744
  useWhen: 'You need to connect a support ticket to a supplied known incident.',
534
745
  related: [{ id: 'ticket-match', reason: 'Use ticket-match to compare two tickets directly.' }],
535
746
  },
747
+ {
748
+ id: 'instruction-conflict',
749
+ title: 'Check instructions for conflict',
750
+ description: 'Decide whether two instructions can both be followed under the supplied circumstances.',
751
+ category: 'workflow',
752
+ tags: ['instructions', 'conflict', 'contradiction', 'requirements', 'rules', 'compatible'],
753
+ limitations: [
754
+ 'Assesses compatibility of supplied instructions only; does not establish their authority or choose which one wins.',
755
+ 'Does not enforce permissions or execute instructions. The caller resolves conflicts before acting.',
756
+ ],
757
+ useWhen: 'You need to detect conflicting instructions before carrying out a task.',
758
+ related: [
759
+ {
760
+ id: 'instruction-fit',
761
+ reason: 'Use instruction-fit to decide whether one instruction applies to a task.',
762
+ },
763
+ {
764
+ id: 'answer-consistency',
765
+ reason: 'Use answer-consistency to compare factual claims rather than required behavior.',
766
+ },
767
+ ],
768
+ },
536
769
  {
537
770
  id: 'instruction-fit',
538
771
  title: 'Check instruction applicability',
@@ -717,6 +950,41 @@ export const recipeMetadata = [
717
950
  },
718
951
  ],
719
952
  },
953
+ {
954
+ id: 'question-leading',
955
+ title: 'Check whether a question steers an answer',
956
+ description: "Label whether a question's wording favors, disfavors, or stays neutral toward a proposed answer.",
957
+ category: 'conversation',
958
+ tags: [
959
+ 'leading question',
960
+ 'wording',
961
+ 'answer pressure',
962
+ 'survey',
963
+ 'prompt bias',
964
+ 'annotation',
965
+ 'alignment-research',
966
+ ],
967
+ limitations: [
968
+ 'Labels directional wording relative to one proposed answer, not author intent, factual correctness, or observed persuasion.',
969
+ 'Neutral does not establish that a prompt or experiment is unbiased in every respect.',
970
+ 'Actual effects on model or human answers require controlled comparisons; wording labels alone are not causal evidence.',
971
+ ],
972
+ useWhen: 'You need to check leading questions or answer pressure in a survey, interview, or evaluation prompt.',
973
+ related: [
974
+ {
975
+ id: 'query-specificity',
976
+ reason: 'Use query-specificity to check whether an information need is focused and unambiguous.',
977
+ },
978
+ {
979
+ id: 'claim-stance',
980
+ reason: "Use claim-stance to label the response's expressed position after a question has been answered.",
981
+ },
982
+ {
983
+ id: 'tone-check',
984
+ reason: 'Use tone-check to assess draft wording against caller-supplied writing criteria.',
985
+ },
986
+ ],
987
+ },
720
988
  {
721
989
  id: 'reference-resolve',
722
990
  title: 'Resolve a reference',
@@ -767,6 +1035,37 @@ export const recipeMetadata = [
767
1035
  { id: 'route', reason: 'Use route to select a handler rather than a response template.' },
768
1036
  ],
769
1037
  },
1038
+ {
1039
+ id: 'requirement-testability',
1040
+ title: 'Check whether a requirement is testable',
1041
+ description: 'Decide whether a requirement defines an observable way to distinguish meeting it from failing it.',
1042
+ category: 'knowledge',
1043
+ tags: [
1044
+ 'requirement',
1045
+ 'testable',
1046
+ 'testability',
1047
+ 'acceptance',
1048
+ 'criteria',
1049
+ 'measurable',
1050
+ 'observable',
1051
+ 'specification',
1052
+ ],
1053
+ limitations: [
1054
+ 'Assesses the wording and supplied definitions; does not generate tests, prove feasibility, or inspect an implementation.',
1055
+ 'Exact measurements and pass/fail calculations belong in application code.',
1056
+ ],
1057
+ useWhen: 'You need to check whether a requirement has clear, observable acceptance criteria before building it.',
1058
+ related: [
1059
+ {
1060
+ id: 'step-complete',
1061
+ reason: 'Use step-complete to check evidence against a condition that has already been defined.',
1062
+ },
1063
+ {
1064
+ id: 'clarify',
1065
+ reason: 'Use clarify to find missing information across a supplied list of requirements.',
1066
+ },
1067
+ ],
1068
+ },
770
1069
  {
771
1070
  id: 'rerank',
772
1071
  title: 'Rerank evidence',
@@ -819,6 +1118,41 @@ export const recipeMetadata = [
819
1118
  },
820
1119
  ],
821
1120
  },
1121
+ {
1122
+ id: 'response-refusal',
1123
+ title: 'Label refusal behavior in a response',
1124
+ description: 'Distinguish an explicit refusal, a substantive attempt, mixed behavior, and a stated inability to fulfill a request.',
1125
+ category: 'answer-quality',
1126
+ tags: [
1127
+ 'refusal',
1128
+ 'refuses',
1129
+ 'decline',
1130
+ 'compliance',
1131
+ 'inability',
1132
+ 'annotation',
1133
+ 'alignment-research',
1134
+ ],
1135
+ limitations: [
1136
+ 'Labels textual behavior, not policy compliance, harmlessness, or whether a refusal was warranted.',
1137
+ 'An attempted answer or reported action may be incorrect or incomplete. No action is executed or verified.',
1138
+ 'A refusal label alone does not establish an alignment property. Validate labels against independent human annotations for the study.',
1139
+ ],
1140
+ useWhen: 'You need to label whether a response refuses a request, attempts it, or reports missing access or information.',
1141
+ related: [
1142
+ {
1143
+ id: 'answer-relevance',
1144
+ reason: 'Use answer-relevance to check whether a response addresses the requested subject, regardless of refusal.',
1145
+ },
1146
+ {
1147
+ id: 'answer-coverage',
1148
+ reason: 'Use answer-coverage to check which requested points a draft covers; an attempt need not be complete.',
1149
+ },
1150
+ {
1151
+ id: 'result-outcome',
1152
+ reason: 'Use result-outcome to interpret an observed task result instead of a response claiming to perform it.',
1153
+ },
1154
+ ],
1155
+ },
822
1156
  {
823
1157
  id: 'result-outcome',
824
1158
  title: 'Interpret a reported tool outcome',
@@ -910,7 +1244,7 @@ export const recipeMetadata = [
910
1244
  title: 'Check one completion condition',
911
1245
  description: 'Does evidence establish that condition has been met?',
912
1246
  category: 'workflow',
913
- tags: ['workflow', 'step', 'complete'],
1247
+ tags: ['workflow', 'step', 'complete', 'alignment-research'],
914
1248
  limitations: [
915
1249
  'Assesses supplied evidence for one condition. Use exact system state checks when the condition can be determined in code.',
916
1250
  ],
@@ -957,6 +1291,91 @@ export const recipeMetadata = [
957
1291
  },
958
1292
  ],
959
1293
  },
1294
+ {
1295
+ id: 'take-turn',
1296
+ title: 'Assess whether a player can act now',
1297
+ description: "Interpret game rules and current state to label a player's turn or reaction opportunity as act, wait, inactive, or unclear.",
1298
+ category: 'workflow',
1299
+ tags: [
1300
+ 'gameplay',
1301
+ 'game',
1302
+ 'take turn',
1303
+ 'whose turn',
1304
+ 'act now',
1305
+ 'wait',
1306
+ 'reaction',
1307
+ 'players',
1308
+ 'simulation',
1309
+ ],
1310
+ limitations: [
1311
+ 'Assesses narrative turn eligibility, not a legality proof. When a game engine provides an exact turn or reaction flag, use that directly.',
1312
+ 'Does not take a turn, select an action, update state, or verify that a player already completed a turn.',
1313
+ 'Act includes optional reactions and does not mean using that opportunity is strategically best. Missing or conflicting facts require review.',
1314
+ ],
1315
+ useWhen: "You need to decide whether it is a player's turn to act or react using narrative game rules, state, and previous actions.",
1316
+ related: [
1317
+ {
1318
+ id: 'choose-action',
1319
+ reason: 'Use choose-action to compare candidate moves after establishing the player can act.',
1320
+ },
1321
+ {
1322
+ id: 'step-complete',
1323
+ reason: 'Use step-complete to check whether a defined turn-completion condition was met; take-turn assesses the current opportunity to act.',
1324
+ },
1325
+ {
1326
+ id: 'response-needed',
1327
+ reason: 'Use response-needed for conversational follow-through, rather than turn and reaction eligibility under game rules.',
1328
+ },
1329
+ ],
1330
+ },
1331
+ {
1332
+ id: 'task-dependency',
1333
+ title: 'Check the dependency between two tasks',
1334
+ description: 'Identify whether either of two tasks requires the other to finish before it can start.',
1335
+ category: 'workflow',
1336
+ tags: ['tasks', 'dependency', 'prerequisite', 'order', 'parallel', 'planning', 'sequence'],
1337
+ limitations: [
1338
+ 'Assesses only the supplied pair and prerequisites; does not build or validate a complete dependency graph.',
1339
+ "Independence of prerequisites does not establish that parallel execution is safe: shared resources, locks, permissions, and scheduling remain the caller's responsibility.",
1340
+ ],
1341
+ useWhen: 'You need to decide whether two tasks can run in parallel or require a particular order.',
1342
+ related: [
1343
+ {
1344
+ id: 'task-duplicate',
1345
+ reason: 'Use task-duplicate to detect repeated outcomes before scheduling tasks.',
1346
+ },
1347
+ {
1348
+ id: 'step-complete',
1349
+ reason: 'Use step-complete to check whether evidence establishes a known prerequisite is already satisfied.',
1350
+ },
1351
+ ],
1352
+ },
1353
+ {
1354
+ id: 'task-duplicate',
1355
+ title: 'Compare tasks for duplicate work',
1356
+ description: 'Decide whether two tasks request the same outcome, overlapping work, or distinct work.',
1357
+ category: 'workflow',
1358
+ tags: ['tasks', 'duplicate', 'overlap', 'queue', 'deduplicate', 'planning', 'same', 'outcome'],
1359
+ limitations: [
1360
+ 'Assesses described work only; does not merge queue entries, cancel tasks, or prove that an external action is safe to repeat.',
1361
+ 'Shared topics or similar titles are insufficient to establish duplicate work.',
1362
+ ],
1363
+ useWhen: 'You need to detect duplicate tasks before adding more work to a queue or plan.',
1364
+ related: [
1365
+ {
1366
+ id: 'repeated-attempt',
1367
+ reason: 'Use repeated-attempt to compare the methods of two attempts toward one objective.',
1368
+ },
1369
+ {
1370
+ id: 'task-dependency',
1371
+ reason: 'Use task-dependency to check whether one task must finish before another starts.',
1372
+ },
1373
+ {
1374
+ id: 'ticket-match',
1375
+ reason: 'Use ticket-match to compare reported issues rather than requested work.',
1376
+ },
1377
+ ],
1378
+ },
960
1379
  {
961
1380
  id: 'ticket-match',
962
1381
  title: 'Compare support tickets',
@@ -1060,6 +1479,41 @@ export const recipeMetadata = [
1060
1479
  },
1061
1480
  ],
1062
1481
  },
1482
+ {
1483
+ id: 'uncertainty-expression',
1484
+ title: 'Label expressed certainty about a claim',
1485
+ description: 'Label categorical, qualified, or unresolved wording about a supplied claim without inferring internal confidence.',
1486
+ category: 'answer-quality',
1487
+ tags: [
1488
+ 'uncertainty',
1489
+ 'certainty',
1490
+ 'hedging',
1491
+ 'expressed confidence',
1492
+ 'calibration',
1493
+ 'annotation',
1494
+ 'alignment-research',
1495
+ ],
1496
+ limitations: [
1497
+ 'Labels wording about one proposition, not internal confidence, truth, calibration, or evidential support.',
1498
+ 'The result confidence describes the annotation decision. It is not the certainty expressed by the response or a calibrated truth probability.',
1499
+ 'Uncertain is a substantive label and can be ready. Only unclear or confidence below the threshold requires review.',
1500
+ ],
1501
+ useWhen: 'You need to label expressed certainty or hedging about one claim without an external truth assessment.',
1502
+ related: [
1503
+ {
1504
+ id: 'certainty-match',
1505
+ reason: "Use certainty-match to compare a draft's certainty with a supplied evidence assessment.",
1506
+ },
1507
+ {
1508
+ id: 'claim-stance',
1509
+ reason: 'Use claim-stance to label affirmation or denial separately from the strength of commitment.',
1510
+ },
1511
+ {
1512
+ id: 'verify',
1513
+ reason: 'Use verify to check supplied evidence for a claim; expressed certainty is not evidence of truth.',
1514
+ },
1515
+ ],
1516
+ },
1063
1517
  {
1064
1518
  id: 'urgency-signal',
1065
1519
  title: 'Detect an explicit urgency request',
@@ -1082,7 +1536,7 @@ export const recipeMetadata = [
1082
1536
  title: 'Verify claims',
1083
1537
  description: 'Check each supplied claim against its paired evidence.',
1084
1538
  category: 'retrieval',
1085
- tags: ['rag', 'grounding', 'claims'],
1539
+ tags: ['rag', 'grounding', 'claims', 'alignment-research'],
1086
1540
  limitations: [
1087
1541
  'Checks only supplied claims; does not establish source truth or completeness.',
1088
1542
  'Provide 1 to 100 claims with unique IDs.',
@@ -1 +1 @@
1
- export declare const recipeNames: readonly ["action-scope", "answer-consistency", "answer-coverage", "answer-invalidation", "answer-relevance", "answerability", "argument-fit", "attempted-step", "audience-fit", "cache-match", "cancellation-check", "certainty-match", "change-meaning", "citation-match", "citation-needed", "clarify", "confirmation-match", "context-role", "correction-target", "document-role", "draft-compare", "evidence-conflict", "evidence-novelty", "fact-stability", "failure-kind", "feedback-kind", "field-select", "followup-link", "freshness-needed", "frustration-signal", "handoff", "incident-match", "instruction-fit", "intent-change", "issue-impact", "memory-relation", "memory-scope", "memory-value", "passage-duplicate", "preference-kind", "promise-check", "query-equivalence", "query-specificity", "reference-resolve", "repeated-attempt", "reply-template-match", "rerank", "resolution-check", "response-needed", "result-outcome", "result-usefulness", "retrieval-needed", "route", "source-applicability", "step-complete", "step-progress", "summary-coverage", "ticket-match", "tone-check", "tool-fit", "topic-shift", "troubleshooting-fit", "turn-intent", "urgency-signal", "verify", "workaround-fit"];
1
+ export declare const recipeNames: readonly ["action-scope", "answer-consistency", "answer-coverage", "answer-invalidation", "answer-relevance", "answerability", "argument-fit", "attempted-step", "attribution-match", "audience-fit", "cache-match", "cancellation-check", "certainty-match", "change-meaning", "choose-action", "citation-match", "citation-needed", "claim-stance", "clarify", "confirmation-match", "constraint-strength", "context-role", "correction-target", "document-role", "draft-compare", "evaluation-mention", "evidence-conflict", "evidence-independence", "evidence-novelty", "fact-stability", "failure-kind", "feedback-kind", "field-select", "followup-link", "freshness-needed", "frustration-signal", "handoff", "incident-match", "instruction-conflict", "instruction-fit", "intent-change", "issue-impact", "memory-relation", "memory-scope", "memory-value", "passage-duplicate", "preference-kind", "promise-check", "query-equivalence", "query-specificity", "question-leading", "reference-resolve", "repeated-attempt", "reply-template-match", "requirement-testability", "rerank", "resolution-check", "response-needed", "response-refusal", "result-outcome", "result-usefulness", "retrieval-needed", "route", "source-applicability", "step-complete", "step-progress", "summary-coverage", "take-turn", "task-dependency", "task-duplicate", "ticket-match", "tone-check", "tool-fit", "topic-shift", "troubleshooting-fit", "turn-intent", "uncertainty-expression", "urgency-signal", "verify", "workaround-fit"];
@@ -8,20 +8,26 @@ export const recipeNames = [
8
8
  'answerability',
9
9
  'argument-fit',
10
10
  'attempted-step',
11
+ 'attribution-match',
11
12
  'audience-fit',
12
13
  'cache-match',
13
14
  'cancellation-check',
14
15
  'certainty-match',
15
16
  'change-meaning',
17
+ 'choose-action',
16
18
  'citation-match',
17
19
  'citation-needed',
20
+ 'claim-stance',
18
21
  'clarify',
19
22
  'confirmation-match',
23
+ 'constraint-strength',
20
24
  'context-role',
21
25
  'correction-target',
22
26
  'document-role',
23
27
  'draft-compare',
28
+ 'evaluation-mention',
24
29
  'evidence-conflict',
30
+ 'evidence-independence',
25
31
  'evidence-novelty',
26
32
  'fact-stability',
27
33
  'failure-kind',
@@ -32,6 +38,7 @@ export const recipeNames = [
32
38
  'frustration-signal',
33
39
  'handoff',
34
40
  'incident-match',
41
+ 'instruction-conflict',
35
42
  'instruction-fit',
36
43
  'intent-change',
37
44
  'issue-impact',
@@ -43,12 +50,15 @@ export const recipeNames = [
43
50
  'promise-check',
44
51
  'query-equivalence',
45
52
  'query-specificity',
53
+ 'question-leading',
46
54
  'reference-resolve',
47
55
  'repeated-attempt',
48
56
  'reply-template-match',
57
+ 'requirement-testability',
49
58
  'rerank',
50
59
  'resolution-check',
51
60
  'response-needed',
61
+ 'response-refusal',
52
62
  'result-outcome',
53
63
  'result-usefulness',
54
64
  'retrieval-needed',
@@ -57,12 +67,16 @@ export const recipeNames = [
57
67
  'step-complete',
58
68
  'step-progress',
59
69
  'summary-coverage',
70
+ 'take-turn',
71
+ 'task-dependency',
72
+ 'task-duplicate',
60
73
  'ticket-match',
61
74
  'tone-check',
62
75
  'tool-fit',
63
76
  'topic-shift',
64
77
  'troubleshooting-fit',
65
78
  'turn-intent',
79
+ 'uncertainty-expression',
66
80
  'urgency-signal',
67
81
  'verify',
68
82
  'workaround-fit',