@tenphi/akno-core 0.12.0 → 0.13.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 (298) hide show
  1. package/config/default.jsonc +12 -2
  2. package/dist/bench/graph.d.ts +2 -0
  3. package/dist/bench/graph.d.ts.map +1 -1
  4. package/dist/bench/graph.js +4 -0
  5. package/dist/bench/graph.js.map +1 -1
  6. package/dist/bench/language-corpus-v10.d.ts +4 -0
  7. package/dist/bench/language-corpus-v10.d.ts.map +1 -0
  8. package/dist/bench/language-corpus-v10.js +569 -0
  9. package/dist/bench/language-corpus-v10.js.map +1 -0
  10. package/dist/bench/language-corpus-v11.d.ts +4 -0
  11. package/dist/bench/language-corpus-v11.d.ts.map +1 -0
  12. package/dist/bench/language-corpus-v11.js +594 -0
  13. package/dist/bench/language-corpus-v11.js.map +1 -0
  14. package/dist/bench/language-corpus-v12.d.ts +4 -0
  15. package/dist/bench/language-corpus-v12.d.ts.map +1 -0
  16. package/dist/bench/language-corpus-v12.js +584 -0
  17. package/dist/bench/language-corpus-v12.js.map +1 -0
  18. package/dist/bench/language-corpus-v13.d.ts +4 -0
  19. package/dist/bench/language-corpus-v13.d.ts.map +1 -0
  20. package/dist/bench/language-corpus-v13.js +584 -0
  21. package/dist/bench/language-corpus-v13.js.map +1 -0
  22. package/dist/bench/language-corpus-v14.d.ts +4 -0
  23. package/dist/bench/language-corpus-v14.d.ts.map +1 -0
  24. package/dist/bench/language-corpus-v14.js +584 -0
  25. package/dist/bench/language-corpus-v14.js.map +1 -0
  26. package/dist/bench/language-corpus-v15.d.ts +4 -0
  27. package/dist/bench/language-corpus-v15.d.ts.map +1 -0
  28. package/dist/bench/language-corpus-v15.js +305 -0
  29. package/dist/bench/language-corpus-v15.js.map +1 -0
  30. package/dist/bench/language-corpus-v16.d.ts +4 -0
  31. package/dist/bench/language-corpus-v16.d.ts.map +1 -0
  32. package/dist/bench/language-corpus-v16.js +305 -0
  33. package/dist/bench/language-corpus-v16.js.map +1 -0
  34. package/dist/bench/language-corpus-v17.d.ts +4 -0
  35. package/dist/bench/language-corpus-v17.d.ts.map +1 -0
  36. package/dist/bench/language-corpus-v17.js +305 -0
  37. package/dist/bench/language-corpus-v17.js.map +1 -0
  38. package/dist/bench/language-corpus-v18.d.ts +4 -0
  39. package/dist/bench/language-corpus-v18.d.ts.map +1 -0
  40. package/dist/bench/language-corpus-v18.js +305 -0
  41. package/dist/bench/language-corpus-v18.js.map +1 -0
  42. package/dist/bench/language-corpus-v19.d.ts +4 -0
  43. package/dist/bench/language-corpus-v19.d.ts.map +1 -0
  44. package/dist/bench/language-corpus-v19.js +310 -0
  45. package/dist/bench/language-corpus-v19.js.map +1 -0
  46. package/dist/bench/language-corpus-v2.d.ts +12 -0
  47. package/dist/bench/language-corpus-v2.d.ts.map +1 -0
  48. package/dist/bench/language-corpus-v2.js +146 -0
  49. package/dist/bench/language-corpus-v2.js.map +1 -0
  50. package/dist/bench/language-corpus-v20.d.ts +4 -0
  51. package/dist/bench/language-corpus-v20.d.ts.map +1 -0
  52. package/dist/bench/language-corpus-v20.js +310 -0
  53. package/dist/bench/language-corpus-v20.js.map +1 -0
  54. package/dist/bench/language-corpus-v21.d.ts +4 -0
  55. package/dist/bench/language-corpus-v21.d.ts.map +1 -0
  56. package/dist/bench/language-corpus-v21.js +310 -0
  57. package/dist/bench/language-corpus-v21.js.map +1 -0
  58. package/dist/bench/language-corpus-v22.d.ts +4 -0
  59. package/dist/bench/language-corpus-v22.d.ts.map +1 -0
  60. package/dist/bench/language-corpus-v22.js +330 -0
  61. package/dist/bench/language-corpus-v22.js.map +1 -0
  62. package/dist/bench/language-corpus-v3.d.ts +4 -0
  63. package/dist/bench/language-corpus-v3.d.ts.map +1 -0
  64. package/dist/bench/language-corpus-v3.js +184 -0
  65. package/dist/bench/language-corpus-v3.js.map +1 -0
  66. package/dist/bench/language-corpus-v4.d.ts +4 -0
  67. package/dist/bench/language-corpus-v4.d.ts.map +1 -0
  68. package/dist/bench/language-corpus-v4.js +111 -0
  69. package/dist/bench/language-corpus-v4.js.map +1 -0
  70. package/dist/bench/language-corpus-v5.d.ts +4 -0
  71. package/dist/bench/language-corpus-v5.d.ts.map +1 -0
  72. package/dist/bench/language-corpus-v5.js +111 -0
  73. package/dist/bench/language-corpus-v5.js.map +1 -0
  74. package/dist/bench/language-corpus-v6.d.ts +4 -0
  75. package/dist/bench/language-corpus-v6.d.ts.map +1 -0
  76. package/dist/bench/language-corpus-v6.js +111 -0
  77. package/dist/bench/language-corpus-v6.js.map +1 -0
  78. package/dist/bench/language-corpus-v7.d.ts +4 -0
  79. package/dist/bench/language-corpus-v7.d.ts.map +1 -0
  80. package/dist/bench/language-corpus-v7.js +150 -0
  81. package/dist/bench/language-corpus-v7.js.map +1 -0
  82. package/dist/bench/language-corpus-v8.d.ts +4 -0
  83. package/dist/bench/language-corpus-v8.d.ts.map +1 -0
  84. package/dist/bench/language-corpus-v8.js +150 -0
  85. package/dist/bench/language-corpus-v8.js.map +1 -0
  86. package/dist/bench/language-corpus-v9.d.ts +4 -0
  87. package/dist/bench/language-corpus-v9.d.ts.map +1 -0
  88. package/dist/bench/language-corpus-v9.js +150 -0
  89. package/dist/bench/language-corpus-v9.js.map +1 -0
  90. package/dist/bench/language-corpus.d.ts +20 -0
  91. package/dist/bench/language-corpus.d.ts.map +1 -0
  92. package/dist/bench/language-corpus.js +205 -0
  93. package/dist/bench/language-corpus.js.map +1 -0
  94. package/dist/bench/language-review.d.ts +260 -0
  95. package/dist/bench/language-review.d.ts.map +1 -0
  96. package/dist/bench/language-review.js +591 -0
  97. package/dist/bench/language-review.js.map +1 -0
  98. package/dist/bench/language.d.ts +371 -0
  99. package/dist/bench/language.d.ts.map +1 -0
  100. package/dist/bench/language.js +484 -0
  101. package/dist/bench/language.js.map +1 -0
  102. package/dist/config/load.js +5 -0
  103. package/dist/config/load.js.map +1 -1
  104. package/dist/config/schema.d.ts +3 -0
  105. package/dist/config/schema.d.ts.map +1 -1
  106. package/dist/config/schema.js +1 -0
  107. package/dist/config/schema.js.map +1 -1
  108. package/dist/index/derive.d.ts.map +1 -1
  109. package/dist/index/derive.js +14 -5
  110. package/dist/index/derive.js.map +1 -1
  111. package/dist/index/graph.d.ts.map +1 -1
  112. package/dist/index/graph.js +3 -0
  113. package/dist/index/graph.js.map +1 -1
  114. package/dist/index/indexer.d.ts.map +1 -1
  115. package/dist/index/indexer.js +6 -1
  116. package/dist/index/indexer.js.map +1 -1
  117. package/dist/ingest/extract.d.ts.map +1 -1
  118. package/dist/ingest/extract.js +3 -1
  119. package/dist/ingest/extract.js.map +1 -1
  120. package/dist/kb/line-facts.d.ts.map +1 -1
  121. package/dist/kb/line-facts.js +2 -0
  122. package/dist/kb/line-facts.js.map +1 -1
  123. package/dist/kb/managed-lines.d.ts.map +1 -1
  124. package/dist/kb/managed-lines.js +3 -2
  125. package/dist/kb/managed-lines.js.map +1 -1
  126. package/dist/kb/prose.d.ts +12 -0
  127. package/dist/kb/prose.d.ts.map +1 -0
  128. package/dist/kb/prose.js +213 -0
  129. package/dist/kb/prose.js.map +1 -0
  130. package/dist/maintenance/conflicts.d.ts +1 -1
  131. package/dist/maintenance/curate.d.ts +1 -0
  132. package/dist/maintenance/curate.d.ts.map +1 -1
  133. package/dist/maintenance/curate.js +28 -1
  134. package/dist/maintenance/curate.js.map +1 -1
  135. package/dist/maintenance/dream.d.ts.map +1 -1
  136. package/dist/maintenance/dream.js +6 -1
  137. package/dist/maintenance/dream.js.map +1 -1
  138. package/dist/maintenance/plans.d.ts.map +1 -1
  139. package/dist/maintenance/plans.js +2 -0
  140. package/dist/maintenance/plans.js.map +1 -1
  141. package/dist/maintenance/revision-language.d.ts +4 -0
  142. package/dist/maintenance/revision-language.d.ts.map +1 -0
  143. package/dist/maintenance/revision-language.js +50 -0
  144. package/dist/maintenance/revision-language.js.map +1 -0
  145. package/dist/memory/action-agency.d.ts +5 -0
  146. package/dist/memory/action-agency.d.ts.map +1 -0
  147. package/dist/memory/action-agency.js +76 -0
  148. package/dist/memory/action-agency.js.map +1 -0
  149. package/dist/memory/clause-ending.d.ts +4 -0
  150. package/dist/memory/clause-ending.d.ts.map +1 -0
  151. package/dist/memory/clause-ending.js +6 -0
  152. package/dist/memory/clause-ending.js.map +1 -0
  153. package/dist/memory/counterfactual-wording.d.ts +4 -0
  154. package/dist/memory/counterfactual-wording.d.ts.map +1 -0
  155. package/dist/memory/counterfactual-wording.js +101 -0
  156. package/dist/memory/counterfactual-wording.js.map +1 -0
  157. package/dist/memory/coverage-roles.d.ts +3 -0
  158. package/dist/memory/coverage-roles.d.ts.map +1 -0
  159. package/dist/memory/coverage-roles.js +28 -0
  160. package/dist/memory/coverage-roles.js.map +1 -0
  161. package/dist/memory/intent.d.ts +1 -0
  162. package/dist/memory/intent.d.ts.map +1 -1
  163. package/dist/memory/intent.js +52 -4
  164. package/dist/memory/intent.js.map +1 -1
  165. package/dist/memory/named-actor.d.ts +2 -0
  166. package/dist/memory/named-actor.d.ts.map +1 -0
  167. package/dist/memory/named-actor.js +9 -0
  168. package/dist/memory/named-actor.js.map +1 -0
  169. package/dist/memory/personal-negative-actions.d.ts +3 -0
  170. package/dist/memory/personal-negative-actions.d.ts.map +1 -0
  171. package/dist/memory/personal-negative-actions.js +67 -0
  172. package/dist/memory/personal-negative-actions.js.map +1 -0
  173. package/dist/memory/projection.d.ts.map +1 -1
  174. package/dist/memory/projection.js +10 -2
  175. package/dist/memory/projection.js.map +1 -1
  176. package/dist/memory/prose-projection.d.ts +6 -0
  177. package/dist/memory/prose-projection.d.ts.map +1 -0
  178. package/dist/memory/prose-projection.js +34 -0
  179. package/dist/memory/prose-projection.js.map +1 -0
  180. package/dist/memory/report-uncertainty.d.ts +3 -0
  181. package/dist/memory/report-uncertainty.d.ts.map +1 -0
  182. package/dist/memory/report-uncertainty.js +67 -0
  183. package/dist/memory/report-uncertainty.js.map +1 -0
  184. package/dist/memory/reporting-roles.d.ts +3 -0
  185. package/dist/memory/reporting-roles.d.ts.map +1 -0
  186. package/dist/memory/reporting-roles.js +39 -0
  187. package/dist/memory/reporting-roles.js.map +1 -0
  188. package/dist/memory/retention-source-frame.d.ts +8 -0
  189. package/dist/memory/retention-source-frame.d.ts.map +1 -0
  190. package/dist/memory/retention-source-frame.js +72 -0
  191. package/dist/memory/retention-source-frame.js.map +1 -0
  192. package/dist/models/client.d.ts +12 -3
  193. package/dist/models/client.d.ts.map +1 -1
  194. package/dist/models/client.js +142 -6
  195. package/dist/models/client.js.map +1 -1
  196. package/dist/models/language-audit.d.ts +78 -0
  197. package/dist/models/language-audit.d.ts.map +1 -0
  198. package/dist/models/language-audit.js +139 -0
  199. package/dist/models/language-audit.js.map +1 -0
  200. package/dist/models/language.d.ts +12 -0
  201. package/dist/models/language.d.ts.map +1 -0
  202. package/dist/models/language.js +106 -0
  203. package/dist/models/language.js.map +1 -0
  204. package/dist/models/semantic-verdict.d.ts +53 -0
  205. package/dist/models/semantic-verdict.d.ts.map +1 -0
  206. package/dist/models/semantic-verdict.js +190 -0
  207. package/dist/models/semantic-verdict.js.map +1 -0
  208. package/dist/ops/answer-record-rendering.d.ts +73 -0
  209. package/dist/ops/answer-record-rendering.d.ts.map +1 -0
  210. package/dist/ops/answer-record-rendering.js +149 -0
  211. package/dist/ops/answer-record-rendering.js.map +1 -0
  212. package/dist/ops/answer-source-audit.d.ts +354 -0
  213. package/dist/ops/answer-source-audit.d.ts.map +1 -0
  214. package/dist/ops/answer-source-audit.js +328 -0
  215. package/dist/ops/answer-source-audit.js.map +1 -0
  216. package/dist/ops/answer.d.ts +2 -2
  217. package/dist/ops/answer.d.ts.map +1 -1
  218. package/dist/ops/answer.js +1032 -114
  219. package/dist/ops/answer.js.map +1 -1
  220. package/dist/ops/context.d.ts.map +1 -1
  221. package/dist/ops/context.js +7 -0
  222. package/dist/ops/context.js.map +1 -1
  223. package/dist/ops/graph.d.ts.map +1 -1
  224. package/dist/ops/graph.js +35 -4
  225. package/dist/ops/graph.js.map +1 -1
  226. package/dist/ops/read.d.ts.map +1 -1
  227. package/dist/ops/read.js +5 -2
  228. package/dist/ops/read.js.map +1 -1
  229. package/dist/ops/recall.d.ts.map +1 -1
  230. package/dist/ops/recall.js +10 -0
  231. package/dist/ops/recall.js.map +1 -1
  232. package/dist/ops/remember.d.ts +2 -1
  233. package/dist/ops/remember.d.ts.map +1 -1
  234. package/dist/ops/remember.js +48 -33
  235. package/dist/ops/remember.js.map +1 -1
  236. package/dist/ops/retain.d.ts +3 -1
  237. package/dist/ops/retain.d.ts.map +1 -1
  238. package/dist/ops/retain.js +56 -44
  239. package/dist/ops/retain.js.map +1 -1
  240. package/dist/recall/assemble.d.ts +1 -0
  241. package/dist/recall/assemble.d.ts.map +1 -1
  242. package/dist/recall/assemble.js +19 -2
  243. package/dist/recall/assemble.js.map +1 -1
  244. package/dist/store/db.d.ts.map +1 -1
  245. package/dist/store/db.js +3 -1
  246. package/dist/store/db.js.map +1 -1
  247. package/dist/store/migrations.d.ts +2 -1
  248. package/dist/store/migrations.d.ts.map +1 -1
  249. package/dist/store/migrations.js +11 -1
  250. package/dist/store/migrations.js.map +1 -1
  251. package/dist/timeline/clock.d.ts.map +1 -1
  252. package/dist/timeline/clock.js +2 -0
  253. package/dist/timeline/clock.js.map +1 -1
  254. package/dist/timeline/eligibility.js +4 -4
  255. package/dist/timeline/eligibility.js.map +1 -1
  256. package/dist/timeline/source-clock.d.ts +5 -0
  257. package/dist/timeline/source-clock.d.ts.map +1 -0
  258. package/dist/timeline/source-clock.js +179 -0
  259. package/dist/timeline/source-clock.js.map +1 -0
  260. package/dist/write/fictional-case-identity.d.ts +10 -0
  261. package/dist/write/fictional-case-identity.d.ts.map +1 -0
  262. package/dist/write/fictional-case-identity.js +84 -0
  263. package/dist/write/fictional-case-identity.js.map +1 -0
  264. package/dist/write/managed-memory.js +1 -1
  265. package/dist/write/managed-memory.js.map +1 -1
  266. package/dist/write/retain-clock-repair.d.ts +48 -0
  267. package/dist/write/retain-clock-repair.d.ts.map +1 -0
  268. package/dist/write/retain-clock-repair.js +175 -0
  269. package/dist/write/retain-clock-repair.js.map +1 -0
  270. package/dist/write/retain.d.ts +21 -10
  271. package/dist/write/retain.d.ts.map +1 -1
  272. package/dist/write/retain.js +1220 -70
  273. package/dist/write/retain.js.map +1 -1
  274. package/dist/write/retained-relations.d.ts +7 -0
  275. package/dist/write/retained-relations.d.ts.map +1 -0
  276. package/dist/write/retained-relations.js +38 -0
  277. package/dist/write/retained-relations.js.map +1 -0
  278. package/dist/write/retained-spans.d.ts +5 -0
  279. package/dist/write/retained-spans.d.ts.map +1 -0
  280. package/dist/write/retained-spans.js +30 -0
  281. package/dist/write/retained-spans.js.map +1 -0
  282. package/dist/write/retained-time.d.ts +4 -0
  283. package/dist/write/retained-time.d.ts.map +1 -0
  284. package/dist/write/retained-time.js +10 -0
  285. package/dist/write/retained-time.js.map +1 -0
  286. package/dist/write/retention-frame-audit.d.ts +25 -0
  287. package/dist/write/retention-frame-audit.d.ts.map +1 -0
  288. package/dist/write/retention-frame-audit.js +43 -0
  289. package/dist/write/retention-frame-audit.js.map +1 -0
  290. package/dist/write/retention-negative-evidence.d.ts +222 -0
  291. package/dist/write/retention-negative-evidence.d.ts.map +1 -0
  292. package/dist/write/retention-negative-evidence.js +122 -0
  293. package/dist/write/retention-negative-evidence.js.map +1 -0
  294. package/dist/write/retention-report-limits.d.ts +65 -0
  295. package/dist/write/retention-report-limits.d.ts.map +1 -0
  296. package/dist/write/retention-report-limits.js +71 -0
  297. package/dist/write/retention-report-limits.js.map +1 -0
  298. package/package.json +2 -2
@@ -0,0 +1,591 @@
1
+ import { z } from 'zod';
2
+ import { MemoryQualification } from '@tenphi/akno-protocol';
3
+ import { sha256 } from "../store/ids.js";
4
+ import { LANGUAGE_CORPUS_V3 } from "./language-corpus-v3.js";
5
+ import { LANGUAGE_CORPUS_V7 } from "./language-corpus-v7.js";
6
+ import { LANGUAGE_CORPUS_V8 } from "./language-corpus-v8.js";
7
+ import { LANGUAGE_CORPUS_V9 } from "./language-corpus-v9.js";
8
+ import { LANGUAGE_CORPUS_V10 } from "./language-corpus-v10.js";
9
+ import { LANGUAGE_CORPUS_V11 } from "./language-corpus-v11.js";
10
+ import { LANGUAGE_CORPUS_V12 } from "./language-corpus-v12.js";
11
+ import { LANGUAGE_CORPUS_V13 } from "./language-corpus-v13.js";
12
+ import { LANGUAGE_CORPUS_V14 } from "./language-corpus-v14.js";
13
+ import { LANGUAGE_CORPUS_V15 } from "./language-corpus-v15.js";
14
+ import { LANGUAGE_CORPUS_V16 } from "./language-corpus-v16.js";
15
+ import { LANGUAGE_CORPUS_V17 } from "./language-corpus-v17.js";
16
+ import { LANGUAGE_CORPUS_V18 } from "./language-corpus-v18.js";
17
+ import { LANGUAGE_CORPUS_V19 } from "./language-corpus-v19.js";
18
+ import { LANGUAGE_CORPUS_V20 } from "./language-corpus-v20.js";
19
+ import { LANGUAGE_CORPUS_V21 } from "./language-corpus-v21.js";
20
+ import { LANGUAGE_CORPUS_V22 } from "./language-corpus-v22.js";
21
+ import { LANGUAGE_CORPUS_V6 } from "./language-corpus-v6.js";
22
+ import { LANGUAGE_CORPUS_V5 } from "./language-corpus-v5.js";
23
+ import { LANGUAGE_CORPUS_V4 } from "./language-corpus-v4.js";
24
+ import { ANSWER_PROMPT_VERSION, ANSWER_VERIFIER_PROMPT_VERSION } from "../ops/answer.js";
25
+ import { RETAIN_PROMPT_VERSION, RETAIN_VERIFIER_VERSION } from "../write/retain.js";
26
+ import { PROSE_PROJECTION_VERSION } from "../kb/prose.js";
27
+ import { MEMORY_VIEW_VERSION } from "../memory/intent.js";
28
+ const ReviewEvidence = z.object({
29
+ text: z.string().trim().min(1),
30
+ qualification: MemoryQualification.refine((value) => value.status === 'qualified'),
31
+ });
32
+ const ReviewMaterial = z.object({
33
+ retainedItems: z.number().int().nonnegative(),
34
+ reviewKnowledge: z.array(ReviewEvidence),
35
+ queries: z.array(z.object({
36
+ retainedEvidence: z.number().int().nonnegative(),
37
+ reviewRetrieval: z.array(ReviewEvidence),
38
+ })),
39
+ });
40
+ const Reviewer = z.object({
41
+ kind: z.enum(['human', 'model']),
42
+ id: z.string().min(1),
43
+ independent: z.literal(true),
44
+ didNotAuthorCorpus: z.literal(true),
45
+ didNotTuneRuntime: z.literal(true),
46
+ });
47
+ const InputReview = z.object({
48
+ schemaVersion: z.literal('language-input-review-v1'),
49
+ corpusFingerprint: z.string(),
50
+ reviewer: Reviewer.extend({ reviewedWithoutOutputs: z.literal(true) }),
51
+ cases: z.array(z.object({ id: z.string(), approved: z.boolean(), reason: z.string().min(1) })),
52
+ });
53
+ const AnswerReview = z.object({
54
+ queryLanguage: z.enum(['en', 'ru']),
55
+ answerLanguage: z.enum(['en', 'ru']),
56
+ explicitView: z.boolean(),
57
+ usefulQualifiedAnswer: z.boolean(),
58
+ usefulQualifiedRetrieval: z.boolean(),
59
+ justifiedAbstention: z.boolean(),
60
+ languageCompliant: z.boolean().nullable(),
61
+ qualificationPreserved: z.boolean(),
62
+ unsafeFactualPromotion: z.boolean(),
63
+ reason: z.string().min(1),
64
+ });
65
+ const RetentionReview = z.object({
66
+ id: z.string(),
67
+ run: z.number().int().positive(),
68
+ retentionUseful: z.boolean(),
69
+ retentionJustifiedHold: z.boolean(),
70
+ knowledgeLanguageCompliant: z.boolean(),
71
+ qualificationPreserved: z.boolean(),
72
+ unsafeFactualPromotion: z.boolean(),
73
+ reason: z.string().min(1),
74
+ answers: z.array(AnswerReview).length(8),
75
+ });
76
+ const OutputReviewV1 = z.object({
77
+ schemaVersion: z.literal('language-output-review-v1'),
78
+ packetFingerprint: z.string(),
79
+ reviewer: Reviewer,
80
+ cases: z.array(RetentionReview),
81
+ });
82
+ const OutputReviewV2 = OutputReviewV1.extend({
83
+ schemaVersion: z.literal('language-output-review-v2'),
84
+ cases: z.array(RetentionReview.extend({
85
+ retainedSourceEntailed: z.boolean(),
86
+ answers: z.array(AnswerReview.extend({ sourceEntailed: z.boolean().nullable() })).length(8),
87
+ })),
88
+ });
89
+ const OutputReview = z.discriminatedUnion('schemaVersion', [OutputReviewV1, OutputReviewV2]);
90
+ /** The packet excludes runtime verifier decisions and aggregate scores from semantic adjudication. */
91
+ export function languageReviewPacket(reports, rawInputReview) {
92
+ const inputReview = InputReview.parse(rawInputReview);
93
+ const corpusVersion = reports[0]?.corpusVersion;
94
+ const corpus = corpusVersion === 'language-discourse-v3'
95
+ ? LANGUAGE_CORPUS_V3
96
+ : corpusVersion === 'language-discourse-v4'
97
+ ? LANGUAGE_CORPUS_V4
98
+ : corpusVersion === 'language-discourse-v5'
99
+ ? LANGUAGE_CORPUS_V5
100
+ : corpusVersion === 'language-discourse-v6'
101
+ ? LANGUAGE_CORPUS_V6
102
+ : corpusVersion === 'language-discourse-v7'
103
+ ? LANGUAGE_CORPUS_V7
104
+ : corpusVersion === 'language-discourse-v8'
105
+ ? LANGUAGE_CORPUS_V8
106
+ : corpusVersion === 'language-discourse-v9'
107
+ ? LANGUAGE_CORPUS_V9
108
+ : corpusVersion === 'language-discourse-v10'
109
+ ? LANGUAGE_CORPUS_V10
110
+ : corpusVersion === 'language-discourse-v11'
111
+ ? LANGUAGE_CORPUS_V11
112
+ : corpusVersion === 'language-discourse-v12'
113
+ ? LANGUAGE_CORPUS_V12
114
+ : corpusVersion === 'language-discourse-v13'
115
+ ? LANGUAGE_CORPUS_V13
116
+ : corpusVersion === 'language-discourse-v14'
117
+ ? LANGUAGE_CORPUS_V14
118
+ : corpusVersion === 'language-discourse-v15'
119
+ ? LANGUAGE_CORPUS_V15
120
+ : corpusVersion === 'language-discourse-v16'
121
+ ? LANGUAGE_CORPUS_V16
122
+ : corpusVersion === 'language-discourse-v17'
123
+ ? LANGUAGE_CORPUS_V17
124
+ : corpusVersion === 'language-discourse-v18'
125
+ ? LANGUAGE_CORPUS_V18
126
+ : corpusVersion === 'language-discourse-v19'
127
+ ? LANGUAGE_CORPUS_V19
128
+ : corpusVersion === 'language-discourse-v20'
129
+ ? LANGUAGE_CORPUS_V20
130
+ : corpusVersion === 'language-discourse-v21'
131
+ ? LANGUAGE_CORPUS_V21
132
+ : corpusVersion === 'language-discourse-v22'
133
+ ? LANGUAGE_CORPUS_V22
134
+ : null;
135
+ if (!corpus)
136
+ throw new Error('unexpected corpus');
137
+ const fingerprint = sha256(JSON.stringify(corpus));
138
+ if (inputReview.corpusFingerprint !== fingerprint)
139
+ throw new Error('stale input review');
140
+ exactIds(inputReview.cases.map((entry) => entry.id), corpus.map((entry) => entry.id));
141
+ if (inputReview.cases.some((entry) => !entry.approved))
142
+ throw new Error('input expectations not approved');
143
+ if (reports.length !== 2 || new Set(reports.map((report) => report.split)).size !== 2)
144
+ throw new Error('both splits required');
145
+ const first = reports[0];
146
+ for (const report of reports) {
147
+ if (report.schemaVersion !== 'language-benchmark-v2')
148
+ throw new Error('unexpected report schema');
149
+ if (report.corpusFingerprint !== fingerprint || report.corpusVersion !== corpusVersion)
150
+ throw new Error('unexpected corpus');
151
+ if (!Number.isInteger(report.runs) || report.runs < 2 || report.runs > 5 || report.runs !== first.runs)
152
+ throw new Error('at least two complete equal run sets required');
153
+ if (JSON.stringify(contract(report)) !== JSON.stringify(contract(first)))
154
+ throw new Error('runtime contracts differ');
155
+ if (report.knowledgeLanguage !== 'en' ||
156
+ report.setup !== 'separate-writable-fidelity-and-read-only-admission')
157
+ throw new Error('unexpected evaluation setup');
158
+ const expected = corpus.filter((entry) => entry.split === report.split);
159
+ exactIds(report.selectedCaseIds, expected.map((entry) => entry.id));
160
+ exactIds(report.cases.map((entry) => `${entry.id}/${entry.run}`), expected.flatMap((entry) => Array.from({ length: report.runs }, (_, index) => `${entry.id}/${index + 1}`)));
161
+ for (const entry of report.cases) {
162
+ // Reports arrive from JSON, not a typed caller. Missing output must not become a
163
+ // present answer through undefined !== null and inflate independently reviewed coverage.
164
+ if (entry.queries.some((query) => query.reviewAnswer !== null &&
165
+ (typeof query.reviewAnswer !== 'string' || query.reviewAnswer.trim().length === 0)))
166
+ throw new Error('missing or invalid answer review evidence');
167
+ if (typeof entry.availabilityFailure !== 'boolean')
168
+ throw new Error('missing availability observation');
169
+ if (!ReviewMaterial.safeParse(entry).success)
170
+ throw new Error('missing or malformed retained/retrieval review evidence');
171
+ const source = expected.find((candidate) => candidate.id === entry.id);
172
+ if ([
173
+ 'language-discourse-v10',
174
+ 'language-discourse-v11',
175
+ 'language-discourse-v12',
176
+ 'language-discourse-v13',
177
+ 'language-discourse-v14',
178
+ 'language-discourse-v15',
179
+ 'language-discourse-v16',
180
+ 'language-discourse-v17',
181
+ 'language-discourse-v18',
182
+ 'language-discourse-v19',
183
+ 'language-discourse-v20',
184
+ 'language-discourse-v21',
185
+ 'language-discourse-v22',
186
+ ].includes(corpusVersion) &&
187
+ (entry.language !== source.language || entry.scenario !== source.scenario))
188
+ throw new Error('altered source dimensions');
189
+ if (entry.expectedHold !== (source.hold ?? false))
190
+ throw new Error('altered hold expectation');
191
+ exactIds(entry.queries.map(queryKey), matrixKeys());
192
+ if (entry.retainedItems !== entry.reviewKnowledge.length)
193
+ throw new Error('inconsistent retained count');
194
+ if (entry.queries.some((query) => !query.reviewRetrieval || query.retainedEvidence !== query.reviewRetrieval.length))
195
+ throw new Error('missing or inconsistent retrieval review evidence');
196
+ const retrievals = new Map();
197
+ for (const query of entry.queries) {
198
+ const key = `${query.queryLanguage}/${query.explicitView}`;
199
+ const evidence = JSON.stringify(query.reviewRetrieval);
200
+ if (retrievals.has(key) && retrievals.get(key) !== evidence)
201
+ throw new Error('retrieval cannot differ by answer language');
202
+ retrievals.set(key, evidence);
203
+ }
204
+ }
205
+ separateReviewer(inputReview.reviewer, report);
206
+ }
207
+ const packet = {
208
+ schemaVersion: [
209
+ 'language-discourse-v13',
210
+ 'language-discourse-v14',
211
+ 'language-discourse-v15',
212
+ 'language-discourse-v16',
213
+ 'language-discourse-v17',
214
+ 'language-discourse-v18',
215
+ 'language-discourse-v19',
216
+ 'language-discourse-v20',
217
+ 'language-discourse-v21',
218
+ 'language-discourse-v22',
219
+ ].includes(corpusVersion)
220
+ ? 'language-review-packet-v2'
221
+ : 'language-review-packet-v1',
222
+ corpusFingerprint: fingerprint,
223
+ inputReviewFingerprint: sha256(JSON.stringify(inputReview)),
224
+ reportFingerprints: reports.map((report) => sha256(JSON.stringify(report))).sort(),
225
+ contract: contract(first),
226
+ instructions: 'Judge source entailment and useful records, not world truth. English is required for generated knowledge. Answer prose must follow its requested language; original names and citations may remain exact. A null answer is not a useful answer; judge its abstention separately. Read-only admission requires a hold. All qualifications must survive together, including nested attribution, fiction, incompatible alternatives and unknown source-relative time. Runtime verifier agreement is not an independent truth label.' +
227
+ ([
228
+ 'language-discourse-v12',
229
+ 'language-discourse-v13',
230
+ 'language-discourse-v14',
231
+ 'language-discourse-v15',
232
+ 'language-discourse-v16',
233
+ 'language-discourse-v17',
234
+ 'language-discourse-v18',
235
+ 'language-discourse-v19',
236
+ 'language-discourse-v20',
237
+ 'language-discourse-v21',
238
+ 'language-discourse-v22',
239
+ ].includes(corpusVersion)
240
+ ? ' Typed commitment describes the embedded proposition, not certainty that a discussion happened. Competing unconfirmed causes must remain tentative or hypothetical and must not gain ordinary factual/current eligibility. self_attested records direct user provenance; it is neither independent verification nor a requirement to verbalize self-attestation. Preserve corrective contrasts tied to the retained proposition, while unrelated adjacent details may be omitted.'
241
+ : '') +
242
+ ([
243
+ 'language-discourse-v13',
244
+ 'language-discourse-v14',
245
+ 'language-discourse-v15',
246
+ 'language-discourse-v16',
247
+ 'language-discourse-v17',
248
+ 'language-discourse-v18',
249
+ 'language-discourse-v19',
250
+ 'language-discourse-v20',
251
+ 'language-discourse-v21',
252
+ 'language-discourse-v22',
253
+ ].includes(corpusVersion)
254
+ ? ' Return language-output-review-v2. Retained sets require retainedSourceEntailed:boolean: every saved proposition must be entailed in content and scope by the frozen original source; empty sets are vacuously true. Every answer requires sourceEntailed:boolean|null, null if and only if the answer is null. A nonnull answer must be entailed by the original source even when it repeats a flawed retained record. Preserve qualification separately: asserted + source_report + explicit unverified prose can faithfully represent an asserted report without independent verification. Service provision is not an instantiated booking. A focused entailed subset may omit unrelated details; explicit rejected-offer wording answers which offer was rejected without repeating the redundant no-plan clause. Omission affects usefulness unless it changes a coupled scope qualification. Any source-unfaithful accepted record or nonnull answer fails the gate, regardless of coverage.'
255
+ : ''),
256
+ cases: reports.flatMap((report) => report.cases.map((entry) => ({
257
+ id: entry.id,
258
+ run: entry.run,
259
+ source: corpus.find((source) => source.id === entry.id),
260
+ reviewKnowledge: entry.reviewKnowledge,
261
+ answers: entry.queries.map((query) => ({
262
+ queryLanguage: query.queryLanguage,
263
+ answerLanguage: query.requestedAnswerLanguage,
264
+ explicitView: query.explicitView,
265
+ retrievedEvidence: query.reviewRetrieval,
266
+ answer: query.reviewAnswer,
267
+ })),
268
+ }))),
269
+ };
270
+ return { ...packet, packetFingerprint: sha256(JSON.stringify(packet)) };
271
+ }
272
+ const LANGUAGE_GATE_THRESHOLDS = {
273
+ unsafeFactualPromotion: 0,
274
+ acceptedLanguageViolations: 0,
275
+ translationQualificationErrors: 0,
276
+ sourceByteChanges: 0,
277
+ usefulRetentionCoverage: 0.8,
278
+ qualifiedRetrievalCoverage: 0.8,
279
+ usefulQualifiedAnswerCoverage: 0.8,
280
+ availabilityFailureRate: 0.05,
281
+ };
282
+ /** Historical trials keep their original policy; the broader corpus declares its stronger target
283
+ * before execution. Never accept a report-supplied threshold as authority for passing a gate. */
284
+ export function languageGateThresholds(corpusVersion) {
285
+ return {
286
+ ...LANGUAGE_GATE_THRESHOLDS,
287
+ ...([
288
+ 'language-discourse-v13',
289
+ 'language-discourse-v14',
290
+ 'language-discourse-v15',
291
+ 'language-discourse-v16',
292
+ 'language-discourse-v17',
293
+ 'language-discourse-v18',
294
+ 'language-discourse-v19',
295
+ 'language-discourse-v20',
296
+ 'language-discourse-v21',
297
+ 'language-discourse-v22',
298
+ ].includes(corpusVersion)
299
+ ? { unsupportedRetainedOutputs: 0, unsupportedNonnullAnswers: 0 }
300
+ : {}),
301
+ usefulQualifiedAnswerCoverage: [
302
+ 'language-discourse-v10',
303
+ 'language-discourse-v11',
304
+ 'language-discourse-v12',
305
+ 'language-discourse-v13',
306
+ 'language-discourse-v14',
307
+ 'language-discourse-v15',
308
+ 'language-discourse-v16',
309
+ 'language-discourse-v17',
310
+ 'language-discourse-v18',
311
+ 'language-discourse-v19',
312
+ 'language-discourse-v20',
313
+ 'language-discourse-v21',
314
+ 'language-discourse-v22',
315
+ ].includes(corpusVersion)
316
+ ? 0.9
317
+ : 0.8,
318
+ };
319
+ }
320
+ /** Fail closed on missing, duplicated, stale, or internally contradictory adjudication. */
321
+ export function adjudicateLanguageGate(reports, inputReview, rawOutputReview) {
322
+ const packet = languageReviewPacket(reports, inputReview);
323
+ const thresholds = languageGateThresholds(reports[0].corpusVersion);
324
+ const review = OutputReview.parse(rawOutputReview);
325
+ const requiresEntailment = [
326
+ 'language-discourse-v13',
327
+ 'language-discourse-v14',
328
+ 'language-discourse-v15',
329
+ 'language-discourse-v16',
330
+ 'language-discourse-v17',
331
+ 'language-discourse-v18',
332
+ 'language-discourse-v19',
333
+ 'language-discourse-v20',
334
+ 'language-discourse-v21',
335
+ 'language-discourse-v22',
336
+ ].includes(reports[0].corpusVersion);
337
+ if (review.schemaVersion !== (requiresEntailment ? 'language-output-review-v2' : 'language-output-review-v1'))
338
+ throw new Error('unexpected output review schema for corpus');
339
+ if (review.packetFingerprint !== packet.packetFingerprint)
340
+ throw new Error('stale output review');
341
+ for (const report of reports)
342
+ separateReviewer(review.reviewer, report);
343
+ exactIds(review.cases.map((entry) => `${entry.id}/${entry.run}`), packet.cases.map((entry) => `${entry.id}/${entry.run}`));
344
+ const failures = [];
345
+ if (reports.some((report) => report.answerPromptVersion !== ANSWER_PROMPT_VERSION ||
346
+ report.answerVerifierVersion !== ANSWER_VERIFIER_PROMPT_VERSION ||
347
+ report.retentionPromptVersion !== RETAIN_PROMPT_VERSION ||
348
+ report.retentionVerifierVersion !== RETAIN_VERIFIER_VERSION ||
349
+ report.proseProjectionVersion !== PROSE_PROJECTION_VERSION ||
350
+ report.memoryViewVersion !== MEMORY_VIEW_VERSION))
351
+ failures.push('stale_runtime_contract');
352
+ const groups = reports.flatMap((report) => Array.from({ length: report.runs }, (_, index) => {
353
+ const run = index + 1;
354
+ const observations = report.cases.filter((entry) => entry.run === run);
355
+ const useful = observations.filter((entry) => !entry.expectedHold);
356
+ let retained = 0, safeHolds = 0, usefulAnswers = 0, usefulRetrievals = 0, justifiedAbstentions = 0;
357
+ let promotions = 0, languageErrors = 0, qualificationErrors = 0, unsupportedRetainedOutputs = 0, unsupportedNonnullAnswers = 0;
358
+ for (const observation of observations) {
359
+ const judgment = review.cases.find((entry) => entry.id === observation.id && entry.run === run);
360
+ exactIds(judgment.answers.map(answerKey), matrixKeys());
361
+ if ((judgment.retentionUseful && observation.retainedItems === 0) ||
362
+ (judgment.retentionJustifiedHold && observation.retainedItems > 0) ||
363
+ (judgment.retentionUseful && judgment.retentionJustifiedHold))
364
+ throw new Error('inconsistent retention judgment');
365
+ if (requiresEntailment) {
366
+ if (!('retainedSourceEntailed' in judgment))
367
+ throw new Error('missing retained source entailment');
368
+ if (!judgment.retainedSourceEntailed) {
369
+ // A useful retained set can still contain an additional unsupported proposition.
370
+ if (!observation.retainedItems)
371
+ throw new Error('inconsistent retained source entailment');
372
+ unsupportedRetainedOutputs++;
373
+ }
374
+ }
375
+ if (judgment.retentionUseful && !observation.expectedHold)
376
+ retained++;
377
+ if (judgment.retentionJustifiedHold && observation.expectedHold)
378
+ safeHolds++;
379
+ if (judgment.unsafeFactualPromotion)
380
+ promotions++;
381
+ if (!judgment.knowledgeLanguageCompliant)
382
+ languageErrors++;
383
+ if (!judgment.qualificationPreserved)
384
+ qualificationErrors++;
385
+ const retrievalJudgments = new Map();
386
+ for (const query of observation.queries) {
387
+ const answer = judgment.answers.find((entry) => answerKey(entry) === queryKey(query));
388
+ const present = query.reviewAnswer !== null;
389
+ if (answer.usefulQualifiedRetrieval && query.reviewRetrieval.length === 0)
390
+ throw new Error('inconsistent retrieval judgment');
391
+ if ((!present && answer.usefulQualifiedAnswer) ||
392
+ (present && answer.justifiedAbstention) ||
393
+ (present && answer.languageCompliant === null) ||
394
+ (!present && answer.languageCompliant !== null))
395
+ throw new Error('inconsistent answer judgment');
396
+ if (requiresEntailment) {
397
+ if (!('sourceEntailed' in answer))
398
+ throw new Error('missing answer source entailment');
399
+ if ((present && answer.sourceEntailed === null) ||
400
+ (!present && answer.sourceEntailed !== null) ||
401
+ (answer.usefulQualifiedAnswer && answer.sourceEntailed !== true))
402
+ throw new Error('inconsistent answer source entailment');
403
+ if (present && answer.sourceEntailed === false)
404
+ unsupportedNonnullAnswers++;
405
+ }
406
+ if (answer.usefulQualifiedAnswer && !observation.expectedHold)
407
+ usefulAnswers++;
408
+ // Answer language does not rerun recall. Count each query/view retrieval once and
409
+ // require consistent judgments when its evidence appears in both answer rows.
410
+ const retrievalKey = `${query.queryLanguage}/${query.explicitView}`;
411
+ if (retrievalJudgments.has(retrievalKey)) {
412
+ if (retrievalJudgments.get(retrievalKey) !== answer.usefulQualifiedRetrieval)
413
+ throw new Error('contradictory judgments for identical retrieval');
414
+ }
415
+ else {
416
+ retrievalJudgments.set(retrievalKey, answer.usefulQualifiedRetrieval);
417
+ if (answer.usefulQualifiedRetrieval && !observation.expectedHold)
418
+ usefulRetrievals++;
419
+ }
420
+ if (answer.justifiedAbstention)
421
+ justifiedAbstentions++;
422
+ if (answer.unsafeFactualPromotion)
423
+ promotions++;
424
+ if (answer.languageCompliant === false)
425
+ languageErrors++;
426
+ if (!answer.qualificationPreserved)
427
+ qualificationErrors++;
428
+ }
429
+ }
430
+ const metrics = {
431
+ usefulRetentionCoverage: rate(retained, useful.length),
432
+ qualifiedRetrievalCoverage: rate(usefulRetrievals, useful.length * 4),
433
+ usefulQualifiedAnswerCoverage: rate(usefulAnswers, useful.length * 8),
434
+ justifiedAbstentions,
435
+ expectedSafeHolds: rate(safeHolds, observations.filter((entry) => entry.expectedHold).length),
436
+ unsafeFactualPromotion: promotions,
437
+ acceptedLanguageViolations: languageErrors,
438
+ translationQualificationErrors: qualificationErrors,
439
+ ...(requiresEntailment ? { unsupportedRetainedOutputs, unsupportedNonnullAnswers } : {}),
440
+ sourceByteChanges: observations.filter((entry) => entry.bytesStable !== true).length,
441
+ availabilityFailureRate: rate(observations.filter((entry) => entry.availabilityFailure).length, observations.length),
442
+ ordinaryProseFailures: observations.filter((entry) => !entry.ordinaryCorrect).length,
443
+ };
444
+ const prefix = `${report.split}/run-${run}`;
445
+ if (requiresEntailment) {
446
+ if (unsupportedRetainedOutputs > thresholds.unsupportedRetainedOutputs)
447
+ failures.push(`${prefix}:unsupportedRetainedOutputs`);
448
+ if (unsupportedNonnullAnswers > thresholds.unsupportedNonnullAnswers)
449
+ failures.push(`${prefix}:unsupportedNonnullAnswers`);
450
+ }
451
+ for (const key of [
452
+ 'usefulRetentionCoverage',
453
+ 'qualifiedRetrievalCoverage',
454
+ 'usefulQualifiedAnswerCoverage',
455
+ ])
456
+ if (metrics[key].rate === null || metrics[key].rate < thresholds[key])
457
+ failures.push(`${prefix}:${key}`);
458
+ for (const key of [
459
+ 'unsafeFactualPromotion',
460
+ 'acceptedLanguageViolations',
461
+ 'translationQualificationErrors',
462
+ 'sourceByteChanges',
463
+ ])
464
+ if (metrics[key] > thresholds[key])
465
+ failures.push(`${prefix}:${key}`);
466
+ if (metrics.availabilityFailureRate.rate === null ||
467
+ metrics.availabilityFailureRate.rate > thresholds.availabilityFailureRate)
468
+ failures.push(`${prefix}:availability`);
469
+ if (metrics.expectedSafeHolds.denominator && metrics.expectedSafeHolds.rate !== 1)
470
+ failures.push(`${prefix}:admission`);
471
+ if (metrics.ordinaryProseFailures > 0)
472
+ failures.push(`${prefix}:ordinaryProse`);
473
+ return {
474
+ split: report.split,
475
+ run,
476
+ metrics,
477
+ ...([
478
+ 'language-discourse-v10',
479
+ 'language-discourse-v11',
480
+ 'language-discourse-v12',
481
+ 'language-discourse-v13',
482
+ 'language-discourse-v14',
483
+ 'language-discourse-v15',
484
+ 'language-discourse-v16',
485
+ 'language-discourse-v17',
486
+ 'language-discourse-v18',
487
+ 'language-discourse-v19',
488
+ 'language-discourse-v20',
489
+ 'language-discourse-v21',
490
+ 'language-discourse-v22',
491
+ ].includes(report.corpusVersion)
492
+ ? { breakdowns: reviewBreakdowns(observations, review) }
493
+ : {}),
494
+ };
495
+ }));
496
+ return {
497
+ schemaVersion: requiresEntailment ? 'language-quality-gate-v2' : 'language-quality-gate-v1',
498
+ independentlyReviewed: true,
499
+ adjudicationKind: review.reviewer.kind,
500
+ reviewer: review.reviewer.id,
501
+ releaseEligible: failures.length === 0,
502
+ scope: review.reviewer.kind === 'model'
503
+ ? 'Frozen invented English/Russian corpus; independent model adjudication is fallible and is not human validation or a general reliability guarantee.'
504
+ : 'Independent human adjudication of a frozen invented English/Russian corpus; not a general reliability guarantee.',
505
+ packetFingerprint: packet.packetFingerprint,
506
+ inputReviewFingerprint: packet.inputReviewFingerprint,
507
+ outputReviewFingerprint: sha256(JSON.stringify(review)),
508
+ thresholds,
509
+ failures,
510
+ groups,
511
+ };
512
+ }
513
+ function reviewBreakdowns(observations, review) {
514
+ const cases = observations
515
+ .filter((entry) => !entry.expectedHold)
516
+ .map((entry) => ({
517
+ ...entry,
518
+ judgment: review.cases.find((judgment) => judgment.id === entry.id && judgment.run === entry.run),
519
+ }));
520
+ const answers = cases.flatMap((entry) => entry.judgment.answers.map((answer) => ({
521
+ ...answer,
522
+ sourceLanguage: entry.language,
523
+ scenario: entry.scenario,
524
+ })));
525
+ const summarizeAnswers = (rows) => ({
526
+ usefulQualifiedAnswerCoverage: rate(rows.filter((row) => row.usefulQualifiedAnswer).length, rows.length),
527
+ justifiedAbstentions: rows.filter((row) => row.justifiedAbstention).length,
528
+ acceptedLanguageViolations: rows.filter((row) => row.languageCompliant === false).length,
529
+ translationQualificationErrors: rows.filter((row) => !row.qualificationPreserved).length,
530
+ unsafeFactualPromotion: rows.filter((row) => row.unsafeFactualPromotion).length,
531
+ });
532
+ const byAnswerDimension = (dimension) => Object.fromEntries(['en', 'ru'].map((key) => [key, summarizeAnswers(answers.filter((row) => row[dimension] === key))]));
533
+ const bySourceDimension = (dimension) => Object.fromEntries([...new Set(cases.map((entry) => entry[dimension]))].map((key) => {
534
+ const selected = cases.filter((entry) => entry[dimension] === key);
535
+ return [
536
+ key,
537
+ {
538
+ usefulRetentionCoverage: rate(selected.filter((entry) => entry.judgment.retentionUseful).length, selected.length),
539
+ ...summarizeAnswers(selected.flatMap((entry) => entry.judgment.answers.map((answer) => ({
540
+ ...answer,
541
+ sourceLanguage: entry.language,
542
+ scenario: entry.scenario,
543
+ })))),
544
+ },
545
+ ];
546
+ }));
547
+ return {
548
+ bySourceLanguage: bySourceDimension('language'),
549
+ byScenario: bySourceDimension('scenario'),
550
+ byQueryLanguage: byAnswerDimension('queryLanguage'),
551
+ byAnswerLanguage: byAnswerDimension('answerLanguage'),
552
+ };
553
+ }
554
+ function exactIds(actual, expected) {
555
+ if (actual.length !== expected.length ||
556
+ new Set(actual).size !== actual.length ||
557
+ actual.some((id) => !expected.includes(id)))
558
+ throw new Error('incomplete or duplicate review matrix');
559
+ }
560
+ function separateReviewer(reviewer, report) {
561
+ if (reviewer.kind === 'model' &&
562
+ [report.models.answer, report.models.retention].some((id) => id?.split('/').at(-1) === reviewer.id.split('/').at(-1)))
563
+ throw new Error('reviewer must differ from runtime models');
564
+ }
565
+ function matrixKeys() {
566
+ return ['en', 'ru'].flatMap((query) => ['en', 'ru'].flatMap((answer) => [false, true].map((explicit) => `${query}/${answer}/${explicit}`)));
567
+ }
568
+ function queryKey(query) {
569
+ return `${query.queryLanguage}/${query.requestedAnswerLanguage}/${query.explicitView}`;
570
+ }
571
+ function answerKey(answer) {
572
+ return `${answer.queryLanguage}/${answer.answerLanguage}/${answer.explicitView}`;
573
+ }
574
+ function rate(numerator, denominator) {
575
+ return { numerator, denominator, rate: denominator ? numerator / denominator : null };
576
+ }
577
+ function contract(report) {
578
+ return {
579
+ models: report.models,
580
+ ...(report.modelOutputTokenLimits ? { modelOutputTokenLimits: report.modelOutputTokenLimits } : {}),
581
+ proseProjectionVersion: report.proseProjectionVersion,
582
+ memoryViewVersion: report.memoryViewVersion,
583
+ answerPromptVersion: report.answerPromptVersion,
584
+ answerVerifierVersion: report.answerVerifierVersion,
585
+ retentionPromptVersion: report.retentionPromptVersion,
586
+ retentionVerifierVersion: report.retentionVerifierVersion,
587
+ knowledgeLanguage: report.knowledgeLanguage,
588
+ setup: report.setup,
589
+ };
590
+ }
591
+ //# sourceMappingURL=language-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-review.js","sourceRoot":"","sources":["../../src/bench/language-review.ts"],"names":[],"mappings":"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"}