niceeval 0.16.2 → 0.17.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 (258) hide show
  1. package/dist/cli/bootstrap.cjs +7 -1
  2. package/dist/cli/bootstrap.cjs.map +1 -1
  3. package/dist/cli/project-configuration.cjs +8 -11
  4. package/dist/cli/project-configuration.cjs.map +1 -1
  5. package/dist/expect/index.cjs.map +1 -1
  6. package/dist/expect/index.d.cts +1 -0
  7. package/dist/expect/index.d.mts +1 -0
  8. package/dist/expect/index.d.ts +1 -0
  9. package/dist/experiment/host/cli/contribution.cjs +6 -11
  10. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  11. package/dist/experiment/host/cli/contribution.d.cts +0 -16
  12. package/dist/experiment/host/cli/contribution.d.mts +0 -16
  13. package/dist/experiment/host/cli/contribution.d.ts +0 -16
  14. package/dist/experiment/host/operations.cjs +3 -3
  15. package/dist/experiment/host/operations.cjs.map +1 -1
  16. package/dist/experiment/host/types.cjs.map +1 -1
  17. package/dist/experiment/host/types.d.cts +0 -4
  18. package/dist/experiment/host/types.d.mts +0 -4
  19. package/dist/experiment/host/types.d.ts +0 -4
  20. package/dist/fresh-import.cjs +2 -2
  21. package/dist/fresh-import.cjs.map +1 -1
  22. package/dist/fresh-import.d.cts +3 -3
  23. package/dist/fresh-import.d.mts +3 -3
  24. package/dist/fresh-import.d.ts +3 -3
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +1 -0
  27. package/dist/index.d.mts +1 -0
  28. package/dist/index.d.ts +1 -0
  29. package/dist/inspection/codec.cjs.map +1 -1
  30. package/dist/inspection/codec.d.cts +1 -1
  31. package/dist/inspection/codec.d.mts +1 -1
  32. package/dist/inspection/codec.d.ts +1 -1
  33. package/dist/inspection/facts.cjs +66 -9
  34. package/dist/inspection/facts.cjs.map +1 -1
  35. package/dist/inspection/facts.d.cts +4 -0
  36. package/dist/inspection/facts.d.mts +4 -0
  37. package/dist/inspection/facts.d.ts +4 -0
  38. package/dist/inspection/facts.js +4 -2
  39. package/dist/inspection/index.cjs +1 -3
  40. package/dist/inspection/index.cjs.map +1 -1
  41. package/dist/inspection/index.d.cts +1 -1
  42. package/dist/inspection/index.d.mts +1 -1
  43. package/dist/inspection/index.d.ts +1 -1
  44. package/dist/inspection/index.js +44 -48
  45. package/dist/inspection/limits.cjs +3 -1
  46. package/dist/inspection/limits.cjs.map +1 -1
  47. package/dist/inspection/limits.d.cts +2 -0
  48. package/dist/inspection/limits.d.mts +2 -0
  49. package/dist/inspection/limits.d.ts +2 -0
  50. package/dist/inspection/limits.js +6 -4
  51. package/dist/inspection/project-source.cjs +4 -1
  52. package/dist/inspection/project-source.cjs.map +1 -1
  53. package/dist/inspection/protocol.cjs +10 -18
  54. package/dist/inspection/protocol.cjs.map +1 -1
  55. package/dist/inspection/protocol.d.cts +111 -173
  56. package/dist/inspection/protocol.d.mts +111 -173
  57. package/dist/inspection/protocol.d.ts +111 -173
  58. package/dist/inspection/public.mjs +73 -109
  59. package/dist/inspection/results.cjs +12 -48
  60. package/dist/inspection/results.cjs.map +1 -1
  61. package/dist/inspection/results.d.cts +124 -122
  62. package/dist/inspection/results.d.mts +124 -122
  63. package/dist/inspection/results.d.ts +124 -122
  64. package/dist/inspection/results.js +16 -20
  65. package/dist/inspection/select.cjs +80 -117
  66. package/dist/inspection/select.cjs.map +1 -1
  67. package/dist/inspection/source.cjs +14 -15
  68. package/dist/inspection/source.cjs.map +1 -1
  69. package/dist/inspection/source.d.cts +6 -3
  70. package/dist/inspection/source.d.mts +6 -3
  71. package/dist/inspection/source.d.ts +6 -3
  72. package/dist/inspection/trace.cjs +1 -1
  73. package/dist/inspection/trace.cjs.map +1 -1
  74. package/dist/load-config.cjs +17 -11
  75. package/dist/load-config.cjs.map +1 -1
  76. package/dist/load-config.d.cts +3 -2
  77. package/dist/load-config.d.mts +3 -2
  78. package/dist/load-config.d.ts +3 -2
  79. package/dist/o11y/adapter-usage-projection.cjs +5 -1
  80. package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
  81. package/dist/o11y/adapter-usage-projection.d.cts +109 -1
  82. package/dist/o11y/adapter-usage-projection.d.mts +109 -1
  83. package/dist/o11y/adapter-usage-projection.d.ts +109 -1
  84. package/dist/o11y/cache-read.cjs +113 -0
  85. package/dist/o11y/cache-read.cjs.map +1 -0
  86. package/dist/o11y/cache-read.d.cts +80 -0
  87. package/dist/o11y/cache-read.d.mts +80 -0
  88. package/dist/o11y/cache-read.d.ts +80 -0
  89. package/dist/o11y/cache-read.js +8 -0
  90. package/dist/o11y/cache-read.js.map +1 -0
  91. package/dist/o11y/eval-usage.cjs +4 -1
  92. package/dist/o11y/eval-usage.cjs.map +1 -1
  93. package/dist/o11y/eval-usage.d.cts +4 -1
  94. package/dist/o11y/eval-usage.d.mts +4 -1
  95. package/dist/o11y/eval-usage.d.ts +4 -1
  96. package/dist/record/host/sqlite-host.cjs +188 -53
  97. package/dist/record/host/sqlite-host.cjs.map +1 -1
  98. package/dist/record/host/sqlite-host.d.cts +37 -1
  99. package/dist/record/host/sqlite-host.d.mts +37 -1
  100. package/dist/record/host/sqlite-host.d.ts +37 -1
  101. package/dist/record/host/sqlite-host.js +16 -8
  102. package/dist/record/maintenance/runtime.cjs +3 -3
  103. package/dist/record/maintenance/runtime.cjs.map +1 -1
  104. package/dist/record/sqlite/admission-repository.cjs +18 -18
  105. package/dist/record/sqlite/admission-repository.cjs.map +1 -1
  106. package/dist/record/sqlite/case-repository.cjs +6 -6
  107. package/dist/record/sqlite/case-repository.cjs.map +1 -1
  108. package/dist/record/sqlite/coordination-repository.cjs +25 -25
  109. package/dist/record/sqlite/coordination-repository.cjs.map +1 -1
  110. package/dist/record/sqlite/current-schema.cjs +115 -111
  111. package/dist/record/sqlite/current-schema.cjs.map +1 -1
  112. package/dist/record/sqlite/current-schema.d.cts +3 -3
  113. package/dist/record/sqlite/current-schema.d.mts +3 -3
  114. package/dist/record/sqlite/current-schema.d.ts +3 -3
  115. package/dist/record/sqlite/database.cjs +56 -53
  116. package/dist/record/sqlite/database.cjs.map +1 -1
  117. package/dist/record/sqlite/index.cjs +3 -1
  118. package/dist/record/sqlite/index.cjs.map +1 -1
  119. package/dist/record/sqlite/index.d.cts +5 -2
  120. package/dist/record/sqlite/index.d.mts +5 -2
  121. package/dist/record/sqlite/index.d.ts +5 -2
  122. package/dist/record/sqlite/legacy-schema-018.cjs +443 -0
  123. package/dist/record/sqlite/legacy-schema-018.cjs.map +1 -0
  124. package/dist/record/sqlite/legacy-schema-018.d.cts +6 -0
  125. package/dist/record/sqlite/legacy-schema-018.d.mts +6 -0
  126. package/dist/record/sqlite/legacy-schema-018.d.ts +6 -0
  127. package/dist/record/sqlite/legacy-schema-018.js +6 -0
  128. package/dist/record/sqlite/legacy-schema-018.js.map +1 -0
  129. package/dist/record/sqlite/migration.cjs +105 -46
  130. package/dist/record/sqlite/migration.cjs.map +1 -1
  131. package/dist/record/sqlite/migration.d.cts +2 -1
  132. package/dist/record/sqlite/migration.d.mts +2 -1
  133. package/dist/record/sqlite/migration.d.ts +2 -1
  134. package/dist/record/sqlite/portable-capture.cjs +13 -13
  135. package/dist/record/sqlite/portable-capture.cjs.map +1 -1
  136. package/dist/record/sqlite/registry-repository.cjs +22 -22
  137. package/dist/record/sqlite/registry-repository.cjs.map +1 -1
  138. package/dist/record/sqlite/schema.cjs +10 -2
  139. package/dist/record/sqlite/schema.cjs.map +1 -1
  140. package/dist/record/sqlite/schema.d.cts +4 -1
  141. package/dist/record/sqlite/schema.d.mts +4 -1
  142. package/dist/record/sqlite/schema.d.ts +4 -1
  143. package/dist/record/sqlite/schema.js +20 -14
  144. package/dist/record/sqlite/storage-worker.cjs +1 -1
  145. package/dist/record/sqlite/storage-worker.cjs.map +1 -1
  146. package/dist/record/sqlite/storage.cjs +316 -232
  147. package/dist/record/sqlite/storage.cjs.map +1 -1
  148. package/dist/record/sqlite/storage.d.cts +10 -2
  149. package/dist/record/sqlite/storage.d.mts +10 -2
  150. package/dist/record/sqlite/storage.d.ts +10 -2
  151. package/dist/record/sqlite/storage.js +54 -50
  152. package/dist/record/sqlite/types.cjs +1 -1
  153. package/dist/record/sqlite/types.cjs.map +1 -1
  154. package/dist/record/sqlite/types.d.cts +13 -1
  155. package/dist/record/sqlite/types.d.mts +13 -1
  156. package/dist/record/sqlite/types.d.ts +13 -1
  157. package/dist/run/cli/contribution.cjs +17 -12
  158. package/dist/run/cli/contribution.cjs.map +1 -1
  159. package/dist/run/host/lifecycle-adapter.cjs +1 -1
  160. package/dist/run/host/lifecycle-adapter.cjs.map +1 -1
  161. package/dist/run/storage/owner-identity.cjs +78 -16
  162. package/dist/run/storage/owner-identity.cjs.map +1 -1
  163. package/dist/run/storage/owner-identity.d.cts +2 -1
  164. package/dist/run/storage/owner-identity.d.mts +2 -1
  165. package/dist/run/storage/owner-identity.d.ts +2 -1
  166. package/dist/run/storage/sqlite.cjs +55 -55
  167. package/dist/run/storage/sqlite.cjs.map +1 -1
  168. package/dist/runner/accept.cjs +12 -42
  169. package/dist/runner/accept.cjs.map +1 -1
  170. package/dist/runner/accept.d.cts +2 -3
  171. package/dist/runner/accept.d.mts +2 -3
  172. package/dist/runner/accept.d.ts +2 -3
  173. package/dist/runner/adapter-usage.cjs +2 -2
  174. package/dist/runner/adapter-usage.cjs.map +1 -1
  175. package/dist/runner/adoption.cjs +14 -26
  176. package/dist/runner/adoption.cjs.map +1 -1
  177. package/dist/runner/adoption.d.cts +5 -13
  178. package/dist/runner/adoption.d.mts +5 -13
  179. package/dist/runner/adoption.d.ts +5 -13
  180. package/dist/runner/adoption.js +2 -4
  181. package/dist/runner/record.cjs +24 -18
  182. package/dist/runner/record.cjs.map +1 -1
  183. package/dist/runner/rename-experiment.cjs +5 -7
  184. package/dist/runner/rename-experiment.cjs.map +1 -1
  185. package/dist/runner/reuse-plan.cjs +37 -18
  186. package/dist/runner/reuse-plan.cjs.map +1 -1
  187. package/dist/runner/reuse-plan.d.cts +4 -1
  188. package/dist/runner/reuse-plan.d.mts +4 -1
  189. package/dist/runner/reuse-plan.d.ts +4 -1
  190. package/dist/runner/setup-prefix-plan.cjs +17 -12
  191. package/dist/runner/setup-prefix-plan.cjs.map +1 -1
  192. package/dist/runner/setup-prefix-plan.d.cts +0 -2
  193. package/dist/runner/setup-prefix-plan.d.mts +0 -2
  194. package/dist/runner/setup-prefix-plan.d.ts +0 -2
  195. package/dist/runner/setup-prefix-plan.js +8 -12
  196. package/dist/sandbox/backend.cjs +10 -1
  197. package/dist/sandbox/backend.cjs.map +1 -1
  198. package/dist/sandbox/backend.d.cts +16 -8
  199. package/dist/sandbox/backend.d.mts +16 -8
  200. package/dist/sandbox/backend.d.ts +16 -8
  201. package/dist/sandbox/backend.js +28 -26
  202. package/dist/sandbox/docker.cjs +7 -1
  203. package/dist/sandbox/docker.cjs.map +1 -1
  204. package/dist/sandbox/e2b-cache-repository.cjs +13 -3
  205. package/dist/sandbox/e2b-cache-repository.cjs.map +1 -1
  206. package/dist/sandbox/e2b-cache-repository.d.cts +3 -0
  207. package/dist/sandbox/e2b-cache-repository.d.mts +3 -0
  208. package/dist/sandbox/e2b-cache-repository.d.ts +3 -0
  209. package/dist/sandbox/e2b-cache-repository.js +16 -12
  210. package/dist/sandbox/e2b.cjs +2 -2
  211. package/dist/sandbox/e2b.cjs.map +1 -1
  212. package/dist/sandbox/incus/materialize.cjs +1 -1
  213. package/dist/sandbox/incus/materialize.cjs.map +1 -1
  214. package/dist/show/contribution.cjs +3 -3
  215. package/dist/show/contribution.cjs.map +1 -1
  216. package/dist/show/model.cjs +14 -13
  217. package/dist/show/model.cjs.map +1 -1
  218. package/dist/show/model.d.cts +7 -7
  219. package/dist/show/model.d.mts +7 -7
  220. package/dist/show/model.d.ts +7 -7
  221. package/dist/show/render.cjs +14 -0
  222. package/dist/show/render.cjs.map +1 -1
  223. package/dist/user-database/storage-worker.cjs +13 -3
  224. package/dist/user-database/storage-worker.cjs.map +1 -1
  225. package/dist/view/app-dist/.vite/manifest.json +2 -2
  226. package/dist/view/app-dist/assets/{index-CmVoXbwG.js → index-B3ijZRph.js} +17 -17
  227. package/dist/view/app-dist/assets/{quality-cost-scatter-BuLISaH4.js → quality-cost-scatter-B--DfJ9s.js} +1 -1
  228. package/dist/view/app-dist/index.html +1 -1
  229. package/dist/view/application-runtime.cjs +8 -0
  230. package/dist/view/application-runtime.cjs.map +1 -0
  231. package/dist/view/application-runtime.d.cts +9 -0
  232. package/dist/view/application-runtime.d.mts +9 -0
  233. package/dist/view/application-runtime.d.ts +9 -0
  234. package/dist/view/application-runtime.js +6 -0
  235. package/dist/view/application-runtime.js.map +1 -0
  236. package/dist/view/cli/contribution.cjs +5 -2
  237. package/dist/view/cli/contribution.cjs.map +1 -1
  238. package/dist/view/cli/contribution.d.cts +2 -1
  239. package/dist/view/cli/contribution.d.mts +2 -1
  240. package/dist/view/cli/contribution.d.ts +2 -1
  241. package/dist/view/function-runtime.mjs +1019 -456
  242. package/dist/view/http-protocol.d.cts +1 -9
  243. package/dist/view/http-protocol.d.mts +1 -9
  244. package/dist/view/http-protocol.d.ts +1 -9
  245. package/dist/view/inspection-host.cjs +39 -30
  246. package/dist/view/inspection-host.cjs.map +1 -1
  247. package/dist/view/inspection-host.d.cts +7545 -2
  248. package/dist/view/inspection-host.d.mts +7545 -2
  249. package/dist/view/inspection-host.d.ts +7545 -2
  250. package/dist/view/server.cjs +8 -5
  251. package/dist/view/server.cjs.map +1 -1
  252. package/dist/view/server.d.cts +4 -2
  253. package/dist/view/server.d.mts +4 -2
  254. package/dist/view/server.d.ts +4 -2
  255. package/docs-site/zh/reference/cli.mdx +1 -2
  256. package/docs-site/zh/tutorials/control-run-cost.mdx +22 -0
  257. package/docs-site/zh/tutorials/niceeval-taste-application.mdx +21 -0
  258. package/package.json +1 -1
@@ -3,6 +3,7 @@ import { type AttemptLocator } from "../attempt-locator.js";
3
3
  import { type DurationLimit, type EqualityToken } from "../eval/record/eligibility.js";
4
4
  import { type ComparisonProvenance } from "../eval/record/membership-provenance.js";
5
5
  import { type VerdictState } from "../eval/record/verdict.js";
6
+ import { type PlanningExactReference } from "../record/host/sqlite-host.js";
6
7
  import type { RecordReadSession, SelectedAttemptRef } from "../record/host/types.js";
7
8
  import type { AttemptOutcome, RecordSlotIdentity } from "../record/model/core.js";
8
9
  import { type RunContext } from "../record/model/run-context.js";
@@ -50,6 +51,7 @@ interface ParsedExplicitAttemptLocator {
50
51
  readonly locator: AttemptLocator;
51
52
  }
52
53
  export interface ResolvedAdoptionAttempt {
54
+ readonly reference: PlanningExactReference;
53
55
  readonly originContext: RunContext;
54
56
  readonly locator: ExplicitAttemptLocator;
55
57
  readonly attempt: SelectedAttemptRef;
@@ -114,10 +116,9 @@ export interface ExplicitAdoptionRunReceipt {
114
116
  export type ExplicitAdoptionCommitError = RecordWriteError | RecordReaderOpenError | RunStorageError;
115
117
  /** Strict v1 parser accepts only the current canonical short locator. */
116
118
  export declare function parseExplicitAttemptLocator(value: string): Effect.Effect<ParsedExplicitAttemptLocator, ExplicitAdoptionError>;
117
- /** The public adapter boundary owns Record-root construction. */
119
+ /** Adoption writes only to the discovered project's canonical Record. */
118
120
  export declare function adoptionRecordRoot(input: {
119
121
  readonly cwd: string;
120
- readonly recordRoot?: string;
121
122
  }): Effect.Effect<RecordRoot, RecordRootConstructionError>;
122
123
  /** Discovery is rerun for both read preflight and the write-session frozen view. */
123
124
  export declare function loadAdoptionProject(input: AdoptionProjectInput): Effect.Effect<AdoptionProject, ExplicitAdoptionError>;
@@ -171,8 +172,8 @@ export declare function buildExplicitAdoptionRunPlan(input: {
171
172
  readonly target: CurrentAdoptionTarget;
172
173
  readonly members: readonly ExplicitAdoptionMember[];
173
174
  }): Effect.Effect<ExplicitAdoptionRunPlan, ExplicitAdoptionError>;
174
- /** Writes only plans already built from this exact session's Host reader. */
175
- export declare function commitExplicitAdoptionRunPlans(_reader: RecordReadSession, root: RecordRoot, invocationId: string, plans: readonly ExplicitAdoptionRunPlan[]): Effect.Effect<ExplicitAdoptionRunReceipt[], RunStorageError, import("effect/Scope").Scope | import("../coordination/record-leases.js").RecordCoordination | import("../record/platform/services.js").RecordEntropy | import("../record/sqlite/project-state-database.js").ProjectStateDatabase>;
175
+ /** Writes detached plans; publication identity is rechecked by the binding transaction. */
176
+ export declare function commitExplicitAdoptionRunPlans(root: RecordRoot, invocationId: string, plans: readonly ExplicitAdoptionRunPlan[]): Effect.Effect<ExplicitAdoptionRunReceipt[], RunStorageError, import("../coordination/record-leases.js").RecordCoordination | import("../record/platform/services.js").RecordEntropy | import("../record/sqlite/project-state-database.js").ProjectStateDatabase>;
176
177
  /** A fresh in-memory invocation identity never enters Record Core. */
177
178
  export declare function createExplicitAdoptionInvocationId(mint?: () => string): Effect.Effect<string>;
178
179
  export declare function adoptionStartedAt(input?: () => string | number): Effect.Effect<UtcMillis, ExplicitAdoptionError>;
@@ -181,15 +182,6 @@ export declare function withAdoptionReader<A, E, R>(input: {
181
182
  readonly root: RecordRoot;
182
183
  readonly use: (reader: RecordReadSession) => Effect.Effect<A, E, R>;
183
184
  }): Effect.Effect<A, RecordReaderOpenError | E, import("../record/sqlite/project-state-database.js").ProjectStateDatabase | Exclude<R, import("effect/Scope").Scope>>;
184
- /**
185
- * One Scope keeps the Host reader live while reference Runs are created, so
186
- * SelectedAttemptRefs remain valid through seal. Discovery still happens
187
- * before this Scope opens, so the first preflight writes nothing.
188
- */
189
- export declare function withAdoptionCommitScope<A, E, R>(input: {
190
- readonly root: RecordRoot;
191
- readonly use: (reader: RecordReadSession) => Effect.Effect<A, E, R>;
192
- }): Effect.Effect<A, RecordReaderOpenError | E, import("../record/sqlite/project-state-database.js").ProjectStateDatabase | Exclude<R, import("effect/Scope").Scope>>;
193
185
  export interface RenameSourceRun {
194
186
  readonly runId: RunId;
195
187
  readonly experimentId: ExperimentId;
@@ -39,8 +39,6 @@ const __niceevalExport17 = __niceevalCanonical["resolveExactAdoptionSourceRun"];
39
39
  export { __niceevalExport17 as resolveExactAdoptionSourceRun };
40
40
  const __niceevalExport18 = __niceevalCanonical["resolveExplicitAttemptLocator"];
41
41
  export { __niceevalExport18 as resolveExplicitAttemptLocator };
42
- const __niceevalExport19 = __niceevalCanonical["withAdoptionCommitScope"];
43
- export { __niceevalExport19 as withAdoptionCommitScope };
44
- const __niceevalExport20 = __niceevalCanonical["withAdoptionReader"];
45
- export { __niceevalExport20 as withAdoptionReader };
42
+ const __niceevalExport19 = __niceevalCanonical["withAdoptionReader"];
43
+ export { __niceevalExport19 as withAdoptionReader };
46
44
  //# sourceMappingURL=adoption.js.map
@@ -79,11 +79,15 @@ function withRunnerCurrentReusePreview(input) {
79
79
  readReadbacks: () => effect_1.Effect.succeed(Object.freeze([])),
80
80
  });
81
81
  }
82
- const reader = yield* runtime_ts_1.recordHost.openRead({ root: input.recordRoot });
83
- const reusePlan = yield* (0, reuse_plan_ts_1.planProjectTargetReuse)({ reader, target, policy: input.reuse.policy });
82
+ const { reusePlan, readbacks } = yield* effect_1.Effect.scoped(effect_1.Effect.gen(function* () {
83
+ const reader = yield* runtime_ts_1.recordHost.openRead({ root: input.recordRoot });
84
+ const reusePlan = yield* (0, reuse_plan_ts_1.planProjectTargetReuse)({ reader, target, policy: input.reuse.policy });
85
+ const readbacks = yield* (0, reuse_readback_ts_1.readCurrentExecutionReusePlanReadbacks)({ reader, plan: reusePlan }).pipe(effect_1.Effect.mapError((cause) => ({ code: "runner-session-open-failed", cause })));
86
+ return { reusePlan, readbacks };
87
+ }));
84
88
  return yield* input.use({
85
89
  reusePlan,
86
- readReadbacks: () => (0, reuse_readback_ts_1.readCurrentExecutionReusePlanReadbacks)({ reader, plan: reusePlan }),
90
+ readReadbacks: () => effect_1.Effect.succeed(readbacks),
87
91
  });
88
92
  }));
89
93
  }
@@ -177,7 +181,6 @@ function openRunnerRecordCoordinator(input) {
177
181
  })),
178
182
  }).pipe(effect_1.Effect.mapError((cause) => ({ code: "runner-session-open-failed", cause })));
179
183
  }
180
- const reader = yield* runtime_ts_1.recordHost.openRead({ root: input.recordRoot });
181
184
  const byRun = new Map();
182
185
  const byRecordRunId = new Map();
183
186
  const runIdsByExperiment = new Map();
@@ -206,7 +209,12 @@ function openRunnerRecordCoordinator(input) {
206
209
  invocationId,
207
210
  runs: Object.freeze(targetRuns),
208
211
  });
209
- const reusePlan = yield* (0, reuse_plan_ts_1.planProjectTargetReuse)({ reader, target, policy: input.reuse.policy });
212
+ const { reusePlan, carriedResults } = yield* effect_1.Effect.scoped(effect_1.Effect.gen(function* () {
213
+ const reader = yield* runtime_ts_1.recordHost.openRead({ root: input.recordRoot });
214
+ const reusePlan = yield* (0, reuse_plan_ts_1.planProjectTargetReuse)({ reader, target, policy: input.reuse.policy });
215
+ const carriedResults = yield* (0, reuse_readback_ts_1.readCurrentExecutionReusePlanResults)({ reader, plan: reusePlan }).pipe(effect_1.Effect.mapError((cause) => ({ code: "runner-session-open-failed", cause })));
216
+ return { reusePlan, carriedResults };
217
+ }));
210
218
  const carriedAttemptsByKey = new Map();
211
219
  for (const slot of reusePlan.slots) {
212
220
  const recordRun = byRecordRunId.get(slot.runId);
@@ -214,17 +222,17 @@ function openRunnerRecordCoordinator(input) {
214
222
  return yield* effect_1.Effect.fail(membershipStateInvalid(slot.slotId));
215
223
  recordRun.planSlots.set(slot.slotId, slot);
216
224
  if (slot.state === "reuse") {
217
- yield* recordRun.session.referenceAttempt({
225
+ yield* (0, sqlite_host_ts_1.stagePlanningReference)(recordRun.session, {
218
226
  slotId: slot.slotId,
219
227
  action: "carried",
220
- attempt: slot.source.attempt,
228
+ reference: slot.source.reference,
221
229
  });
222
230
  yield* (0, index_ts_2.bindAttemptReference)(rootPath, {
223
231
  runId: String(recordRun.session.runId),
224
232
  writerGeneration: recordRun.writerGeneration,
225
233
  slotId: String(slot.slotId),
226
234
  action: "carried",
227
- publicationIdentity: slot.source.attempt.publicationIdentity,
235
+ publicationIdentity: slot.source.reference.publicationIdentity,
228
236
  deadlineEpochMs: Date.now() + 30000,
229
237
  }).pipe(effect_1.Effect.mapError((cause) => ({ code: "runner-session-open-failed", cause })));
230
238
  const entry = recordRun.slots.get((0, planning_ts_1.runnerRecordSlotKey)(slot.evalId, slot.attempt));
@@ -271,26 +279,24 @@ function openRunnerRecordCoordinator(input) {
271
279
  || current.plan.state !== "gap"
272
280
  || current.recordRun.gapActions.get(current.slotId) !== "pending")
273
281
  return false;
274
- const freshReader = yield* runtime_ts_1.recordHost.openRead({ root: input.recordRoot });
275
- const refreshed = yield* (0, reuse_plan_ts_1.planProjectTargetReuse)({
276
- reader: freshReader,
277
- target,
278
- policy: input.reuse.policy,
279
- });
282
+ const refreshed = yield* effect_1.Effect.scoped(effect_1.Effect.gen(function* () {
283
+ const freshReader = yield* runtime_ts_1.recordHost.openRead({ root: input.recordRoot });
284
+ return yield* (0, reuse_plan_ts_1.planProjectTargetReuse)({ reader: freshReader, target, policy: input.reuse.policy });
285
+ }));
280
286
  const replacement = refreshed.slots.find((slot) => slot.runId === current.recordRun.target.runId && slot.slotId === current.slotId);
281
287
  if (replacement?.state !== "reuse")
282
288
  return false;
283
- yield* current.recordRun.session.referenceAttempt({
289
+ yield* (0, sqlite_host_ts_1.stagePlanningReference)(current.recordRun.session, {
284
290
  slotId: current.slotId,
285
291
  action: "carried",
286
- attempt: replacement.source.attempt,
292
+ reference: replacement.source.reference,
287
293
  });
288
294
  yield* (0, index_ts_2.bindAttemptReference)(rootPath, {
289
295
  runId: String(current.recordRun.session.runId),
290
296
  writerGeneration: current.recordRun.writerGeneration,
291
297
  slotId: String(current.slotId),
292
298
  action: "carried",
293
- publicationIdentity: replacement.source.attempt.publicationIdentity,
299
+ publicationIdentity: replacement.source.reference.publicationIdentity,
294
300
  deadlineEpochMs: Date.now() + 30000,
295
301
  }).pipe(effect_1.Effect.mapError(() => publishStateInvalid(current.recordRun.session.runId)));
296
302
  current.recordRun.planSlots.set(current.slotId, replacement);
@@ -496,7 +502,7 @@ function openRunnerRecordCoordinator(input) {
496
502
  };
497
503
  return Object.freeze({
498
504
  reusePlan,
499
- readCarriedResults: () => (0, reuse_readback_ts_1.readCurrentExecutionReusePlanResults)({ reader, plan: reusePlan }),
505
+ readCarriedResults: () => effect_1.Effect.succeed(carriedResults),
500
506
  runIdsByExperiment: new Map(runIdsByExperiment),
501
507
  publicationCutoff: () => (0, index_ts_2.currentPublicationCutoff)(rootPath),
502
508
  carriedAttemptsByKey: new Map([...carriedAttemptsByKey].map(([key, attempts]) => [key, new Set(attempts)])),
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["record.ts"],"names":[],"mappings":"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","sourcesContent":["import { judgeUsageForResult } from \"./judge-usage.ts\";\nimport { createHash } from \"node:crypto\";\nimport { existsSync } from \"node:fs\";\nimport { Cause, Effect, Result, Exit, Option, Semaphore, Stream } from \"effect\";\nimport { encodeAttemptLocator, type AttemptLocator } from \"../attempt-locator.ts\";\nimport type { SealedAttemptAssertions } from \"../assertions/api.ts\";\nimport type { AssertionsProducerError } from \"../assertions/record/producer.ts\";\nimport { NiceEvalRecordAttachments } from \"../record/family/catalog.ts\";\nimport { recordHost } from \"../record/host/runtime.ts\";\nimport { discardAttemptWriteSession, writerGenerationForRunSession } from \"../record/host/sqlite-host.ts\";\nimport type { AttemptWriteSession, RecordSealReceipt, RunWriteSession, } from \"../record/host/types.ts\";\nimport type { RunId, SlotId, } from \"../record/model/identifiers.ts\";\nimport type { AssertionEntryId } from \"../assertions/identity.ts\";\nimport { recordRootPaths, type RecordRoot } from \"../record/platform/root.ts\";\nimport { attemptPublicationClosure } from \"../record/codec/core.ts\";\nimport { RecordRootInvalid } from \"../record/platform/errors.ts\";\nimport { recordSqlitePath } from \"../record/sqlite/index.ts\";\nimport type { ProjectStateDatabase } from \"../record/sqlite/project-state-database.ts\";\nimport type { RecordReaderOpenError, RecordReaderReadError, } from \"../record/reader/errors.ts\";\nimport type { RecordWriteError } from \"../record/writer/types.ts\";\nimport { bindAttemptReference, closeRunResource, currentPublicationCutoff, publishOriginAttempt, createRunWriterGeneration, type PublicationCutoff, type RunAbsenceReason, } from \"../run/storage/index.ts\";\nimport { cacheKey } from \"./fingerprint.ts\";\nimport { planProjectTargetReuse, planProjectTargetReuseWithoutSources, type ExecutionReusePlan, type ExecutionReusePlanSlot, type ProjectTargetReusePlanInvalid, type TargetRun, } from \"./reuse-plan.ts\";\nimport { readCurrentExecutionReusePlanReadbacks, readCurrentExecutionReusePlanResults, type CurrentReusedAttemptReadback, type CurrentReuseReadback, type CurrentReuseReadbackPlanInvalid, } from \"./reuse-readback.ts\";\nimport { createRunnerTurnContextsAttachment, createRunnerSourceWritePlan, type RunnerSourceProducerInvalid, } from \"./source-producer.ts\";\nimport { createAttemptArtifactsAttachment, createAttemptFileChangesAttachment, createAttemptObservabilityAttachments, createRunArtifactsAttachment, createRunnerAssertionsAttachment, createRunObservabilityAttachments, recordAttemptOutcome, } from \"./record/attachments.ts\";\nimport { adapterUsageForResult } from \"./adapter-usage.ts\";\nimport { adapterAttachmentsForResult, releaseAdapterAttachments } from \"./adapter-attachments.ts\";\nimport { adapterExecutionTracesForResult, validateExecutionTracePublication, } from \"./adapter-execution-trace.ts\";\nimport { executionTracesRecordCollection } from \"../record/family/execution-traces/definition.ts\";\nimport { planRunnerRecordRun, previewRunnerRunId, runnerRecordSlotKey, runnerRecordUtcMillis, targetForRunnerRecordRun, type PlannedRunnerRecordRun, type RunnerRecordReuseInput, type RunnerRecordTargetIdentityInvalid, type RunnerRecordTargetInputMissing, } from \"./record/planning.ts\";\nimport type { AgentRun, Attempt, DiscoveredEval, EvalResult, } from \"./types.ts\";\nimport type { AttemptCostAttachment } from \"../record/family/attempt-cost/definition.ts\";\nimport { getPricingEstimateReceipt } from \"./pricing-estimate-receipt.ts\";\nimport type { SessionTracker } from \"./session.ts\";\nexport { prepareRunnerRecordReuse, type RunnerRecordReuseInput, type RunnerRecordReusePreparationInput, type RunnerRecordReuseSlotInput, type RunnerRecordTargetIdentityInvalid, type RunnerRecordTargetInputMissing, } from \"./record/planning.ts\";\ntype GapActionState = \"pending\" | \"reserved\" | \"executed\" | \"not-dispatched\" | \"interrupted\";\ninterface ActiveRunnerRecordAttempt {\n readonly attempt: Attempt;\n readonly session: AttemptWriteSession;\n readonly public: RunnerRecordAttempt;\n sealed?: SealedAttemptAssertions;\n result?: EvalResult;\n assertionEntryIds?: readonly AssertionEntryId[];\n completed: boolean;\n}\ninterface RunnerRecordRun extends PlannedRunnerRecordRun {\n readonly session: RunWriteSession;\n readonly target: TargetRun;\n readonly attempts: Map<SlotId, ActiveRunnerRecordAttempt>;\n readonly planSlots: Map<SlotId, ExecutionReusePlanSlot>;\n readonly gapActions: Map<SlotId, GapActionState>;\n readonly writerGeneration: string;\n}\nexport interface RunnerRecordAttempt {\n readonly slotId: SlotId;\n readonly attemptId: import(\"../record/model/identifiers.ts\").AttemptId;\n readonly locator: AttemptLocator;\n}\nexport type RecordAttemptLocator = AttemptLocator;\nfunction createAttemptCostAttachment(result: EvalResult): AttemptCostAttachment {\n const receipt = getPricingEstimateReceipt(result);\n return Object.freeze({\n ...(result.usage?.costUSD === undefined ? {} : {\n observed: Object.freeze({ kind: \"observed\" as const, amountUSD: result.usage.costUSD }),\n }),\n ...(receipt === undefined ? {} : {\n estimated: Object.freeze({\n kind: \"estimated\" as const,\n amountUSD: receipt.amountUSD,\n model: receipt.model,\n priceSource: receipt.priceSource,\n charges: receipt.charges,\n }),\n }),\n });\n}\nexport interface RunnerRecordAttemptInvalid {\n readonly code: \"runner-record-attempt-invalid\";\n}\nexport interface RunnerRecordUnsealedAttempt {\n readonly code: \"runner-record-attempt-unsealed\";\n readonly slotId: SlotId;\n}\nexport interface RunnerRecordMembershipStateInvalid {\n readonly code: \"runner-record-membership-state-invalid\";\n readonly slotId: SlotId;\n}\nexport interface RunnerRecordAttemptPublicationFailed {\n readonly code: \"runner-record-attempt-publication-failed\";\n readonly locator: AttemptLocator;\n readonly cause: unknown;\n readonly message: string;\n}\n/** A seal return without its durable marker is never a publish receipt. */\nexport interface RunnerRecordPublishStateInvalid {\n readonly code: \"runner-record-publish-state-invalid\";\n readonly runId: RunId;\n}\nexport interface RunnerRecordAssertionsInvalid {\n readonly code: \"runner-record-assertions-invalid\";\n readonly issue: AssertionsProducerError;\n}\nexport interface RunnerRecordObservabilityInvalid {\n readonly code: \"runner-record-observability-invalid\";\n readonly owner: \"attempt\" | \"run\";\n readonly stage: \"capture\" | \"attachment\";\n}\nexport interface RunnerRecordSourcesInvalid {\n readonly code: \"runner-record-sources-invalid\";\n readonly issue: RunnerSourceProducerInvalid;\n}\nexport interface RunnerRecordArtifactsInvalid {\n readonly code: \"runner-record-artifacts-invalid\";\n readonly owner: \"attempt\" | \"run\";\n readonly reason: \"trace-serialization-failed\" | \"attachment-closure-invalid\";\n}\nexport type RunnerRecordWriteError = RecordWriteError | RunnerRecordAttemptInvalid | RunnerRecordUnsealedAttempt | RunnerRecordMembershipStateInvalid | RunnerRecordAttemptPublicationFailed | RunnerRecordPublishStateInvalid | RunnerRecordTargetIdentityInvalid | RunnerRecordAssertionsInvalid | RunnerRecordObservabilityInvalid | RunnerRecordSourcesInvalid | RunnerRecordArtifactsInvalid;\nexport type RunnerRecordOpenError = RecordReaderOpenError | RecordWriteError | RecordReaderReadError | ProjectTargetReusePlanInvalid | RunnerRecordTargetInputMissing | RunnerRecordTargetIdentityInvalid | RunnerRecordMembershipStateInvalid | RunnerSessionOpenFailed;\nexport interface RunnerSessionOpenFailed {\n readonly code: \"runner-session-open-failed\";\n readonly cause: unknown;\n}\nexport interface RunnerRecordCoordinator {\n readonly reusePlan: ExecutionReusePlan;\n readonly readCarriedResults: () => Effect.Effect<readonly CurrentReusedAttemptReadback[], RecordReaderReadError | CurrentReuseReadbackPlanInvalid>;\n readonly runIdsByExperiment: ReadonlyMap<string, string>;\n readonly publicationCutoff: () => Effect.Effect<PublicationCutoff, unknown, ProjectStateDatabase>;\n readonly carriedAttemptsByKey: ReadonlyMap<string, ReadonlySet<number>>;\n readonly adoptLatePublishedAttempt: (attempt: Attempt) => Effect.Effect<boolean, RecordReaderOpenError | RecordReaderReadError | ProjectTargetReusePlanInvalid | RunnerRecordWriteError, import(\"effect\").Scope.Scope | import(\"../coordination/record-leases.ts\").RecordCoordination | ProjectStateDatabase>;\n readonly reserveAttempt: (attempt: Attempt) => Effect.Effect<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase>;\n readonly noteSealedOrMarkIncomplete: (attempt: Attempt, sealed: SealedAttemptAssertions) => Effect.Effect<void, never>;\n readonly completeAttemptOrMarkIncomplete: (attempt: Attempt, result: EvalResult) => Effect.Effect<RunnerRecordAttempt | undefined, never, ProjectStateDatabase>;\n readonly markNotDispatched: (attempt: Attempt) => void;\n readonly publish: (completedAt: number, mode: \"normal\" | \"interrupted\") => Effect.Effect<readonly RecordSealReceipt[], RunnerRecordWriteError, ProjectStateDatabase>;\n}\n/** Current preview preserves the read Scope and never creates a Run row. */\nexport function withRunnerCurrentReusePreview<A, E, R>(input: {\n readonly recordRoot: RecordRoot;\n readonly startedAt: number;\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly reuse: RunnerRecordReuseInput;\n readonly use: (preview: {\n readonly reusePlan: ExecutionReusePlan;\n readonly readReadbacks: () => Effect.Effect<readonly CurrentReuseReadback[], RecordReaderReadError | CurrentReuseReadbackPlanInvalid>;\n }) => Effect.Effect<A, E, R>;\n}): Effect.Effect<A, E | RunnerRecordOpenError, R | import(\"effect\").Scope.Scope | import(\"../coordination/record-leases.ts\").RecordCoordination | ProjectStateDatabase> {\n return Effect.scoped(Effect.gen(function* () {\n const startedAt = runnerRecordUtcMillis(input.startedAt);\n if (Result.isFailure(startedAt))\n return yield* Effect.fail(startedAt.failure);\n const planned = yield* Effect.forEach(input.runs, (run) => planRunnerRecordRun({\n run,\n evals: input.evals,\n reuse: input.reuse,\n }), { concurrency: 1 });\n const previewRuns: TargetRun[] = [];\n for (const plan of planned) {\n const runId = previewRunnerRunId(plan.run);\n if (Result.isFailure(runId))\n return yield* Effect.fail(runId.failure);\n previewRuns.push(targetForRunnerRecordRun({ planned: plan, runId: runId.success, startedAt: startedAt.success }));\n }\n const target = Object.freeze({\n invocationId: `preview-${createHash(\"sha256\").update(String(input.startedAt), \"utf8\").digest(\"hex\")}`,\n runs: Object.freeze(previewRuns),\n });\n const rootPath = recordRootPaths(input.recordRoot)?.portableRoot;\n if (rootPath === undefined)\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n const recordDatabase = recordSqlitePath(rootPath);\n if (!existsSync(recordDatabase)) {\n const reusePlan = yield* planProjectTargetReuseWithoutSources({ target, policy: input.reuse.policy });\n return yield* input.use({\n reusePlan,\n readReadbacks: () => Effect.succeed(Object.freeze([])),\n });\n }\n const reader = yield* recordHost.openRead({ root: input.recordRoot });\n const reusePlan = yield* planProjectTargetReuse({ reader, target, policy: input.reuse.policy });\n return yield* input.use({\n reusePlan,\n readReadbacks: () => readCurrentExecutionReusePlanReadbacks({ reader, plan: reusePlan }),\n });\n }));\n}\nfunction attemptInvalid(): RunnerRecordAttemptInvalid {\n return Object.freeze({ code: \"runner-record-attempt-invalid\" as const });\n}\nfunction unsealedAttempt(slotId: SlotId): RunnerRecordUnsealedAttempt {\n return Object.freeze({ code: \"runner-record-attempt-unsealed\" as const, slotId });\n}\nfunction membershipStateInvalid(slotId: SlotId): RunnerRecordMembershipStateInvalid {\n return Object.freeze({ code: \"runner-record-membership-state-invalid\" as const, slotId });\n}\nfunction attemptPublicationFailed(locator: AttemptLocator, cause: unknown): RunnerRecordAttemptPublicationFailed {\n const detail = cause instanceof Error\n ? cause.message\n : typeof cause === \"object\" && cause !== null && typeof Reflect.get(cause, \"message\") === \"string\"\n ? String(Reflect.get(cause, \"message\"))\n : typeof cause === \"object\" && cause !== null && typeof Reflect.get(cause, \"code\") === \"string\"\n ? String(Reflect.get(cause, \"code\"))\n : String(cause);\n return Object.freeze({\n code: \"runner-record-attempt-publication-failed\" as const,\n locator,\n cause,\n message: `Attempt publication failed for ${locator}: ${detail}`,\n });\n}\nfunction publishStateInvalid(runId: RunId): RunnerRecordPublishStateInvalid {\n return Object.freeze({ code: \"runner-record-publish-state-invalid\" as const, runId });\n}\n/**\n * Opens one new per-Experiment Run session, selects only sealed historical\n * Runs, and writes carry references before dispatch. No global Record writer\n * lock or superseded draft/attachment contract participates in this boundary.\n */\nexport function openRunnerRecordCoordinator(input: {\n readonly recordRoot: RecordRoot;\n readonly startedAt: number;\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly reuse: RunnerRecordReuseInput;\n readonly session?: SessionTracker;\n}): Effect.Effect<RunnerRecordCoordinator, RunnerRecordOpenError, import(\"effect\").Scope.Scope | import(\"../record/platform/services.ts\").RecordEntropy | import(\"../coordination/record-leases.ts\").RecordCoordination | ProjectStateDatabase> {\n return Effect.gen(function* () {\n const rootPath = recordRootPaths(input.recordRoot)?.portableRoot;\n if (rootPath === undefined)\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n const seenExperiments = new Set<string>();\n for (const run of input.runs) {\n if (seenExperiments.has(run.experimentId)) {\n return yield* Effect.fail({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"invocation\" as const,\n value: `duplicate experimentId ${JSON.stringify(run.experimentId)}`,\n });\n }\n seenExperiments.add(run.experimentId);\n }\n const startedAt = runnerRecordUtcMillis(input.startedAt);\n if (Result.isFailure(startedAt))\n return yield* Effect.fail(startedAt.failure);\n const planned = yield* Effect.forEach(input.runs, (run) => planRunnerRecordRun({\n run,\n evals: input.evals,\n reuse: input.reuse,\n }), { concurrency: 1 });\n const invocationId = input.session?.sessionId ?? createHash(\"sha256\")\n .update(`${input.startedAt}\\u0000${planned.map((entry) => entry.run.experimentId).join(\"\\u0000\")}`, \"utf8\")\n .digest(\"hex\");\n const openedRuns = yield* Effect.forEach(planned, (plan) => recordHost.createRun({\n root: input.recordRoot,\n experimentId: plan.experimentId,\n context: plan.context,\n startedAt: startedAt.success,\n expectedSlots: plan.expectedSlots,\n writerGeneration: createRunWriterGeneration(`${invocationId}:${plan.experimentId}`),\n }).pipe(Effect.map((session) => {\n const writerGeneration = writerGenerationForRunSession(session);\n if (writerGeneration === undefined)\n throw new Error(\"Run writer generation is unavailable\");\n return Object.freeze({ plan, session, writerGeneration });\n })), { concurrency: 1 });\n if (input.session !== undefined) {\n const startedAtIso = new Date(input.startedAt).toISOString();\n yield* input.session.start({\n runIds: new Map(openedRuns.map(({ plan, session }) => [plan.experimentId, String(session.runId)])),\n agentRuns: input.runs,\n startedAt: startedAtIso,\n invocationRuns: openedRuns.map(({ plan, session, writerGeneration }) => ({\n runId: String(session.runId),\n experimentId: plan.experimentId,\n writerGeneration,\n startedAt: startedAtIso,\n expectedSlots: plan.expectedSlots.map((slot) => ({\n slotId: String(slot.slotId), evalId: String(slot.evalId), attemptOrdinal: slot.attemptOrdinal,\n executionIdentityDigest: String(slot.executionIdentityDigest),\n })),\n })),\n }).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n }\n const reader = yield* recordHost.openRead({ root: input.recordRoot });\n const byRun = new Map<AgentRun, RunnerRecordRun>();\n const byRecordRunId = new Map<RunId, RunnerRecordRun>();\n const runIdsByExperiment = new Map<string, string>();\n const targetRuns: TargetRun[] = [];\n for (const { plan, session, writerGeneration } of openedRuns) {\n const target = targetForRunnerRecordRun({\n planned: plan,\n runId: session.runId,\n startedAt: startedAt.success,\n });\n const recordRun: RunnerRecordRun = {\n ...plan,\n session,\n target,\n attempts: new Map(),\n planSlots: new Map(),\n gapActions: new Map(),\n writerGeneration,\n };\n byRun.set(plan.run, recordRun);\n byRecordRunId.set(session.runId, recordRun);\n runIdsByExperiment.set(plan.run.experimentId, session.runId);\n targetRuns.push(target);\n }\n const target = Object.freeze({\n invocationId,\n runs: Object.freeze(targetRuns),\n });\n const reusePlan = yield* planProjectTargetReuse({ reader, target, policy: input.reuse.policy });\n const carriedAttemptsByKey = new Map<string, Set<number>>();\n for (const slot of reusePlan.slots) {\n const recordRun = byRecordRunId.get(slot.runId);\n if (recordRun === undefined)\n return yield* Effect.fail(membershipStateInvalid(slot.slotId));\n recordRun.planSlots.set(slot.slotId, slot);\n if (slot.state === \"reuse\") {\n yield* recordRun.session.referenceAttempt({\n slotId: slot.slotId,\n action: \"carried\",\n attempt: slot.source.attempt,\n });\n yield* bindAttemptReference(rootPath, {\n runId: String(recordRun.session.runId),\n writerGeneration: recordRun.writerGeneration,\n slotId: String(slot.slotId),\n action: \"carried\",\n publicationIdentity: slot.source.attempt.publicationIdentity,\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n const entry = recordRun.slots.get(runnerRecordSlotKey(slot.evalId, slot.attempt));\n if (entry === undefined)\n return yield* Effect.fail(membershipStateInvalid(slot.slotId));\n const key = cacheKey(recordRun.run, entry.evalDef.id);\n const carried = carriedAttemptsByKey.get(key) ?? new Set<number>();\n carried.add(entry.attempt);\n carriedAttemptsByKey.set(key, carried);\n }\n else {\n recordRun.gapActions.set(slot.slotId, \"pending\");\n }\n }\n if (input.session !== undefined) {\n yield* input.session.applyCarriedAttempts(input.runs, carriedAttemptsByKey).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n }\n let invocationWriteFailure: RunnerRecordWriteError | undefined;\n const writeFailuresByRun = new Map<RunnerRecordRun, RunnerRecordWriteError>();\n const noteFailure = (error: RunnerRecordWriteError, recordRun?: RunnerRecordRun): void => {\n if (recordRun === undefined) {\n if (invocationWriteFailure === undefined)\n invocationWriteFailure = error;\n return;\n }\n if (!writeFailuresByRun.has(recordRun))\n writeFailuresByRun.set(recordRun, error);\n };\n const lock = yield* Semaphore.make(1);\n const runForAttempt = (attempt: Attempt): RunnerRecordRun | undefined => byRun.get(attempt.run);\n const targetForAttempt = (attempt: Attempt): {\n readonly recordRun: RunnerRecordRun;\n readonly slotId: SlotId;\n readonly plan: ExecutionReusePlanSlot;\n } | undefined => {\n const recordRun = runForAttempt(attempt);\n if (recordRun === undefined)\n return undefined;\n const entry = recordRun.slots.get(runnerRecordSlotKey(attempt.evalDef.id, attempt.attempt));\n if (entry === undefined)\n return undefined;\n const plan = recordRun.planSlots.get(entry.slot.slotId);\n return plan === undefined ? undefined : { recordRun, slotId: entry.slot.slotId, plan };\n };\n const adoptLatePublishedAttempt = (attempt: Attempt) => lock.withPermits(1)(Effect.gen(function* () {\n const current = targetForAttempt(attempt);\n if (current === undefined\n || current.plan.state !== \"gap\"\n || current.recordRun.gapActions.get(current.slotId) !== \"pending\")\n return false;\n const freshReader = yield* recordHost.openRead({ root: input.recordRoot });\n const refreshed = yield* planProjectTargetReuse({\n reader: freshReader,\n target,\n policy: input.reuse.policy,\n });\n const replacement = refreshed.slots.find((slot) => slot.runId === current.recordRun.target.runId && slot.slotId === current.slotId);\n if (replacement?.state !== \"reuse\")\n return false;\n yield* current.recordRun.session.referenceAttempt({\n slotId: current.slotId,\n action: \"carried\",\n attempt: replacement.source.attempt,\n });\n yield* bindAttemptReference(rootPath, {\n runId: String(current.recordRun.session.runId),\n writerGeneration: current.recordRun.writerGeneration,\n slotId: String(current.slotId),\n action: \"carried\",\n publicationIdentity: replacement.source.attempt.publicationIdentity,\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError(() => publishStateInvalid(current.recordRun.session.runId)));\n current.recordRun.planSlots.set(current.slotId, replacement);\n current.recordRun.gapActions.delete(current.slotId);\n return true;\n }));\n const reserveAttempt = (attempt: Attempt): Effect.Effect<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase> => {\n const targetSlot = targetForAttempt(attempt);\n return lock.withPermits(1)(Effect.gen(function* () {\n if (targetSlot === undefined\n || targetSlot.plan.state !== \"gap\"\n || targetSlot.recordRun.gapActions.get(targetSlot.slotId) !== \"pending\") {\n return yield* Effect.fail(attemptInvalid());\n }\n const session = yield* targetSlot.recordRun.session.createAttempt({ slotId: targetSlot.slotId });\n const publicAttempt = Object.freeze({\n slotId: targetSlot.slotId,\n attemptId: session.attemptId,\n locator: encodeAttemptLocator(session.attemptId),\n });\n targetSlot.recordRun.attempts.set(targetSlot.slotId, {\n attempt,\n session,\n public: publicAttempt,\n completed: false,\n });\n targetSlot.recordRun.gapActions.set(targetSlot.slotId, \"reserved\");\n return publicAttempt;\n })).pipe(Effect.tapError((error) => Effect.sync(() => noteFailure(error, targetSlot?.recordRun ?? runForAttempt(attempt)))));\n };\n const noteSealedOrMarkIncomplete = (attempt: Attempt, sealed: SealedAttemptAssertions): Effect.Effect<void, never> => Effect.sync(() => {\n const targetSlot = targetForAttempt(attempt);\n const active = targetSlot === undefined\n ? undefined\n : targetSlot.recordRun.attempts.get(targetSlot.slotId);\n if (targetSlot === undefined\n || targetSlot.plan.state !== \"gap\"\n || targetSlot.recordRun.gapActions.get(targetSlot.slotId) !== \"reserved\"\n || active === undefined\n || active.attempt !== attempt\n || active.sealed !== undefined) {\n noteFailure(attemptInvalid(), targetSlot?.recordRun ?? runForAttempt(attempt));\n return;\n }\n active.sealed = sealed;\n });\n const completeAttempt = (attempt: Attempt, result: EvalResult): Effect.Effect<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase> => Effect.suspend<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase>(() => {\n const targetSlot = targetForAttempt(attempt);\n const active = targetSlot === undefined\n ? undefined\n : targetSlot.recordRun.attempts.get(targetSlot.slotId);\n if (targetSlot === undefined\n || targetSlot.plan.state !== \"gap\"\n || targetSlot.recordRun.gapActions.get(targetSlot.slotId) !== \"reserved\"\n || active === undefined\n || active.attempt !== attempt\n || active.completed) {\n return Effect.fail(attemptInvalid());\n }\n const assertions = active.sealed === undefined\n ? undefined\n : createRunnerAssertionsAttachment(active.sealed);\n if (assertions !== undefined && Result.isFailure(assertions))\n return Effect.fail(assertions.failure);\n if (active.sealed === undefined || assertions === undefined || Result.isFailure(assertions)) {\n return Effect.fail(membershipStateInvalid(targetSlot.slotId));\n }\n return Effect.gen(function* () {\n const sourcePlan = createRunnerSourceWritePlan([Object.freeze({\n slotId: targetSlot.slotId,\n result,\n assertionEntryIds: assertions.success.entryIds,\n })]);\n if (Result.isFailure(sourcePlan)) {\n return yield* Effect.fail(Object.freeze({\n code: \"runner-record-sources-invalid\" as const,\n issue: sourcePlan.failure,\n }));\n }\n const closedAssertions = createRunnerAssertionsAttachment(active.sealed!, {\n entryIds: assertions.success.entryIds,\n sourceSites: sourcePlan.success.sourceSitesBySlot.get(targetSlot.slotId),\n });\n if (Result.isFailure(closedAssertions))\n return yield* Effect.fail(closedAssertions.failure);\n yield* active.session.records.write(NiceEvalRecordAttachments.assertions, closedAssertions.success.attachment);\n yield* active.session.records.write(NiceEvalRecordAttachments.attemptCost, createAttemptCostAttachment(result));\n const sourceReceipts = yield* createAttemptObservabilityAttachments({ result, sealed: active.sealed! });\n if (sourceReceipts.agentTurns !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.agentTurns, sourceReceipts.agentTurns);\n }\n if (sourceReceipts.sandboxCommands !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.sandboxCommands, sourceReceipts.sandboxCommands);\n }\n yield* active.session.records.write(NiceEvalRecordAttachments.runnerActivities.attempt, sourceReceipts.runnerActivities);\n yield* active.session.records.write(NiceEvalRecordAttachments.runnerDiagnostics.attempt, sourceReceipts.runnerDiagnostics);\n const turnContexts = createRunnerTurnContextsAttachment({ result, sourcePlan: sourcePlan.success });\n if (Result.isFailure(turnContexts)) {\n return yield* Effect.fail(Object.freeze({\n code: \"runner-record-sources-invalid\" as const,\n issue: turnContexts.failure,\n }));\n }\n if (turnContexts.success !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.turnContexts, turnContexts.success);\n }\n const fileChanges = createAttemptFileChangesAttachment(result);\n if (fileChanges !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.fileChanges, fileChanges);\n }\n const attachmentSnapshot = adapterAttachmentsForResult(result);\n const artifacts = createAttemptArtifactsAttachment(result, attachmentSnapshot);\n const judgeUsage = judgeUsageForResult(result, closedAssertions.success.entryIds);\n if (judgeUsage !== undefined)\n yield* active.session.records.write(NiceEvalRecordAttachments.judgeUsage, judgeUsage);\n const adapterUsage = adapterUsageForResult(result);\n const executionTraces = adapterExecutionTracesForResult(result);\n if (adapterUsage !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.adapterUsage, adapterUsage);\n }\n if (artifacts !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.artifacts.attempt, artifacts);\n }\n if (executionTraces !== undefined && executionTraces.traces.length > 0) {\n validateExecutionTracePublication(executionTraces, attachmentSnapshot?.artifacts ?? []);\n yield* active.session.records.appendAll(executionTracesRecordCollection, Stream.fromIterable(executionTraces.traces.flatMap((trace) => trace.records)));\n yield* active.session.records.close(executionTracesRecordCollection, executionTraces.failure === undefined\n ? { state: \"complete\" }\n : {\n state: \"partial\",\n limitations: [{ code: \"capture-failed\", stage: \"adapter\" }],\n });\n }\n yield* active.session.complete(recordAttemptOutcome(result));\n const closureBytes = new TextEncoder().encode(JSON.stringify(attemptPublicationClosure(Object.freeze({\n runId: String(targetSlot.recordRun.session.runId),\n experimentId: targetSlot.recordRun.experimentId,\n context: targetSlot.recordRun.context,\n startedAt: targetSlot.recordRun.target.startedAt,\n completedAt: Date.now(),\n expectedSlots: targetSlot.recordRun.expectedSlots,\n }))));\n yield* publishOriginAttempt(rootPath, {\n runId: String(targetSlot.recordRun.session.runId),\n writerGeneration: targetSlot.recordRun.writerGeneration,\n slotId: String(targetSlot.slotId),\n attemptId: String(active.public.attemptId),\n attemptLocator: String(active.public.locator),\n closureBytes,\n closureDigest: createHash(\"sha256\").update(closureBytes).digest(\"hex\"),\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError((cause) => attemptPublicationFailed(active.public.locator, cause)));\n active.result = result;\n active.assertionEntryIds = assertions.success.entryIds;\n active.completed = true;\n targetSlot.recordRun.gapActions.set(targetSlot.slotId, \"executed\");\n return active.public;\n });\n });\n const attachRunFacts = (recordRun: RunnerRecordRun, mode: \"normal\" | \"interrupted\"): Effect.Effect<void, RunnerRecordWriteError> => Effect.gen(function* () {\n const writeRecord = (effect: Effect.Effect<void, RecordWriteError, never>): Effect.Effect<void, RecordWriteError, never> => effect;\n const origins = [] as {\n readonly slotId: SlotId;\n readonly active: ActiveRunnerRecordAttempt;\n readonly result: EvalResult;\n readonly sealed: SealedAttemptAssertions;\n readonly assertionEntryIds: readonly AssertionEntryId[];\n }[];\n for (const [slotId, state] of recordRun.gapActions) {\n if (state !== \"executed\")\n continue;\n const active = recordRun.attempts.get(slotId);\n if (active === undefined)\n return yield* Effect.fail(membershipStateInvalid(slotId));\n const result = active.result;\n const sealed = active?.sealed;\n const assertionEntryIds = active?.assertionEntryIds;\n if (result === undefined || sealed === undefined || assertionEntryIds === undefined)\n continue;\n origins.push(Object.freeze({ slotId, active, result, sealed, assertionEntryIds }));\n }\n const sources = createRunnerSourceWritePlan(origins.map(({ slotId, result, assertionEntryIds }) => Object.freeze({\n slotId,\n result,\n assertionEntryIds,\n })));\n if (Result.isFailure(sources)) {\n return yield* Effect.fail(Object.freeze({\n code: \"runner-record-sources-invalid\" as const,\n issue: sources.failure,\n }));\n }\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.sources, sources.success.sources));\n const sourceReceipts = yield* createRunObservabilityAttachments(recordRun.run);\n if (sourceReceipts.runnerActivities !== undefined) {\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.runnerActivities.run, sourceReceipts.runnerActivities));\n }\n if (sourceReceipts.runnerDiagnostics !== undefined) {\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.runnerDiagnostics.run, sourceReceipts.runnerDiagnostics));\n }\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.artifacts.run, createRunArtifactsAttachment()));\n });\n const pendingGap = (recordRun: RunnerRecordRun): SlotId | undefined => {\n for (const [slotId, state] of recordRun.gapActions) {\n if (state === \"pending\")\n return slotId;\n }\n return undefined;\n };\n return Object.freeze({\n reusePlan,\n readCarriedResults: () => readCurrentExecutionReusePlanResults({ reader, plan: reusePlan }),\n runIdsByExperiment: new Map(runIdsByExperiment),\n publicationCutoff: () => currentPublicationCutoff(rootPath),\n carriedAttemptsByKey: new Map([...carriedAttemptsByKey].map(([key, attempts]) => [key, new Set(attempts)] as const)),\n adoptLatePublishedAttempt,\n reserveAttempt,\n noteSealedOrMarkIncomplete,\n completeAttemptOrMarkIncomplete: (attempt: Attempt, result: EvalResult) => completeAttempt(attempt, result).pipe(Effect.catch((error) => Effect.sync(() => {\n const target = targetForAttempt(attempt);\n const active = target === undefined ? undefined : target.recordRun.attempts.get(target.slotId);\n noteFailure(error.code === \"runner-record-assertions-invalid\" ||\n error.code === \"runner-record-attempt-publication-failed\" ||\n active === undefined\n ? error\n : attemptPublicationFailed(active.public.locator, error), target?.recordRun ?? runForAttempt(attempt));\n return undefined;\n })), Effect.ensuring(Effect.promise(() => releaseAdapterAttachments(result)))),\n markNotDispatched: (attempt: Attempt) => {\n const targetSlot = targetForAttempt(attempt);\n if (targetSlot !== undefined\n && targetSlot.plan.state === \"gap\"\n && targetSlot.recordRun.gapActions.get(targetSlot.slotId) === \"pending\") {\n targetSlot.recordRun.gapActions.set(targetSlot.slotId, \"not-dispatched\");\n }\n },\n publish: (completedAt: number, mode: \"normal\" | \"interrupted\") => Effect.gen(function* () {\n const recordRuns = [...byRun.values()];\n if (invocationWriteFailure !== undefined)\n return yield* Effect.fail(invocationWriteFailure);\n if (mode === \"normal\") {\n // A normal finish remains invocation-strict: a failure which can be\n // attributed to one Run still fails the call rather than allowing a\n // partial receipt to disguise it as ordinary completion.\n for (const recordRun of recordRuns) {\n const failure = writeFailuresByRun.get(recordRun);\n if (failure !== undefined)\n return yield* Effect.fail(failure);\n }\n }\n const completion = runnerRecordUtcMillis(completedAt);\n if (Result.isFailure(completion))\n return yield* Effect.fail(completion.failure);\n // A controlled interruption closes every reserved Attempt as\n // `interrupted` and every never-started gap as an interrupted terminal\n // Member. Only a Run-local writer failure remains non-publishable.\n // Abrupt process loss still has no opportunity to create `complete`.\n const incompleteRuns = mode === \"interrupted\"\n ? new Set(recordRuns.filter((recordRun) => writeFailuresByRun.has(recordRun)))\n : new Set<RunnerRecordRun>();\n if (mode === \"normal\") {\n // Normal completion is deliberately invocation-strict. A pending\n // gap means the scheduler failed to account for a Slot; a reserved\n // or otherwise unsettled Attempt is likewise not publishable.\n for (const recordRun of recordRuns) {\n const unsettledSlot = [...recordRun.gapActions.keys()].find((slotId) => {\n const active = recordRun.attempts.get(slotId);\n return recordRun.gapActions.get(slotId) === \"reserved\"\n || (active !== undefined && !active.completed);\n });\n if (unsettledSlot !== undefined)\n return yield* Effect.fail(unsealedAttempt(unsettledSlot));\n const unaccountedSlot = pendingGap(recordRun);\n if (unaccountedSlot !== undefined)\n return yield* Effect.fail(unsealedAttempt(unaccountedSlot));\n }\n }\n else {\n for (const recordRun of recordRuns) {\n if (incompleteRuns.has(recordRun))\n continue;\n for (const [slotId, state] of recordRun.gapActions) {\n if (state === \"pending\")\n recordRun.gapActions.set(slotId, \"interrupted\");\n if (state === \"reserved\") {\n const active = recordRun.attempts.get(slotId);\n if (active === undefined)\n return yield* Effect.fail(membershipStateInvalid(slotId));\n yield* discardAttemptWriteSession(active.session);\n recordRun.attempts.delete(slotId);\n recordRun.gapActions.set(slotId, \"interrupted\");\n }\n }\n }\n }\n const publishableRuns = recordRuns.filter((recordRun) => !incompleteRuns.has(recordRun));\n const publishOne = (recordRun: RunnerRecordRun): Effect.Effect<RecordSealReceipt, RunnerRecordWriteError, ProjectStateDatabase> => Effect.gen(function* () {\n yield* attachRunFacts(recordRun, mode);\n for (const [slotId, state] of recordRun.gapActions) {\n if (state === \"not-dispatched\" || state === \"interrupted\") {\n const absenceReason: RunAbsenceReason = mode === \"interrupted\"\n ? \"interrupted-before-publication\"\n : state === \"not-dispatched\"\n ? \"early-exit-satisfied\"\n : \"dispatch-failed\";\n yield* recordRun.session.recordTerminalMember({ slotId, action: state, absenceReason });\n }\n }\n const sealed = yield* recordRun.session.seal({ completedAt: completion.success });\n const absences = [...recordRun.gapActions].flatMap(([slotId, state]) => {\n if (state === \"executed\" && recordRun.attempts.get(slotId)?.completed === true)\n return [];\n const reason: RunAbsenceReason = mode === \"interrupted\"\n ? \"interrupted-before-publication\"\n : state === \"not-dispatched\"\n ? \"early-exit-satisfied\"\n : \"dispatch-failed\";\n return [{ slotId: String(slotId), reason }];\n });\n yield* closeRunResource(rootPath, {\n runId: String(recordRun.session.runId),\n writerGeneration: recordRun.writerGeneration,\n state: mode === \"interrupted\" ? \"interrupted\" : \"completed\",\n completedAt: new Date(completedAt).toISOString(),\n absences,\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError(() => publishStateInvalid(recordRun.session.runId)));\n return sealed;\n });\n if (mode === \"normal\") {\n // Normal completion remains typed and strict: the first Run failure\n // is an invocation failure, never a partial success receipt.\n return yield* Effect.forEach(publishableRuns, publishOne, { concurrency: 1 });\n }\n // SIGINT is different: each clean sibling receives its own complete\n // attempt. We deliberately observe an Exit per Run so one Attachment\n // or seal error cannot short-circuit subsequent safe siblings.\n const receipts: RecordSealReceipt[] = [];\n for (const recordRun of publishableRuns) {\n const exit = yield* Effect.exit(publishOne(recordRun));\n if (Exit.isSuccess(exit)) {\n receipts.push(exit.value);\n }\n else {\n const failure = Cause.findErrorOption(exit.cause);\n if (Option.isSome(failure)) {\n noteFailure(failure.value, recordRun);\n }\n else {\n noteFailure(publishStateInvalid(recordRun.session.runId), recordRun);\n }\n }\n }\n return Object.freeze(receipts);\n }),\n });\n });\n}\n"]}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["record.ts"],"names":[],"mappings":"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","sourcesContent":["import { judgeUsageForResult } from \"./judge-usage.ts\";\nimport { createHash } from \"node:crypto\";\nimport { existsSync } from \"node:fs\";\nimport { Cause, Effect, Result, Exit, Option, Semaphore, Stream } from \"effect\";\nimport { encodeAttemptLocator, type AttemptLocator } from \"../attempt-locator.ts\";\nimport type { SealedAttemptAssertions } from \"../assertions/api.ts\";\nimport type { AssertionsProducerError } from \"../assertions/record/producer.ts\";\nimport { NiceEvalRecordAttachments } from \"../record/family/catalog.ts\";\nimport { recordHost } from \"../record/host/runtime.ts\";\nimport { discardAttemptWriteSession, stagePlanningReference, writerGenerationForRunSession } from \"../record/host/sqlite-host.ts\";\nimport type { AttemptWriteSession, RecordSealReceipt, RunWriteSession, } from \"../record/host/types.ts\";\nimport type { RunId, SlotId, } from \"../record/model/identifiers.ts\";\nimport type { AssertionEntryId } from \"../assertions/identity.ts\";\nimport { recordRootPaths, type RecordRoot } from \"../record/platform/root.ts\";\nimport { attemptPublicationClosure } from \"../record/codec/core.ts\";\nimport { RecordRootInvalid } from \"../record/platform/errors.ts\";\nimport { recordSqlitePath } from \"../record/sqlite/index.ts\";\nimport type { ProjectStateDatabase } from \"../record/sqlite/project-state-database.ts\";\nimport type { RecordReaderOpenError, RecordReaderReadError, } from \"../record/reader/errors.ts\";\nimport type { RecordWriteError } from \"../record/writer/types.ts\";\nimport { bindAttemptReference, closeRunResource, currentPublicationCutoff, publishOriginAttempt, createRunWriterGeneration, type PublicationCutoff, type RunAbsenceReason, } from \"../run/storage/index.ts\";\nimport { cacheKey } from \"./fingerprint.ts\";\nimport { planProjectTargetReuse, planProjectTargetReuseWithoutSources, type ExecutionReusePlan, type ExecutionReusePlanSlot, type ProjectTargetReusePlanInvalid, type TargetRun, } from \"./reuse-plan.ts\";\nimport { readCurrentExecutionReusePlanReadbacks, readCurrentExecutionReusePlanResults, type CurrentReusedAttemptReadback, type CurrentReuseReadback, type CurrentReuseReadbackPlanInvalid, } from \"./reuse-readback.ts\";\nimport { createRunnerTurnContextsAttachment, createRunnerSourceWritePlan, type RunnerSourceProducerInvalid, } from \"./source-producer.ts\";\nimport { createAttemptArtifactsAttachment, createAttemptFileChangesAttachment, createAttemptObservabilityAttachments, createRunArtifactsAttachment, createRunnerAssertionsAttachment, createRunObservabilityAttachments, recordAttemptOutcome, } from \"./record/attachments.ts\";\nimport { adapterUsageForResult } from \"./adapter-usage.ts\";\nimport { adapterAttachmentsForResult, releaseAdapterAttachments } from \"./adapter-attachments.ts\";\nimport { adapterExecutionTracesForResult, validateExecutionTracePublication, } from \"./adapter-execution-trace.ts\";\nimport { executionTracesRecordCollection } from \"../record/family/execution-traces/definition.ts\";\nimport { planRunnerRecordRun, previewRunnerRunId, runnerRecordSlotKey, runnerRecordUtcMillis, targetForRunnerRecordRun, type PlannedRunnerRecordRun, type RunnerRecordReuseInput, type RunnerRecordTargetIdentityInvalid, type RunnerRecordTargetInputMissing, } from \"./record/planning.ts\";\nimport type { AgentRun, Attempt, DiscoveredEval, EvalResult, } from \"./types.ts\";\nimport type { AttemptCostAttachment } from \"../record/family/attempt-cost/definition.ts\";\nimport { getPricingEstimateReceipt } from \"./pricing-estimate-receipt.ts\";\nimport type { SessionTracker } from \"./session.ts\";\nexport { prepareRunnerRecordReuse, type RunnerRecordReuseInput, type RunnerRecordReusePreparationInput, type RunnerRecordReuseSlotInput, type RunnerRecordTargetIdentityInvalid, type RunnerRecordTargetInputMissing, } from \"./record/planning.ts\";\ntype GapActionState = \"pending\" | \"reserved\" | \"executed\" | \"not-dispatched\" | \"interrupted\";\ninterface ActiveRunnerRecordAttempt {\n readonly attempt: Attempt;\n readonly session: AttemptWriteSession;\n readonly public: RunnerRecordAttempt;\n sealed?: SealedAttemptAssertions;\n result?: EvalResult;\n assertionEntryIds?: readonly AssertionEntryId[];\n completed: boolean;\n}\ninterface RunnerRecordRun extends PlannedRunnerRecordRun {\n readonly session: RunWriteSession;\n readonly target: TargetRun;\n readonly attempts: Map<SlotId, ActiveRunnerRecordAttempt>;\n readonly planSlots: Map<SlotId, ExecutionReusePlanSlot>;\n readonly gapActions: Map<SlotId, GapActionState>;\n readonly writerGeneration: string;\n}\nexport interface RunnerRecordAttempt {\n readonly slotId: SlotId;\n readonly attemptId: import(\"../record/model/identifiers.ts\").AttemptId;\n readonly locator: AttemptLocator;\n}\nexport type RecordAttemptLocator = AttemptLocator;\nfunction createAttemptCostAttachment(result: EvalResult): AttemptCostAttachment {\n const receipt = getPricingEstimateReceipt(result);\n return Object.freeze({\n ...(result.usage?.costUSD === undefined ? {} : {\n observed: Object.freeze({ kind: \"observed\" as const, amountUSD: result.usage.costUSD }),\n }),\n ...(receipt === undefined ? {} : {\n estimated: Object.freeze({\n kind: \"estimated\" as const,\n amountUSD: receipt.amountUSD,\n model: receipt.model,\n priceSource: receipt.priceSource,\n charges: receipt.charges,\n }),\n }),\n });\n}\nexport interface RunnerRecordAttemptInvalid {\n readonly code: \"runner-record-attempt-invalid\";\n}\nexport interface RunnerRecordUnsealedAttempt {\n readonly code: \"runner-record-attempt-unsealed\";\n readonly slotId: SlotId;\n}\nexport interface RunnerRecordMembershipStateInvalid {\n readonly code: \"runner-record-membership-state-invalid\";\n readonly slotId: SlotId;\n}\nexport interface RunnerRecordAttemptPublicationFailed {\n readonly code: \"runner-record-attempt-publication-failed\";\n readonly locator: AttemptLocator;\n readonly cause: unknown;\n readonly message: string;\n}\n/** A seal return without its durable marker is never a publish receipt. */\nexport interface RunnerRecordPublishStateInvalid {\n readonly code: \"runner-record-publish-state-invalid\";\n readonly runId: RunId;\n}\nexport interface RunnerRecordAssertionsInvalid {\n readonly code: \"runner-record-assertions-invalid\";\n readonly issue: AssertionsProducerError;\n}\nexport interface RunnerRecordObservabilityInvalid {\n readonly code: \"runner-record-observability-invalid\";\n readonly owner: \"attempt\" | \"run\";\n readonly stage: \"capture\" | \"attachment\";\n}\nexport interface RunnerRecordSourcesInvalid {\n readonly code: \"runner-record-sources-invalid\";\n readonly issue: RunnerSourceProducerInvalid;\n}\nexport interface RunnerRecordArtifactsInvalid {\n readonly code: \"runner-record-artifacts-invalid\";\n readonly owner: \"attempt\" | \"run\";\n readonly reason: \"trace-serialization-failed\" | \"attachment-closure-invalid\";\n}\nexport type RunnerRecordWriteError = RecordWriteError | RunnerRecordAttemptInvalid | RunnerRecordUnsealedAttempt | RunnerRecordMembershipStateInvalid | RunnerRecordAttemptPublicationFailed | RunnerRecordPublishStateInvalid | RunnerRecordTargetIdentityInvalid | RunnerRecordAssertionsInvalid | RunnerRecordObservabilityInvalid | RunnerRecordSourcesInvalid | RunnerRecordArtifactsInvalid;\nexport type RunnerRecordOpenError = RecordReaderOpenError | RecordWriteError | RecordReaderReadError | ProjectTargetReusePlanInvalid | RunnerRecordTargetInputMissing | RunnerRecordTargetIdentityInvalid | RunnerRecordMembershipStateInvalid | RunnerSessionOpenFailed;\nexport interface RunnerSessionOpenFailed {\n readonly code: \"runner-session-open-failed\";\n readonly cause: unknown;\n}\nexport interface RunnerRecordCoordinator {\n readonly reusePlan: ExecutionReusePlan;\n readonly readCarriedResults: () => Effect.Effect<readonly CurrentReusedAttemptReadback[], RecordReaderReadError | CurrentReuseReadbackPlanInvalid>;\n readonly runIdsByExperiment: ReadonlyMap<string, string>;\n readonly publicationCutoff: () => Effect.Effect<PublicationCutoff, unknown, ProjectStateDatabase>;\n readonly carriedAttemptsByKey: ReadonlyMap<string, ReadonlySet<number>>;\n readonly adoptLatePublishedAttempt: (attempt: Attempt) => Effect.Effect<boolean, RecordReaderOpenError | RecordReaderReadError | ProjectTargetReusePlanInvalid | RunnerRecordWriteError, import(\"effect\").Scope.Scope | import(\"../coordination/record-leases.ts\").RecordCoordination | ProjectStateDatabase>;\n readonly reserveAttempt: (attempt: Attempt) => Effect.Effect<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase>;\n readonly noteSealedOrMarkIncomplete: (attempt: Attempt, sealed: SealedAttemptAssertions) => Effect.Effect<void, never>;\n readonly completeAttemptOrMarkIncomplete: (attempt: Attempt, result: EvalResult) => Effect.Effect<RunnerRecordAttempt | undefined, never, ProjectStateDatabase>;\n readonly markNotDispatched: (attempt: Attempt) => void;\n readonly publish: (completedAt: number, mode: \"normal\" | \"interrupted\") => Effect.Effect<readonly RecordSealReceipt[], RunnerRecordWriteError, ProjectStateDatabase>;\n}\n/** Current preview preserves the read Scope and never creates a Run row. */\nexport function withRunnerCurrentReusePreview<A, E, R>(input: {\n readonly recordRoot: RecordRoot;\n readonly startedAt: number;\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly reuse: RunnerRecordReuseInput;\n readonly use: (preview: {\n readonly reusePlan: ExecutionReusePlan;\n readonly readReadbacks: () => Effect.Effect<readonly CurrentReuseReadback[], RecordReaderReadError | CurrentReuseReadbackPlanInvalid>;\n }) => Effect.Effect<A, E, R>;\n}): Effect.Effect<A, E | RunnerRecordOpenError, R | import(\"effect\").Scope.Scope | import(\"../coordination/record-leases.ts\").RecordCoordination | ProjectStateDatabase> {\n return Effect.scoped(Effect.gen(function* () {\n const startedAt = runnerRecordUtcMillis(input.startedAt);\n if (Result.isFailure(startedAt))\n return yield* Effect.fail(startedAt.failure);\n const planned = yield* Effect.forEach(input.runs, (run) => planRunnerRecordRun({\n run,\n evals: input.evals,\n reuse: input.reuse,\n }), { concurrency: 1 });\n const previewRuns: TargetRun[] = [];\n for (const plan of planned) {\n const runId = previewRunnerRunId(plan.run);\n if (Result.isFailure(runId))\n return yield* Effect.fail(runId.failure);\n previewRuns.push(targetForRunnerRecordRun({ planned: plan, runId: runId.success, startedAt: startedAt.success }));\n }\n const target = Object.freeze({\n invocationId: `preview-${createHash(\"sha256\").update(String(input.startedAt), \"utf8\").digest(\"hex\")}`,\n runs: Object.freeze(previewRuns),\n });\n const rootPath = recordRootPaths(input.recordRoot)?.portableRoot;\n if (rootPath === undefined)\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n const recordDatabase = recordSqlitePath(rootPath);\n if (!existsSync(recordDatabase)) {\n const reusePlan = yield* planProjectTargetReuseWithoutSources({ target, policy: input.reuse.policy });\n return yield* input.use({\n reusePlan,\n readReadbacks: () => Effect.succeed(Object.freeze([])),\n });\n }\n const { reusePlan, readbacks } = yield* Effect.scoped(Effect.gen(function* () {\n const reader = yield* recordHost.openRead({ root: input.recordRoot });\n const reusePlan = yield* planProjectTargetReuse({ reader, target, policy: input.reuse.policy });\n const readbacks = yield* readCurrentExecutionReusePlanReadbacks({ reader, plan: reusePlan }).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n return { reusePlan, readbacks };\n }));\n return yield* input.use({\n reusePlan,\n readReadbacks: () => Effect.succeed(readbacks),\n });\n }));\n}\nfunction attemptInvalid(): RunnerRecordAttemptInvalid {\n return Object.freeze({ code: \"runner-record-attempt-invalid\" as const });\n}\nfunction unsealedAttempt(slotId: SlotId): RunnerRecordUnsealedAttempt {\n return Object.freeze({ code: \"runner-record-attempt-unsealed\" as const, slotId });\n}\nfunction membershipStateInvalid(slotId: SlotId): RunnerRecordMembershipStateInvalid {\n return Object.freeze({ code: \"runner-record-membership-state-invalid\" as const, slotId });\n}\nfunction attemptPublicationFailed(locator: AttemptLocator, cause: unknown): RunnerRecordAttemptPublicationFailed {\n const detail = cause instanceof Error\n ? cause.message\n : typeof cause === \"object\" && cause !== null && typeof Reflect.get(cause, \"message\") === \"string\"\n ? String(Reflect.get(cause, \"message\"))\n : typeof cause === \"object\" && cause !== null && typeof Reflect.get(cause, \"code\") === \"string\"\n ? String(Reflect.get(cause, \"code\"))\n : String(cause);\n return Object.freeze({\n code: \"runner-record-attempt-publication-failed\" as const,\n locator,\n cause,\n message: `Attempt publication failed for ${locator}: ${detail}`,\n });\n}\nfunction publishStateInvalid(runId: RunId): RunnerRecordPublishStateInvalid {\n return Object.freeze({ code: \"runner-record-publish-state-invalid\" as const, runId });\n}\n/**\n * Opens one new per-Experiment Run session, selects only sealed historical\n * Runs, and writes carry references before dispatch. No global Record writer\n * lock or superseded draft/attachment contract participates in this boundary.\n */\nexport function openRunnerRecordCoordinator(input: {\n readonly recordRoot: RecordRoot;\n readonly startedAt: number;\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly reuse: RunnerRecordReuseInput;\n readonly session?: SessionTracker;\n}): Effect.Effect<RunnerRecordCoordinator, RunnerRecordOpenError, import(\"effect\").Scope.Scope | import(\"../record/platform/services.ts\").RecordEntropy | import(\"../coordination/record-leases.ts\").RecordCoordination | ProjectStateDatabase> {\n return Effect.gen(function* () {\n const rootPath = recordRootPaths(input.recordRoot)?.portableRoot;\n if (rootPath === undefined)\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n const seenExperiments = new Set<string>();\n for (const run of input.runs) {\n if (seenExperiments.has(run.experimentId)) {\n return yield* Effect.fail({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"invocation\" as const,\n value: `duplicate experimentId ${JSON.stringify(run.experimentId)}`,\n });\n }\n seenExperiments.add(run.experimentId);\n }\n const startedAt = runnerRecordUtcMillis(input.startedAt);\n if (Result.isFailure(startedAt))\n return yield* Effect.fail(startedAt.failure);\n const planned = yield* Effect.forEach(input.runs, (run) => planRunnerRecordRun({\n run,\n evals: input.evals,\n reuse: input.reuse,\n }), { concurrency: 1 });\n const invocationId = input.session?.sessionId ?? createHash(\"sha256\")\n .update(`${input.startedAt}\\u0000${planned.map((entry) => entry.run.experimentId).join(\"\\u0000\")}`, \"utf8\")\n .digest(\"hex\");\n const openedRuns = yield* Effect.forEach(planned, (plan) => recordHost.createRun({\n root: input.recordRoot,\n experimentId: plan.experimentId,\n context: plan.context,\n startedAt: startedAt.success,\n expectedSlots: plan.expectedSlots,\n writerGeneration: createRunWriterGeneration(`${invocationId}:${plan.experimentId}`),\n }).pipe(Effect.map((session) => {\n const writerGeneration = writerGenerationForRunSession(session);\n if (writerGeneration === undefined)\n throw new Error(\"Run writer generation is unavailable\");\n return Object.freeze({ plan, session, writerGeneration });\n })), { concurrency: 1 });\n if (input.session !== undefined) {\n const startedAtIso = new Date(input.startedAt).toISOString();\n yield* input.session.start({\n runIds: new Map(openedRuns.map(({ plan, session }) => [plan.experimentId, String(session.runId)])),\n agentRuns: input.runs,\n startedAt: startedAtIso,\n invocationRuns: openedRuns.map(({ plan, session, writerGeneration }) => ({\n runId: String(session.runId),\n experimentId: plan.experimentId,\n writerGeneration,\n startedAt: startedAtIso,\n expectedSlots: plan.expectedSlots.map((slot) => ({\n slotId: String(slot.slotId), evalId: String(slot.evalId), attemptOrdinal: slot.attemptOrdinal,\n executionIdentityDigest: String(slot.executionIdentityDigest),\n })),\n })),\n }).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n }\n const byRun = new Map<AgentRun, RunnerRecordRun>();\n const byRecordRunId = new Map<RunId, RunnerRecordRun>();\n const runIdsByExperiment = new Map<string, string>();\n const targetRuns: TargetRun[] = [];\n for (const { plan, session, writerGeneration } of openedRuns) {\n const target = targetForRunnerRecordRun({\n planned: plan,\n runId: session.runId,\n startedAt: startedAt.success,\n });\n const recordRun: RunnerRecordRun = {\n ...plan,\n session,\n target,\n attempts: new Map(),\n planSlots: new Map(),\n gapActions: new Map(),\n writerGeneration,\n };\n byRun.set(plan.run, recordRun);\n byRecordRunId.set(session.runId, recordRun);\n runIdsByExperiment.set(plan.run.experimentId, session.runId);\n targetRuns.push(target);\n }\n const target = Object.freeze({\n invocationId,\n runs: Object.freeze(targetRuns),\n });\n const { reusePlan, carriedResults } = yield* Effect.scoped(Effect.gen(function* () {\n const reader = yield* recordHost.openRead({ root: input.recordRoot });\n const reusePlan = yield* planProjectTargetReuse({ reader, target, policy: input.reuse.policy });\n const carriedResults = yield* readCurrentExecutionReusePlanResults({ reader, plan: reusePlan }).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n return { reusePlan, carriedResults };\n }));\n const carriedAttemptsByKey = new Map<string, Set<number>>();\n for (const slot of reusePlan.slots) {\n const recordRun = byRecordRunId.get(slot.runId);\n if (recordRun === undefined)\n return yield* Effect.fail(membershipStateInvalid(slot.slotId));\n recordRun.planSlots.set(slot.slotId, slot);\n if (slot.state === \"reuse\") {\n yield* stagePlanningReference(recordRun.session, {\n slotId: slot.slotId,\n action: \"carried\",\n reference: slot.source.reference,\n });\n yield* bindAttemptReference(rootPath, {\n runId: String(recordRun.session.runId),\n writerGeneration: recordRun.writerGeneration,\n slotId: String(slot.slotId),\n action: \"carried\",\n publicationIdentity: slot.source.reference.publicationIdentity,\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n const entry = recordRun.slots.get(runnerRecordSlotKey(slot.evalId, slot.attempt));\n if (entry === undefined)\n return yield* Effect.fail(membershipStateInvalid(slot.slotId));\n const key = cacheKey(recordRun.run, entry.evalDef.id);\n const carried = carriedAttemptsByKey.get(key) ?? new Set<number>();\n carried.add(entry.attempt);\n carriedAttemptsByKey.set(key, carried);\n }\n else {\n recordRun.gapActions.set(slot.slotId, \"pending\");\n }\n }\n if (input.session !== undefined) {\n yield* input.session.applyCarriedAttempts(input.runs, carriedAttemptsByKey).pipe(Effect.mapError((cause): RunnerSessionOpenFailed => ({ code: \"runner-session-open-failed\", cause })));\n }\n let invocationWriteFailure: RunnerRecordWriteError | undefined;\n const writeFailuresByRun = new Map<RunnerRecordRun, RunnerRecordWriteError>();\n const noteFailure = (error: RunnerRecordWriteError, recordRun?: RunnerRecordRun): void => {\n if (recordRun === undefined) {\n if (invocationWriteFailure === undefined)\n invocationWriteFailure = error;\n return;\n }\n if (!writeFailuresByRun.has(recordRun))\n writeFailuresByRun.set(recordRun, error);\n };\n const lock = yield* Semaphore.make(1);\n const runForAttempt = (attempt: Attempt): RunnerRecordRun | undefined => byRun.get(attempt.run);\n const targetForAttempt = (attempt: Attempt): {\n readonly recordRun: RunnerRecordRun;\n readonly slotId: SlotId;\n readonly plan: ExecutionReusePlanSlot;\n } | undefined => {\n const recordRun = runForAttempt(attempt);\n if (recordRun === undefined)\n return undefined;\n const entry = recordRun.slots.get(runnerRecordSlotKey(attempt.evalDef.id, attempt.attempt));\n if (entry === undefined)\n return undefined;\n const plan = recordRun.planSlots.get(entry.slot.slotId);\n return plan === undefined ? undefined : { recordRun, slotId: entry.slot.slotId, plan };\n };\n const adoptLatePublishedAttempt = (attempt: Attempt) => lock.withPermits(1)(Effect.gen(function* () {\n const current = targetForAttempt(attempt);\n if (current === undefined\n || current.plan.state !== \"gap\"\n || current.recordRun.gapActions.get(current.slotId) !== \"pending\")\n return false;\n const refreshed = yield* Effect.scoped(Effect.gen(function* () {\n const freshReader = yield* recordHost.openRead({ root: input.recordRoot });\n return yield* planProjectTargetReuse({ reader: freshReader, target, policy: input.reuse.policy });\n }));\n const replacement = refreshed.slots.find((slot) => slot.runId === current.recordRun.target.runId && slot.slotId === current.slotId);\n if (replacement?.state !== \"reuse\")\n return false;\n yield* stagePlanningReference(current.recordRun.session, {\n slotId: current.slotId,\n action: \"carried\",\n reference: replacement.source.reference,\n });\n yield* bindAttemptReference(rootPath, {\n runId: String(current.recordRun.session.runId),\n writerGeneration: current.recordRun.writerGeneration,\n slotId: String(current.slotId),\n action: \"carried\",\n publicationIdentity: replacement.source.reference.publicationIdentity,\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError(() => publishStateInvalid(current.recordRun.session.runId)));\n current.recordRun.planSlots.set(current.slotId, replacement);\n current.recordRun.gapActions.delete(current.slotId);\n return true;\n }));\n const reserveAttempt = (attempt: Attempt): Effect.Effect<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase> => {\n const targetSlot = targetForAttempt(attempt);\n return lock.withPermits(1)(Effect.gen(function* () {\n if (targetSlot === undefined\n || targetSlot.plan.state !== \"gap\"\n || targetSlot.recordRun.gapActions.get(targetSlot.slotId) !== \"pending\") {\n return yield* Effect.fail(attemptInvalid());\n }\n const session = yield* targetSlot.recordRun.session.createAttempt({ slotId: targetSlot.slotId });\n const publicAttempt = Object.freeze({\n slotId: targetSlot.slotId,\n attemptId: session.attemptId,\n locator: encodeAttemptLocator(session.attemptId),\n });\n targetSlot.recordRun.attempts.set(targetSlot.slotId, {\n attempt,\n session,\n public: publicAttempt,\n completed: false,\n });\n targetSlot.recordRun.gapActions.set(targetSlot.slotId, \"reserved\");\n return publicAttempt;\n })).pipe(Effect.tapError((error) => Effect.sync(() => noteFailure(error, targetSlot?.recordRun ?? runForAttempt(attempt)))));\n };\n const noteSealedOrMarkIncomplete = (attempt: Attempt, sealed: SealedAttemptAssertions): Effect.Effect<void, never> => Effect.sync(() => {\n const targetSlot = targetForAttempt(attempt);\n const active = targetSlot === undefined\n ? undefined\n : targetSlot.recordRun.attempts.get(targetSlot.slotId);\n if (targetSlot === undefined\n || targetSlot.plan.state !== \"gap\"\n || targetSlot.recordRun.gapActions.get(targetSlot.slotId) !== \"reserved\"\n || active === undefined\n || active.attempt !== attempt\n || active.sealed !== undefined) {\n noteFailure(attemptInvalid(), targetSlot?.recordRun ?? runForAttempt(attempt));\n return;\n }\n active.sealed = sealed;\n });\n const completeAttempt = (attempt: Attempt, result: EvalResult): Effect.Effect<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase> => Effect.suspend<RunnerRecordAttempt, RunnerRecordWriteError, ProjectStateDatabase>(() => {\n const targetSlot = targetForAttempt(attempt);\n const active = targetSlot === undefined\n ? undefined\n : targetSlot.recordRun.attempts.get(targetSlot.slotId);\n if (targetSlot === undefined\n || targetSlot.plan.state !== \"gap\"\n || targetSlot.recordRun.gapActions.get(targetSlot.slotId) !== \"reserved\"\n || active === undefined\n || active.attempt !== attempt\n || active.completed) {\n return Effect.fail(attemptInvalid());\n }\n const assertions = active.sealed === undefined\n ? undefined\n : createRunnerAssertionsAttachment(active.sealed);\n if (assertions !== undefined && Result.isFailure(assertions))\n return Effect.fail(assertions.failure);\n if (active.sealed === undefined || assertions === undefined || Result.isFailure(assertions)) {\n return Effect.fail(membershipStateInvalid(targetSlot.slotId));\n }\n return Effect.gen(function* () {\n const sourcePlan = createRunnerSourceWritePlan([Object.freeze({\n slotId: targetSlot.slotId,\n result,\n assertionEntryIds: assertions.success.entryIds,\n })]);\n if (Result.isFailure(sourcePlan)) {\n return yield* Effect.fail(Object.freeze({\n code: \"runner-record-sources-invalid\" as const,\n issue: sourcePlan.failure,\n }));\n }\n const closedAssertions = createRunnerAssertionsAttachment(active.sealed!, {\n entryIds: assertions.success.entryIds,\n sourceSites: sourcePlan.success.sourceSitesBySlot.get(targetSlot.slotId),\n });\n if (Result.isFailure(closedAssertions))\n return yield* Effect.fail(closedAssertions.failure);\n yield* active.session.records.write(NiceEvalRecordAttachments.assertions, closedAssertions.success.attachment);\n yield* active.session.records.write(NiceEvalRecordAttachments.attemptCost, createAttemptCostAttachment(result));\n const sourceReceipts = yield* createAttemptObservabilityAttachments({ result, sealed: active.sealed! });\n if (sourceReceipts.agentTurns !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.agentTurns, sourceReceipts.agentTurns);\n }\n if (sourceReceipts.sandboxCommands !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.sandboxCommands, sourceReceipts.sandboxCommands);\n }\n yield* active.session.records.write(NiceEvalRecordAttachments.runnerActivities.attempt, sourceReceipts.runnerActivities);\n yield* active.session.records.write(NiceEvalRecordAttachments.runnerDiagnostics.attempt, sourceReceipts.runnerDiagnostics);\n const turnContexts = createRunnerTurnContextsAttachment({ result, sourcePlan: sourcePlan.success });\n if (Result.isFailure(turnContexts)) {\n return yield* Effect.fail(Object.freeze({\n code: \"runner-record-sources-invalid\" as const,\n issue: turnContexts.failure,\n }));\n }\n if (turnContexts.success !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.turnContexts, turnContexts.success);\n }\n const fileChanges = createAttemptFileChangesAttachment(result);\n if (fileChanges !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.fileChanges, fileChanges);\n }\n const attachmentSnapshot = adapterAttachmentsForResult(result);\n const artifacts = createAttemptArtifactsAttachment(result, attachmentSnapshot);\n const judgeUsage = judgeUsageForResult(result, closedAssertions.success.entryIds);\n if (judgeUsage !== undefined)\n yield* active.session.records.write(NiceEvalRecordAttachments.judgeUsage, judgeUsage);\n const adapterUsage = adapterUsageForResult(result);\n const executionTraces = adapterExecutionTracesForResult(result);\n if (adapterUsage !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.adapterUsage, adapterUsage);\n }\n if (artifacts !== undefined) {\n yield* active.session.records.write(NiceEvalRecordAttachments.artifacts.attempt, artifacts);\n }\n if (executionTraces !== undefined && executionTraces.traces.length > 0) {\n validateExecutionTracePublication(executionTraces, attachmentSnapshot?.artifacts ?? []);\n yield* active.session.records.appendAll(executionTracesRecordCollection, Stream.fromIterable(executionTraces.traces.flatMap((trace) => trace.records)));\n yield* active.session.records.close(executionTracesRecordCollection, executionTraces.failure === undefined\n ? { state: \"complete\" }\n : {\n state: \"partial\",\n limitations: [{ code: \"capture-failed\", stage: \"adapter\" }],\n });\n }\n yield* active.session.complete(recordAttemptOutcome(result));\n const closureBytes = new TextEncoder().encode(JSON.stringify(attemptPublicationClosure(Object.freeze({\n runId: String(targetSlot.recordRun.session.runId),\n experimentId: targetSlot.recordRun.experimentId,\n context: targetSlot.recordRun.context,\n startedAt: targetSlot.recordRun.target.startedAt,\n completedAt: Date.now(),\n expectedSlots: targetSlot.recordRun.expectedSlots,\n }))));\n yield* publishOriginAttempt(rootPath, {\n runId: String(targetSlot.recordRun.session.runId),\n writerGeneration: targetSlot.recordRun.writerGeneration,\n slotId: String(targetSlot.slotId),\n attemptId: String(active.public.attemptId),\n attemptLocator: String(active.public.locator),\n closureBytes,\n closureDigest: createHash(\"sha256\").update(closureBytes).digest(\"hex\"),\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError((cause) => attemptPublicationFailed(active.public.locator, cause)));\n active.result = result;\n active.assertionEntryIds = assertions.success.entryIds;\n active.completed = true;\n targetSlot.recordRun.gapActions.set(targetSlot.slotId, \"executed\");\n return active.public;\n });\n });\n const attachRunFacts = (recordRun: RunnerRecordRun, mode: \"normal\" | \"interrupted\"): Effect.Effect<void, RunnerRecordWriteError> => Effect.gen(function* () {\n const writeRecord = (effect: Effect.Effect<void, RecordWriteError, never>): Effect.Effect<void, RecordWriteError, never> => effect;\n const origins = [] as {\n readonly slotId: SlotId;\n readonly active: ActiveRunnerRecordAttempt;\n readonly result: EvalResult;\n readonly sealed: SealedAttemptAssertions;\n readonly assertionEntryIds: readonly AssertionEntryId[];\n }[];\n for (const [slotId, state] of recordRun.gapActions) {\n if (state !== \"executed\")\n continue;\n const active = recordRun.attempts.get(slotId);\n if (active === undefined)\n return yield* Effect.fail(membershipStateInvalid(slotId));\n const result = active.result;\n const sealed = active?.sealed;\n const assertionEntryIds = active?.assertionEntryIds;\n if (result === undefined || sealed === undefined || assertionEntryIds === undefined)\n continue;\n origins.push(Object.freeze({ slotId, active, result, sealed, assertionEntryIds }));\n }\n const sources = createRunnerSourceWritePlan(origins.map(({ slotId, result, assertionEntryIds }) => Object.freeze({\n slotId,\n result,\n assertionEntryIds,\n })));\n if (Result.isFailure(sources)) {\n return yield* Effect.fail(Object.freeze({\n code: \"runner-record-sources-invalid\" as const,\n issue: sources.failure,\n }));\n }\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.sources, sources.success.sources));\n const sourceReceipts = yield* createRunObservabilityAttachments(recordRun.run);\n if (sourceReceipts.runnerActivities !== undefined) {\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.runnerActivities.run, sourceReceipts.runnerActivities));\n }\n if (sourceReceipts.runnerDiagnostics !== undefined) {\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.runnerDiagnostics.run, sourceReceipts.runnerDiagnostics));\n }\n yield* writeRecord(recordRun.session.records.write(NiceEvalRecordAttachments.artifacts.run, createRunArtifactsAttachment()));\n });\n const pendingGap = (recordRun: RunnerRecordRun): SlotId | undefined => {\n for (const [slotId, state] of recordRun.gapActions) {\n if (state === \"pending\")\n return slotId;\n }\n return undefined;\n };\n return Object.freeze({\n reusePlan,\n readCarriedResults: () => Effect.succeed(carriedResults),\n runIdsByExperiment: new Map(runIdsByExperiment),\n publicationCutoff: () => currentPublicationCutoff(rootPath),\n carriedAttemptsByKey: new Map([...carriedAttemptsByKey].map(([key, attempts]) => [key, new Set(attempts)] as const)),\n adoptLatePublishedAttempt,\n reserveAttempt,\n noteSealedOrMarkIncomplete,\n completeAttemptOrMarkIncomplete: (attempt: Attempt, result: EvalResult) => completeAttempt(attempt, result).pipe(Effect.catch((error) => Effect.sync(() => {\n const target = targetForAttempt(attempt);\n const active = target === undefined ? undefined : target.recordRun.attempts.get(target.slotId);\n noteFailure(error.code === \"runner-record-assertions-invalid\" ||\n error.code === \"runner-record-attempt-publication-failed\" ||\n active === undefined\n ? error\n : attemptPublicationFailed(active.public.locator, error), target?.recordRun ?? runForAttempt(attempt));\n return undefined;\n })), Effect.ensuring(Effect.promise(() => releaseAdapterAttachments(result)))),\n markNotDispatched: (attempt: Attempt) => {\n const targetSlot = targetForAttempt(attempt);\n if (targetSlot !== undefined\n && targetSlot.plan.state === \"gap\"\n && targetSlot.recordRun.gapActions.get(targetSlot.slotId) === \"pending\") {\n targetSlot.recordRun.gapActions.set(targetSlot.slotId, \"not-dispatched\");\n }\n },\n publish: (completedAt: number, mode: \"normal\" | \"interrupted\") => Effect.gen(function* () {\n const recordRuns = [...byRun.values()];\n if (invocationWriteFailure !== undefined)\n return yield* Effect.fail(invocationWriteFailure);\n if (mode === \"normal\") {\n // A normal finish remains invocation-strict: a failure which can be\n // attributed to one Run still fails the call rather than allowing a\n // partial receipt to disguise it as ordinary completion.\n for (const recordRun of recordRuns) {\n const failure = writeFailuresByRun.get(recordRun);\n if (failure !== undefined)\n return yield* Effect.fail(failure);\n }\n }\n const completion = runnerRecordUtcMillis(completedAt);\n if (Result.isFailure(completion))\n return yield* Effect.fail(completion.failure);\n // A controlled interruption closes every reserved Attempt as\n // `interrupted` and every never-started gap as an interrupted terminal\n // Member. Only a Run-local writer failure remains non-publishable.\n // Abrupt process loss still has no opportunity to create `complete`.\n const incompleteRuns = mode === \"interrupted\"\n ? new Set(recordRuns.filter((recordRun) => writeFailuresByRun.has(recordRun)))\n : new Set<RunnerRecordRun>();\n if (mode === \"normal\") {\n // Normal completion is deliberately invocation-strict. A pending\n // gap means the scheduler failed to account for a Slot; a reserved\n // or otherwise unsettled Attempt is likewise not publishable.\n for (const recordRun of recordRuns) {\n const unsettledSlot = [...recordRun.gapActions.keys()].find((slotId) => {\n const active = recordRun.attempts.get(slotId);\n return recordRun.gapActions.get(slotId) === \"reserved\"\n || (active !== undefined && !active.completed);\n });\n if (unsettledSlot !== undefined)\n return yield* Effect.fail(unsealedAttempt(unsettledSlot));\n const unaccountedSlot = pendingGap(recordRun);\n if (unaccountedSlot !== undefined)\n return yield* Effect.fail(unsealedAttempt(unaccountedSlot));\n }\n }\n else {\n for (const recordRun of recordRuns) {\n if (incompleteRuns.has(recordRun))\n continue;\n for (const [slotId, state] of recordRun.gapActions) {\n if (state === \"pending\")\n recordRun.gapActions.set(slotId, \"interrupted\");\n if (state === \"reserved\") {\n const active = recordRun.attempts.get(slotId);\n if (active === undefined)\n return yield* Effect.fail(membershipStateInvalid(slotId));\n yield* discardAttemptWriteSession(active.session);\n recordRun.attempts.delete(slotId);\n recordRun.gapActions.set(slotId, \"interrupted\");\n }\n }\n }\n }\n const publishableRuns = recordRuns.filter((recordRun) => !incompleteRuns.has(recordRun));\n const publishOne = (recordRun: RunnerRecordRun): Effect.Effect<RecordSealReceipt, RunnerRecordWriteError, ProjectStateDatabase> => Effect.gen(function* () {\n yield* attachRunFacts(recordRun, mode);\n for (const [slotId, state] of recordRun.gapActions) {\n if (state === \"not-dispatched\" || state === \"interrupted\") {\n const absenceReason: RunAbsenceReason = mode === \"interrupted\"\n ? \"interrupted-before-publication\"\n : state === \"not-dispatched\"\n ? \"early-exit-satisfied\"\n : \"dispatch-failed\";\n yield* recordRun.session.recordTerminalMember({ slotId, action: state, absenceReason });\n }\n }\n const sealed = yield* recordRun.session.seal({ completedAt: completion.success });\n const absences = [...recordRun.gapActions].flatMap(([slotId, state]) => {\n if (state === \"executed\" && recordRun.attempts.get(slotId)?.completed === true)\n return [];\n const reason: RunAbsenceReason = mode === \"interrupted\"\n ? \"interrupted-before-publication\"\n : state === \"not-dispatched\"\n ? \"early-exit-satisfied\"\n : \"dispatch-failed\";\n return [{ slotId: String(slotId), reason }];\n });\n yield* closeRunResource(rootPath, {\n runId: String(recordRun.session.runId),\n writerGeneration: recordRun.writerGeneration,\n state: mode === \"interrupted\" ? \"interrupted\" : \"completed\",\n completedAt: new Date(completedAt).toISOString(),\n absences,\n deadlineEpochMs: Date.now() + 30000,\n }).pipe(Effect.mapError(() => publishStateInvalid(recordRun.session.runId)));\n return sealed;\n });\n if (mode === \"normal\") {\n // Normal completion remains typed and strict: the first Run failure\n // is an invocation failure, never a partial success receipt.\n return yield* Effect.forEach(publishableRuns, publishOne, { concurrency: 1 });\n }\n // SIGINT is different: each clean sibling receives its own complete\n // attempt. We deliberately observe an Exit per Run so one Attachment\n // or seal error cannot short-circuit subsequent safe siblings.\n const receipts: RecordSealReceipt[] = [];\n for (const recordRun of publishableRuns) {\n const exit = yield* Effect.exit(publishOne(recordRun));\n if (Exit.isSuccess(exit)) {\n receipts.push(exit.value);\n }\n else {\n const failure = Cause.findErrorOption(exit.cause);\n if (Option.isSome(failure)) {\n noteFailure(failure.value, recordRun);\n }\n else {\n noteFailure(publishStateInvalid(recordRun.session.runId), recordRun);\n }\n }\n }\n return Object.freeze(receipts);\n }),\n });\n });\n}\n"]}
@@ -157,13 +157,11 @@ function renameExperiment(input) {
157
157
  const root = yield* (0, adoption_ts_1.adoptionRecordRoot)({ cwd: input.cwd });
158
158
  const startedAt = yield* (0, adoption_ts_1.adoptionStartedAt)(input.now);
159
159
  const project = yield* (0, adoption_ts_1.loadAdoptionProject)(projectInput(input));
160
- return yield* (0, adoption_ts_1.withAdoptionReader)({ root, use: (reader) => effect_1.Effect.gen(function* () {
161
- const preflight = yield* prepare(input, reader, project, startedAt);
162
- const invocationId = yield* (0, adoption_ts_1.createExplicitAdoptionInvocationId)();
163
- const receipt = yield* (0, adoption_ts_1.commitExplicitAdoptionRunPlans)(reader, root, invocationId, [preflight.plan]);
164
- return yield* renamedReceipt({ invocationId, sourceRunId: input.sourceRunId,
165
- oldId: preflight.source.sourceRun.experimentId, newId: input.newId, preflight, receipt });
166
- }) });
160
+ const preflight = yield* (0, adoption_ts_1.withAdoptionReader)({ root, use: (reader) => prepare(input, reader, project, startedAt) });
161
+ const invocationId = yield* (0, adoption_ts_1.createExplicitAdoptionInvocationId)();
162
+ const receipt = yield* (0, adoption_ts_1.commitExplicitAdoptionRunPlans)(root, invocationId, [preflight.plan]);
163
+ return yield* renamedReceipt({ invocationId, sourceRunId: input.sourceRunId,
164
+ oldId: preflight.source.sourceRun.experimentId, newId: input.newId, preflight, receipt });
167
165
  });
168
166
  }
169
167
  //# sourceMappingURL=rename-experiment.cjs.map