sequence-base 0.4.7__tar.gz → 0.4.9__tar.gz

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 (108) hide show
  1. {sequence_base-0.4.7 → sequence_base-0.4.9}/PKG-INFO +1 -1
  2. {sequence_base-0.4.7 → sequence_base-0.4.9}/pyproject.toml +1 -1
  3. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/constants/version.py +2 -1
  4. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/benchmarks.py +27 -1
  5. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/eval.py +37 -14
  6. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ActRequest.json +1 -1
  7. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ActResponse.json +1 -1
  8. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ActionChunk.json +1 -1
  9. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ActionContract.json +1 -1
  10. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ActionStep.json +1 -1
  11. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/AdapterTransform.json +2 -2
  12. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/AddLocal.json +1 -1
  13. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Autoscaler.json +1 -1
  14. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/BenchmarkConditionSpec.json +2 -2
  15. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/BenchmarkRegisterRequest.json +21 -2
  16. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/BenchmarkSpec.json +2 -2
  17. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
  18. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/BootstrapResponse.json +1 -1
  19. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Camera.json +1 -1
  20. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ClampInfo.json +1 -1
  21. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/CodeBundle.json +1 -1
  22. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Concurrency.json +1 -1
  23. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Conditions.json +1 -1
  24. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ConnectRequest.json +1 -1
  25. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ConnectResponse.json +1 -1
  26. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/DeploymentAccepted.json +1 -1
  27. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/DeploymentPolicy.json +1 -1
  28. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/DeploymentRequest.json +1 -1
  29. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
  30. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Embodiment.json +1 -1
  31. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ErrorBody.json +1 -1
  32. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ErrorCodes.json +1 -1
  33. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Estimate.json +1 -1
  34. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
  35. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/EvalReport.json +3 -3
  36. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/EvalRequest.json +22 -4
  37. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/EvalResponse.json +1 -1
  38. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageFrame.json +1 -1
  39. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageSpec.json +1 -1
  40. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
  41. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageStepApt.json +1 -1
  42. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageStepEnv.json +1 -1
  43. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageStepRun.json +1 -1
  44. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageStepTemplateFiles.json +1 -1
  45. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ImageStepUvPip.json +1 -1
  46. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/InferParam.json +1 -1
  47. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Lease.json +1 -1
  48. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/LossyTransform.json +1 -1
  49. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/MetricAgg.json +3 -3
  50. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Observation.json +1 -1
  51. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ObservationContract.json +1 -1
  52. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/PolicyRegistration.json +2 -2
  53. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/PolicySpec.json +1 -1
  54. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Proprioception.json +1 -1
  55. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/RenderSpec.json +1 -1
  56. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/ReplaySpec.json +1 -1
  57. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Resources.json +1 -1
  58. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/RolloutResult.json +1 -1
  59. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/SecretCreateRequest.json +1 -1
  60. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/SecretInfo.json +1 -1
  61. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/SecretRef.json +1 -1
  62. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/SeqFlags.json +1 -1
  63. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Step.json +1 -1
  64. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/SuiteAgg.json +2 -2
  65. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/TaskAgg.json +1 -1
  66. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/TemplateFiles.json +1 -1
  67. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Timeouts.json +1 -1
  68. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/UploadTarget.json +1 -1
  69. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/Variant.json +1 -1
  70. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/VolumeAttach.json +1 -1
  71. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/VolumeFile.json +1 -1
  72. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/VolumeInfo.json +1 -1
  73. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/VolumeMount.json +1 -1
  74. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/VolumeRef.json +1 -1
  75. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
  76. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
  77. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schemas/WarmingError.json +1 -1
  78. {sequence_base-0.4.7 → sequence_base-0.4.9}/.gitignore +0 -0
  79. {sequence_base-0.4.7 → sequence_base-0.4.9}/README.md +0 -0
  80. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/__init__.py +0 -0
  81. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/auth.py +0 -0
  82. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/codec/__init__.py +0 -0
  83. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/codec/image.py +0 -0
  84. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/constants/__init__.py +0 -0
  85. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/constants/headers.py +0 -0
  86. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/__init__.py +0 -0
  87. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/accounts.py +0 -0
  88. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/act.py +0 -0
  89. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/connect.py +0 -0
  90. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/deployments.py +0 -0
  91. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/errors.py +0 -0
  92. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/flags.py +0 -0
  93. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/io.py +0 -0
  94. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/policy.py +0 -0
  95. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/templates.py +0 -0
  96. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/volumes.py +0 -0
  97. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/contract/wire.py +0 -0
  98. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/errors/__init__.py +0 -0
  99. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/errors/transport.py +0 -0
  100. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/obs/__init__.py +0 -0
  101. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/obs/log.py +0 -0
  102. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/obs/rid.py +0 -0
  103. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/presets/__init__.py +0 -0
  104. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/presets/frames.py +0 -0
  105. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/presets/robot_arm.py +0 -0
  106. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/schema_export.py +0 -0
  107. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/telemetry/__init__.py +0 -0
  108. {sequence_base-0.4.7 → sequence_base-0.4.9}/sequence_base/telemetry/events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sequence-base
3
- Version: 0.4.7
3
+ Version: 0.4.9
4
4
  Summary: Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness.
5
5
  Project-URL: Changelog, https://generalsequences.com/docs/changelog/
6
6
  Requires-Python: >=3.10
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sequence-base"
3
- version = "0.4.7"
3
+ version = "0.4.9"
4
4
  description = "Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness."
5
5
  requires-python = ">=3.10"
6
6
  dependencies = ["pydantic>=2.0"]
@@ -4,7 +4,8 @@
4
4
 
5
5
 
6
6
 
7
- CONTRACT_VERSION = "0.5.7"
7
+ CONTRACT_VERSION = "0.5.8"
8
+
8
9
 
9
10
 
10
11
 
@@ -155,7 +155,7 @@ class BenchmarkSpec(BaseModel):
155
155
 
156
156
  class BenchmarkConditionSpec(BaseModel):
157
157
  """One episode setting exactly as the author declared it — a sparse list or a cross product, with its own step
158
- cap, wall-clock limit and suite."""
158
+ cap and wall-clock limit."""
159
159
 
160
160
  model_config = ConfigDict(extra="forbid")
161
161
 
@@ -164,6 +164,9 @@ class BenchmarkConditionSpec(BaseModel):
164
164
  variant: dict[str, str] = Field(default_factory=dict)
165
165
  max_steps: int | None = Field(default=None, gt=0)
166
166
  timeout_s: float | None = Field(default=None, gt=0)
167
+
168
+
169
+
167
170
  suite: str | None = None
168
171
 
169
172
 
@@ -193,6 +196,15 @@ class BenchmarkRegisterRequest(BaseModel):
193
196
  suite_of: dict[str, str] = Field(default_factory=dict)
194
197
 
195
198
 
199
+
200
+ task_descriptions: dict[str, str] = Field(default_factory=dict)
201
+
202
+
203
+
204
+
205
+ seeds_repeat: bool | None = None
206
+
207
+
196
208
  action_contract: ActionContract | None = None
197
209
 
198
210
 
@@ -231,6 +243,20 @@ class BenchmarkRegisterRequest(BaseModel):
231
243
  raise ValueError(f"setup parameter {name!r} is not a public Python identifier")
232
244
  return self
233
245
 
246
+ @model_validator(mode="after")
247
+ def _task_descriptions(self) -> "BenchmarkRegisterRequest":
248
+ """Each description names a task the benchmark declares - in `conditions` or `condition_list` - and is at most
249
+ 300 characters, as the platform holds it.
250
+
251
+ """
252
+ declared = set(self.conditions.tasks) | {c.task for c in self.condition_list or []}
253
+ for task, text in self.task_descriptions.items():
254
+ if task not in declared:
255
+ raise ValueError(f"task_descriptions names {task!r}, which is not a declared task")
256
+ if len(text) > 300:
257
+ raise ValueError(f"task_descriptions[{task!r}] is {len(text)} characters: at most 300")
258
+ return self
259
+
234
260
 
235
261
  class BenchmarkStatusResponse(BaseModel):
236
262
  """GET /v1/benchmarks/{name} — the build state of a registered benchmark (same lifecycle as a deployment:
@@ -47,8 +47,13 @@ class EvalRequest(BaseModel):
47
47
 
48
48
  model: str
49
49
  benchmark: str
50
- suite: str | None = None
51
- trials: int | None = None
50
+
51
+
52
+
53
+
54
+
55
+ trials: int | dict[str, int] | None = None
56
+ seeds: list[int] | dict[str, list[int]] | None = None
52
57
 
53
58
 
54
59
 
@@ -84,6 +89,24 @@ class EvalRequest(BaseModel):
84
89
 
85
90
  replay: Literal["3d", "none"] | None = None
86
91
 
92
+ @model_validator(mode="after")
93
+ def _selection(self) -> "EvalRequest":
94
+ """The selection's own bounds, as the platform holds them: a count 1-100000, at most 5000 seeds in a list and
95
+ 1000 tasks in a dict, no task twice in `tasks`. Whether the tasks and seeds are the benchmark's is the
96
+ platform's to say."""
97
+ counts = (self.trials.values() if isinstance(self.trials, dict)
98
+ else [self.trials] if self.trials is not None else [])
99
+ if any(not 1 <= c <= 100000 for c in counts):
100
+ raise ValueError("trials is a count of 1 to 100000 seeds a task")
101
+ lists = self.seeds.values() if isinstance(self.seeds, dict) else [self.seeds] if self.seeds is not None else []
102
+ if any(len(s) > 5000 for s in lists):
103
+ raise ValueError("seeds names at most 5000 seeds")
104
+ if any(isinstance(x, dict) and len(x) > 1000 for x in (self.trials, self.seeds)):
105
+ raise ValueError("trials and seeds name at most 1000 tasks")
106
+ if self.tasks is not None and len(set(self.tasks)) != len(self.tasks):
107
+ raise ValueError("tasks names a task twice")
108
+ return self
109
+
87
110
 
88
111
  class ClampInfo(BaseModel):
89
112
  """Why the granted GPU count was clamped below the request — structured, not a bare value."""
@@ -219,8 +242,9 @@ class EvalStatus(str, Enum):
219
242
 
220
243
 
221
244
  class SuiteAgg(BaseModel):
222
- """Per-suite aggregate of ONE user-named metric — structured detail, not a bare dict. `value` is the
223
- metric aggregated over that suite; the platform does not name or interpret the metric."""
245
+ """Per-suite aggregate of ONE user-named metric, as an eval from before contract 0.5.8 reported it: kept so those
246
+ reports stay readable. A benchmark is one set of tasks now, and no eval since reports one.
247
+ """
224
248
 
225
249
  model_config = ConfigDict(extra="forbid")
226
250
 
@@ -240,8 +264,8 @@ class TaskAgg(BaseModel):
240
264
 
241
265
 
242
266
  class MetricAgg(BaseModel):
243
- """The aggregate of one user-named metric key across the eval — overall plus per-suite / per-task
244
- breakdowns and the sample count. The platform aggregates whatever the user returned in `Step.metrics`;
267
+ """The aggregate of one user-named metric key across the eval — overall plus per-task breakdowns (and, in a
268
+ report from before contract 0.5.8, per-suite ones) and the sample count. The platform aggregates whatever the user returned in `Step.metrics`;
245
269
  it neither defines nor injects `success_rate` (success is just one key the user may or may not name)."""
246
270
 
247
271
  model_config = ConfigDict(extra="forbid")
@@ -373,18 +397,17 @@ class AdapterKind(str, Enum):
373
397
  LOSSY = "lossy"
374
398
 
375
399
 
400
+
401
+
402
+
403
+
404
+
376
405
  class AdapterTransform(BaseModel):
377
- """One adapter transform, classified. A lossy transform must carry a non-empty reason; a lossless one
378
- needs none. The lossy element's shape ({transform, reason}) aligns with EvalReport.adapter_lossy."""
406
+ """One adapter transform: its kind (lossless / lossy), the transform's name, and an optional reason. A registered
407
+ adapter and an older eval report carry these fields; they are kept for compatibility and are no longer acted on."""
379
408
 
380
409
  model_config = ConfigDict(extra="forbid")
381
410
 
382
411
  kind: AdapterKind
383
412
  transform: str
384
413
  reason: str | None = None
385
-
386
- @model_validator(mode="after")
387
- def _lossy_needs_reason(self) -> "AdapterTransform":
388
- if self.kind is AdapterKind.LOSSY and not (self.reason and self.reason.strip()):
389
- raise ValueError("a lossy transform must carry a non-empty reason")
390
- return self
@@ -79,5 +79,5 @@
79
79
  ],
80
80
  "title": "ActRequest",
81
81
  "type": "object",
82
- "x-contract-version": "0.5.7"
82
+ "x-contract-version": "0.5.8"
83
83
  }
@@ -89,5 +89,5 @@
89
89
  ],
90
90
  "title": "ActResponse",
91
91
  "type": "object",
92
- "x-contract-version": "0.5.7"
92
+ "x-contract-version": "0.5.8"
93
93
  }
@@ -99,5 +99,5 @@
99
99
  ],
100
100
  "title": "ActionChunk",
101
101
  "type": "object",
102
- "x-contract-version": "0.5.7"
102
+ "x-contract-version": "0.5.8"
103
103
  }
@@ -116,5 +116,5 @@
116
116
  ],
117
117
  "title": "ActionContract",
118
118
  "type": "object",
119
- "x-contract-version": "0.5.7"
119
+ "x-contract-version": "0.5.8"
120
120
  }
@@ -19,5 +19,5 @@
19
19
  ],
20
20
  "title": "ActionStep",
21
21
  "type": "object",
22
- "x-contract-version": "0.5.7"
22
+ "x-contract-version": "0.5.8"
23
23
  }
@@ -10,7 +10,7 @@
10
10
  }
11
11
  },
12
12
  "additionalProperties": false,
13
- "description": "One adapter transform, classified. A lossy transform must carry a non-empty reason; a lossless one\nneeds none. The lossy element's shape ({transform, reason}) aligns with EvalReport.adapter_lossy.",
13
+ "description": "One adapter transform: its kind (lossless / lossy), the transform's name, and an optional reason. A registered\nadapter and an older eval report carry these fields; they are kept for compatibility and are no longer acted on.",
14
14
  "properties": {
15
15
  "kind": {
16
16
  "$ref": "#/$defs/AdapterKind"
@@ -38,5 +38,5 @@
38
38
  ],
39
39
  "title": "AdapterTransform",
40
40
  "type": "object",
41
- "x-contract-version": "0.5.7"
41
+ "x-contract-version": "0.5.8"
42
42
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "AddLocal",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.7"
26
+ "x-contract-version": "0.5.8"
27
27
  }
@@ -69,5 +69,5 @@
69
69
  },
70
70
  "title": "Autoscaler",
71
71
  "type": "object",
72
- "x-contract-version": "0.5.7"
72
+ "x-contract-version": "0.5.8"
73
73
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "additionalProperties": false,
3
- "description": "One episode setting exactly as the author declared it — a sparse list or a cross product, with its own step\ncap, wall-clock limit and suite.",
3
+ "description": "One episode setting exactly as the author declared it — a sparse list or a cross product, with its own step\ncap and wall-clock limit.",
4
4
  "properties": {
5
5
  "max_steps": {
6
6
  "anyOf": [
@@ -62,5 +62,5 @@
62
62
  ],
63
63
  "title": "BenchmarkConditionSpec",
64
64
  "type": "object",
65
- "x-contract-version": "0.5.7"
65
+ "x-contract-version": "0.5.8"
66
66
  }
@@ -145,7 +145,7 @@
145
145
  },
146
146
  "BenchmarkConditionSpec": {
147
147
  "additionalProperties": false,
148
- "description": "One episode setting exactly as the author declared it — a sparse list or a cross product, with its own step\ncap, wall-clock limit and suite.",
148
+ "description": "One episode setting exactly as the author declared it — a sparse list or a cross product, with its own step\ncap and wall-clock limit.",
149
149
  "properties": {
150
150
  "max_steps": {
151
151
  "anyOf": [
@@ -942,6 +942,18 @@
942
942
  "title": "Secrets",
943
943
  "type": "array"
944
944
  },
945
+ "seeds_repeat": {
946
+ "anyOf": [
947
+ {
948
+ "type": "boolean"
949
+ },
950
+ {
951
+ "type": "null"
952
+ }
953
+ ],
954
+ "default": null,
955
+ "title": "Seeds Repeat"
956
+ },
945
957
  "suite_of": {
946
958
  "additionalProperties": {
947
959
  "type": "string"
@@ -949,6 +961,13 @@
949
961
  "title": "Suite Of",
950
962
  "type": "object"
951
963
  },
964
+ "task_descriptions": {
965
+ "additionalProperties": {
966
+ "type": "string"
967
+ },
968
+ "title": "Task Descriptions",
969
+ "type": "object"
970
+ },
952
971
  "timeout_s": {
953
972
  "anyOf": [
954
973
  {
@@ -972,5 +991,5 @@
972
991
  ],
973
992
  "title": "BenchmarkRegisterRequest",
974
993
  "type": "object",
975
- "x-contract-version": "0.5.7"
994
+ "x-contract-version": "0.5.8"
976
995
  }
@@ -368,7 +368,7 @@
368
368
  ],
369
369
  "title": "SeqFlags",
370
370
  "type": "integer",
371
- "x-contract-version": "0.5.7",
371
+ "x-contract-version": "0.5.8",
372
372
  "x-flag-names": {
373
373
  "CHECK": 65536,
374
374
  "INFER": 16,
@@ -625,5 +625,5 @@
625
625
  ],
626
626
  "title": "BenchmarkSpec",
627
627
  "type": "object",
628
- "x-contract-version": "0.5.7"
628
+ "x-contract-version": "0.5.8"
629
629
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "BenchmarkStatusResponse",
42
42
  "type": "object",
43
- "x-contract-version": "0.5.7"
43
+ "x-contract-version": "0.5.8"
44
44
  }
@@ -79,5 +79,5 @@
79
79
  ],
80
80
  "title": "BootstrapResponse",
81
81
  "type": "object",
82
- "x-contract-version": "0.5.7"
82
+ "x-contract-version": "0.5.8"
83
83
  }
@@ -72,5 +72,5 @@
72
72
  ],
73
73
  "title": "Camera",
74
74
  "type": "object",
75
- "x-contract-version": "0.5.7"
75
+ "x-contract-version": "0.5.8"
76
76
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "ClampInfo",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.7"
26
+ "x-contract-version": "0.5.8"
27
27
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "CodeBundle",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.7"
26
+ "x-contract-version": "0.5.8"
27
27
  }
@@ -96,5 +96,5 @@
96
96
  },
97
97
  "title": "Concurrency",
98
98
  "type": "object",
99
- "x-contract-version": "0.5.7"
99
+ "x-contract-version": "0.5.8"
100
100
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "Conditions",
57
57
  "type": "object",
58
- "x-contract-version": "0.5.7"
58
+ "x-contract-version": "0.5.8"
59
59
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "ConnectRequest",
27
27
  "type": "object",
28
- "x-contract-version": "0.5.7"
28
+ "x-contract-version": "0.5.8"
29
29
  }
@@ -342,5 +342,5 @@
342
342
  ],
343
343
  "title": "ConnectResponse",
344
344
  "type": "object",
345
- "x-contract-version": "0.5.7"
345
+ "x-contract-version": "0.5.8"
346
346
  }
@@ -18,5 +18,5 @@
18
18
  ],
19
19
  "title": "DeploymentAccepted",
20
20
  "type": "object",
21
- "x-contract-version": "0.5.7"
21
+ "x-contract-version": "0.5.8"
22
22
  }
@@ -530,5 +530,5 @@
530
530
  ],
531
531
  "title": "DeploymentPolicy",
532
532
  "type": "object",
533
- "x-contract-version": "0.5.7"
533
+ "x-contract-version": "0.5.8"
534
534
  }
@@ -1224,5 +1224,5 @@
1224
1224
  ],
1225
1225
  "title": "DeploymentRequest",
1226
1226
  "type": "object",
1227
- "x-contract-version": "0.5.7"
1227
+ "x-contract-version": "0.5.8"
1228
1228
  }
@@ -58,5 +58,5 @@
58
58
  ],
59
59
  "title": "DeploymentStatusResponse",
60
60
  "type": "object",
61
- "x-contract-version": "0.5.7"
61
+ "x-contract-version": "0.5.8"
62
62
  }
@@ -267,5 +267,5 @@
267
267
  ],
268
268
  "title": "Embodiment",
269
269
  "type": "object",
270
- "x-contract-version": "0.5.7"
270
+ "x-contract-version": "0.5.8"
271
271
  }
@@ -94,5 +94,5 @@
94
94
  ],
95
95
  "title": "ErrorBody",
96
96
  "type": "object",
97
- "x-contract-version": "0.5.7"
97
+ "x-contract-version": "0.5.8"
98
98
  }
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "title": "ErrorCode",
24
24
  "type": "string",
25
- "x-contract-version": "0.5.7",
25
+ "x-contract-version": "0.5.8",
26
26
  "x-errors": {
27
27
  "budget_exhausted": {
28
28
  "exit_code": 6,
@@ -60,5 +60,5 @@
60
60
  ],
61
61
  "title": "Estimate",
62
62
  "type": "object",
63
- "x-contract-version": "0.5.7"
63
+ "x-contract-version": "0.5.8"
64
64
  }
@@ -240,5 +240,5 @@
240
240
  ],
241
241
  "title": "EvalDryRunResponse",
242
242
  "type": "object",
243
- "x-contract-version": "0.5.7"
243
+ "x-contract-version": "0.5.8"
244
244
  }
@@ -218,7 +218,7 @@
218
218
  },
219
219
  "MetricAgg": {
220
220
  "additionalProperties": false,
221
- "description": "The aggregate of one user-named metric key across the eval — overall plus per-suite / per-task\nbreakdowns and the sample count. The platform aggregates whatever the user returned in `Step.metrics`;\nit neither defines nor injects `success_rate` (success is just one key the user may or may not name).",
221
+ "description": "The aggregate of one user-named metric key across the eval — overall plus per-task breakdowns (and, in a\nreport from before contract 0.5.8, per-suite ones) and the sample count. The platform aggregates whatever the user returned in `Step.metrics`;\nit neither defines nor injects `success_rate` (success is just one key the user may or may not name).",
222
222
  "properties": {
223
223
  "n": {
224
224
  "title": "N",
@@ -339,7 +339,7 @@
339
339
  },
340
340
  "SuiteAgg": {
341
341
  "additionalProperties": false,
342
- "description": "Per-suite aggregate of ONE user-named metric — structured detail, not a bare dict. `value` is the\nmetric aggregated over that suite; the platform does not name or interpret the metric.",
342
+ "description": "Per-suite aggregate of ONE user-named metric, as an eval from before contract 0.5.8 reported it: kept so those\nreports stay readable. A benchmark is one set of tasks now, and no eval since reports one.",
343
343
  "properties": {
344
344
  "n": {
345
345
  "title": "N",
@@ -523,5 +523,5 @@
523
523
  ],
524
524
  "title": "EvalReport",
525
525
  "type": "object",
526
- "x-contract-version": "0.5.7"
526
+ "x-contract-version": "0.5.8"
527
527
  }
@@ -187,17 +187,29 @@
187
187
  "default": null,
188
188
  "title": "Rerun Of"
189
189
  },
190
- "suite": {
190
+ "seeds": {
191
191
  "anyOf": [
192
192
  {
193
- "type": "string"
193
+ "items": {
194
+ "type": "integer"
195
+ },
196
+ "type": "array"
197
+ },
198
+ {
199
+ "additionalProperties": {
200
+ "items": {
201
+ "type": "integer"
202
+ },
203
+ "type": "array"
204
+ },
205
+ "type": "object"
194
206
  },
195
207
  {
196
208
  "type": "null"
197
209
  }
198
210
  ],
199
211
  "default": null,
200
- "title": "Suite"
212
+ "title": "Seeds"
201
213
  },
202
214
  "sweep": {
203
215
  "anyOf": [
@@ -252,6 +264,12 @@
252
264
  {
253
265
  "type": "integer"
254
266
  },
267
+ {
268
+ "additionalProperties": {
269
+ "type": "integer"
270
+ },
271
+ "type": "object"
272
+ },
255
273
  {
256
274
  "type": "null"
257
275
  }
@@ -297,5 +315,5 @@
297
315
  ],
298
316
  "title": "EvalRequest",
299
317
  "type": "object",
300
- "x-contract-version": "0.5.7"
318
+ "x-contract-version": "0.5.8"
301
319
  }
@@ -190,5 +190,5 @@
190
190
  ],
191
191
  "title": "EvalResponse",
192
192
  "type": "object",
193
- "x-contract-version": "0.5.7"
193
+ "x-contract-version": "0.5.8"
194
194
  }
@@ -49,5 +49,5 @@
49
49
  ],
50
50
  "title": "ImageFrame",
51
51
  "type": "object",
52
- "x-contract-version": "0.5.7"
52
+ "x-contract-version": "0.5.8"
53
53
  }
@@ -245,5 +245,5 @@
245
245
  },
246
246
  "title": "ImageSpec",
247
247
  "type": "object",
248
- "x-contract-version": "0.5.7"
248
+ "x-contract-version": "0.5.8"
249
249
  }
@@ -38,5 +38,5 @@
38
38
  ],
39
39
  "title": "ImageStepAddLocal",
40
40
  "type": "object",
41
- "x-contract-version": "0.5.7"
41
+ "x-contract-version": "0.5.8"
42
42
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepApt",
16
16
  "type": "object",
17
- "x-contract-version": "0.5.7"
17
+ "x-contract-version": "0.5.8"
18
18
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepEnv",
16
16
  "type": "object",
17
- "x-contract-version": "0.5.7"
17
+ "x-contract-version": "0.5.8"
18
18
  }
@@ -46,5 +46,5 @@
46
46
  ],
47
47
  "title": "ImageStepRun",
48
48
  "type": "object",
49
- "x-contract-version": "0.5.7"
49
+ "x-contract-version": "0.5.8"
50
50
  }
@@ -37,5 +37,5 @@
37
37
  ],
38
38
  "title": "ImageStepTemplateFiles",
39
39
  "type": "object",
40
- "x-contract-version": "0.5.7"
40
+ "x-contract-version": "0.5.8"
41
41
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepUvPip",
16
16
  "type": "object",
17
- "x-contract-version": "0.5.7"
17
+ "x-contract-version": "0.5.8"
18
18
  }
@@ -99,5 +99,5 @@
99
99
  ],
100
100
  "title": "InferParam",
101
101
  "type": "object",
102
- "x-contract-version": "0.5.7"
102
+ "x-contract-version": "0.5.8"
103
103
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "Lease",
26
26
  "type": "object",
27
- "x-contract-version": "0.5.7"
27
+ "x-contract-version": "0.5.8"
28
28
  }
@@ -17,5 +17,5 @@
17
17
  ],
18
18
  "title": "LossyTransform",
19
19
  "type": "object",
20
- "x-contract-version": "0.5.7"
20
+ "x-contract-version": "0.5.8"
21
21
  }
@@ -2,7 +2,7 @@
2
2
  "$defs": {
3
3
  "SuiteAgg": {
4
4
  "additionalProperties": false,
5
- "description": "Per-suite aggregate of ONE user-named metric — structured detail, not a bare dict. `value` is the\nmetric aggregated over that suite; the platform does not name or interpret the metric.",
5
+ "description": "Per-suite aggregate of ONE user-named metric, as an eval from before contract 0.5.8 reported it: kept so those\nreports stay readable. A benchmark is one set of tasks now, and no eval since reports one.",
6
6
  "properties": {
7
7
  "n": {
8
8
  "title": "N",
@@ -52,7 +52,7 @@
52
52
  }
53
53
  },
54
54
  "additionalProperties": false,
55
- "description": "The aggregate of one user-named metric key across the eval — overall plus per-suite / per-task\nbreakdowns and the sample count. The platform aggregates whatever the user returned in `Step.metrics`;\nit neither defines nor injects `success_rate` (success is just one key the user may or may not name).",
55
+ "description": "The aggregate of one user-named metric key across the eval — overall plus per-task breakdowns (and, in a\nreport from before contract 0.5.8, per-suite ones) and the sample count. The platform aggregates whatever the user returned in `Step.metrics`;\nit neither defines nor injects `success_rate` (success is just one key the user may or may not name).",
56
56
  "properties": {
57
57
  "n": {
58
58
  "title": "N",
@@ -83,5 +83,5 @@
83
83
  ],
84
84
  "title": "MetricAgg",
85
85
  "type": "object",
86
- "x-contract-version": "0.5.7"
86
+ "x-contract-version": "0.5.8"
87
87
  }
@@ -164,5 +164,5 @@
164
164
  ],
165
165
  "title": "Observation",
166
166
  "type": "object",
167
- "x-contract-version": "0.5.7"
167
+ "x-contract-version": "0.5.8"
168
168
  }
@@ -120,5 +120,5 @@
120
120
  },
121
121
  "title": "ObservationContract",
122
122
  "type": "object",
123
- "x-contract-version": "0.5.7"
123
+ "x-contract-version": "0.5.8"
124
124
  }
@@ -852,7 +852,7 @@
852
852
  ],
853
853
  "title": "SeqFlags",
854
854
  "type": "integer",
855
- "x-contract-version": "0.5.7",
855
+ "x-contract-version": "0.5.8",
856
856
  "x-flag-names": {
857
857
  "CHECK": 65536,
858
858
  "INFER": 16,
@@ -981,5 +981,5 @@
981
981
  ],
982
982
  "title": "PolicyRegistration",
983
983
  "type": "object",
984
- "x-contract-version": "0.5.7"
984
+ "x-contract-version": "0.5.8"
985
985
  }
@@ -883,5 +883,5 @@
883
883
  ],
884
884
  "title": "PolicySpec",
885
885
  "type": "object",
886
- "x-contract-version": "0.5.7"
886
+ "x-contract-version": "0.5.8"
887
887
  }
@@ -63,5 +63,5 @@
63
63
  ],
64
64
  "title": "Proprioception",
65
65
  "type": "object",
66
- "x-contract-version": "0.5.7"
66
+ "x-contract-version": "0.5.8"
67
67
  }
@@ -36,5 +36,5 @@
36
36
  ],
37
37
  "title": "RenderSpec",
38
38
  "type": "object",
39
- "x-contract-version": "0.5.7"
39
+ "x-contract-version": "0.5.8"
40
40
  }
@@ -52,5 +52,5 @@
52
52
  },
53
53
  "title": "ReplaySpec",
54
54
  "type": "object",
55
- "x-contract-version": "0.5.7"
55
+ "x-contract-version": "0.5.8"
56
56
  }
@@ -84,5 +84,5 @@
84
84
  ],
85
85
  "title": "Resources",
86
86
  "type": "object",
87
- "x-contract-version": "0.5.7"
87
+ "x-contract-version": "0.5.8"
88
88
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "RolloutResult",
57
57
  "type": "object",
58
- "x-contract-version": "0.5.7"
58
+ "x-contract-version": "0.5.8"
59
59
  }
@@ -21,5 +21,5 @@
21
21
  ],
22
22
  "title": "SecretCreateRequest",
23
23
  "type": "object",
24
- "x-contract-version": "0.5.7"
24
+ "x-contract-version": "0.5.8"
25
25
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "SecretInfo",
42
42
  "type": "object",
43
- "x-contract-version": "0.5.7"
43
+ "x-contract-version": "0.5.8"
44
44
  }
@@ -12,5 +12,5 @@
12
12
  ],
13
13
  "title": "SecretRef",
14
14
  "type": "object",
15
- "x-contract-version": "0.5.7"
15
+ "x-contract-version": "0.5.8"
16
16
  }
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "title": "SeqFlags",
20
20
  "type": "integer",
21
- "x-contract-version": "0.5.7",
21
+ "x-contract-version": "0.5.8",
22
22
  "x-flag-names": {
23
23
  "CHECK": 65536,
24
24
  "INFER": 16,
@@ -82,5 +82,5 @@
82
82
  ],
83
83
  "title": "Step",
84
84
  "type": "object",
85
- "x-contract-version": "0.5.7"
85
+ "x-contract-version": "0.5.8"
86
86
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "additionalProperties": false,
3
- "description": "Per-suite aggregate of ONE user-named metric — structured detail, not a bare dict. `value` is the\nmetric aggregated over that suite; the platform does not name or interpret the metric.",
3
+ "description": "Per-suite aggregate of ONE user-named metric, as an eval from before contract 0.5.8 reported it: kept so those\nreports stay readable. A benchmark is one set of tasks now, and no eval since reports one.",
4
4
  "properties": {
5
5
  "n": {
6
6
  "title": "N",
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "SuiteAgg",
24
24
  "type": "object",
25
- "x-contract-version": "0.5.7"
25
+ "x-contract-version": "0.5.8"
26
26
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "TaskAgg",
24
24
  "type": "object",
25
- "x-contract-version": "0.5.7"
25
+ "x-contract-version": "0.5.8"
26
26
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "TemplateFiles",
24
24
  "type": "object",
25
- "x-contract-version": "0.5.7"
25
+ "x-contract-version": "0.5.8"
26
26
  }
@@ -20,5 +20,5 @@
20
20
  ],
21
21
  "title": "Timeouts",
22
22
  "type": "object",
23
- "x-contract-version": "0.5.7"
23
+ "x-contract-version": "0.5.8"
24
24
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "UploadTarget",
26
26
  "type": "object",
27
- "x-contract-version": "0.5.7"
27
+ "x-contract-version": "0.5.8"
28
28
  }
@@ -20,5 +20,5 @@
20
20
  ],
21
21
  "title": "Variant",
22
22
  "type": "object",
23
- "x-contract-version": "0.5.7"
23
+ "x-contract-version": "0.5.8"
24
24
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "VolumeAttach",
24
24
  "type": "object",
25
- "x-contract-version": "0.5.7"
25
+ "x-contract-version": "0.5.8"
26
26
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "VolumeFile",
27
27
  "type": "object",
28
- "x-contract-version": "0.5.7"
28
+ "x-contract-version": "0.5.8"
29
29
  }
@@ -68,5 +68,5 @@
68
68
  ],
69
69
  "title": "VolumeInfo",
70
70
  "type": "object",
71
- "x-contract-version": "0.5.7"
71
+ "x-contract-version": "0.5.8"
72
72
  }
@@ -17,5 +17,5 @@
17
17
  ],
18
18
  "title": "VolumeMount",
19
19
  "type": "object",
20
- "x-contract-version": "0.5.7"
20
+ "x-contract-version": "0.5.8"
21
21
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "VolumeRef",
26
26
  "type": "object",
27
- "x-contract-version": "0.5.7"
27
+ "x-contract-version": "0.5.8"
28
28
  }
@@ -56,5 +56,5 @@
56
56
  ],
57
57
  "title": "VolumeUploadRequest",
58
58
  "type": "object",
59
- "x-contract-version": "0.5.7"
59
+ "x-contract-version": "0.5.8"
60
60
  }
@@ -65,5 +65,5 @@
65
65
  ],
66
66
  "title": "VolumeUploadResponse",
67
67
  "type": "object",
68
- "x-contract-version": "0.5.7"
68
+ "x-contract-version": "0.5.8"
69
69
  }
@@ -86,5 +86,5 @@
86
86
  ],
87
87
  "title": "WarmingError",
88
88
  "type": "object",
89
- "x-contract-version": "0.5.7"
89
+ "x-contract-version": "0.5.8"
90
90
  }
File without changes
File without changes