@openpond/evals 0.10.3 → 0.10.5

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 (38) hide show
  1. package/LEARNING.md +43 -0
  2. package/dist/learning/batch-service.js +12 -7
  3. package/dist/learning/index.js +4 -0
  4. package/dist/learning/iteration-budget.js +17 -0
  5. package/dist/learning/iteration-reservation-service.js +3 -13
  6. package/dist/learning/policy-inspection.js +82 -0
  7. package/dist/learning/repository.js +2 -0
  8. package/dist/learning/schedule-contracts.js +45 -0
  9. package/dist/learning/schedule-service.js +31 -0
  10. package/dist/learning/schedule-worker.js +96 -0
  11. package/dist/learning/service.js +13 -0
  12. package/dist/learning/transport.js +1 -0
  13. package/dist/types/learning/batch-service.d.ts +310 -0
  14. package/dist/types/learning/batch-service.d.ts.map +1 -1
  15. package/dist/types/learning/index.d.ts +4 -0
  16. package/dist/types/learning/index.d.ts.map +1 -1
  17. package/dist/types/learning/iteration-budget.d.ts +8 -0
  18. package/dist/types/learning/iteration-budget.d.ts.map +1 -0
  19. package/dist/types/learning/iteration-reservation-service.d.ts.map +1 -1
  20. package/dist/types/learning/policy-inspection.d.ts +47 -0
  21. package/dist/types/learning/policy-inspection.d.ts.map +1 -0
  22. package/dist/types/learning/repository.d.ts +66 -1
  23. package/dist/types/learning/repository.d.ts.map +1 -1
  24. package/dist/types/learning/schedule-contracts.d.ts +69 -0
  25. package/dist/types/learning/schedule-contracts.d.ts.map +1 -0
  26. package/dist/types/learning/schedule-service.d.ts +30 -0
  27. package/dist/types/learning/schedule-service.d.ts.map +1 -0
  28. package/dist/types/learning/schedule-worker.d.ts +12 -0
  29. package/dist/types/learning/schedule-worker.d.ts.map +1 -0
  30. package/dist/types/learning/service.d.ts +39 -0
  31. package/dist/types/learning/service.d.ts.map +1 -1
  32. package/dist/types/learning/transport.d.ts +75 -2
  33. package/dist/types/learning/transport.d.ts.map +1 -1
  34. package/package.json +1 -1
  35. package/schemas/learning/v1/policy-inspection.schema.json +243 -0
  36. package/schemas/learning/v1/read-request.schema.json +49 -23
  37. package/schemas/learning/v1/schedule.schema.json +188 -0
  38. package/schemas/learning/v1/schedule_fire.schema.json +163 -0
@@ -4,5 +4,315 @@ import { type LearningResourcePointer, type LearningTransaction } from "./reposi
4
4
  export declare function sealLearningBatch(transaction: LearningTransaction, input: Extract<LearningCommand, {
5
5
  action: "seal_batch";
6
6
  }>, actorId: string, timestamp: string): Promise<LearningResourcePointer[]>;
7
+ /** Performs the complete shared validation without reserving families or publishing resources. */
8
+ export declare function prepareLearningBatch(transaction: LearningTransaction, input: Extract<LearningCommand, {
9
+ action: "seal_batch";
10
+ }>, actorId: string, timestamp: string): Promise<{
11
+ batch: {
12
+ schemaVersion: "openpond.taskBatch.v1";
13
+ id: string;
14
+ revision: 1;
15
+ taskDefinition: {
16
+ id: string;
17
+ contentHash: string;
18
+ revision: number;
19
+ };
20
+ rewardBinding: {
21
+ id: string;
22
+ contentHash: string;
23
+ revision: number;
24
+ };
25
+ purpose: "evaluation" | "supervised_training" | "reward_training";
26
+ examples: {
27
+ evidence: {
28
+ id: string;
29
+ contentHash: string;
30
+ revision: number;
31
+ };
32
+ decision: {
33
+ id: string;
34
+ contentHash: string;
35
+ revision: number;
36
+ };
37
+ familyKey: string;
38
+ inputHash: string;
39
+ split: "train" | "validation" | "test" | "frozen_eval";
40
+ }[];
41
+ sealedAt: string;
42
+ sealedBy: string;
43
+ contentHash: string;
44
+ };
45
+ release: {
46
+ schemaVersion: "openpond.tasksetRelease.v2";
47
+ id: string;
48
+ revision: number;
49
+ policy: {
50
+ policyVisibleFields: string[];
51
+ privilegedFields: string[];
52
+ hiddenGraderRefs: string[];
53
+ connectedAppScopes: string[];
54
+ };
55
+ environment: {
56
+ protocolVersion: "openpond.environment.v1";
57
+ kind: "text" | "agent" | "work" | "custom_program";
58
+ entrypoint: string;
59
+ stateful: boolean;
60
+ deterministicSeeds: boolean;
61
+ lifecycle: ("create" | "reset" | "step" | "collect" | "destroy")[];
62
+ networkPolicy: "none" | "declared_read_only" | "declared_scoped";
63
+ defaultTimeoutMs: number;
64
+ };
65
+ tools: {
66
+ name: string;
67
+ description: string;
68
+ inputSchema: Record<string, unknown>;
69
+ inputSchemaHash: string;
70
+ sideEffect: "read" | "write";
71
+ timeoutMs: number;
72
+ }[];
73
+ capabilities: {
74
+ id: string;
75
+ required: boolean;
76
+ scopes: string[];
77
+ portability: "portable" | "host_adapter" | "local_only" | "hosted_only";
78
+ }[];
79
+ tasks: {
80
+ id: string;
81
+ clusterKey: string;
82
+ split: "train" | "validation" | "test" | "frozen_eval";
83
+ input: Record<string, unknown>;
84
+ expectedOutput: Record<string, unknown> | null;
85
+ policyVisibleContext: Record<string, unknown>;
86
+ privilegedContextRef: string | null;
87
+ artifactRefs: {
88
+ id: string;
89
+ path: string;
90
+ contentHash: string;
91
+ sizeBytes: number;
92
+ mediaType: string;
93
+ visibility: "policy" | "verifier" | "host_private";
94
+ }[];
95
+ tags: string[];
96
+ requiredOutputs?: {
97
+ path: string;
98
+ mediaType: string;
99
+ schemaRef: {
100
+ id: string;
101
+ path: string;
102
+ contentHash: string;
103
+ sizeBytes: number;
104
+ mediaType: string;
105
+ visibility: "policy" | "verifier" | "host_private";
106
+ } | null;
107
+ maxBytes: number | null;
108
+ metadata: Record<string, unknown>;
109
+ }[] | undefined;
110
+ }[];
111
+ graders: ({
112
+ id: string;
113
+ version: string;
114
+ weight: number;
115
+ hardGate: boolean;
116
+ rewardEligible: boolean;
117
+ privileged: boolean;
118
+ kind: "content" | "schema" | "artifact" | "runtime_event" | "state";
119
+ config: Record<string, unknown>;
120
+ } | {
121
+ id: string;
122
+ version: string;
123
+ weight: number;
124
+ hardGate: boolean;
125
+ rewardEligible: boolean;
126
+ privileged: boolean;
127
+ kind: "model_judge";
128
+ rubricRef: {
129
+ id: string;
130
+ path: string;
131
+ contentHash: string;
132
+ sizeBytes: number;
133
+ mediaType: string;
134
+ visibility: "policy" | "verifier" | "host_private";
135
+ };
136
+ calibrationStatus: "pending" | "passed" | "failed";
137
+ model?: {
138
+ providerId: string;
139
+ modelId: string;
140
+ revision: string | null;
141
+ } | undefined;
142
+ temperature?: number | undefined;
143
+ } | {
144
+ id: string;
145
+ version: string;
146
+ weight: number;
147
+ hardGate: boolean;
148
+ rewardEligible: boolean;
149
+ privileged: boolean;
150
+ kind: "custom_verifier";
151
+ verifierRef: {
152
+ id: string;
153
+ path: string;
154
+ contentHash: string;
155
+ sizeBytes: number;
156
+ mediaType: string;
157
+ visibility: "policy" | "verifier" | "host_private";
158
+ };
159
+ timeoutMs: number;
160
+ networkPolicy: "none";
161
+ exportName?: string | undefined;
162
+ } | {
163
+ id: string;
164
+ version: string;
165
+ weight: number;
166
+ hardGate: boolean;
167
+ rewardEligible: boolean;
168
+ privileged: boolean;
169
+ kind: "human";
170
+ rubricRef: {
171
+ id: string;
172
+ path: string;
173
+ contentHash: string;
174
+ sizeBytes: number;
175
+ mediaType: string;
176
+ visibility: "policy" | "verifier" | "host_private";
177
+ };
178
+ reviewerRole: string;
179
+ })[];
180
+ metadata: Record<string, unknown>;
181
+ contentHash: string;
182
+ environmentRelease?: {
183
+ id: string;
184
+ contentHash: string;
185
+ } | undefined;
186
+ verifierSetRelease?: {
187
+ id: string;
188
+ contentHash: string;
189
+ } | undefined;
190
+ metrics?: {
191
+ schemaVersion: "openpond.tasksetMetricPolicy.v1";
192
+ primaryMetric: string;
193
+ aggregation: "mean_score" | "pass_rate" | "weighted_mean" | "custom";
194
+ missingReward: "zero" | "exclude";
195
+ customAggregator: {
196
+ module: string;
197
+ exportName: string;
198
+ contentHash: string;
199
+ timeoutMs: number;
200
+ networkPolicy: "none";
201
+ } | null;
202
+ taskWeights?: Record<string, number> | undefined;
203
+ } | undefined;
204
+ };
205
+ evidence: {
206
+ schemaVersion: "openpond.taskEvidence.v1";
207
+ id: string;
208
+ revision: number;
209
+ source: {
210
+ id: string;
211
+ contentHash: string;
212
+ revision: number;
213
+ };
214
+ submission: {
215
+ schemaVersion: "openpond.taskExample.v1";
216
+ sourceId: string;
217
+ idempotencyKey: string;
218
+ taskDefinition: {
219
+ id: string;
220
+ contentHash: string;
221
+ revision: number;
222
+ };
223
+ exampleId: string;
224
+ attemptId: string;
225
+ occurredAt: string;
226
+ familyKey: string | null;
227
+ split: "train" | "validation" | "test" | "frozen_eval";
228
+ input: Record<string, import("zod").JSONType>;
229
+ observedOutput: Record<string, import("zod").JSONType> | null;
230
+ expected: Record<string, import("zod").JSONType> | null;
231
+ evaluatorContext: Record<string, import("zod").JSONType> | null;
232
+ assets: {
233
+ id: string;
234
+ path: string;
235
+ contentHash: string;
236
+ sizeBytes: number;
237
+ mediaType: string;
238
+ visibility: "policy" | "verifier" | "host_private";
239
+ }[];
240
+ provenance: {
241
+ sourceRecordRef: string | null;
242
+ mappingHash: string | null;
243
+ };
244
+ };
245
+ supersedes: {
246
+ id: string;
247
+ contentHash: string;
248
+ revision: number;
249
+ } | null;
250
+ correctionFeedbackId: string | null;
251
+ receivedAt: string;
252
+ contentHash: string;
253
+ }[];
254
+ definition: {
255
+ schemaVersion: "openpond.taskDefinition.v1";
256
+ id: string;
257
+ revision: number;
258
+ name: string;
259
+ description: string;
260
+ instructions: string;
261
+ category: "custom" | "structured" | "question_answering" | "coding" | "tool_workflow";
262
+ familyNamespace: string;
263
+ inputSchema: Record<string, unknown>;
264
+ outputSchema: Record<string, unknown>;
265
+ rewardBinding: {
266
+ id: string;
267
+ contentHash: string;
268
+ revision: number;
269
+ };
270
+ harness: {
271
+ id: string;
272
+ contentHash: string;
273
+ } | null;
274
+ execution: {
275
+ policy: {
276
+ policyVisibleFields: string[];
277
+ privilegedFields: string[];
278
+ hiddenGraderRefs: string[];
279
+ connectedAppScopes: string[];
280
+ };
281
+ environment: {
282
+ protocolVersion: "openpond.environment.v1";
283
+ kind: "text" | "agent" | "work" | "custom_program";
284
+ entrypoint: string;
285
+ stateful: boolean;
286
+ deterministicSeeds: boolean;
287
+ lifecycle: ("create" | "reset" | "step" | "collect" | "destroy")[];
288
+ networkPolicy: "none" | "declared_read_only" | "declared_scoped";
289
+ defaultTimeoutMs: number;
290
+ };
291
+ tools: {
292
+ name: string;
293
+ description: string;
294
+ inputSchema: Record<string, unknown>;
295
+ inputSchemaHash: string;
296
+ sideEffect: "read" | "write";
297
+ timeoutMs: number;
298
+ }[];
299
+ capabilities: {
300
+ id: string;
301
+ required: boolean;
302
+ scopes: string[];
303
+ portability: "portable" | "host_adapter" | "local_only" | "hosted_only";
304
+ }[];
305
+ environmentRelease?: {
306
+ id: string;
307
+ contentHash: string;
308
+ } | undefined;
309
+ verifierSetRelease?: {
310
+ id: string;
311
+ contentHash: string;
312
+ } | undefined;
313
+ };
314
+ contentHash: string;
315
+ };
316
+ }>;
7
317
  export declare function requireCurrentLearningEvidence(transaction: LearningTransaction, ref: LearningRevisionRef): Promise<TaskEvidence>;
8
318
  //# sourceMappingURL=batch-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"batch-service.d.ts","sourceRoot":"","sources":["../../../../../src/learning/batch-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAA8E,KAAK,uBAAuB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAErK,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA2B3M;AAED,wBAAsB,8BAA8B,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKtI"}
1
+ {"version":3,"file":"batch-service.d.ts","sourceRoot":"","sources":["../../../../../src/learning/batch-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAA8E,KAAK,uBAAuB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAErK,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAQ3M;AAED,kGAAkG;AAClG,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsBzK;AAED,wBAAsB,8BAA8B,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKtI"}
@@ -16,4 +16,8 @@ export * from "./iteration-reservation-contracts.js";
16
16
  export * from "./iteration-dispatch-contracts.js";
17
17
  export * from "./iteration-dispatch-worker.js";
18
18
  export * from "./iteration-candidate-decision.js";
19
+ export * from "./schedule-contracts.js";
20
+ export * from "./schedule-service.js";
21
+ export * from "./schedule-worker.js";
22
+ export * from "./policy-inspection.js";
19
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/learning/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/learning/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { LearningTransaction } from "./repository.js";
2
+ /** Outstanding reservations survive midnight; settled spend belongs to its UTC day. */
3
+ export declare function readLearningIterationBudget(transaction: LearningTransaction, chainId: string, now: string): Promise<{
4
+ reservedSpendUsd: number;
5
+ settledSpendUsd: number;
6
+ committedSpendUsd: number;
7
+ }>;
8
+ //# sourceMappingURL=iteration-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iteration-budget.d.ts","sourceRoot":"","sources":["../../../../../src/learning/iteration-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,uFAAuF;AACvF,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;;;;GAc/G"}
@@ -1 +1 @@
1
- {"version":3,"file":"iteration-reservation-service.d.ts","sourceRoot":"","sources":["../../../../../src/learning/iteration-reservation-service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAmD,KAAK,uBAAuB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE1I,KAAK,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAAC;AAEhF,kFAAkF;AAClF,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA0ExK"}
1
+ {"version":3,"file":"iteration-reservation-service.d.ts","sourceRoot":"","sources":["../../../../../src/learning/iteration-reservation-service.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAmD,KAAK,uBAAuB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE1I,KAAK,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAAC;AAEhF,kFAAkF;AAClF,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA0ExK"}
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { LearningRevisionRefSchema } from "./contracts.js";
3
+ import { type LearningTransaction } from "./repository.js";
4
+ /** A scope-serialized snapshot of shared reservation readiness, not a Job guarantee.
5
+ * No iteration, timer, batch, consumption or operation record is written. */
6
+ export declare const LearningPolicyInspectionResultSchema: z.ZodObject<{
7
+ policy: z.ZodObject<{
8
+ id: z.ZodString;
9
+ contentHash: z.ZodString;
10
+ revision: z.ZodNumber;
11
+ }, z.core.$strict>;
12
+ modelProjectId: z.ZodString;
13
+ inspectedAt: z.ZodString;
14
+ chain: z.ZodNullable<z.ZodObject<{
15
+ schemaVersion: z.ZodLiteral<"openpond.learningChain.v1">;
16
+ id: z.ZodString;
17
+ revision: z.ZodNumber;
18
+ modelProjectId: z.ZodString;
19
+ activeIterationId: z.ZodNullable<z.ZodString>;
20
+ latestIterationId: z.ZodString;
21
+ lastReservedAt: z.ZodNullable<z.ZodString>;
22
+ updatedAt: z.ZodString;
23
+ }, z.core.$strict>>;
24
+ counts: z.ZodNullable<z.ZodObject<{
25
+ eligible: z.ZodNumber;
26
+ awaitingReview: z.ZodNumber;
27
+ excluded: z.ZodNumber;
28
+ consumed: z.ZodNumber;
29
+ }, z.core.$strict>>;
30
+ minimumApprovedExamples: z.ZodNumber;
31
+ canReserve: z.ZodBoolean;
32
+ blockers: z.ZodArray<z.ZodObject<{
33
+ code: z.ZodString;
34
+ message: z.ZodString;
35
+ }, z.core.$strict>>;
36
+ cooldownUntil: z.ZodNullable<z.ZodString>;
37
+ budget: z.ZodObject<{
38
+ reservedSpendUsd: z.ZodNumber;
39
+ settledSpendUsd: z.ZodNumber;
40
+ committedSpendUsd: z.ZodNumber;
41
+ maximumIterationSpendUsd: z.ZodNumber;
42
+ maximumDailySpendUsd: z.ZodNumber;
43
+ }, z.core.$strict>;
44
+ }, z.core.$strict>;
45
+ export type LearningPolicyInspectionResult = z.infer<typeof LearningPolicyInspectionResultSchema>;
46
+ export declare function inspectLearningPolicy(transaction: LearningTransaction, reference: z.infer<typeof LearningRevisionRefSchema>, actorId: string, now: string): Promise<LearningPolicyInspectionResult>;
47
+ //# sourceMappingURL=policy-inspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-inspection.d.ts","sourceRoot":"","sources":["../../../../../src/learning/policy-inspection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,yBAAyB,EAAgC,MAAM,gBAAgB,CAAC;AAMzF,OAAO,EAAmD,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE5G;6EAC6E;AAC7E,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBActC,CAAC;AACZ,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAElG,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CA6CzM"}
@@ -1152,6 +1152,69 @@ export declare const learningResourceSchemas: {
1152
1152
  createdAt: z.ZodString;
1153
1153
  updatedAt: z.ZodString;
1154
1154
  }, z.core.$strict>;
1155
+ readonly schedule: z.ZodObject<{
1156
+ schemaVersion: z.ZodLiteral<"openpond.learningSchedule.v1">;
1157
+ id: z.ZodString;
1158
+ revision: z.ZodNumber;
1159
+ policy: z.ZodObject<{
1160
+ id: z.ZodString;
1161
+ contentHash: z.ZodString;
1162
+ revision: z.ZodNumber;
1163
+ }, z.core.$strict>;
1164
+ modelProjectId: z.ZodString;
1165
+ executionOwner: z.ZodEnum<{
1166
+ local: "local";
1167
+ hosted: "hosted";
1168
+ }>;
1169
+ state: z.ZodEnum<{
1170
+ blocked: "blocked";
1171
+ scheduled: "scheduled";
1172
+ disabled: "disabled";
1173
+ }>;
1174
+ intervalSeconds: z.ZodNullable<z.ZodNumber>;
1175
+ nextRunAt: z.ZodNullable<z.ZodString>;
1176
+ lastFire: z.ZodNullable<z.ZodObject<{
1177
+ id: z.ZodString;
1178
+ contentHash: z.ZodString;
1179
+ revision: z.ZodNumber;
1180
+ }, z.core.$strict>>;
1181
+ consecutiveFailures: z.ZodNumber;
1182
+ nextAttemptAt: z.ZodNullable<z.ZodString>;
1183
+ lastError: z.ZodNullable<z.ZodString>;
1184
+ createdAt: z.ZodString;
1185
+ updatedAt: z.ZodString;
1186
+ }, z.core.$strict>;
1187
+ readonly schedule_fire: z.ZodObject<{
1188
+ schemaVersion: z.ZodLiteral<"openpond.learningScheduleFire.v1">;
1189
+ id: z.ZodString;
1190
+ revision: z.ZodLiteral<1>;
1191
+ scheduleId: z.ZodString;
1192
+ policy: z.ZodObject<{
1193
+ id: z.ZodString;
1194
+ contentHash: z.ZodString;
1195
+ revision: z.ZodNumber;
1196
+ }, z.core.$strict>;
1197
+ scheduledAt: z.ZodString;
1198
+ coalescedThroughAt: z.ZodString;
1199
+ coalescedCount: z.ZodNumber;
1200
+ outcome: z.ZodEnum<{
1201
+ skipped: "skipped";
1202
+ waiting_for_data: "waiting_for_data";
1203
+ waiting_for_review: "waiting_for_review";
1204
+ reserved: "reserved";
1205
+ }>;
1206
+ reason: z.ZodNullable<z.ZodEnum<{
1207
+ active_iteration: "active_iteration";
1208
+ cooldown: "cooldown";
1209
+ daily_budget: "daily_budget";
1210
+ }>>;
1211
+ iteration: z.ZodNullable<z.ZodObject<{
1212
+ id: z.ZodString;
1213
+ revision: z.ZodNumber;
1214
+ }, z.core.$strict>>;
1215
+ createdAt: z.ZodString;
1216
+ contentHash: z.ZodString;
1217
+ }, z.core.$strict>;
1155
1218
  readonly iteration: z.ZodObject<{
1156
1219
  schemaVersion: z.ZodLiteral<"openpond.learningIteration.v1">;
1157
1220
  id: z.ZodString;
@@ -1550,14 +1613,16 @@ export declare const LearningResourceKindSchema: z.ZodEnum<{
1550
1613
  binding: "binding";
1551
1614
  batch: "batch";
1552
1615
  grade: "grade";
1616
+ schedule: "schedule";
1553
1617
  definition: "definition";
1554
1618
  draft: "draft";
1619
+ iteration: "iteration";
1555
1620
  reward_check: "reward_check";
1556
1621
  chain: "chain";
1557
1622
  consumption: "consumption";
1558
1623
  reservation: "reservation";
1559
1624
  dispatch: "dispatch";
1560
- iteration: "iteration";
1625
+ schedule_fire: "schedule_fire";
1561
1626
  package: "package";
1562
1627
  }>;
1563
1628
  export type LearningResourceFor<K extends LearningResourceKind> = z.infer<(typeof learningResourceSchemas)[K]>;
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../src/learning/repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../../src/learning/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { z } from "zod";
2
+ /** The durable timer is operational state; every fire retains its own policy. */
3
+ export declare const LearningScheduleSchema: z.ZodObject<{
4
+ schemaVersion: z.ZodLiteral<"openpond.learningSchedule.v1">;
5
+ id: z.ZodString;
6
+ revision: z.ZodNumber;
7
+ policy: z.ZodObject<{
8
+ id: z.ZodString;
9
+ contentHash: z.ZodString;
10
+ revision: z.ZodNumber;
11
+ }, z.core.$strict>;
12
+ modelProjectId: z.ZodString;
13
+ executionOwner: z.ZodEnum<{
14
+ local: "local";
15
+ hosted: "hosted";
16
+ }>;
17
+ state: z.ZodEnum<{
18
+ blocked: "blocked";
19
+ scheduled: "scheduled";
20
+ disabled: "disabled";
21
+ }>;
22
+ intervalSeconds: z.ZodNullable<z.ZodNumber>;
23
+ nextRunAt: z.ZodNullable<z.ZodString>;
24
+ lastFire: z.ZodNullable<z.ZodObject<{
25
+ id: z.ZodString;
26
+ contentHash: z.ZodString;
27
+ revision: z.ZodNumber;
28
+ }, z.core.$strict>>;
29
+ consecutiveFailures: z.ZodNumber;
30
+ nextAttemptAt: z.ZodNullable<z.ZodString>;
31
+ lastError: z.ZodNullable<z.ZodString>;
32
+ createdAt: z.ZodString;
33
+ updatedAt: z.ZodString;
34
+ }, z.core.$strict>;
35
+ /** Immutable occurrence evidence survives timer edits and coalesced downtime. */
36
+ export declare const LearningScheduleFireSchema: z.ZodObject<{
37
+ schemaVersion: z.ZodLiteral<"openpond.learningScheduleFire.v1">;
38
+ id: z.ZodString;
39
+ revision: z.ZodLiteral<1>;
40
+ scheduleId: z.ZodString;
41
+ policy: z.ZodObject<{
42
+ id: z.ZodString;
43
+ contentHash: z.ZodString;
44
+ revision: z.ZodNumber;
45
+ }, z.core.$strict>;
46
+ scheduledAt: z.ZodString;
47
+ coalescedThroughAt: z.ZodString;
48
+ coalescedCount: z.ZodNumber;
49
+ outcome: z.ZodEnum<{
50
+ skipped: "skipped";
51
+ waiting_for_data: "waiting_for_data";
52
+ waiting_for_review: "waiting_for_review";
53
+ reserved: "reserved";
54
+ }>;
55
+ reason: z.ZodNullable<z.ZodEnum<{
56
+ active_iteration: "active_iteration";
57
+ cooldown: "cooldown";
58
+ daily_budget: "daily_budget";
59
+ }>>;
60
+ iteration: z.ZodNullable<z.ZodObject<{
61
+ id: z.ZodString;
62
+ revision: z.ZodNumber;
63
+ }, z.core.$strict>>;
64
+ createdAt: z.ZodString;
65
+ contentHash: z.ZodString;
66
+ }, z.core.$strict>;
67
+ export type LearningSchedule = z.infer<typeof LearningScheduleSchema>;
68
+ export type LearningScheduleFire = z.infer<typeof LearningScheduleFireSchema>;
69
+ //# sourceMappingURL=schedule-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-contracts.d.ts","sourceRoot":"","sources":["../../../../../src/learning/schedule-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,iFAAiF;AACjF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqBjC,CAAC;AAEH,iFAAiF;AACjF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBrC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type LearningPolicy } from "./contracts.js";
2
+ import { type LearningTransaction } from "./repository.js";
3
+ export declare function learningScheduleId(policyId: string): string;
4
+ /** Called atomically with policy publication. No external timer or Work is made. */
5
+ export declare function synchronizeLearningSchedule(tx: LearningTransaction, policy: LearningPolicy, now: string): Promise<{
6
+ schemaVersion: "openpond.learningSchedule.v1";
7
+ id: string;
8
+ revision: number;
9
+ policy: {
10
+ id: string;
11
+ contentHash: string;
12
+ revision: number;
13
+ };
14
+ modelProjectId: string;
15
+ executionOwner: "local" | "hosted";
16
+ state: "blocked" | "scheduled" | "disabled";
17
+ intervalSeconds: number | null;
18
+ nextRunAt: string | null;
19
+ lastFire: {
20
+ id: string;
21
+ contentHash: string;
22
+ revision: number;
23
+ } | null;
24
+ consecutiveFailures: number;
25
+ nextAttemptAt: string | null;
26
+ lastError: string | null;
27
+ createdAt: string;
28
+ updatedAt: string;
29
+ }>;
30
+ //# sourceMappingURL=schedule-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-service.d.ts","sourceRoot":"","sources":["../../../../../src/learning/schedule-service.ts"],"names":[],"mappings":"AACA,OAAO,EAA2D,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG9G,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEpF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,UAAiD;AAEpG,oFAAoF;AACpF,wBAAsB,2BAA2B,CAAC,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAqB7G"}
@@ -0,0 +1,12 @@
1
+ import { type LearningSchedule } from "./schedule-contracts.js";
2
+ import { type LearningRepository } from "./repository.js";
3
+ /** Like a durable scheduled Work fire, the occurrence and timer advance commit
4
+ * together. Here the typed target is a learning reservation, never a prompt or
5
+ * provider submission. All work inside the transaction is repository-only. */
6
+ export declare function createLearningScheduleWorker(repository: LearningRepository, options: {
7
+ executionOwner: "local" | "hosted";
8
+ now?: () => string;
9
+ }): {
10
+ run: (scope: string, scheduleId: string, actorId: string) => Promise<LearningSchedule>;
11
+ };
12
+ //# sourceMappingURL=schedule-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-worker.d.ts","sourceRoot":"","sources":["../../../../../src/learning/schedule-worker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsD,KAAK,gBAAgB,EAA6B,MAAM,yBAAyB,CAAC;AAC/I,OAAO,EAAmD,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAO3G;;8EAE8E;AAC9E,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE;IACpF,cAAc,EAAE,OAAO,GAAG,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACxD;iBAG2B,MAAM,cAAc,MAAM,WAAW,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAAC;EAuElG"}