@openpond/evals 0.12.3 → 0.12.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 (53) hide show
  1. package/LEARNING.md +43 -0
  2. package/dist/javascript-isolate-process-entry.js +4 -1
  3. package/dist/javascript-isolate-process-source.js +1 -1
  4. package/dist/javascript-isolate-process.js +36 -2
  5. package/dist/javascript-isolate.js +8 -2
  6. package/dist/javascript-verifier-node.js +1 -0
  7. package/dist/javascript-verifier-worker-source.js +1 -1
  8. package/dist/learning/index.js +1 -0
  9. package/dist/learning/iteration-dispatch-commands.js +1 -1
  10. package/dist/learning/iteration-dispatch-contracts.js +27 -0
  11. package/dist/learning/iteration-dispatch-deferral.js +28 -0
  12. package/dist/learning/iteration-dispatch-worker.js +34 -5
  13. package/dist/tool-learning/actions.js +62 -0
  14. package/dist/tool-learning/consultation.js +198 -0
  15. package/dist/tool-learning/episodes.js +284 -0
  16. package/dist/tool-learning/index.js +6 -0
  17. package/dist/tool-learning/installations.js +151 -0
  18. package/dist/tool-learning/policy.js +38 -0
  19. package/dist/tool-learning/primitives.js +87 -0
  20. package/dist/types/javascript-isolate-process.d.ts +7 -0
  21. package/dist/types/javascript-isolate-process.d.ts.map +1 -1
  22. package/dist/types/javascript-isolate.d.ts +3 -1
  23. package/dist/types/javascript-isolate.d.ts.map +1 -1
  24. package/dist/types/javascript-verifier-node.d.ts +1 -0
  25. package/dist/types/javascript-verifier-node.d.ts.map +1 -1
  26. package/dist/types/learning/index.d.ts +1 -0
  27. package/dist/types/learning/index.d.ts.map +1 -1
  28. package/dist/types/learning/iteration-dispatch-contracts.d.ts +45 -0
  29. package/dist/types/learning/iteration-dispatch-contracts.d.ts.map +1 -1
  30. package/dist/types/learning/iteration-dispatch-deferral.d.ts +71 -0
  31. package/dist/types/learning/iteration-dispatch-deferral.d.ts.map +1 -0
  32. package/dist/types/learning/iteration-dispatch-worker.d.ts +7 -2
  33. package/dist/types/learning/iteration-dispatch-worker.d.ts.map +1 -1
  34. package/dist/types/learning/repository.d.ts +20 -0
  35. package/dist/types/learning/repository.d.ts.map +1 -1
  36. package/dist/types/learning/transport.d.ts +20 -0
  37. package/dist/types/learning/transport.d.ts.map +1 -1
  38. package/dist/types/tool-learning/actions.d.ts +54 -0
  39. package/dist/types/tool-learning/actions.d.ts.map +1 -0
  40. package/dist/types/tool-learning/consultation.d.ts +229 -0
  41. package/dist/types/tool-learning/consultation.d.ts.map +1 -0
  42. package/dist/types/tool-learning/episodes.d.ts +1058 -0
  43. package/dist/types/tool-learning/episodes.d.ts.map +1 -0
  44. package/dist/types/tool-learning/index.d.ts +7 -0
  45. package/dist/types/tool-learning/index.d.ts.map +1 -0
  46. package/dist/types/tool-learning/installations.d.ts +296 -0
  47. package/dist/types/tool-learning/installations.d.ts.map +1 -0
  48. package/dist/types/tool-learning/policy.d.ts +3 -0
  49. package/dist/types/tool-learning/policy.d.ts.map +1 -0
  50. package/dist/types/tool-learning/primitives.d.ts +73 -0
  51. package/dist/types/tool-learning/primitives.d.ts.map +1 -0
  52. package/package.json +5 -1
  53. package/schemas/learning/v1/dispatch.schema.json +100 -1
package/LEARNING.md CHANGED
@@ -251,6 +251,27 @@ state is `dispatching`; only a provider observation establishes `training` or
251
251
  `evaluating`. A paused policy stops new submissions while existing executions
252
252
  continue to be observed.
253
253
 
254
+ Executors can implement `admit` to defer an unstarted, persisted submission for
255
+ calendar or capacity reasons. Return `{ status: "deferred", retryAt, reason }`
256
+ with a future timestamp, or `{ status: "ready" }`. This check must not create an
257
+ execution, launch compute or spend. A wait persists its reason and retry time,
258
+ releases the worker lease and retains the same sealed batch and reservation
259
+ without increasing failure retries. Restarted workers respect that timestamp;
260
+ cancellation bypasses it and can settle an unstarted dispatch at zero spend.
261
+ Once submission has started, retries reconcile its existing identity without
262
+ repeating admission. The executor must still verify current authority atomically
263
+ when creating an execution; a prior ready decision is not authorization to spend.
264
+
265
+ If admission closes during transport, `submit` may return a `deferred` result
266
+ with the exact scope, dispatch/hash, lease generation, retry time and immutable
267
+ receipt. The owner must atomically prove no execution or charge was created and
268
+ durably fence every late submission from that attempt before returning it. A
269
+ timeout or a read that finds no Job cannot establish this. The shared worker
270
+ retains the receipt, clears the started marker and releases/increments the
271
+ lease generation without spending a failure retry. Owners sharing the learning
272
+ repository use `deferLearningIterationSubmission` inside their native admission
273
+ transaction; the older worker then observes the committed generation change.
274
+
254
275
  The executor must deduplicate `submit` by `dispatch.id`, verify observation
255
276
  identity and provider receipts, and use `reconcile` to recover an existing Job
256
277
  after a lost reply. An unreachable owner is an error, never proof of absence.
@@ -394,3 +415,25 @@ revision changes and budget reservations, resolve authoritative execution/gradin
394
415
  receipts, isolate holdouts from training, bind the exact candidate at runtime,
395
416
  verify cleanup, and enforce the verdict inside the candidate-decision transaction.
396
417
  No customer serving is activated by an acceptance group.
418
+
419
+ ### Bounded tool episodes
420
+
421
+ The explicit `@openpond/evals/tool-learning` entry describes bounded attempt,
422
+ observation, recovery-link, verification, installation, and recovery-consultation
423
+ contracts. An event is sealed over validated sanitized bytes; the observation
424
+ references the exact attempted action. Execution failure, validation failure,
425
+ incomplete observation, uncertain effects, and verified outcome stay distinct.
426
+ A producer-provided verifier reference is a claim that intake must resolve against
427
+ its authentic execution owner.
428
+
429
+ Collection acknowledgements explicitly have `learningEnrollment: false`. The
430
+ capture policy requires separate review for model updates and disables synthetic
431
+ variants. Retaining a successful command is not evidence of the requested outcome,
432
+ a qualified training target, or permission to spend. Reuse the existing task
433
+ review, immutable supervised batch, and publication owners for actual admission.
434
+
435
+ Recovery consultation binds its action/context, active manifest, selected model,
436
+ and usage receipt. Integration qualification advertises an existing-model route;
437
+ learned qualification additionally requires retained training/evaluation/activation
438
+ lineage. Neither installation nor receipt of evidence establishes learned efficacy.
439
+ These protocols do not install client hooks or start background services.
@@ -5,4 +5,7 @@ const input = owner.__openpondIsolateInput;
5
5
  delete owner.__openpondIsolateInput;
6
6
  if (!input)
7
7
  throw new Error("JavaScript process requires its execution owner.");
8
- void executeJavaScriptIsolate(input).then((result) => process.stdout.write(JSON.stringify({ ok: true, result })), (error) => process.stdout.write(JSON.stringify({ ok: false, executionError: error instanceof JavaScriptIsolateExecutionError, error: (error instanceof Error ? error.message : "JavaScript execution failed.").slice(0, 8_192) })));
8
+ void executeJavaScriptIsolate(input, input.errorPrefix === "verifier" ? {
9
+ onExecutionReady: () => { if (!process.send)
10
+ throw new Error("Verifier process requires its startup channel."); process.send({ type: "execution_ready" }); },
11
+ } : undefined).then((result) => process.stdout.write(JSON.stringify({ ok: true, result })), (error) => process.stdout.write(JSON.stringify({ ok: false, executionError: error instanceof JavaScriptIsolateExecutionError, error: (error instanceof Error ? error.message : "JavaScript execution failed.").slice(0, 8_192) })));