sequence-base 0.3.6__tar.gz → 0.3.8__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.
- {sequence_base-0.3.6 → sequence_base-0.3.8}/PKG-INFO +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/pyproject.toml +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/__init__.py +2 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/constants/version.py +3 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/__init__.py +2 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/benchmarks.py +2 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/deployments.py +21 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/eval.py +8 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/io.py +26 -2
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schema_export.py +2 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ActionContract.json +61 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/AdapterTransform.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Autoscaler.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/BenchmarkRegisterRequest.json +74 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/BenchmarkSpec.json +2 -2
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ClampInfo.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ConnectResponse.json +61 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/DeploymentPolicy.json +119 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/DeploymentRequest.json +119 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Embodiment.json +61 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/EvalReport.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/EvalRequest.json +66 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/EvalResponse.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ImageSpec.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ImageStepEnv.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ImageStepRun.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- sequence_base-0.3.8/sequence_base/schemas/InferParam.json +43 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Lease.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/LossyTransform.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/MetricAgg.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Observation.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/PolicyRegistration.json +62 -2
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/PolicySpec.json +61 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Proprioception.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Resources.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/SeqFlags.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/SuiteAgg.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/UsageReport.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/VolumeAttach.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/VolumeRef.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/WarmingError.json +1 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/tests/test_contracts.py +33 -1
- {sequence_base-0.3.6 → sequence_base-0.3.8}/.github/workflows/ci.yml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/.gitignore +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/README.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/README.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/REVIEW.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/START.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/accounts.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/billing.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/build/BUILD_LOG.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/build/goal_sha256.json +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/build/gs-build-wave.js +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/build/gs-spec-goals.js +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/container.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/contracts.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/deploy/PLAN.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/deploy/PROD_REORG.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/deploy/SCHEMA_COMPAT.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/deploy/archive/sequences-gw.genseq-506918.20261001.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/eval.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/gateway.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/A1.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/A2.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/A3.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/C1.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/C2.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/C3.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/C4.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/C5.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/G1.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/G2.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/G3.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/G4.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/G5.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/O1.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/O2.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/O3.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/O4.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/O5.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/R1.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/R2.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/R3.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/S1.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/S2.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/S3.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/S4.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/S5.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/S6.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/V1-storage.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/V2-user-quotas.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/W0.1.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/goals/W0.2.yaml +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/README.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/architecture.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/connect.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/cost.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/custom-domain.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/debugging.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/goals.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/limits.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/plan.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/white-label.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/modal/wiring.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/observability.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/references.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/docs/platform/sdk.md +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/auth.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/codec/resize.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/constants/env.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/flags.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/policy.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/telemetry/events.py +0 -0
- {sequence_base-0.3.6 → sequence_base-0.3.8}/tests/test_codec_roundtrip.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sequence-base
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.8
|
|
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
|
Requires-Python: >=3.11
|
|
6
6
|
Requires-Dist: pydantic>=2.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sequence-base"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.8"
|
|
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.11"
|
|
6
6
|
dependencies = ["pydantic>=2.0"]
|
|
@@ -44,6 +44,7 @@ from sequence_base.contract import ( # noqa: F401 (re-export surface)
|
|
|
44
44
|
ConnectResponse,
|
|
45
45
|
DeploymentAccepted,
|
|
46
46
|
DeploymentPolicy,
|
|
47
|
+
InferParam,
|
|
47
48
|
DeploymentRequest,
|
|
48
49
|
DeploymentState,
|
|
49
50
|
DeploymentStatusResponse,
|
|
@@ -122,7 +123,7 @@ __all__ = [
|
|
|
122
123
|
"PolicySpec", "PolicyRegistration",
|
|
123
124
|
# contract 2 — deployments
|
|
124
125
|
"MAX_CODE_BUNDLE_BYTES", "CodeBundle",
|
|
125
|
-
"Resources", "Autoscaler", "Timeouts", "VolumeAttach", "DeploymentPolicy", "DeploymentRequest",
|
|
126
|
+
"Resources", "Autoscaler", "Timeouts", "VolumeAttach", "DeploymentPolicy", "InferParam", "DeploymentRequest",
|
|
126
127
|
"DeploymentAccepted", "DeploymentState", "DeploymentStatusResponse",
|
|
127
128
|
# contract 3 — connect / lease
|
|
128
129
|
"Lease", "ConnectRequest", "ConnectResponse",
|
|
@@ -6,7 +6,9 @@ PROTOCOL_VERSION = "1"
|
|
|
6
6
|
# across deployments / repos can tell which version of a shape it is validating against. MUST change
|
|
7
7
|
# whenever any shared wire shape changes (a field added / removed / retyped) — that is what makes
|
|
8
8
|
# contract evolution mechanically detectable instead of eyeballed. Bump on any shape change.
|
|
9
|
-
CONTRACT_VERSION = "0.4.
|
|
9
|
+
CONTRACT_VERSION = "0.4.7" # 0.4.6 -> 0.4.7: ActionContract.bounds / max_delta / on_violation (action limits)
|
|
10
|
+
# previous: 0.4.6 # 0.4.5 -> 0.4.6: InferParam + DeploymentPolicy.params; EvalRequest.params / variants / record; BenchmarkRegisterRequest.gpu
|
|
11
|
+
# previous: 0.4.5 # 0.4.4 -> 0.4.5: BenchmarkRegisterRequest.condition_list / timeout_s / default_adapter_ref (+ BenchmarkConditionSpec); EvalRequest.tasks / max_usd / rerun_of
|
|
10
12
|
# previous: 0.4.4 # 0.4.3 -> 0.4.4: BenchmarkRegisterRequest.secrets (by name) + score (has @seq.score)
|
|
11
13
|
# previous: 0.4.3 # 0.4.2 -> 0.4.3: I/O contract — ObservationContract/Camera/Embodiment on PolicySpec + DeploymentPolicy, Observation.state, ConnectRequest.embodiment, ConnectResponse.action/observation/embodiment
|
|
12
14
|
# previous: 0.4.2 # 0.4.1 -> 0.4.2: 契约7 volumes (uploads: VolumeFile/VolumeUploadRequest/UploadTarget/VolumeUploadResponse/VolumeInfo), weights accept vol://<name>[@v<n>]; DeploymentRequest name is a slug and weights need an origin
|
|
@@ -39,6 +39,7 @@ from sequence_base.contract.deployments import (
|
|
|
39
39
|
CodeBundle,
|
|
40
40
|
DeploymentAccepted,
|
|
41
41
|
DeploymentPolicy,
|
|
42
|
+
InferParam,
|
|
42
43
|
DeploymentRequest,
|
|
43
44
|
DeploymentState,
|
|
44
45
|
DeploymentStatusResponse,
|
|
@@ -113,7 +114,7 @@ __all__ = [
|
|
|
113
114
|
"PolicySpec", "PolicyRegistration",
|
|
114
115
|
# contract 2
|
|
115
116
|
"MAX_CODE_BUNDLE_BYTES", "CodeBundle",
|
|
116
|
-
"Resources", "Autoscaler", "Timeouts", "VolumeAttach", "DeploymentPolicy", "DeploymentRequest",
|
|
117
|
+
"Resources", "Autoscaler", "Timeouts", "VolumeAttach", "DeploymentPolicy", "InferParam", "DeploymentRequest",
|
|
117
118
|
"DeploymentAccepted", "DeploymentState", "DeploymentStatusResponse",
|
|
118
119
|
# contract 3
|
|
119
120
|
"Lease", "ConnectRequest", "ConnectResponse",
|
|
@@ -166,6 +166,8 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
166
166
|
timeout_s: float | None = Field(default=None, gt=0)
|
|
167
167
|
# The adapter (module:Class in the benchmark's own code) an eval uses when it names none.
|
|
168
168
|
default_adapter_ref: str | None = None
|
|
169
|
+
# A GPU for each sim sandbox (a renderer or a GPU physics engine): a card name the platform offers. None: CPU.
|
|
170
|
+
gpu: str | None = Field(default=None, max_length=32)
|
|
169
171
|
|
|
170
172
|
|
|
171
173
|
class BenchmarkStatusResponse(BaseModel):
|
|
@@ -88,6 +88,17 @@ class VolumeAttach(BaseModel):
|
|
|
88
88
|
create_if_missing: bool
|
|
89
89
|
|
|
90
90
|
|
|
91
|
+
class InferParam(BaseModel):
|
|
92
|
+
"""One inference parameter the policy's `@seq.infer` declares — `def infer(self, obs, *, num_steps: int = 10)`
|
|
93
|
+
— with its type and default. An /act or an eval may set it; the worker passes only declared names, cast to
|
|
94
|
+
this type, and refuses any other. {gs-plans/customization/policy.md "四、推理行为"}"""
|
|
95
|
+
|
|
96
|
+
model_config = ConfigDict(extra="forbid")
|
|
97
|
+
|
|
98
|
+
type: Literal["int", "float", "bool", "str"]
|
|
99
|
+
default: int | float | bool | str | None = None
|
|
100
|
+
|
|
101
|
+
|
|
91
102
|
class DeploymentPolicy(BaseModel):
|
|
92
103
|
"""The policy block of the deployments body. `handler_ref` and `action` are required; `action` is the
|
|
93
104
|
fixed obs→ActionChunk contract, not a bare dict.
|
|
@@ -114,6 +125,16 @@ class DeploymentPolicy(BaseModel):
|
|
|
114
125
|
# robot. None (an older SDK) is treated as undeclared, so an older policy is never refused for the
|
|
115
126
|
# placeholder it never chose. {io-contract.md "旧 SDK 写的 POLICY 照样能 BUILD"}
|
|
116
127
|
action_declared: bool | None = None
|
|
128
|
+
# The inference parameters @seq.infer takes beyond the observation (name -> type, default). None: an older
|
|
129
|
+
# SDK that did not look; {}: the policy declares none.
|
|
130
|
+
params: dict[str, InferParam] | None = Field(default=None, max_length=32)
|
|
131
|
+
|
|
132
|
+
@model_validator(mode="after")
|
|
133
|
+
def _param_names(self) -> "DeploymentPolicy":
|
|
134
|
+
for name in self.params or {}:
|
|
135
|
+
if not name.isidentifier() or name.startswith("_"):
|
|
136
|
+
raise ValueError(f"inference parameter {name!r} is not a public Python identifier")
|
|
137
|
+
return self
|
|
117
138
|
|
|
118
139
|
|
|
119
140
|
MAX_CODE_BUNDLE_BYTES = 8 * 1024 * 1024
|
|
@@ -10,6 +10,7 @@ not a bare dict or free text.
|
|
|
10
10
|
from __future__ import annotations
|
|
11
11
|
|
|
12
12
|
from enum import Enum
|
|
13
|
+
from typing import Literal
|
|
13
14
|
|
|
14
15
|
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
15
16
|
|
|
@@ -53,6 +54,13 @@ class EvalRequest(BaseModel):
|
|
|
53
54
|
max_usd: float | None = Field(default=None, gt=0)
|
|
54
55
|
# Run again only the episodes of that earlier eval that errored; the report covers both runs.
|
|
55
56
|
rerun_of: str | None = None
|
|
57
|
+
# Inference parameters the model's @seq.infer declares, set for every /act of this eval.
|
|
58
|
+
params: dict[str, int | float | bool | str] | None = Field(default=None, max_length=32)
|
|
59
|
+
# Only the conditions whose variant takes one of these values on each named axis.
|
|
60
|
+
variants: dict[str, list[str]] | None = Field(default=None, max_length=32)
|
|
61
|
+
# Which episodes are recorded when the benchmark declares render=: the first seed of each task (default),
|
|
62
|
+
# every episode, or none.
|
|
63
|
+
record: Literal["per-task", "all", "none"] | None = None
|
|
56
64
|
|
|
57
65
|
|
|
58
66
|
class ClampInfo(BaseModel):
|
|
@@ -11,9 +11,9 @@ policy → accounts → connect would otherwise import back into policy.
|
|
|
11
11
|
"""
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
|
-
from typing import Any
|
|
14
|
+
from typing import Any, Literal
|
|
15
15
|
|
|
16
|
-
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
16
|
+
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
|
17
17
|
|
|
18
18
|
from sequence_base.contract.act import ActionSpace
|
|
19
19
|
|
|
@@ -28,6 +28,30 @@ class ActionContract(BaseModel):
|
|
|
28
28
|
action_space: ActionSpace
|
|
29
29
|
action_dim: int
|
|
30
30
|
control_frequency_hz: float
|
|
31
|
+
# Safety limits, enforced by the worker on every chunk before it leaves and by the robot client again before it
|
|
32
|
+
# executes: each dimension's [low, high], and the largest change between consecutive steps (one number for every
|
|
33
|
+
# dimension, or one per dimension). None: unchecked. {gs-plans/customization/deployment.md "五、安全:动作限位"}
|
|
34
|
+
bounds: list[tuple[float, float]] | None = Field(default=None, max_length=256)
|
|
35
|
+
max_delta: float | list[float] | None = None
|
|
36
|
+
# What a chunk outside them gets: "clip" (the default when None) — clipped into them, each clipped step and
|
|
37
|
+
# dimension named in the response's warnings — or "refuse": the worker answers 500 bounds_violation instead.
|
|
38
|
+
on_violation: Literal["clip", "refuse"] | None = None
|
|
39
|
+
|
|
40
|
+
@model_validator(mode="after")
|
|
41
|
+
def _limits_fit(self) -> "ActionContract":
|
|
42
|
+
if self.bounds is not None:
|
|
43
|
+
if len(self.bounds) != self.action_dim:
|
|
44
|
+
raise ValueError(f"bounds has {len(self.bounds)} [low, high] pairs; action_dim is {self.action_dim}")
|
|
45
|
+
for i, (low, high) in enumerate(self.bounds):
|
|
46
|
+
if low > high:
|
|
47
|
+
raise ValueError(f"bounds[{i}] has low {low} above high {high}")
|
|
48
|
+
if self.max_delta is not None:
|
|
49
|
+
deltas = self.max_delta if isinstance(self.max_delta, list) else [self.max_delta]
|
|
50
|
+
if isinstance(self.max_delta, list) and len(deltas) != self.action_dim:
|
|
51
|
+
raise ValueError(f"max_delta has {len(deltas)} values; action_dim is {self.action_dim}")
|
|
52
|
+
if any(d <= 0 for d in deltas):
|
|
53
|
+
raise ValueError("max_delta must be positive")
|
|
54
|
+
return self
|
|
31
55
|
|
|
32
56
|
|
|
33
57
|
# The proprioception fields an observation contract may require, with the wire field each one names.
|
|
@@ -50,6 +50,7 @@ from sequence_base.contract.deployments import (
|
|
|
50
50
|
CodeBundle,
|
|
51
51
|
DeploymentAccepted,
|
|
52
52
|
DeploymentPolicy,
|
|
53
|
+
InferParam,
|
|
53
54
|
DeploymentRequest,
|
|
54
55
|
DeploymentStatusResponse,
|
|
55
56
|
Resources,
|
|
@@ -129,6 +130,7 @@ WIRE_MODELS: dict[str, type[BaseModel]] = {
|
|
|
129
130
|
"VolumeAttach": VolumeAttach,
|
|
130
131
|
"CodeBundle": CodeBundle,
|
|
131
132
|
"DeploymentPolicy": DeploymentPolicy,
|
|
133
|
+
"InferParam": InferParam,
|
|
132
134
|
"DeploymentRequest": DeploymentRequest,
|
|
133
135
|
"DeploymentAccepted": DeploymentAccepted,
|
|
134
136
|
"DeploymentStatusResponse": DeploymentStatusResponse,
|
|
@@ -22,10 +22,70 @@
|
|
|
22
22
|
"action_space": {
|
|
23
23
|
"$ref": "#/$defs/ActionSpace"
|
|
24
24
|
},
|
|
25
|
+
"bounds": {
|
|
26
|
+
"anyOf": [
|
|
27
|
+
{
|
|
28
|
+
"items": {
|
|
29
|
+
"maxItems": 2,
|
|
30
|
+
"minItems": 2,
|
|
31
|
+
"prefixItems": [
|
|
32
|
+
{
|
|
33
|
+
"type": "number"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "number"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"type": "array"
|
|
40
|
+
},
|
|
41
|
+
"maxItems": 256,
|
|
42
|
+
"type": "array"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "null"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"default": null,
|
|
49
|
+
"title": "Bounds"
|
|
50
|
+
},
|
|
25
51
|
"control_frequency_hz": {
|
|
26
52
|
"title": "Control Frequency Hz",
|
|
27
53
|
"type": "number"
|
|
28
54
|
},
|
|
55
|
+
"max_delta": {
|
|
56
|
+
"anyOf": [
|
|
57
|
+
{
|
|
58
|
+
"type": "number"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"items": {
|
|
62
|
+
"type": "number"
|
|
63
|
+
},
|
|
64
|
+
"type": "array"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "null"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"default": null,
|
|
71
|
+
"title": "Max Delta"
|
|
72
|
+
},
|
|
73
|
+
"on_violation": {
|
|
74
|
+
"anyOf": [
|
|
75
|
+
{
|
|
76
|
+
"enum": [
|
|
77
|
+
"clip",
|
|
78
|
+
"refuse"
|
|
79
|
+
],
|
|
80
|
+
"type": "string"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"type": "null"
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"default": null,
|
|
87
|
+
"title": "On Violation"
|
|
88
|
+
},
|
|
29
89
|
"robot": {
|
|
30
90
|
"title": "Robot",
|
|
31
91
|
"type": "string"
|
|
@@ -39,5 +99,5 @@
|
|
|
39
99
|
],
|
|
40
100
|
"title": "ActionContract",
|
|
41
101
|
"type": "object",
|
|
42
|
-
"x-contract-version": "0.4.
|
|
102
|
+
"x-contract-version": "0.4.7"
|
|
43
103
|
}
|
{sequence_base-0.3.6 → sequence_base-0.3.8}/sequence_base/schemas/BenchmarkRegisterRequest.json
RENAMED
|
@@ -11,10 +11,70 @@
|
|
|
11
11
|
"action_space": {
|
|
12
12
|
"$ref": "#/$defs/ActionSpace"
|
|
13
13
|
},
|
|
14
|
+
"bounds": {
|
|
15
|
+
"anyOf": [
|
|
16
|
+
{
|
|
17
|
+
"items": {
|
|
18
|
+
"maxItems": 2,
|
|
19
|
+
"minItems": 2,
|
|
20
|
+
"prefixItems": [
|
|
21
|
+
{
|
|
22
|
+
"type": "number"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "number"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"type": "array"
|
|
29
|
+
},
|
|
30
|
+
"maxItems": 256,
|
|
31
|
+
"type": "array"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "null"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"default": null,
|
|
38
|
+
"title": "Bounds"
|
|
39
|
+
},
|
|
14
40
|
"control_frequency_hz": {
|
|
15
41
|
"title": "Control Frequency Hz",
|
|
16
42
|
"type": "number"
|
|
17
43
|
},
|
|
44
|
+
"max_delta": {
|
|
45
|
+
"anyOf": [
|
|
46
|
+
{
|
|
47
|
+
"type": "number"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "number"
|
|
52
|
+
},
|
|
53
|
+
"type": "array"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"default": null,
|
|
60
|
+
"title": "Max Delta"
|
|
61
|
+
},
|
|
62
|
+
"on_violation": {
|
|
63
|
+
"anyOf": [
|
|
64
|
+
{
|
|
65
|
+
"enum": [
|
|
66
|
+
"clip",
|
|
67
|
+
"refuse"
|
|
68
|
+
],
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"type": "null"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"default": null,
|
|
76
|
+
"title": "On Violation"
|
|
77
|
+
},
|
|
18
78
|
"robot": {
|
|
19
79
|
"title": "Robot",
|
|
20
80
|
"type": "string"
|
|
@@ -446,6 +506,19 @@
|
|
|
446
506
|
"default": null,
|
|
447
507
|
"title": "Default Adapter Ref"
|
|
448
508
|
},
|
|
509
|
+
"gpu": {
|
|
510
|
+
"anyOf": [
|
|
511
|
+
{
|
|
512
|
+
"maxLength": 32,
|
|
513
|
+
"type": "string"
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"type": "null"
|
|
517
|
+
}
|
|
518
|
+
],
|
|
519
|
+
"default": null,
|
|
520
|
+
"title": "Gpu"
|
|
521
|
+
},
|
|
449
522
|
"handler_ref": {
|
|
450
523
|
"title": "Handler Ref",
|
|
451
524
|
"type": "string"
|
|
@@ -526,5 +599,5 @@
|
|
|
526
599
|
],
|
|
527
600
|
"title": "BenchmarkRegisterRequest",
|
|
528
601
|
"type": "object",
|
|
529
|
-
"x-contract-version": "0.4.
|
|
602
|
+
"x-contract-version": "0.4.7"
|
|
530
603
|
}
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
],
|
|
208
208
|
"title": "SeqFlags",
|
|
209
209
|
"type": "integer",
|
|
210
|
-
"x-contract-version": "0.4.
|
|
210
|
+
"x-contract-version": "0.4.7",
|
|
211
211
|
"x-flag-names": {
|
|
212
212
|
"CHECK": 65536,
|
|
213
213
|
"INFER": 16,
|
|
@@ -397,5 +397,5 @@
|
|
|
397
397
|
],
|
|
398
398
|
"title": "BenchmarkSpec",
|
|
399
399
|
"type": "object",
|
|
400
|
-
"x-contract-version": "0.4.
|
|
400
|
+
"x-contract-version": "0.4.7"
|
|
401
401
|
}
|
|
@@ -11,10 +11,70 @@
|
|
|
11
11
|
"action_space": {
|
|
12
12
|
"$ref": "#/$defs/ActionSpace"
|
|
13
13
|
},
|
|
14
|
+
"bounds": {
|
|
15
|
+
"anyOf": [
|
|
16
|
+
{
|
|
17
|
+
"items": {
|
|
18
|
+
"maxItems": 2,
|
|
19
|
+
"minItems": 2,
|
|
20
|
+
"prefixItems": [
|
|
21
|
+
{
|
|
22
|
+
"type": "number"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "number"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"type": "array"
|
|
29
|
+
},
|
|
30
|
+
"maxItems": 256,
|
|
31
|
+
"type": "array"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "null"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"default": null,
|
|
38
|
+
"title": "Bounds"
|
|
39
|
+
},
|
|
14
40
|
"control_frequency_hz": {
|
|
15
41
|
"title": "Control Frequency Hz",
|
|
16
42
|
"type": "number"
|
|
17
43
|
},
|
|
44
|
+
"max_delta": {
|
|
45
|
+
"anyOf": [
|
|
46
|
+
{
|
|
47
|
+
"type": "number"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "number"
|
|
52
|
+
},
|
|
53
|
+
"type": "array"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"default": null,
|
|
60
|
+
"title": "Max Delta"
|
|
61
|
+
},
|
|
62
|
+
"on_violation": {
|
|
63
|
+
"anyOf": [
|
|
64
|
+
{
|
|
65
|
+
"enum": [
|
|
66
|
+
"clip",
|
|
67
|
+
"refuse"
|
|
68
|
+
],
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"type": "null"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"default": null,
|
|
76
|
+
"title": "On Violation"
|
|
77
|
+
},
|
|
18
78
|
"robot": {
|
|
19
79
|
"title": "Robot",
|
|
20
80
|
"type": "string"
|
|
@@ -221,5 +281,5 @@
|
|
|
221
281
|
],
|
|
222
282
|
"title": "ConnectResponse",
|
|
223
283
|
"type": "object",
|
|
224
|
-
"x-contract-version": "0.4.
|
|
284
|
+
"x-contract-version": "0.4.7"
|
|
225
285
|
}
|