sequence-base 0.4.12__tar.gz → 0.4.13__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.12 → sequence_base-0.4.13}/PKG-INFO +1 -1
  2. {sequence_base-0.4.12 → sequence_base-0.4.13}/pyproject.toml +1 -1
  3. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/__init__.py +1 -5
  4. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/constants/limits.py +5 -0
  5. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/constants/version.py +2 -1
  6. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/__init__.py +1 -5
  7. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/benchmarks.py +18 -1
  8. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/eval.py +2 -30
  9. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/presets/robot_arm.py +8 -17
  10. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schema_export.py +0 -4
  11. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ActRequest.json +1 -1
  12. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ActResponse.json +1 -1
  13. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ActionChunk.json +1 -1
  14. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ActionContract.json +1 -33
  15. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ActionStep.json +1 -1
  16. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/AddLocal.json +1 -1
  17. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Autoscaler.json +1 -1
  18. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
  19. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkRegisterRequest.json +23 -33
  20. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkSpec.json +2 -2
  21. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
  22. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/BootstrapResponse.json +1 -1
  23. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Camera.json +1 -1
  24. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ClampInfo.json +1 -1
  25. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/CodeBundle.json +1 -1
  26. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Concurrency.json +1 -1
  27. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Conditions.json +1 -1
  28. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ConnectRequest.json +1 -1
  29. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ConnectResponse.json +1 -33
  30. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentAccepted.json +1 -1
  31. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentPolicy.json +1 -33
  32. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentRequest.json +1 -33
  33. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
  34. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Embodiment.json +1 -33
  35. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ErrorBody.json +1 -1
  36. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ErrorCodes.json +1 -1
  37. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Estimate.json +1 -1
  38. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
  39. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/EvalReport.json +29 -30
  40. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/EvalRequest.json +1 -14
  41. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/EvalResponse.json +1 -1
  42. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageFrame.json +1 -1
  43. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageSpec.json +1 -1
  44. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
  45. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepApt.json +1 -1
  46. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepEnv.json +1 -1
  47. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepRun.json +1 -1
  48. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepTemplateFiles.json +1 -1
  49. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepUvPip.json +1 -1
  50. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/InferParam.json +1 -1
  51. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Lease.json +1 -1
  52. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/MetricAgg.json +1 -1
  53. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Observation.json +15 -10
  54. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ObservationContract.json +1 -1
  55. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/PolicyRegistration.json +2 -34
  56. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/PolicySpec.json +1 -33
  57. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Proprioception.json +15 -10
  58. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/RenderSpec.json +1 -1
  59. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/ReplaySpec.json +1 -1
  60. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Resources.json +1 -1
  61. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/RolloutResult.json +1 -1
  62. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/SecretCreateRequest.json +1 -1
  63. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/SecretInfo.json +1 -1
  64. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/SecretRef.json +1 -1
  65. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/SeqFlags.json +1 -1
  66. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Step.json +1 -1
  67. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/TaskAgg.json +1 -1
  68. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/TemplateFiles.json +1 -1
  69. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Timeouts.json +1 -1
  70. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/UploadTarget.json +1 -1
  71. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/Variant.json +1 -1
  72. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/VolumeAttach.json +1 -1
  73. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/VolumeFile.json +1 -1
  74. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/VolumeInfo.json +1 -1
  75. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/VolumeMount.json +1 -1
  76. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/VolumeRef.json +1 -1
  77. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
  78. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
  79. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/schemas/WarmingError.json +1 -1
  80. sequence_base-0.4.12/sequence_base/schemas/AdapterTransform.json +0 -42
  81. sequence_base-0.4.12/sequence_base/schemas/LossyTransform.json +0 -21
  82. {sequence_base-0.4.12 → sequence_base-0.4.13}/.gitignore +0 -0
  83. {sequence_base-0.4.12 → sequence_base-0.4.13}/README.md +0 -0
  84. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/auth.py +0 -0
  85. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/codec/__init__.py +0 -0
  86. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/codec/image.py +0 -0
  87. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/constants/__init__.py +0 -0
  88. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/constants/headers.py +0 -0
  89. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/accounts.py +0 -0
  90. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/act.py +0 -0
  91. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/connect.py +0 -0
  92. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/deployments.py +0 -0
  93. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/errors.py +0 -0
  94. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/flags.py +0 -0
  95. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/io.py +0 -0
  96. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/policy.py +0 -0
  97. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/templates.py +0 -0
  98. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/volumes.py +0 -0
  99. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/contract/wire.py +0 -0
  100. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/errors/__init__.py +0 -0
  101. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/errors/transport.py +0 -0
  102. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/obs/__init__.py +0 -0
  103. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/obs/log.py +0 -0
  104. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/obs/rid.py +0 -0
  105. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/presets/__init__.py +0 -0
  106. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/presets/frames.py +0 -0
  107. {sequence_base-0.4.12 → sequence_base-0.4.13}/sequence_base/telemetry/__init__.py +0 -0
  108. {sequence_base-0.4.12 → sequence_base-0.4.13}/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.12
3
+ Version: 0.4.13
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.12"
3
+ version = "0.4.13"
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"]
@@ -37,8 +37,6 @@ from sequence_base.contract import (
37
37
  ActionContract,
38
38
  ActionSpace,
39
39
  ActionStep,
40
- AdapterKind,
41
- AdapterTransform,
42
40
  Autoscaler,
43
41
  BenchmarkConditionSpec,
44
42
  BenchmarkRegisterRequest,
@@ -75,7 +73,6 @@ from sequence_base.contract import (
75
73
  ImageStepRun,
76
74
  ImageStepUvPip,
77
75
  Lease,
78
- LossyTransform,
79
76
  MetricAgg,
80
77
  Observation,
81
78
  PolicyRegistration,
@@ -145,8 +142,7 @@ __all__ = [
145
142
 
146
143
  "Variant", "Conditions", "RenderSpec", "ReplaySpec", "Step", "BenchmarkSpec", "BenchmarkConditionSpec", "BenchmarkRegisterRequest", "BenchmarkStatusResponse",
147
144
  "EvalRequest", "ClampInfo", "Estimate", "EvalResponse", "EvalDryRunResponse", "RolloutResult",
148
- "EvalStatus", "TaskAgg", "MetricAgg", "LossyTransform", "EvalReport",
149
- "AdapterKind", "AdapterTransform",
145
+ "EvalStatus", "TaskAgg", "MetricAgg", "EvalReport",
150
146
 
151
147
  "SecretRef", "SecretCreateRequest", "SecretInfo", "BootstrapResponse",
152
148
 
@@ -14,3 +14,8 @@ MAX_USD = 100_000
14
14
 
15
15
  TASK_DESCRIPTION_MAX = 300
16
16
 
17
+
18
+
19
+ METRIC_UNITS_MAX = 64
20
+ METRIC_UNIT_MAX = 16
21
+
@@ -4,7 +4,8 @@
4
4
 
5
5
 
6
6
 
7
- CONTRACT_VERSION = "0.5.11"
7
+ CONTRACT_VERSION = "0.5.12"
8
+
8
9
 
9
10
 
10
11
 
@@ -72,8 +72,6 @@ from sequence_base.contract.benchmarks import (
72
72
  Variant,
73
73
  )
74
74
  from sequence_base.contract.eval import (
75
- AdapterKind,
76
- AdapterTransform,
77
75
  ClampInfo,
78
76
  Estimate,
79
77
  EvalDryRunResponse,
@@ -81,7 +79,6 @@ from sequence_base.contract.eval import (
81
79
  EvalRequest,
82
80
  EvalResponse,
83
81
  EvalStatus,
84
- LossyTransform,
85
82
  MetricAgg,
86
83
  RolloutResult,
87
84
  TaskAgg,
@@ -133,8 +130,7 @@ __all__ = [
133
130
 
134
131
  "Variant", "Conditions", "RenderSpec", "ReplaySpec", "Step", "BenchmarkSpec", "BenchmarkConditionSpec", "BenchmarkRegisterRequest", "BenchmarkStatusResponse",
135
132
  "EvalRequest", "ClampInfo", "Estimate", "EvalResponse", "EvalDryRunResponse", "RolloutResult",
136
- "EvalStatus", "TaskAgg", "MetricAgg", "LossyTransform", "EvalReport",
137
- "AdapterKind", "AdapterTransform",
133
+ "EvalStatus", "TaskAgg", "MetricAgg", "EvalReport",
138
134
 
139
135
  "SecretRef", "SecretCreateRequest", "SecretInfo", "BootstrapResponse",
140
136
 
@@ -16,7 +16,7 @@ from typing import Literal
16
16
 
17
17
  from pydantic import BaseModel, ConfigDict, Field, model_validator
18
18
 
19
- from sequence_base.constants.limits import MAX_ENVS, TASK_DESCRIPTION_MAX
19
+ from sequence_base.constants.limits import MAX_ENVS, METRIC_UNIT_MAX, METRIC_UNITS_MAX, TASK_DESCRIPTION_MAX
20
20
  from sequence_base.contract.accounts import SecretRef
21
21
  from sequence_base.contract.deployments import CodeBundle, DeploymentState, InferParam
22
22
  from sequence_base.contract.flags import BENCHMARK_BATCHED, BENCHMARK_BINDABLE, SeqFlags
@@ -199,6 +199,14 @@ class BenchmarkRegisterRequest(BaseModel):
199
199
  seeds_repeat: bool | None = None
200
200
 
201
201
 
202
+
203
+ success_metric: str | None = Field(default=None, min_length=1, max_length=200)
204
+
205
+
206
+
207
+ metric_units: dict[str, str] = Field(default_factory=dict, max_length=METRIC_UNITS_MAX)
208
+
209
+
202
210
  action_contract: ActionContract | None = None
203
211
 
204
212
 
@@ -238,6 +246,15 @@ class BenchmarkRegisterRequest(BaseModel):
238
246
  raise ValueError(f"setup parameter {name!r} is not a public Python identifier")
239
247
  return self
240
248
 
249
+ @model_validator(mode="after")
250
+ def _metric_units(self) -> "BenchmarkRegisterRequest":
251
+ for metric, unit in self.metric_units.items():
252
+ if not metric or len(metric) > 200:
253
+ raise ValueError("metric_units names a metric of 1 to 200 characters")
254
+ if not unit.strip() or len(unit) > METRIC_UNIT_MAX:
255
+ raise ValueError(f"metric_units[{metric!r}] is a unit of 1 to {METRIC_UNIT_MAX} characters")
256
+ return self
257
+
241
258
  @model_validator(mode="after")
242
259
  def _task_descriptions(self) -> "BenchmarkRegisterRequest":
243
260
  """Each description names a task the benchmark declares - in `conditions` or `condition_list` - and is at most
@@ -32,10 +32,7 @@ __all__ = [
32
32
  "EvalStatus",
33
33
  "TaskAgg",
34
34
  "MetricAgg",
35
- "LossyTransform",
36
35
  "EvalReport",
37
- "AdapterKind",
38
- "AdapterTransform",
39
36
  ]
40
37
 
41
38
 
@@ -101,7 +98,6 @@ class EvalRequest(BaseModel):
101
98
 
102
99
 
103
100
  rerun_unsuccessful_of: str | None = Field(default=None, max_length=64)
104
- metric: str | None = Field(default=None, max_length=64)
105
101
 
106
102
 
107
103
 
@@ -304,16 +300,6 @@ class MetricAgg(BaseModel):
304
300
  n: int
305
301
 
306
302
 
307
- class LossyTransform(BaseModel):
308
- """A lossy adapter transform recorded in the report. Shape aligns with the lossy element of
309
- AdapterTransform (both {transform, reason})."""
310
-
311
- model_config = ConfigDict(extra="forbid")
312
-
313
- transform: str
314
- reason: str
315
-
316
-
317
303
  class ArmReport(BaseModel):
318
304
  """One arm of an eval (a model x one combination of swept inference parameters): its own metrics and episode
319
305
  counts, so arms are compared side by side and never pooled."""
@@ -388,7 +374,6 @@ class EvalReport(BaseModel):
388
374
  )
389
375
  cost_usd: float
390
376
  dashboard_url: str
391
- adapter_lossy: list[LossyTransform]
392
377
  videos: list[str] = Field(default_factory=list, description="mp4 pointers from the platform tool")
393
378
  incomplete: bool | None = None
394
379
  errors: list[str] = Field(
@@ -410,22 +395,9 @@ class EvalReport(BaseModel):
410
395
  arm_params: list[ArmParams] | None = None
411
396
 
412
397
 
413
- class AdapterKind(str, Enum):
414
- LOSSLESS = "lossless"
415
- LOSSY = "lossy"
416
-
417
398
 
399
+ units: dict[str, str] | None = None
418
400
 
419
401
 
420
402
 
421
-
422
-
423
- class AdapterTransform(BaseModel):
424
- """One adapter transform: its kind (lossless / lossy), the transform's name, and an optional reason. A registered
425
- adapter and an older eval report carry these fields; they are kept for compatibility and are no longer acted on."""
426
-
427
- model_config = ConfigDict(extra="forbid")
428
-
429
- kind: AdapterKind
430
- transform: str
431
- reason: str | None = None
403
+ success_metric: str | None = None
@@ -12,7 +12,6 @@ resolving to these same classes.
12
12
  """
13
13
  from __future__ import annotations
14
14
 
15
- import math
16
15
  from enum import Enum
17
16
  from typing import Any, Literal
18
17
 
@@ -38,12 +37,18 @@ class ImageFrame(BaseModel):
38
37
  default=None, description="rgb (the default) or depth: a 16-bit PNG of millimetres, 0 where there is no reading")
39
38
 
40
39
 
40
+
41
+
42
+
43
+
44
+
41
45
  class Proprioception(BaseModel):
42
- """Proprioceptive state. Only joint_positions is required; the rest is zero-padded per model."""
46
+ """Proprioceptive state. Every field is optional: a policy's observation contract (proprio) says which it reads,
47
+ and its worker requires those, each at its length."""
43
48
 
44
49
  model_config = ConfigDict(extra="forbid")
45
50
 
46
- joint_positions: list[float] = Field(..., description="Joint angles, in radians")
51
+ joint_positions: list[float] | None = Field(default=None, description="Joint angles, in radians")
47
52
  joint_velocities: list[float] | None = None
48
53
 
49
54
  end_effector_pose: list[float] | None = Field(default=None, min_length=7, max_length=7)
@@ -124,22 +129,8 @@ class ActionContract(BaseModel):
124
129
  bounds: list[tuple[float, float]] | None = Field(default=None, max_length=256)
125
130
  max_delta: float | list[float] | None = None
126
131
 
127
-
128
- on_violation: Literal["clip", "refuse"] | None = None
129
-
130
-
131
-
132
-
133
- binarize: dict[int, float] | None = Field(
134
- default=None, description="dimension -> threshold: the client gives the robot 1.0 above it, 0.0 otherwise")
135
-
136
132
  @model_validator(mode="after")
137
133
  def _limits_fit(self) -> "ActionContract":
138
- for d, threshold in (self.binarize or {}).items():
139
- if not 0 <= d < self.action_dim:
140
- raise ValueError(f"binarize names dimension {d}; action_dim is {self.action_dim}")
141
- if not math.isfinite(threshold):
142
- raise ValueError(f"binarize[{d}] is {threshold}, not a finite threshold")
143
134
  if self.bounds is not None:
144
135
  if len(self.bounds) != self.action_dim:
145
136
  raise ValueError(f"bounds has {len(self.bounds)} [low, high] pairs; action_dim is {self.action_dim}")
@@ -67,14 +67,12 @@ from sequence_base.contract.volumes import (
67
67
  VolumeUploadResponse,
68
68
  )
69
69
  from sequence_base.contract.eval import (
70
- AdapterTransform,
71
70
  ClampInfo,
72
71
  Estimate,
73
72
  EvalDryRunResponse,
74
73
  EvalReport,
75
74
  EvalRequest,
76
75
  EvalResponse,
77
- LossyTransform,
78
76
  MetricAgg,
79
77
  RolloutResult,
80
78
  TaskAgg,
@@ -168,9 +166,7 @@ WIRE_MODELS: dict[str, type[BaseModel]] = {
168
166
  "RolloutResult": RolloutResult,
169
167
  "TaskAgg": TaskAgg,
170
168
  "MetricAgg": MetricAgg,
171
- "LossyTransform": LossyTransform,
172
169
  "EvalReport": EvalReport,
173
- "AdapterTransform": AdapterTransform,
174
170
 
175
171
  "SecretRef": SecretRef,
176
172
  "SecretCreateRequest": SecretCreateRequest,
@@ -79,5 +79,5 @@
79
79
  ],
80
80
  "title": "ActRequest",
81
81
  "type": "object",
82
- "x-contract-version": "0.5.11"
82
+ "x-contract-version": "0.5.12"
83
83
  }
@@ -89,5 +89,5 @@
89
89
  ],
90
90
  "title": "ActResponse",
91
91
  "type": "object",
92
- "x-contract-version": "0.5.11"
92
+ "x-contract-version": "0.5.12"
93
93
  }
@@ -99,5 +99,5 @@
99
99
  ],
100
100
  "title": "ActionChunk",
101
101
  "type": "object",
102
- "x-contract-version": "0.5.11"
102
+ "x-contract-version": "0.5.12"
103
103
  }
@@ -23,22 +23,6 @@
23
23
  "action_space": {
24
24
  "$ref": "#/$defs/ActionSpace"
25
25
  },
26
- "binarize": {
27
- "anyOf": [
28
- {
29
- "additionalProperties": {
30
- "type": "number"
31
- },
32
- "type": "object"
33
- },
34
- {
35
- "type": "null"
36
- }
37
- ],
38
- "default": null,
39
- "description": "dimension -> threshold: the client gives the robot 1.0 above it, 0.0 otherwise",
40
- "title": "Binarize"
41
- },
42
26
  "bounds": {
43
27
  "anyOf": [
44
28
  {
@@ -87,22 +71,6 @@
87
71
  "default": null,
88
72
  "title": "Max Delta"
89
73
  },
90
- "on_violation": {
91
- "anyOf": [
92
- {
93
- "enum": [
94
- "clip",
95
- "refuse"
96
- ],
97
- "type": "string"
98
- },
99
- {
100
- "type": "null"
101
- }
102
- ],
103
- "default": null,
104
- "title": "On Violation"
105
- },
106
74
  "robot": {
107
75
  "title": "Robot",
108
76
  "type": "string"
@@ -116,5 +84,5 @@
116
84
  ],
117
85
  "title": "ActionContract",
118
86
  "type": "object",
119
- "x-contract-version": "0.5.11"
87
+ "x-contract-version": "0.5.12"
120
88
  }
@@ -19,5 +19,5 @@
19
19
  ],
20
20
  "title": "ActionStep",
21
21
  "type": "object",
22
- "x-contract-version": "0.5.11"
22
+ "x-contract-version": "0.5.12"
23
23
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "AddLocal",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.11"
26
+ "x-contract-version": "0.5.12"
27
27
  }
@@ -69,5 +69,5 @@
69
69
  },
70
70
  "title": "Autoscaler",
71
71
  "type": "object",
72
- "x-contract-version": "0.5.11"
72
+ "x-contract-version": "0.5.12"
73
73
  }
@@ -50,5 +50,5 @@
50
50
  ],
51
51
  "title": "BenchmarkConditionSpec",
52
52
  "type": "object",
53
- "x-contract-version": "0.5.11"
53
+ "x-contract-version": "0.5.12"
54
54
  }
@@ -11,22 +11,6 @@
11
11
  "action_space": {
12
12
  "$ref": "#/$defs/ActionSpace"
13
13
  },
14
- "binarize": {
15
- "anyOf": [
16
- {
17
- "additionalProperties": {
18
- "type": "number"
19
- },
20
- "type": "object"
21
- },
22
- {
23
- "type": "null"
24
- }
25
- ],
26
- "default": null,
27
- "description": "dimension -> threshold: the client gives the robot 1.0 above it, 0.0 otherwise",
28
- "title": "Binarize"
29
- },
30
14
  "bounds": {
31
15
  "anyOf": [
32
16
  {
@@ -75,22 +59,6 @@
75
59
  "default": null,
76
60
  "title": "Max Delta"
77
61
  },
78
- "on_violation": {
79
- "anyOf": [
80
- {
81
- "enum": [
82
- "clip",
83
- "refuse"
84
- ],
85
- "type": "string"
86
- },
87
- {
88
- "type": "null"
89
- }
90
- ],
91
- "default": null,
92
- "title": "On Violation"
93
- },
94
62
  "robot": {
95
63
  "title": "Robot",
96
64
  "type": "string"
@@ -876,6 +844,14 @@
876
844
  "default": null,
877
845
  "title": "Memory Gb"
878
846
  },
847
+ "metric_units": {
848
+ "additionalProperties": {
849
+ "type": "string"
850
+ },
851
+ "maxProperties": 64,
852
+ "title": "Metric Units",
853
+ "type": "object"
854
+ },
879
855
  "name": {
880
856
  "title": "Name",
881
857
  "type": "string"
@@ -942,6 +918,20 @@
942
918
  "default": null,
943
919
  "title": "Seeds Repeat"
944
920
  },
921
+ "success_metric": {
922
+ "anyOf": [
923
+ {
924
+ "maxLength": 200,
925
+ "minLength": 1,
926
+ "type": "string"
927
+ },
928
+ {
929
+ "type": "null"
930
+ }
931
+ ],
932
+ "default": null,
933
+ "title": "Success Metric"
934
+ },
945
935
  "task_descriptions": {
946
936
  "additionalProperties": {
947
937
  "type": "string"
@@ -972,5 +962,5 @@
972
962
  ],
973
963
  "title": "BenchmarkRegisterRequest",
974
964
  "type": "object",
975
- "x-contract-version": "0.5.11"
965
+ "x-contract-version": "0.5.12"
976
966
  }
@@ -368,7 +368,7 @@
368
368
  ],
369
369
  "title": "SeqFlags",
370
370
  "type": "integer",
371
- "x-contract-version": "0.5.11",
371
+ "x-contract-version": "0.5.12",
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.11"
628
+ "x-contract-version": "0.5.12"
629
629
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "BenchmarkStatusResponse",
42
42
  "type": "object",
43
- "x-contract-version": "0.5.11"
43
+ "x-contract-version": "0.5.12"
44
44
  }
@@ -79,5 +79,5 @@
79
79
  ],
80
80
  "title": "BootstrapResponse",
81
81
  "type": "object",
82
- "x-contract-version": "0.5.11"
82
+ "x-contract-version": "0.5.12"
83
83
  }
@@ -72,5 +72,5 @@
72
72
  ],
73
73
  "title": "Camera",
74
74
  "type": "object",
75
- "x-contract-version": "0.5.11"
75
+ "x-contract-version": "0.5.12"
76
76
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "ClampInfo",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.11"
26
+ "x-contract-version": "0.5.12"
27
27
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "CodeBundle",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.11"
26
+ "x-contract-version": "0.5.12"
27
27
  }
@@ -96,5 +96,5 @@
96
96
  },
97
97
  "title": "Concurrency",
98
98
  "type": "object",
99
- "x-contract-version": "0.5.11"
99
+ "x-contract-version": "0.5.12"
100
100
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "Conditions",
57
57
  "type": "object",
58
- "x-contract-version": "0.5.11"
58
+ "x-contract-version": "0.5.12"
59
59
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "ConnectRequest",
27
27
  "type": "object",
28
- "x-contract-version": "0.5.11"
28
+ "x-contract-version": "0.5.12"
29
29
  }
@@ -11,22 +11,6 @@
11
11
  "action_space": {
12
12
  "$ref": "#/$defs/ActionSpace"
13
13
  },
14
- "binarize": {
15
- "anyOf": [
16
- {
17
- "additionalProperties": {
18
- "type": "number"
19
- },
20
- "type": "object"
21
- },
22
- {
23
- "type": "null"
24
- }
25
- ],
26
- "default": null,
27
- "description": "dimension -> threshold: the client gives the robot 1.0 above it, 0.0 otherwise",
28
- "title": "Binarize"
29
- },
30
14
  "bounds": {
31
15
  "anyOf": [
32
16
  {
@@ -75,22 +59,6 @@
75
59
  "default": null,
76
60
  "title": "Max Delta"
77
61
  },
78
- "on_violation": {
79
- "anyOf": [
80
- {
81
- "enum": [
82
- "clip",
83
- "refuse"
84
- ],
85
- "type": "string"
86
- },
87
- {
88
- "type": "null"
89
- }
90
- ],
91
- "default": null,
92
- "title": "On Violation"
93
- },
94
62
  "robot": {
95
63
  "title": "Robot",
96
64
  "type": "string"
@@ -342,5 +310,5 @@
342
310
  ],
343
311
  "title": "ConnectResponse",
344
312
  "type": "object",
345
- "x-contract-version": "0.5.11"
313
+ "x-contract-version": "0.5.12"
346
314
  }
@@ -18,5 +18,5 @@
18
18
  ],
19
19
  "title": "DeploymentAccepted",
20
20
  "type": "object",
21
- "x-contract-version": "0.5.11"
21
+ "x-contract-version": "0.5.12"
22
22
  }