@velum-labs/routekit-eval-setup 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/dist/adapters/authoring-responses-request.d.ts +5 -0
  2. package/dist/adapters/authoring-responses-request.js +38 -0
  3. package/dist/adapters/evaluation-evidence-freshness.d.ts +7 -0
  4. package/dist/adapters/evaluation-evidence-freshness.js +76 -0
  5. package/dist/adapters/git-task-history.d.ts +67 -0
  6. package/dist/adapters/git-task-history.js +171 -0
  7. package/dist/adapters/integrated-repository-history.d.ts +21 -0
  8. package/dist/adapters/integrated-repository-history.js +175 -0
  9. package/dist/adapters/repository-command-diagnostic.d.ts +8 -0
  10. package/dist/adapters/repository-command-diagnostic.js +46 -0
  11. package/dist/adapters/repository-command-evidence.d.ts +13 -0
  12. package/dist/adapters/repository-command-evidence.js +102 -0
  13. package/dist/adapters/repository-command-runner.d.ts +238 -0
  14. package/dist/adapters/repository-command-runner.js +1483 -0
  15. package/dist/adapters/repository-import-context.d.ts +47 -0
  16. package/dist/adapters/repository-import-context.js +469 -0
  17. package/dist/adapters/repository-node-test-reporter.d.ts +3 -0
  18. package/dist/adapters/repository-node-test-reporter.js +27 -0
  19. package/dist/adapters/repository-review-evidence.d.ts +39 -0
  20. package/dist/adapters/repository-review-evidence.js +632 -0
  21. package/dist/adapters/repository-seed-selection.d.ts +7 -0
  22. package/dist/adapters/repository-seed-selection.js +79 -0
  23. package/dist/adapters/repository-solution-edits.d.ts +49 -0
  24. package/dist/adapters/repository-solution-edits.js +136 -0
  25. package/dist/adapters/repository-vitest-phase-adapter.d.ts +8 -0
  26. package/dist/adapters/repository-vitest-phase-adapter.js +310 -0
  27. package/dist/adapters/repository-vitest-reporter.d.ts +24 -0
  28. package/dist/adapters/repository-vitest-reporter.js +314 -0
  29. package/dist/adapters/strict-authoring-schema.d.ts +5 -0
  30. package/dist/adapters/strict-authoring-schema.js +158 -0
  31. package/dist/adapters/test-discovery.d.ts +30 -0
  32. package/dist/adapters/test-discovery.js +124 -0
  33. package/dist/adapters/typescript-repository-index.d.ts +51 -0
  34. package/dist/adapters/typescript-repository-index.js +226 -0
  35. package/dist/agentic-capabilities-protocol.d.ts +1373 -0
  36. package/dist/agentic-capabilities-protocol.js +786 -0
  37. package/dist/case-checkpoint-store.d.ts +29 -0
  38. package/dist/case-checkpoint-store.js +133 -0
  39. package/dist/case-pipeline-protocol-v2.d.ts +184 -0
  40. package/dist/case-pipeline-protocol-v2.js +193 -0
  41. package/dist/case-pipeline-protocol.d.ts +2626 -0
  42. package/dist/case-pipeline-protocol.js +371 -0
  43. package/dist/effect-api.d.ts +74 -10
  44. package/dist/effect-api.js +56 -6
  45. package/dist/errors.d.ts +31 -0
  46. package/dist/errors.js +10 -0
  47. package/dist/eval-capability-execution-envelope.d.ts +64 -0
  48. package/dist/eval-capability-execution-envelope.js +98 -0
  49. package/dist/eval-capability-policy.d.ts +90 -0
  50. package/dist/eval-capability-policy.js +107 -0
  51. package/dist/eval-event-log.d.ts +140 -0
  52. package/dist/eval-event-log.js +220 -0
  53. package/dist/evaluation-authoring-policy.d.ts +18 -0
  54. package/dist/evaluation-authoring-policy.js +19 -0
  55. package/dist/evaluation-authoring-validation.d.ts +22 -0
  56. package/dist/evaluation-authoring-validation.js +72 -0
  57. package/dist/evaluation-evidence.d.ts +20 -0
  58. package/dist/evaluation-evidence.js +319 -0
  59. package/dist/evaluation-grader-calibration-protocol.d.ts +108 -0
  60. package/dist/evaluation-grader-calibration-protocol.js +80 -0
  61. package/dist/evaluation-grader-calibration.d.ts +18 -0
  62. package/dist/evaluation-grader-calibration.js +334 -0
  63. package/dist/evaluation-grading-policy.d.ts +24 -0
  64. package/dist/evaluation-grading-policy.js +54 -0
  65. package/dist/evaluation-proposal-policy.d.ts +4 -0
  66. package/dist/evaluation-proposal-policy.js +91 -0
  67. package/dist/evaluation-source-retrieval.d.ts +68 -0
  68. package/dist/evaluation-source-retrieval.js +513 -0
  69. package/dist/evaluation-structure-policy.d.ts +29 -0
  70. package/dist/evaluation-structure-policy.js +138 -0
  71. package/dist/index.d.ts +124 -17
  72. package/dist/index.js +69 -11
  73. package/dist/inspection.js +2 -3
  74. package/dist/project-artifacts.d.ts +7 -2
  75. package/dist/project-artifacts.js +49 -136
  76. package/dist/project-authoring.d.ts +66 -5
  77. package/dist/project-authoring.js +783 -109
  78. package/dist/project-contracts.d.ts +419 -84
  79. package/dist/project-contracts.js +160 -52
  80. package/dist/project-store.js +2 -1
  81. package/dist/project-workflow.d.ts +5 -4
  82. package/dist/project-workflow.js +154 -35
  83. package/dist/repository-adversary-protocol.d.ts +64 -0
  84. package/dist/repository-adversary-protocol.js +105 -0
  85. package/dist/repository-behavior-protocol.d.ts +188 -0
  86. package/dist/repository-behavior-protocol.js +202 -0
  87. package/dist/repository-benchmark-protocol.d.ts +487 -0
  88. package/dist/repository-benchmark-protocol.js +96 -0
  89. package/dist/repository-execution-protocol.d.ts +150 -0
  90. package/dist/repository-execution-protocol.js +38 -0
  91. package/dist/repository-fixture-instructions.d.ts +3 -0
  92. package/dist/repository-fixture-instructions.js +91 -0
  93. package/dist/repository-fixture-protocol.d.ts +79 -0
  94. package/dist/repository-fixture-protocol.js +79 -0
  95. package/dist/repository-foundry-plan-protocol.d.ts +118 -0
  96. package/dist/repository-foundry-plan-protocol.js +296 -0
  97. package/dist/repository-foundry-progress-protocol.d.ts +52 -0
  98. package/dist/repository-foundry-progress-protocol.js +52 -0
  99. package/dist/repository-improvement-protocol.d.ts +100 -0
  100. package/dist/repository-improvement-protocol.js +106 -0
  101. package/dist/repository-language-model-protocol.d.ts +43 -0
  102. package/dist/repository-language-model-protocol.js +146 -0
  103. package/dist/repository-oracle-coverage-protocol.d.ts +18 -0
  104. package/dist/repository-oracle-coverage-protocol.js +39 -0
  105. package/dist/repository-oracle-execution-binding.d.ts +27 -0
  106. package/dist/repository-oracle-execution-binding.js +59 -0
  107. package/dist/repository-oracle-protocol.d.ts +230 -0
  108. package/dist/repository-oracle-protocol.js +156 -0
  109. package/dist/repository-oracle-scope-policy.d.ts +22 -0
  110. package/dist/repository-oracle-scope-policy.js +92 -0
  111. package/dist/repository-quality-policy.d.ts +15 -0
  112. package/dist/repository-quality-policy.js +357 -0
  113. package/dist/repository-routing-benchmark-protocol.d.ts +176 -0
  114. package/dist/repository-routing-benchmark-protocol.js +103 -0
  115. package/dist/repository-routing-model-protocol.d.ts +36 -0
  116. package/dist/repository-routing-model-protocol.js +89 -0
  117. package/dist/repository-routing-plan-protocol.d.ts +112 -0
  118. package/dist/repository-routing-plan-protocol.js +58 -0
  119. package/dist/repository-routing-quality-policy.d.ts +9 -0
  120. package/dist/repository-routing-quality-policy.js +191 -0
  121. package/dist/repository-seed-qualification-progress-protocol.d.ts +205 -0
  122. package/dist/repository-seed-qualification-progress-protocol.js +28 -0
  123. package/dist/repository-semantic-calibration-protocol.d.ts +768 -0
  124. package/dist/repository-semantic-calibration-protocol.js +276 -0
  125. package/dist/repository-semantic-calibration.d.ts +163 -0
  126. package/dist/repository-semantic-calibration.js +581 -0
  127. package/dist/repository-specification-contract-facts-protocol.d.ts +224 -0
  128. package/dist/repository-specification-contract-facts-protocol.js +276 -0
  129. package/dist/repository-specification-critique-protocol.d.ts +189 -0
  130. package/dist/repository-specification-critique-protocol.js +103 -0
  131. package/dist/repository-task-family-protocol.d.ts +24 -0
  132. package/dist/repository-task-family-protocol.js +37 -0
  133. package/dist/repository-task-seed-protocol.d.ts +384 -0
  134. package/dist/repository-task-seed-protocol.js +236 -0
  135. package/dist/repository-trajectory-protocol.d.ts +20 -0
  136. package/dist/repository-trajectory-protocol.js +42 -0
  137. package/dist/service.js +1 -1
  138. package/dist/services/adversary/service.d.ts +64 -0
  139. package/dist/services/adversary/service.js +330 -0
  140. package/dist/services/benchmark-compiler/service.d.ts +450 -0
  141. package/dist/services/benchmark-compiler/service.js +9 -0
  142. package/dist/services/budgeted-model/service.d.ts +118 -0
  143. package/dist/services/budgeted-model/service.js +460 -0
  144. package/dist/services/case-authoring/service.d.ts +163 -0
  145. package/dist/services/case-authoring/service.js +1456 -0
  146. package/dist/services/case-finalization/service.d.ts +283 -0
  147. package/dist/services/case-finalization/service.js +370 -0
  148. package/dist/services/case-generation/service.d.ts +619 -0
  149. package/dist/services/case-generation/service.js +2628 -0
  150. package/dist/services/case-pipeline/service.d.ts +31 -0
  151. package/dist/services/case-pipeline/service.js +485 -0
  152. package/dist/services/case-pipeline-v2/service.d.ts +70 -0
  153. package/dist/services/case-pipeline-v2/service.js +477 -0
  154. package/dist/services/command-observability/service.d.ts +13 -0
  155. package/dist/services/command-observability/service.js +3 -0
  156. package/dist/services/dimension-labeling/service.d.ts +77 -0
  157. package/dist/services/dimension-labeling/service.js +188 -0
  158. package/dist/services/eval-candidate/service.d.ts +208 -0
  159. package/dist/services/eval-candidate/service.js +64 -0
  160. package/dist/services/eval-capabilities/service.d.ts +183 -0
  161. package/dist/services/eval-capabilities/service.js +1433 -0
  162. package/dist/services/eval-environment/service.d.ts +173 -0
  163. package/dist/services/eval-environment/service.js +127 -0
  164. package/dist/services/evidence-reconstruction/service.d.ts +36 -0
  165. package/dist/services/evidence-reconstruction/service.js +145 -0
  166. package/dist/services/fixture-builder/service.d.ts +62 -0
  167. package/dist/services/fixture-builder/service.js +36 -0
  168. package/dist/services/fixture-validation/service.d.ts +75 -0
  169. package/dist/services/fixture-validation/service.js +295 -0
  170. package/dist/services/foundry/service.d.ts +831 -0
  171. package/dist/services/foundry/service.js +442 -0
  172. package/dist/services/foundry-progress/service.d.ts +62 -0
  173. package/dist/services/foundry-progress/service.js +149 -0
  174. package/dist/services/foundry-v2/service.d.ts +54 -0
  175. package/dist/services/foundry-v2/service.js +28 -0
  176. package/dist/services/grounded-authoring/service.d.ts +126 -0
  177. package/dist/services/grounded-authoring/service.js +822 -0
  178. package/dist/services/historical-case/service.d.ts +722 -0
  179. package/dist/services/historical-case/service.js +177 -0
  180. package/dist/services/improvement-loop/service.d.ts +59 -0
  181. package/dist/services/improvement-loop/service.js +176 -0
  182. package/dist/services/language-model/service.d.ts +52 -0
  183. package/dist/services/language-model/service.js +194 -0
  184. package/dist/services/oracle-builder/service.d.ts +146 -0
  185. package/dist/services/oracle-builder/service.js +513 -0
  186. package/dist/services/oracle-coverage/service.d.ts +28 -0
  187. package/dist/services/oracle-coverage/service.js +50 -0
  188. package/dist/services/oracle-coverage-witness/service.d.ts +130 -0
  189. package/dist/services/oracle-coverage-witness/service.js +538 -0
  190. package/dist/services/pipeline-challenge/service.d.ts +551 -0
  191. package/dist/services/pipeline-challenge/service.js +427 -0
  192. package/dist/services/pipeline-controls/service.d.ts +130 -0
  193. package/dist/services/pipeline-controls/service.js +483 -0
  194. package/dist/services/pipeline-oracle/service.d.ts +8 -0
  195. package/dist/services/pipeline-oracle/service.js +256 -0
  196. package/dist/services/pipeline-seed/service.d.ts +298 -0
  197. package/dist/services/pipeline-seed/service.js +428 -0
  198. package/dist/services/pipeline-spec/service.d.ts +103 -0
  199. package/dist/services/pipeline-spec/service.js +619 -0
  200. package/dist/services/pipeline-tournament/service.d.ts +258 -0
  201. package/dist/services/pipeline-tournament/service.js +476 -0
  202. package/dist/services/quality-gate/service.d.ts +233 -0
  203. package/dist/services/quality-gate/service.js +136 -0
  204. package/dist/services/repository-bundle/service.d.ts +33 -0
  205. package/dist/services/repository-bundle/service.js +114 -0
  206. package/dist/services/repository-model/service.d.ts +105 -0
  207. package/dist/services/repository-model/service.js +250 -0
  208. package/dist/services/repository-public-artifact/service.d.ts +133 -0
  209. package/dist/services/repository-public-artifact/service.js +330 -0
  210. package/dist/services/routing-benchmark/service.d.ts +362 -0
  211. package/dist/services/routing-benchmark/service.js +96 -0
  212. package/dist/services/specification-critic/service.d.ts +92 -0
  213. package/dist/services/specification-critic/service.js +172 -0
  214. package/dist/services/task-family/service.d.ts +40 -0
  215. package/dist/services/task-family/service.js +55 -0
  216. package/dist/services/task-seed/service.d.ts +906 -0
  217. package/dist/services/task-seed/service.js +1406 -0
  218. package/dist/services/task-specification/service.d.ts +27 -0
  219. package/dist/services/task-specification/service.js +40 -0
  220. package/dist/services/trajectory-policy/service.d.ts +110 -0
  221. package/dist/services/trajectory-policy/service.js +216 -0
  222. package/dist/test/agentic-capabilities-protocol.test.d.ts +1 -0
  223. package/dist/test/agentic-capabilities-protocol.test.js +570 -0
  224. package/dist/test/agentic-capabilities.test.d.ts +1 -0
  225. package/dist/test/agentic-capabilities.test.js +1461 -0
  226. package/dist/test/agentic-environment.test.d.ts +1 -0
  227. package/dist/test/agentic-environment.test.js +213 -0
  228. package/dist/test/case-pipeline-foundation.test.d.ts +1 -0
  229. package/dist/test/case-pipeline-foundation.test.js +535 -0
  230. package/dist/test/case-pipeline-protocol-v2.test.d.ts +1 -0
  231. package/dist/test/case-pipeline-protocol-v2.test.js +124 -0
  232. package/dist/test/case-pipeline-v2.test.d.ts +1 -0
  233. package/dist/test/case-pipeline-v2.test.js +286 -0
  234. package/dist/test/case-pipeline.test.d.ts +1 -0
  235. package/dist/test/case-pipeline.test.js +851 -0
  236. package/dist/test/eval-capability-policy.test.d.ts +1 -0
  237. package/dist/test/eval-capability-policy.test.js +50 -0
  238. package/dist/test/eval-event-log.test.d.ts +1 -0
  239. package/dist/test/eval-event-log.test.js +125 -0
  240. package/dist/test/evaluation-evidence-freshness.test.d.ts +1 -0
  241. package/dist/test/evaluation-evidence-freshness.test.js +44 -0
  242. package/dist/test/evaluation-evidence.test.d.ts +1 -0
  243. package/dist/test/evaluation-evidence.test.js +230 -0
  244. package/dist/test/evaluation-grader-calibration.test.d.ts +1 -0
  245. package/dist/test/evaluation-grader-calibration.test.js +373 -0
  246. package/dist/test/evaluation-proposal-digest.test.d.ts +1 -0
  247. package/dist/test/evaluation-proposal-digest.test.js +187 -0
  248. package/dist/test/evaluation-source-retrieval.test.d.ts +1 -0
  249. package/dist/test/evaluation-source-retrieval.test.js +237 -0
  250. package/dist/test/evaluation-structure-policy.test.d.ts +1 -0
  251. package/dist/test/evaluation-structure-policy.test.js +196 -0
  252. package/dist/test/fixtures/repository-resource-panel.d.ts +39 -0
  253. package/dist/test/fixtures/repository-resource-panel.js +111 -0
  254. package/dist/test/fixtures/vitest-boundary-panel.d.ts +84 -0
  255. package/dist/test/fixtures/vitest-boundary-panel.js +120 -0
  256. package/dist/test/fixtures/vitest-phase-panel.d.ts +135 -0
  257. package/dist/test/fixtures/vitest-phase-panel.js +213 -0
  258. package/dist/test/fixtures/vitest-reporter-results.d.ts +76 -0
  259. package/dist/test/fixtures/vitest-reporter-results.js +94 -0
  260. package/dist/test/grounded-authoring.test.d.ts +1 -0
  261. package/dist/test/grounded-authoring.test.js +565 -0
  262. package/dist/test/integrated-repository-history.test.d.ts +1 -0
  263. package/dist/test/integrated-repository-history.test.js +227 -0
  264. package/dist/test/project-authoring.test.js +593 -43
  265. package/dist/test/project-workflow.test.js +419 -40
  266. package/dist/test/repository-authoring-artifacts.test.d.ts +1 -0
  267. package/dist/test/repository-authoring-artifacts.test.js +185 -0
  268. package/dist/test/repository-bundle.test.d.ts +1 -0
  269. package/dist/test/repository-bundle.test.js +52 -0
  270. package/dist/test/repository-case-generation.test.d.ts +1 -0
  271. package/dist/test/repository-case-generation.test.js +3465 -0
  272. package/dist/test/repository-command-diagnostic.test.d.ts +1 -0
  273. package/dist/test/repository-command-diagnostic.test.js +55 -0
  274. package/dist/test/repository-command-signals.test.d.ts +1 -0
  275. package/dist/test/repository-command-signals.test.js +124 -0
  276. package/dist/test/repository-fixture-scope-coverage.test.d.ts +1 -0
  277. package/dist/test/repository-fixture-scope-coverage.test.js +127 -0
  278. package/dist/test/repository-fixture-validation.test.d.ts +1 -0
  279. package/dist/test/repository-fixture-validation.test.js +362 -0
  280. package/dist/test/repository-foundry-progress.test.d.ts +1 -0
  281. package/dist/test/repository-foundry-progress.test.js +110 -0
  282. package/dist/test/repository-foundry-quality.test.d.ts +1 -0
  283. package/dist/test/repository-foundry-quality.test.js +1138 -0
  284. package/dist/test/repository-import-context.test.d.ts +1 -0
  285. package/dist/test/repository-import-context.test.js +354 -0
  286. package/dist/test/repository-model-authoring.test.d.ts +1 -0
  287. package/dist/test/repository-model-authoring.test.js +544 -0
  288. package/dist/test/repository-model.test.d.ts +1 -0
  289. package/dist/test/repository-model.test.js +2195 -0
  290. package/dist/test/repository-node-test-reporter.test.d.ts +1 -0
  291. package/dist/test/repository-node-test-reporter.test.js +104 -0
  292. package/dist/test/repository-oracle-concurrency.test.d.ts +1 -0
  293. package/dist/test/repository-oracle-concurrency.test.js +542 -0
  294. package/dist/test/repository-oracle-coverage-witness.test.d.ts +1 -0
  295. package/dist/test/repository-oracle-coverage-witness.test.js +511 -0
  296. package/dist/test/repository-oracle-coverage.test.d.ts +1 -0
  297. package/dist/test/repository-oracle-coverage.test.js +168 -0
  298. package/dist/test/repository-oracle-evidence.test.d.ts +1 -0
  299. package/dist/test/repository-oracle-evidence.test.js +185 -0
  300. package/dist/test/repository-oracle-plan.test.d.ts +1 -0
  301. package/dist/test/repository-oracle-plan.test.js +176 -0
  302. package/dist/test/repository-overlay-isolation.test.d.ts +1 -0
  303. package/dist/test/repository-overlay-isolation.test.js +85 -0
  304. package/dist/test/repository-preparation-cache.test.d.ts +1 -0
  305. package/dist/test/repository-preparation-cache.test.js +414 -0
  306. package/dist/test/repository-public-artifact.test.d.ts +1 -0
  307. package/dist/test/repository-public-artifact.test.js +273 -0
  308. package/dist/test/repository-qualification-diagnostics.test.d.ts +1 -0
  309. package/dist/test/repository-qualification-diagnostics.test.js +524 -0
  310. package/dist/test/repository-reference-authoring.test.d.ts +1 -0
  311. package/dist/test/repository-reference-authoring.test.js +1633 -0
  312. package/dist/test/repository-review-evidence-v2.test.d.ts +1 -0
  313. package/dist/test/repository-review-evidence-v2.test.js +183 -0
  314. package/dist/test/repository-review-evidence.test.d.ts +1 -0
  315. package/dist/test/repository-review-evidence.test.js +124 -0
  316. package/dist/test/repository-seed-exclusions.test.d.ts +1 -0
  317. package/dist/test/repository-seed-exclusions.test.js +96 -0
  318. package/dist/test/repository-seed-selection.test.d.ts +1 -0
  319. package/dist/test/repository-seed-selection.test.js +504 -0
  320. package/dist/test/repository-semantic-calibration.test.d.ts +1 -0
  321. package/dist/test/repository-semantic-calibration.test.js +688 -0
  322. package/dist/test/repository-solution-edits.test.d.ts +1 -0
  323. package/dist/test/repository-solution-edits.test.js +377 -0
  324. package/dist/test/repository-specification-budget.test.d.ts +1 -0
  325. package/dist/test/repository-specification-budget.test.js +171 -0
  326. package/dist/test/repository-specification-contract-checkpoint.test.d.ts +1 -0
  327. package/dist/test/repository-specification-contract-checkpoint.test.js +228 -0
  328. package/dist/test/repository-specification-contract-facts.test.d.ts +1 -0
  329. package/dist/test/repository-specification-contract-facts.test.js +177 -0
  330. package/dist/test/repository-trajectory-authoring.test.d.ts +1 -0
  331. package/dist/test/repository-trajectory-authoring.test.js +176 -0
  332. package/dist/test/repository-valid-control-plan.test.d.ts +1 -0
  333. package/dist/test/repository-valid-control-plan.test.js +45 -0
  334. package/dist/test/repository-vitest-phase.test.d.ts +1 -0
  335. package/dist/test/repository-vitest-phase.test.js +848 -0
  336. package/dist/test/repository-vitest-reporter.test.d.ts +1 -0
  337. package/dist/test/repository-vitest-reporter.test.js +158 -0
  338. package/dist/test/repository-workspace-build.test.d.ts +1 -0
  339. package/dist/test/repository-workspace-build.test.js +160 -0
  340. package/dist/test/strict-authoring-schema.test.d.ts +1 -0
  341. package/dist/test/strict-authoring-schema.test.js +169 -0
  342. package/package.json +48 -6
@@ -0,0 +1,427 @@
1
+ import { Clock, Effect, Schema } from "effect";
2
+ import { loadPinnedSolutionEditSourcesV1, materializeSolutionFileOverridesV1, RepositorySolutionFileOutputV1 } from "../../adapters/repository-solution-edits.js";
3
+ import { checkpointDigestV1, pipelineStageToProgressStageV1 } from "../../case-pipeline-protocol.js";
4
+ import { RepositoryFoundryError } from "../../errors.js";
5
+ import { repositoryFoundryRoleOutputCeilingV1 } from "../../repository-foundry-plan-protocol.js";
6
+ import { repositoryFoundryModelAssignmentV1 } from "../../repository-language-model-protocol.js";
7
+ import { admitRepositoryBenchmarkCaseV1, compileValidatedBenchmarkLibraryV1, evaluateRepositoryOracleAdequacyV1, repositoryBehavioralFingerprintV1 } from "../../repository-quality-policy.js";
8
+ import { evaluateRepositoryOracleScopeCoverageV1, repositoryOracleRepeatedRowsV1 as repeatedRows, repositoryOracleAttributedSemanticFailureV1 as isAttributedSemanticFailure } from "../../repository-oracle-scope-policy.js";
9
+ import { generateWithFeedbackV1 } from "../budgeted-model/service.js";
10
+ import { reportFoundryStageV1 } from "../foundry-progress/service.js";
11
+ import { RepositoryFoundryLanguageModel } from "../language-model/service.js";
12
+ import { buildHistoricalHiddenOracleV1 } from "../oracle-builder/service.js";
13
+ import { deriveRepositoryTaskFamiliesV1 } from "../task-family/service.js";
14
+ const HeldOutAdversaryProposalV1 = Schema.Struct({
15
+ solutions: Schema.Array(Schema.Struct({
16
+ id: Schema.String,
17
+ family: Schema.String,
18
+ kind: Schema.Literals(["mutation", "model-near-miss", "reward-hacking"]),
19
+ fileOverrides: Schema.Array(RepositorySolutionFileOutputV1)
20
+ }))
21
+ });
22
+ const failure = (detail, cause) => new RepositoryFoundryError({
23
+ operation: "run-pipeline-stage",
24
+ detail,
25
+ ...(cause === undefined ? {} : { cause })
26
+ });
27
+ const qualityFinding = (axis, detail, evidenceIds) => ({
28
+ axis,
29
+ outcome: "pass",
30
+ detail,
31
+ evidence: [],
32
+ evidenceIds
33
+ });
34
+ const verifyExecutedOracle = (input) => {
35
+ const reasons = [];
36
+ const semanticKills = new Set();
37
+ const clauses = input.oracle.clauses.filter((clause) => clause.critical && clause.kind !== "semantic-residual");
38
+ const clauseIds = new Set(clauses.map(({ id }) => id));
39
+ const solutionIds = new Set(input.oracle.solutions.map(({ id }) => id));
40
+ if (!Number.isSafeInteger(input.repetitions) || input.repetitions < 2) {
41
+ reasons.push(`${input.label}: execution repetitions must be at least two`);
42
+ }
43
+ if (clauses.length === 0)
44
+ reasons.push(`${input.label}: no critical executable clauses`);
45
+ if (input.requireReference && !solutionIds.has("historical-reference")) {
46
+ reasons.push(`${input.label}: historical reference is absent`);
47
+ }
48
+ for (const row of input.oracle.observations) {
49
+ if (!solutionIds.has(row.solutionId) ||
50
+ !clauseIds.has(row.clauseId) ||
51
+ row.outcome === "unknown") {
52
+ reasons.push(`${input.label}: inconclusive or unbound observation ${row.solutionId}/${row.clauseId}`);
53
+ }
54
+ }
55
+ for (const solution of input.oracle.solutions) {
56
+ let semanticPass = false;
57
+ let semanticKill = false;
58
+ const policyRejected = solution.expectedClass === "wrong" &&
59
+ clauses.some((clause) => {
60
+ if (clause.kind !== "candidate-policy")
61
+ return false;
62
+ const rows = input.oracle.observations.filter((row) => row.solutionId === solution.id && row.clauseId === clause.id);
63
+ return (repeatedRows(rows, input.repetitions) && rows.every(({ outcome }) => outcome === "fail"));
64
+ });
65
+ for (const clause of clauses) {
66
+ const rows = input.oracle.observations.filter((row) => row.solutionId === solution.id && row.clauseId === clause.id);
67
+ if (policyRejected && clause.kind !== "candidate-policy") {
68
+ if (rows.length > 0) {
69
+ reasons.push(`${input.label}: policy-rejected solution has inconsistent later observations ${solution.id}/${clause.id}`);
70
+ }
71
+ continue;
72
+ }
73
+ if (!repeatedRows(rows, input.repetitions)) {
74
+ reasons.push(`${input.label}: incomplete repeats for ${solution.id}/${clause.id}`);
75
+ continue;
76
+ }
77
+ if (solution.expectedClass === "valid") {
78
+ if (!rows.every(({ outcome }) => outcome === "pass")) {
79
+ reasons.push(`${input.label}: valid solution failed ${solution.id}/${clause.id}`);
80
+ }
81
+ if (clause.kind === "test-command" &&
82
+ rows.every((row) => row.outcome === "pass" &&
83
+ row.detail.includes("stage=grade") &&
84
+ row.detail.includes("gradeExecuted=true") &&
85
+ row.detail.includes("timeout=false") &&
86
+ row.detail.includes("exit=0") &&
87
+ !row.detail.includes("output=truncated"))) {
88
+ semanticPass = true;
89
+ }
90
+ }
91
+ else if (rows.every((row) => isAttributedSemanticFailure(row, clause))) {
92
+ semanticKill = true;
93
+ }
94
+ }
95
+ if (solution.expectedClass === "valid" && !semanticPass) {
96
+ reasons.push(`${input.label}: valid solution has no completed grading pass ${solution.id}`);
97
+ }
98
+ if (solution.expectedClass === "wrong") {
99
+ if (!semanticKill && !policyRejected) {
100
+ reasons.push(`${input.label}: wrong solution lacks an attributed failure ${solution.id}`);
101
+ }
102
+ else {
103
+ semanticKills.add(solution.id);
104
+ }
105
+ }
106
+ }
107
+ return { reasons, semanticKills: [...semanticKills].sort() };
108
+ };
109
+ const executableEvidenceIds = (oracle) => oracle.observations.map(({ solutionId, clauseId, repetition }) => `execution:${oracle.caseId}:${solutionId}:${clauseId}:${String(repetition)}`);
110
+ const materializeHeldOut = (input) => {
111
+ const findings = [];
112
+ if (input.proposal.solutions.length === 0) {
113
+ return {
114
+ findings: [
115
+ { kind: "contract", message: "Submit at least one executable held-out adversary." }
116
+ ]
117
+ };
118
+ }
119
+ for (const proposed of input.proposal.solutions) {
120
+ if (proposed.id.trim().length === 0 || proposed.family.trim().length === 0) {
121
+ findings.push({
122
+ kind: "contract",
123
+ message: "Held-out adversary id and family must be non-empty."
124
+ });
125
+ continue;
126
+ }
127
+ if (input.existingIds.has(proposed.id)) {
128
+ findings.push({
129
+ kind: "contract",
130
+ message: `Held-out adversary id is already in use: ${proposed.id}`
131
+ });
132
+ continue;
133
+ }
134
+ if (proposed.fileOverrides.some(({ path }) => input.protectedPaths.has(path))) {
135
+ findings.push({
136
+ kind: "materialization",
137
+ message: "Held-out adversaries may not edit protected harness paths. Revise the implementation edits."
138
+ });
139
+ continue;
140
+ }
141
+ try {
142
+ const materialized = materializeSolutionFileOverridesV1({
143
+ fileOverrides: proposed.fileOverrides,
144
+ sources: input.sources,
145
+ allowedPaths: input.allowedPaths
146
+ });
147
+ return {
148
+ solution: {
149
+ id: proposed.id,
150
+ family: proposed.family,
151
+ kind: proposed.kind,
152
+ expectedClass: "wrong",
153
+ commit: input.initialCommit,
154
+ fileOverrides: materialized.fileOverrides
155
+ },
156
+ findings: []
157
+ };
158
+ }
159
+ catch (cause) {
160
+ findings.push({
161
+ kind: "materialization",
162
+ message: cause instanceof Error ? cause.message : String(cause)
163
+ });
164
+ }
165
+ }
166
+ return { findings };
167
+ };
168
+ export const runPipelineChallengeCapabilityV1 = (input) => Effect.gen(function* () {
169
+ const seedCheckpoint = input.checkpoints.seed;
170
+ const spec = input.checkpoints.spec;
171
+ const tournament = input.checkpoints.tournament;
172
+ if (seedCheckpoint === undefined || spec === undefined || tournament === undefined) {
173
+ return yield* failure("challenge requires accepted seed, specification, and tournament checkpoints");
174
+ }
175
+ const seed = seedCheckpoint.seed;
176
+ if (seed.status !== "qualified" || seed.referenceCommit === undefined) {
177
+ return yield* failure("challenge requires a replay-qualified pinned reference");
178
+ }
179
+ const languageModel = yield* RepositoryFoundryLanguageModel;
180
+ const assignment = yield* Effect.try({
181
+ try: () => repositoryFoundryModelAssignmentV1(input.context.modelPlan, "held-out-adversary"),
182
+ catch: (cause) => failure("could not resolve held-out adversary assignment", cause)
183
+ });
184
+ const protectedPaths = new Set(seed.environment.protectedControlPaths);
185
+ const allowedPaths = new Set(spec.contextSources.map(({ path }) => path).filter((path) => !protectedPaths.has(path)));
186
+ if (allowedPaths.size === 0) {
187
+ return yield* failure("challenge has no reviewed pre-change implementation source available");
188
+ }
189
+ const sources = yield* loadPinnedSolutionEditSourcesV1({
190
+ repositoryRoot: input.context.repositoryRoot,
191
+ initialCommit: seed.initialState.commit,
192
+ visibleSources: spec.contextSources,
193
+ allowedPaths
194
+ });
195
+ if (sources.length === 0) {
196
+ return yield* failure("challenge could not load a complete pinned pre-change edit source");
197
+ }
198
+ const existingIds = new Set(tournament.oracle.solutions.map(({ id }) => id));
199
+ let accepted = input.materialized;
200
+ yield* reportFoundryStageV1(pipelineStageToProgressStageV1("challenge"), `case=${input.context.caseId}; fold=${String(input.checkpoints.challenge?.fold ?? 0)}; status=authoring-fresh-held-out`);
201
+ if (accepted === undefined)
202
+ yield* generateWithFeedbackV1({
203
+ ...(input.workCheckpointStore === undefined ? {} : {
204
+ checkpoint: {
205
+ store: input.workCheckpointStore,
206
+ binding: {
207
+ parentDigest: checkpointDigestV1(tournament),
208
+ initialCommit: seed.initialState.commit,
209
+ existingIds: [...existingIds].sort(),
210
+ allowedPaths: [...allowedPaths].sort()
211
+ }
212
+ }
213
+ }),
214
+ languageModel,
215
+ assignment,
216
+ operationId: `${input.context.caseId}:challenge:fold-${String(input.checkpoints.challenge?.fold ?? 0)}`,
217
+ instructions: [
218
+ "Act as a fresh blind adversary for the visible repository task.",
219
+ "You receive only the public task, complete routing dimension contract, target behavior prose, and pinned pre-change sources.",
220
+ "You do not receive the reference implementation, hidden fixture suite, development oracle, or prior adversaries.",
221
+ "Propose a plausible implementation that is materially wrong for the requested behavior while still likely to build.",
222
+ "Use exact search/replace edits over supplied source text. Do not edit tests or protected harness controls.",
223
+ "Host schema and materialization findings will be returned to this same role before execution.",
224
+ "After one proposal materializes, it is frozen: execution failure becomes the held-out verdict and is never repaired."
225
+ ].join("\n"),
226
+ input: {
227
+ dimension: input.context.dimension,
228
+ visible: spec.visible,
229
+ targetBehavior: seed.targetBehavior.map(({ id, description, critical }) => ({
230
+ id,
231
+ description,
232
+ critical
233
+ })),
234
+ preChangeSources: sources.map(({ path, content }) => ({ path, content })),
235
+ protectedPaths: [...protectedPaths]
236
+ },
237
+ schemaName: "routekit_pipeline_held_out_adversary_v1",
238
+ outputSchema: HeldOutAdversaryProposalV1,
239
+ maximumOutputTokens: repositoryFoundryRoleOutputCeilingV1("held-out-adversary"),
240
+ maxAttempts: Math.max(1, Math.trunc(input.context.budget.maxModelCalls) + 1),
241
+ validate: (proposal) => Effect.sync(() => {
242
+ const result = materializeHeldOut({
243
+ proposal,
244
+ initialCommit: seed.initialState.commit,
245
+ existingIds,
246
+ sources,
247
+ allowedPaths,
248
+ protectedPaths
249
+ });
250
+ accepted = result.solution;
251
+ return result.findings;
252
+ })
253
+ });
254
+ if (accepted === undefined) {
255
+ return yield* failure("held-out adversary was accepted without an executable materialization");
256
+ }
257
+ // Materialization is a one-time transition. Re-emitting it on resume can
258
+ // replace the persisted oracle continuation with the earlier empty state.
259
+ if (input.materialized === undefined && input.onMaterialized !== undefined)
260
+ yield* input.onMaterialized(accepted);
261
+ yield* reportFoundryStageV1(pipelineStageToProgressStageV1("challenge"), `case=${input.context.caseId}; status=executing-frozen-held-out`);
262
+ const oracle = yield* buildHistoricalHiddenOracleV1({
263
+ repositoryRoot: input.context.repositoryRoot,
264
+ caseId: input.context.caseId,
265
+ seed,
266
+ additionalSolutions: [accepted],
267
+ hiddenFixtureSuite: tournament.suite,
268
+ repetitions: input.context.oracleRepetitions,
269
+ oracleConcurrency: input.context.oracleConcurrency,
270
+ ...(input.resumeOracle === undefined
271
+ ? {}
272
+ : { resumeOracle: input.resumeOracle }),
273
+ ...(input.onOracleProgress === undefined
274
+ ? {}
275
+ : {
276
+ onReplayCompleted: (partialOracle) => input.onOracleProgress(accepted, partialOracle)
277
+ })
278
+ });
279
+ const adequacy = evaluateRepositoryOracleAdequacyV1(oracle);
280
+ const fold = input.checkpoints.challenge?.fold ?? 0;
281
+ const checkpoint = {
282
+ version: 1,
283
+ stage: "challenge",
284
+ parentDigest: checkpointDigestV1(tournament),
285
+ createdAt: new Date(yield* Clock.currentTimeMillis).toISOString(),
286
+ heldOut: [accepted],
287
+ adequacy,
288
+ oracle,
289
+ verdict: adequacy.admitted ? "passed" : "failed",
290
+ fold
291
+ };
292
+ yield* input.checkpoint(checkpoint);
293
+ yield* reportFoundryStageV1(pipelineStageToProgressStageV1("challenge"), `case=${input.context.caseId}; verdict=${checkpoint.verdict}; fold=${String(fold)}`);
294
+ return checkpoint;
295
+ });
296
+ export const runPipelineAdmitStageV1 = (input) => Effect.gen(function* () {
297
+ const seedCheckpoint = input.checkpoints.seed;
298
+ const spec = input.checkpoints.spec;
299
+ const oracleCheckpoint = input.checkpoints.oracle;
300
+ const tournament = input.checkpoints.tournament;
301
+ const challenge = input.checkpoints.challenge;
302
+ if (seedCheckpoint === undefined ||
303
+ spec === undefined ||
304
+ oracleCheckpoint === undefined ||
305
+ tournament === undefined ||
306
+ challenge === undefined) {
307
+ return yield* failure("admit requires accepted seed, specification, oracle, tournament, and challenge checkpoints");
308
+ }
309
+ const reasons = [];
310
+ if (challenge.verdict !== "passed")
311
+ reasons.push("fresh held-out challenge did not pass");
312
+ const development = verifyExecutedOracle({
313
+ oracle: tournament.oracle,
314
+ repetitions: input.context.oracleRepetitions,
315
+ label: "development",
316
+ requireReference: true
317
+ });
318
+ const heldOut = verifyExecutedOracle({
319
+ oracle: challenge.oracle,
320
+ repetitions: input.context.oracleRepetitions,
321
+ label: "held-out",
322
+ requireReference: true
323
+ });
324
+ reasons.push(...development.reasons, ...heldOut.reasons);
325
+ reasons.push(...evaluateRepositoryOracleScopeCoverageV1({
326
+ spec,
327
+ oracleCheckpoint,
328
+ oracle: tournament.oracle,
329
+ repetitions: input.context.oracleRepetitions,
330
+ label: "development"
331
+ }).reasons);
332
+ if (!tournament.adequacy.admitted)
333
+ reasons.push(...tournament.adequacy.rejectionReasons);
334
+ if (!challenge.adequacy.admitted)
335
+ reasons.push(...challenge.adequacy.rejectionReasons);
336
+ if (seedCheckpoint.seed.status !== "qualified" ||
337
+ seedCheckpoint.seed.referenceCommit === undefined) {
338
+ reasons.push("seed is not replay-qualified against a pinned reference");
339
+ }
340
+ if (spec.visible.lane !== "repository-agent" ||
341
+ spec.visible.checkoutCommit !== seedCheckpoint.seed.initialState.commit) {
342
+ reasons.push("visible task checkout does not match the replay-qualified initial commit");
343
+ }
344
+ const protectedPaths = new Set(seedCheckpoint.seed.environment.protectedControlPaths);
345
+ for (const solution of [...tournament.valid, ...tournament.wrong, ...challenge.heldOut]) {
346
+ const violation = solution.fileOverrides?.find(({ path }) => protectedPaths.has(path));
347
+ if (violation !== undefined)
348
+ reasons.push(`solution ${solution.id} edits protected path ${violation.path}`);
349
+ }
350
+ const families = yield* deriveRepositoryTaskFamiliesV1({
351
+ map: input.map,
352
+ seeds: [seedCheckpoint.seed]
353
+ });
354
+ const family = families.find(({ seedIds }) => seedIds.includes(seedCheckpoint.seed.id));
355
+ if (family === undefined)
356
+ reasons.push("replay-qualified seed has no repository task family");
357
+ const evidenceIds = [
358
+ ...executableEvidenceIds(tournament.oracle),
359
+ ...executableEvidenceIds(challenge.oracle)
360
+ ];
361
+ const qualityFindings = [
362
+ qualityFinding("authenticity", "Pinned historical reference and defect were replayed repeatedly.", evidenceIds),
363
+ qualityFinding("specification-sufficiency", "The visible task was exercised by the reference and blind valid controls.", evidenceIds),
364
+ qualityFinding("oracle-adequacy", "Every executable critical solution/clause pair has repeated conclusive observations.", evidenceIds),
365
+ qualityFinding("stability", "Repeated isolated executions produced stable outcomes.", evidenceIds),
366
+ qualityFinding("distinctness", "Blind valid controls pass while development and held-out wrong controls receive attributed failures.", evidenceIds),
367
+ qualityFinding("realism", "The replay-qualified task and candidate implementations execute through repository-owned commands.", evidenceIds),
368
+ qualityFinding("leakage", "The fixture-blind controls and fresh held-out adversary were evaluated only after the oracle was frozen.", evidenceIds),
369
+ qualityFinding("triviality", "Behavioral grading discriminates passing implementations from attributed wrong implementations.", evidenceIds),
370
+ qualityFinding("coverage", "Critical oracle clauses were observed for the admitted solution populations.", evidenceIds)
371
+ ];
372
+ const fallbackFamily = {
373
+ id: `family-${seedCheckpoint.seed.id}`,
374
+ capabilityId: `capability-${seedCheckpoint.seed.id}`
375
+ };
376
+ const selectedFamily = family ?? fallbackFamily;
377
+ const benchmarkCase = admitRepositoryBenchmarkCaseV1({
378
+ draft: {
379
+ version: 1,
380
+ id: input.context.caseId,
381
+ capabilityId: selectedFamily.capabilityId,
382
+ familyId: selectedFamily.id,
383
+ seedId: seedCheckpoint.seed.id,
384
+ lane: "repository-agent",
385
+ visible: spec.visible,
386
+ hidden: tournament.oracle,
387
+ adequacy: tournament.adequacy,
388
+ qualityFindings,
389
+ behavioralFingerprint: repositoryBehavioralFingerprintV1({
390
+ capabilityId: selectedFamily.capabilityId,
391
+ familyId: selectedFamily.id,
392
+ behaviorClauses: seedCheckpoint.seed.targetBehavior.map(({ description }) => description),
393
+ oracle: tournament.oracle
394
+ })
395
+ }
396
+ });
397
+ if (benchmarkCase.status !== "valid-library")
398
+ reasons.push(...benchmarkCase.rejectionReasons);
399
+ const library = compileValidatedBenchmarkLibraryV1([benchmarkCase]);
400
+ if (!library.cases.some(({ id }) => id === benchmarkCase.id)) {
401
+ reasons.push("compiled benchmark library did not retain the case");
402
+ }
403
+ const semanticKills = [
404
+ ...new Set([...development.semanticKills, ...heldOut.semanticKills])
405
+ ].sort();
406
+ const checkpoint = {
407
+ version: 1,
408
+ stage: "admit",
409
+ parentDigest: checkpointDigestV1(challenge),
410
+ createdAt: new Date(yield* Clock.currentTimeMillis).toISOString(),
411
+ benchmarkCase,
412
+ verdict: reasons.length === 0 ? "admitted" : "rejected",
413
+ reasons,
414
+ evidence: {
415
+ validCount: tournament.oracle.solutions.filter(({ expectedClass }) => expectedClass === "valid").length,
416
+ wrongCount: tournament.oracle.solutions.filter(({ expectedClass }) => expectedClass === "wrong").length,
417
+ heldOutWrongCount: challenge.heldOut.length,
418
+ semanticKills
419
+ }
420
+ };
421
+ yield* input.checkpoint(checkpoint);
422
+ yield* reportFoundryStageV1(pipelineStageToProgressStageV1("admit"), `case=${input.context.caseId}; verdict=${checkpoint.verdict}; reasons=${String(reasons.length)}`);
423
+ return checkpoint;
424
+ });
425
+ export const runPipelineChallengeStageV1 = (input) => runPipelineChallengeCapabilityV1(input);
426
+ export const runPipelineChallengeV1 = runPipelineChallengeStageV1;
427
+ export const runPipelineAdmitV1 = runPipelineAdmitStageV1;
@@ -0,0 +1,130 @@
1
+ import { Effect } from "effect";
2
+ import { type ControlsCheckpointV1, type PipelineBudgetExhaustedError, type PipelineCaseContextV1, type PipelineStageRunV1, type PipelineStageInputV1, type PipelineWorkCheckpointStoreV1, SolutionCritiqueV1 } from "../../case-pipeline-protocol.js";
3
+ import { RepositoryFoundryError } from "../../errors.js";
4
+ import type { RepositoryExecutableSolutionV1 } from "../../repository-execution-protocol.js";
5
+ import type { RepositoryTaskSeedV1 } from "../../repository-task-seed-protocol.js";
6
+ import { RepositoryFoundryLanguageModel } from "../language-model/service.js";
7
+ /**
8
+ * Run fixture-blind correctness review only when execution has false-rejected
9
+ * a generated valid control. Callers may supply prior completed rounds when
10
+ * resuming or when an older controls checkpoint already contains them.
11
+ */
12
+ export declare const runPipelineControlCorrectnessCriticsV1: (input: {
13
+ readonly context: PipelineCaseContextV1;
14
+ readonly seed: RepositoryTaskSeedV1;
15
+ readonly spec: {
16
+ readonly visible: unknown;
17
+ readonly analysis: unknown;
18
+ readonly scope: readonly unknown[];
19
+ readonly contextSources: readonly {
20
+ readonly path: string;
21
+ readonly content: string;
22
+ }[];
23
+ };
24
+ readonly solutions: readonly RepositoryExecutableSolutionV1[];
25
+ readonly priorCritiques?: readonly SolutionCritiqueV1[];
26
+ readonly workCheckpointStore?: PipelineWorkCheckpointStoreV1;
27
+ readonly onRound?: (critiques: readonly SolutionCritiqueV1[], regenerations: number) => Effect.Effect<void>;
28
+ }) => Effect.Effect<{
29
+ critiques: {
30
+ readonly solutionId: string;
31
+ readonly classification: "valid" | "wrong" | "uncertain";
32
+ readonly detail: string;
33
+ readonly violatedBehaviorIds: readonly string[];
34
+ }[];
35
+ regenerations: number;
36
+ }, RepositoryFoundryError | PipelineBudgetExhaustedError, RepositoryFoundryLanguageModel>;
37
+ /**
38
+ * Generate fixture-blind valid and wrong controls. Each proposal is exact-edit
39
+ * materialized and run in an isolated checkout before it is accepted. Model
40
+ * labels remain advisory; the tournament stage performs semantic adjudication.
41
+ */
42
+ export declare const runPipelineControlsCapabilityV1: (input: PipelineStageInputV1<ControlsCheckpointV1> & {
43
+ readonly kind?: "valid" | "wrong";
44
+ readonly maximumNewControls?: number;
45
+ /** A scientifically rejected control needs fresh authoring, not a replay of its old response. */
46
+ readonly replacementRound?: number;
47
+ }) => Effect.Effect<{
48
+ readonly valid: readonly {
49
+ readonly kind: "historical-reference" | "independent-valid" | "simplified-valid" | "behavior-preserving-valid" | "historical-defect" | "mutation" | "model-near-miss" | "reward-hacking";
50
+ readonly id: string;
51
+ readonly expectedClass: "valid" | "wrong";
52
+ readonly commit: string;
53
+ readonly family: string;
54
+ readonly fileOverrides?: readonly ({
55
+ readonly path: string;
56
+ readonly content: string;
57
+ } | {
58
+ readonly path: string;
59
+ readonly delete: true;
60
+ })[] | undefined;
61
+ }[];
62
+ readonly wrong: readonly {
63
+ readonly kind: "historical-reference" | "independent-valid" | "simplified-valid" | "behavior-preserving-valid" | "historical-defect" | "mutation" | "model-near-miss" | "reward-hacking";
64
+ readonly id: string;
65
+ readonly expectedClass: "valid" | "wrong";
66
+ readonly commit: string;
67
+ readonly family: string;
68
+ readonly fileOverrides?: readonly ({
69
+ readonly path: string;
70
+ readonly content: string;
71
+ } | {
72
+ readonly path: string;
73
+ readonly delete: true;
74
+ })[] | undefined;
75
+ }[];
76
+ readonly critiques: readonly {
77
+ readonly solutionId: string;
78
+ readonly classification: "valid" | "wrong" | "uncertain";
79
+ readonly detail: string;
80
+ readonly violatedBehaviorIds: readonly string[];
81
+ }[];
82
+ readonly regenerations: number;
83
+ readonly version: 1;
84
+ readonly stage: "controls";
85
+ readonly parentDigest: string;
86
+ readonly createdAt: string;
87
+ }, RepositoryFoundryError | PipelineBudgetExhaustedError, RepositoryFoundryLanguageModel>;
88
+ /** Short name used by the orchestrator. */
89
+ export declare const runPipelineControlsStageV1: PipelineStageRunV1<ControlsCheckpointV1>;
90
+ export declare const runPipelineControlsV1: PipelineStageRunV1<{
91
+ readonly valid: readonly {
92
+ readonly kind: "historical-reference" | "independent-valid" | "simplified-valid" | "behavior-preserving-valid" | "historical-defect" | "mutation" | "model-near-miss" | "reward-hacking";
93
+ readonly id: string;
94
+ readonly expectedClass: "valid" | "wrong";
95
+ readonly commit: string;
96
+ readonly family: string;
97
+ readonly fileOverrides?: readonly ({
98
+ readonly path: string;
99
+ readonly content: string;
100
+ } | {
101
+ readonly path: string;
102
+ readonly delete: true;
103
+ })[] | undefined;
104
+ }[];
105
+ readonly wrong: readonly {
106
+ readonly kind: "historical-reference" | "independent-valid" | "simplified-valid" | "behavior-preserving-valid" | "historical-defect" | "mutation" | "model-near-miss" | "reward-hacking";
107
+ readonly id: string;
108
+ readonly expectedClass: "valid" | "wrong";
109
+ readonly commit: string;
110
+ readonly family: string;
111
+ readonly fileOverrides?: readonly ({
112
+ readonly path: string;
113
+ readonly content: string;
114
+ } | {
115
+ readonly path: string;
116
+ readonly delete: true;
117
+ })[] | undefined;
118
+ }[];
119
+ readonly critiques: readonly {
120
+ readonly solutionId: string;
121
+ readonly classification: "valid" | "wrong" | "uncertain";
122
+ readonly detail: string;
123
+ readonly violatedBehaviorIds: readonly string[];
124
+ }[];
125
+ readonly regenerations: number;
126
+ readonly version: 1;
127
+ readonly stage: "controls";
128
+ readonly parentDigest: string;
129
+ readonly createdAt: string;
130
+ }>;