sequence-base 0.3.24__tar.gz → 0.3.26__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 (106) hide show
  1. {sequence_base-0.3.24 → sequence_base-0.3.26}/PKG-INFO +1 -1
  2. {sequence_base-0.3.24 → sequence_base-0.3.26}/pyproject.toml +1 -1
  3. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/auth.py +2 -2
  4. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/constants/env.py +1 -1
  5. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/constants/version.py +4 -2
  6. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/accounts.py +4 -5
  7. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/deployments.py +3 -3
  8. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/eval.py +8 -2
  9. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/volumes.py +0 -1
  10. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ActRequest.json +1 -1
  11. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ActResponse.json +1 -1
  12. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ActionChunk.json +1 -1
  13. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ActionContract.json +1 -1
  14. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ActionStep.json +1 -1
  15. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/AdapterTransform.json +1 -1
  16. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/AddLocal.json +1 -1
  17. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Autoscaler.json +1 -1
  18. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
  19. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/BenchmarkRegisterRequest.json +2 -2
  20. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/BenchmarkSpec.json +3 -3
  21. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
  22. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/BootstrapResponse.json +2 -2
  23. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Camera.json +1 -1
  24. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ClampInfo.json +1 -1
  25. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/CodeBundle.json +1 -1
  26. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Concurrency.json +1 -1
  27. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Conditions.json +1 -1
  28. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ConnectRequest.json +1 -1
  29. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ConnectResponse.json +1 -1
  30. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/DeploymentAccepted.json +1 -1
  31. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/DeploymentPolicy.json +2 -2
  32. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/DeploymentRequest.json +2 -2
  33. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
  34. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Embodiment.json +1 -1
  35. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ErrorBody.json +1 -1
  36. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ErrorCodes.json +1 -1
  37. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Estimate.json +13 -1
  38. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/EvalDryRunResponse.json +13 -1
  39. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/EvalReport.json +4 -3
  40. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/EvalRequest.json +1 -1
  41. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/EvalResponse.json +13 -1
  42. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ImageFrame.json +1 -1
  43. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ImageSpec.json +2 -2
  44. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
  45. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ImageStepApt.json +1 -1
  46. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ImageStepEnv.json +1 -1
  47. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ImageStepRun.json +2 -2
  48. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ImageStepUvPip.json +1 -1
  49. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/InferParam.json +1 -1
  50. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Lease.json +1 -1
  51. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/LossyTransform.json +1 -1
  52. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/MetricAgg.json +1 -1
  53. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Observation.json +1 -1
  54. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/ObservationContract.json +1 -1
  55. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/PolicyRegistration.json +3 -3
  56. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/PolicySpec.json +2 -2
  57. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Proprioception.json +1 -1
  58. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/RenderSpec.json +1 -1
  59. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Resources.json +1 -1
  60. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/RolloutResult.json +1 -1
  61. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/SecretCreateRequest.json +2 -2
  62. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/SecretInfo.json +1 -1
  63. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/SecretRef.json +2 -2
  64. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/SeqFlags.json +1 -1
  65. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Step.json +1 -1
  66. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/SuiteAgg.json +1 -1
  67. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/TaskAgg.json +1 -1
  68. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Timeouts.json +1 -1
  69. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/UploadTarget.json +1 -1
  70. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/UsageReport.json +2 -2
  71. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/Variant.json +1 -1
  72. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/VolumeAttach.json +1 -1
  73. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/VolumeFile.json +1 -1
  74. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/VolumeInfo.json +1 -1
  75. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/VolumeMount.json +1 -1
  76. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/VolumeRef.json +1 -1
  77. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
  78. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
  79. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schemas/WarmingError.json +1 -1
  80. {sequence_base-0.3.24 → sequence_base-0.3.26}/.gitignore +0 -0
  81. {sequence_base-0.3.24 → sequence_base-0.3.26}/README.md +0 -0
  82. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/__init__.py +0 -0
  83. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/codec/__init__.py +0 -0
  84. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/codec/image.py +0 -0
  85. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/constants/__init__.py +0 -0
  86. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/constants/headers.py +0 -0
  87. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/__init__.py +0 -0
  88. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/act.py +0 -0
  89. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/benchmarks.py +0 -0
  90. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/connect.py +0 -0
  91. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/errors.py +0 -0
  92. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/flags.py +0 -0
  93. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/io.py +0 -0
  94. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/policy.py +0 -0
  95. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/templates.py +0 -0
  96. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/contract/wire.py +0 -0
  97. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/errors/__init__.py +0 -0
  98. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/errors/transport.py +0 -0
  99. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/obs/__init__.py +0 -0
  100. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/obs/log.py +0 -0
  101. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/obs/rid.py +0 -0
  102. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/presets/__init__.py +0 -0
  103. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/presets/robot_arm.py +0 -0
  104. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/schema_export.py +0 -0
  105. {sequence_base-0.3.24 → sequence_base-0.3.26}/sequence_base/telemetry/__init__.py +0 -0
  106. {sequence_base-0.3.24 → sequence_base-0.3.26}/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.3.24
3
+ Version: 0.3.26
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.10
6
6
  Requires-Dist: pydantic>=2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sequence-base"
3
- version = "0.3.24"
3
+ version = "0.3.26"
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
  # 3.10, not 3.11: `seq` (which imports this) must run on ROS 2 Humble's Python 3.10, and nothing here needs 3.11.
6
6
  # {2026-10-03 the full suite on CPython 3.10.20: "147 PASSED"; vermin --eval-annotations: "MINIMUM REQUIRED VERSIONS: 3.9"}
@@ -2,8 +2,8 @@
2
2
  Bearer-token auth helpers — one implementation of the direct-connect / internal secret check.
3
3
 
4
4
  Three consumers, one rule: the container's inbound guard on a directly-exposed pod's /act, the
5
- gateway's SEQ_DIRECT_SECRET issuance + its /v1/internal/worker-log secret check, and the worker's
6
- emit() which builds the outbound header. compare_digest, not `==`, everywhere — a wrong secret must
5
+ gateway's issuance of that secret and its check of a worker's own reports, and the worker's emit() which
6
+ builds the outbound header. compare_digest, not `==`, everywhere — a wrong secret must
7
7
  not be recoverable from response timing.
8
8
  """
9
9
  from __future__ import annotations
@@ -1,7 +1,7 @@
1
1
  """SEQ_* environment variable NAMES — a single source. Values live in ~/.config/sequences/, never here."""
2
2
 
3
3
  DIRECT_SECRET = "SEQ_DIRECT_SECRET" # inbound /act auth on a public pod
4
- INTERNAL_SECRET = "SEQ_INTERNAL_SECRET" # auth for container → gateway telemetry
4
+ INTERNAL_SECRET = "SEQ_INTERNAL_SECRET" # auth for a worker's own reports
5
5
  GATEWAY_URL = "SEQ_GATEWAY_URL" # where the container sends telemetry
6
6
  VOLUME_ROOT = "SEQ_VOLUME_ROOT" # where fetched weights land
7
7
  MANIFEST = "SEQ_MANIFEST" # the policy manifest a container serves
@@ -4,13 +4,15 @@
4
4
  # across deployments / repos can tell which version of a shape it is validating against. MUST change
5
5
  # whenever any shared wire shape changes (a field added / removed / retyped) — that is what makes
6
6
  # contract evolution mechanically detectable instead of eyeballed. Bump on any shape change.
7
- CONTRACT_VERSION = "0.4.21" # 0.4.20 -> 0.4.21: InferParam.min / max / choices — the values an inference parameter allows (seq.Range / seq.OneOf), refused before inference outside them; None, left off the wire, as before (gs-plans deploy-serving/35)
7
+ CONTRACT_VERSION = "0.4.23" # 0.4.22 -> 0.4.23: Estimate.held_usd — what an eval holds from the balance when it differs from the estimate (the estimate on each machine's first card, the hold on its costliest; gs-plans inbox/audit-2026-10-07 B4)
8
+ # previous: 0.4.22 # 0.4.21 -> 0.4.22: ParamUsed.source "deployment" — an eval of a policy runs with the default its deployment sets (`seq policy params`), and its report says so (gs-plans deploy-serving/35)
9
+ # previous: 0.4.21 # 0.4.20 -> 0.4.21: InferParam.min / max / choices — the values an inference parameter allows (seq.Range / seq.OneOf), refused before inference outside them; None, left off the wire, as before (gs-plans deploy-serving/35)
8
10
  # previous: 0.4.20 # 0.4.19 -> 0.4.20: BenchmarkRegisterRequest.params — the parameters a benchmark's @seq.setup declares (InferParam: type and default), which an eval may set; EvalReport.arm_params — per arm each parameter's value and source, and the steps that asked the policy of all it took (gs-plans eval-adapters/36)
9
11
  # previous: 0.4.19 # 0.4.18 -> 0.4.19: RenderSpec.flip — how the platform turns a recorded camera's frames before encoding ("vertical" / "horizontal" / "both"; None, left off the wire, as drawn), declared once by the benchmark's author (seq.Record(flip=...)); gs-plans benchmarks
10
12
  # previous: 0.4.18 # 0.4.17 -> 0.4.18: DeploymentPolicy.models — the platform models a policy calls while it runs (catalogue ids), which the act key driving it may call on /v1/chat and /v1/decide (gs-plans models-api/11)
11
13
  # previous: 0.4.17 # 0.4.16 -> 0.4.17: weights optional — PolicySpec.weights, DeploymentRequest.weights and BootstrapResponse.weights_uri may be None, for a policy without a checkpoint (nothing copied or mounted; gs-plans storage T13)
12
14
  # previous: 0.4.16 # 0.4.15 -> 0.4.16: batched benchmarks — SeqFlags.OBSERVE / STEP, BenchmarkSpec / BenchmarkRegisterRequest.envs and .batched; per-arm eval reports — EvalReport.arms / paired / timing / stop_reason, EvalStatus.CANCELED, Estimate.breakdown / default_timing, EvalResponse.arms, EvalDryRunResponse.layout / notes
13
- # previous: 0.4.15 # 0.4.14 -> 0.4.15: limits count GPUs and CPU/memory are billed like Modal — Resources.cpu / memory_gb optional floats + cpu_limit / memory_limit_gb; Autoscaler.max_gpus / on_full / queue_timeout_s replace max_containers; Concurrency fields optional + replicas_per_gpu / gpus_per_replica; DeploymentStatusResponse.reason; EvalRequest.policy_instances / policy_gpu / benchmark_instances / benchmark_gpu / envs replace gpus / envs_per_gpu; EvalStatus.QUEUED; EvalCards / EvalQueue
15
+ # previous: 0.4.15 # 0.4.14 -> 0.4.15: limits count GPUs and CPU/memory are billed per second — Resources.cpu / memory_gb optional floats + cpu_limit / memory_limit_gb; Autoscaler.max_gpus / on_full / queue_timeout_s replace max_containers; Concurrency fields optional + replicas_per_gpu / gpus_per_replica; DeploymentStatusResponse.reason; EvalRequest.policy_instances / policy_gpu / benchmark_instances / benchmark_gpu / envs replace gpus / envs_per_gpu; EvalStatus.QUEUED; EvalCards / EvalQueue
14
16
  # previous: 0.4.14 # 0.4.13 -> 0.4.14: the /act wire is opaque (ActRequest.inputs / ActResponse.outputs); action / observation contracts optional + DeploymentPolicy/PolicySpec/ConnectResponse .io; the robot-arm types live in sequence_base.presets.robot_arm (contract.act / contract.io re-export them); ImageStepAddLocal (seq.Image.add_local_*); ActionSpace.JOINT_VELOCITY (pi0.5 DROID's joint velocities + gripper position)
15
17
  # previous: 0.4.13 # 0.4.12 -> 0.4.13: template://<name>[@v<n>] — official template weights (parse_template); gs:// / s3:// / https:// still accepted until their removal
16
18
  # previous: 0.4.12 # 0.4.11 -> 0.4.12: one error definition — ErrorBody is every non-2xx body (detail, code, retryable, retry_after_s, request_id, hint, details), ErrorCode covers every case, ERRORS / ErrorCodes.json give each code its status, retryability, SDK class and CLI exit code
@@ -29,7 +29,7 @@ __all__ = [
29
29
 
30
30
  class SecretRef(BaseModel):
31
31
  """A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the
32
- value lives in Secret Manager and is injected at worker bootstrap. Never carries a value."""
32
+ platform keeps the value and injects it when a worker starts. Never carries a value."""
33
33
 
34
34
  model_config = ConfigDict(extra="forbid")
35
35
 
@@ -37,7 +37,7 @@ class SecretRef(BaseModel):
37
37
 
38
38
 
39
39
  class SecretCreateRequest(BaseModel):
40
- """POST /v1/secrets — one name = one group of env values (e.g. openrouter = {OPENROUTER_API_KEY}).
40
+ """POST /v1/secrets — one name = one group of env values (e.g. planner = {PLANNER_API_KEY}).
41
41
  `env` carries plaintext values; this is the WRITE-direction allow-list field (goal 15)."""
42
42
 
43
43
  # F6: write-direction plaintext carrier — hide_input_in_errors so a malformed body's ValidationError
@@ -64,8 +64,7 @@ class SecretInfo(BaseModel):
64
64
 
65
65
 
66
66
  class BootstrapResponse(BaseModel):
67
- """POST /v1/internal/bootstrap (worker instance-identity JWT) — everything a worker needs to serve
68
- direct TLS `/act`. `direct_secret` + `tls_key` are DOWN-direction platform secrets; `env` is the
67
+ """What a worker receives when it starts — everything it needs to serve direct TLS `/act`. `direct_secret` + `tls_key` are DOWN-direction platform secrets; `env` is the
69
68
  WRITE-direction injection of the policy's declared user secrets into its subprocess (goal 15)."""
70
69
 
71
70
  # F6: carries down-direction platform secrets + write-direction user env — hide_input_in_errors so a
@@ -82,7 +81,7 @@ class BootstrapResponse(BaseModel):
82
81
 
83
82
 
84
83
  class UsageReport(BaseModel):
85
- """POST /v1/internal/usage — the worker's async metering report. Carries counts only, no secrets.
84
+ """A worker's metering report, sent as it serves. Carries counts only, no secrets.
86
85
  This usage shape is defined here (sequence-base) once, so gateway and worker cannot drift."""
87
86
 
88
87
  model_config = ConfigDict(extra="forbid")
@@ -52,9 +52,9 @@ class Resources(BaseModel):
52
52
  model_config = ConfigDict(extra="forbid")
53
53
 
54
54
  gpu: list[str]
55
- # Physical cores and GiB the worker requests, billed like Modal: per second, at the greater of the request and what
56
- # it uses. None requests the minimum (0.125 cores, 0.125 GiB) and the worker may use more. A limit caps what it may
57
- # use; None leaves it free to burst. {gs-plans/parallel/cpu-memory.md "4. 默认申请量照 Modal"}
55
+ # Physical cores and GiB the worker requests, billed per second at the greater of the request and what it uses.
56
+ # None requests the minimum (0.125 cores, 0.125 GiB) and the worker may use more. A limit caps what it may use;
57
+ # None leaves it free to burst.
58
58
  cpu: float | None = Field(default=None, ge=0.125, le=64)
59
59
  cpu_limit: float | None = Field(default=None, ge=0.125, le=128)
60
60
  memory_gb: float | None = Field(default=None, ge=0.125, le=1024)
@@ -102,6 +102,10 @@ class Estimate(BaseModel):
102
102
  breakdown: dict[str, float] | None = None
103
103
  # True when no run of this benchmark version has been measured yet and the estimate uses the default step time.
104
104
  default_timing: bool | None = None
105
+ # What is held from the balance while the eval runs, when it differs from the estimate: the estimate prices each
106
+ # machine on the first card of its list (where it starts when one is free), the hold on the costliest (the most it
107
+ # can come to), with the reserve buffer, at most max_usd. None from a gateway before contract 0.4.23.
108
+ held_usd: float | None = None
105
109
 
106
110
 
107
111
  class EvalResponse(BaseModel):
@@ -277,12 +281,14 @@ class ArmReport(BaseModel):
277
281
 
278
282
  class ParamUsed(BaseModel):
279
283
  """One parameter's value in an arm, and who gave it: the eval (`cli`), the default its declaring side wrote
280
- (`policy` / `adapter` / `benchmark`), or the platform's own (`platform`). {gs-plans/eval-adapters/36}"""
284
+ (`policy` / `adapter` / `benchmark`), the platform's own (`platform`), or the default the policy's deployment
285
+ sets for every session (`deployment`: `seq policy params <name> k=v`, over the policy's own).
286
+ {gs-plans/eval-adapters/36, deploy-serving/35}"""
281
287
 
282
288
  model_config = ConfigDict(extra="forbid")
283
289
 
284
290
  value: int | float | bool | str | None = None
285
- source: Literal["cli", "policy", "adapter", "benchmark", "platform"]
291
+ source: Literal["cli", "policy", "adapter", "benchmark", "platform", "deployment"]
286
292
 
287
293
 
288
294
  class ArmParams(BaseModel):
@@ -10,7 +10,6 @@ WHY direct-to-storage targets rather than streaming through the API: a checkpoin
10
10
  host caps a request body at 32 MiB and would carry every byte twice. WHY the md5 list up front: the commit can
11
11
  then prove the platform holds exactly the bytes the client had — a truncated or corrupted upload is refused
12
12
  instead of becoming the weights a robot runs on.
13
- {gs-plans/customization/volumes.md "上传流程" + "为什么不直接上传进 MODAL VOLUME"}
14
13
  """
15
14
  from __future__ import annotations
16
15
 
@@ -65,5 +65,5 @@
65
65
  ],
66
66
  "title": "ActRequest",
67
67
  "type": "object",
68
- "x-contract-version": "0.4.21"
68
+ "x-contract-version": "0.4.23"
69
69
  }
@@ -75,5 +75,5 @@
75
75
  ],
76
76
  "title": "ActResponse",
77
77
  "type": "object",
78
- "x-contract-version": "0.4.21"
78
+ "x-contract-version": "0.4.23"
79
79
  }
@@ -99,5 +99,5 @@
99
99
  ],
100
100
  "title": "ActionChunk",
101
101
  "type": "object",
102
- "x-contract-version": "0.4.21"
102
+ "x-contract-version": "0.4.23"
103
103
  }
@@ -100,5 +100,5 @@
100
100
  ],
101
101
  "title": "ActionContract",
102
102
  "type": "object",
103
- "x-contract-version": "0.4.21"
103
+ "x-contract-version": "0.4.23"
104
104
  }
@@ -19,5 +19,5 @@
19
19
  ],
20
20
  "title": "ActionStep",
21
21
  "type": "object",
22
- "x-contract-version": "0.4.21"
22
+ "x-contract-version": "0.4.23"
23
23
  }
@@ -38,5 +38,5 @@
38
38
  ],
39
39
  "title": "AdapterTransform",
40
40
  "type": "object",
41
- "x-contract-version": "0.4.21"
41
+ "x-contract-version": "0.4.23"
42
42
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "AddLocal",
25
25
  "type": "object",
26
- "x-contract-version": "0.4.21"
26
+ "x-contract-version": "0.4.23"
27
27
  }
@@ -69,5 +69,5 @@
69
69
  },
70
70
  "title": "Autoscaler",
71
71
  "type": "object",
72
- "x-contract-version": "0.4.21"
72
+ "x-contract-version": "0.4.23"
73
73
  }
@@ -62,5 +62,5 @@
62
62
  ],
63
63
  "title": "BenchmarkConditionSpec",
64
64
  "type": "object",
65
- "x-contract-version": "0.4.21"
65
+ "x-contract-version": "0.4.23"
66
66
  }
@@ -558,7 +558,7 @@
558
558
  },
559
559
  "SecretRef": {
560
560
  "additionalProperties": false,
561
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
561
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
562
562
  "properties": {
563
563
  "name": {
564
564
  "title": "Name",
@@ -836,5 +836,5 @@
836
836
  ],
837
837
  "title": "BenchmarkRegisterRequest",
838
838
  "type": "object",
839
- "x-contract-version": "0.4.21"
839
+ "x-contract-version": "0.4.23"
840
840
  }
@@ -264,7 +264,7 @@
264
264
  },
265
265
  "SecretRef": {
266
266
  "additionalProperties": false,
267
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
267
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
268
268
  "properties": {
269
269
  "name": {
270
270
  "title": "Name",
@@ -297,7 +297,7 @@
297
297
  ],
298
298
  "title": "SeqFlags",
299
299
  "type": "integer",
300
- "x-contract-version": "0.4.21",
300
+ "x-contract-version": "0.4.23",
301
301
  "x-flag-names": {
302
302
  "CHECK": 65536,
303
303
  "INFER": 16,
@@ -505,5 +505,5 @@
505
505
  ],
506
506
  "title": "BenchmarkSpec",
507
507
  "type": "object",
508
- "x-contract-version": "0.4.21"
508
+ "x-contract-version": "0.4.23"
509
509
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "BenchmarkStatusResponse",
42
42
  "type": "object",
43
- "x-contract-version": "0.4.21"
43
+ "x-contract-version": "0.4.23"
44
44
  }
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "additionalProperties": false,
32
- "description": "POST /v1/internal/bootstrap (worker instance-identity JWT) — everything a worker needs to serve\ndirect TLS `/act`. `direct_secret` + `tls_key` are DOWN-direction platform secrets; `env` is the\nWRITE-direction injection of the policy's declared user secrets into its subprocess (goal 15).",
32
+ "description": "What a worker receives when it starts — everything it needs to serve direct TLS `/act`. `direct_secret` + `tls_key` are DOWN-direction platform secrets; `env` is the\nWRITE-direction injection of the policy's declared user secrets into its subprocess (goal 15).",
33
33
  "properties": {
34
34
  "direct_secret": {
35
35
  "description": "Platform-minted bearer the worker's guard checks",
@@ -79,5 +79,5 @@
79
79
  ],
80
80
  "title": "BootstrapResponse",
81
81
  "type": "object",
82
- "x-contract-version": "0.4.21"
82
+ "x-contract-version": "0.4.23"
83
83
  }
@@ -34,5 +34,5 @@
34
34
  ],
35
35
  "title": "Camera",
36
36
  "type": "object",
37
- "x-contract-version": "0.4.21"
37
+ "x-contract-version": "0.4.23"
38
38
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "ClampInfo",
25
25
  "type": "object",
26
- "x-contract-version": "0.4.21"
26
+ "x-contract-version": "0.4.23"
27
27
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "CodeBundle",
25
25
  "type": "object",
26
- "x-contract-version": "0.4.21"
26
+ "x-contract-version": "0.4.23"
27
27
  }
@@ -61,5 +61,5 @@
61
61
  },
62
62
  "title": "Concurrency",
63
63
  "type": "object",
64
- "x-contract-version": "0.4.21"
64
+ "x-contract-version": "0.4.23"
65
65
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "Conditions",
57
57
  "type": "object",
58
- "x-contract-version": "0.4.21"
58
+ "x-contract-version": "0.4.23"
59
59
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "ConnectRequest",
27
27
  "type": "object",
28
- "x-contract-version": "0.4.21"
28
+ "x-contract-version": "0.4.23"
29
29
  }
@@ -307,5 +307,5 @@
307
307
  ],
308
308
  "title": "ConnectResponse",
309
309
  "type": "object",
310
- "x-contract-version": "0.4.21"
310
+ "x-contract-version": "0.4.23"
311
311
  }
@@ -18,5 +18,5 @@
18
18
  ],
19
19
  "title": "DeploymentAccepted",
20
20
  "type": "object",
21
- "x-contract-version": "0.4.21"
21
+ "x-contract-version": "0.4.23"
22
22
  }
@@ -318,7 +318,7 @@
318
318
  },
319
319
  "SecretRef": {
320
320
  "additionalProperties": false,
321
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
321
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
322
322
  "properties": {
323
323
  "name": {
324
324
  "title": "Name",
@@ -463,5 +463,5 @@
463
463
  ],
464
464
  "title": "DeploymentPolicy",
465
465
  "type": "object",
466
- "x-contract-version": "0.4.21"
466
+ "x-contract-version": "0.4.23"
467
467
  }
@@ -890,7 +890,7 @@
890
890
  },
891
891
  "SecretRef": {
892
892
  "additionalProperties": false,
893
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
893
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
894
894
  "properties": {
895
895
  "name": {
896
896
  "title": "Name",
@@ -1077,5 +1077,5 @@
1077
1077
  ],
1078
1078
  "title": "DeploymentRequest",
1079
1079
  "type": "object",
1080
- "x-contract-version": "0.4.21"
1080
+ "x-contract-version": "0.4.23"
1081
1081
  }
@@ -58,5 +58,5 @@
58
58
  ],
59
59
  "title": "DeploymentStatusResponse",
60
60
  "type": "object",
61
- "x-contract-version": "0.4.21"
61
+ "x-contract-version": "0.4.23"
62
62
  }
@@ -213,5 +213,5 @@
213
213
  ],
214
214
  "title": "Embodiment",
215
215
  "type": "object",
216
- "x-contract-version": "0.4.21"
216
+ "x-contract-version": "0.4.23"
217
217
  }
@@ -94,5 +94,5 @@
94
94
  ],
95
95
  "title": "ErrorBody",
96
96
  "type": "object",
97
- "x-contract-version": "0.4.21"
97
+ "x-contract-version": "0.4.23"
98
98
  }
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "title": "ErrorCode",
24
24
  "type": "string",
25
- "x-contract-version": "0.4.21",
25
+ "x-contract-version": "0.4.23",
26
26
  "x-errors": {
27
27
  "budget_exhausted": {
28
28
  "exit_code": 6,
@@ -32,6 +32,18 @@
32
32
  "default": null,
33
33
  "title": "Default Timing"
34
34
  },
35
+ "held_usd": {
36
+ "anyOf": [
37
+ {
38
+ "type": "number"
39
+ },
40
+ {
41
+ "type": "null"
42
+ }
43
+ ],
44
+ "default": null,
45
+ "title": "Held Usd"
46
+ },
35
47
  "vlm_calls": {
36
48
  "title": "Vlm Calls",
37
49
  "type": "integer"
@@ -48,5 +60,5 @@
48
60
  ],
49
61
  "title": "Estimate",
50
62
  "type": "object",
51
- "x-contract-version": "0.4.21"
63
+ "x-contract-version": "0.4.23"
52
64
  }
@@ -91,6 +91,18 @@
91
91
  "default": null,
92
92
  "title": "Default Timing"
93
93
  },
94
+ "held_usd": {
95
+ "anyOf": [
96
+ {
97
+ "type": "number"
98
+ },
99
+ {
100
+ "type": "null"
101
+ }
102
+ ],
103
+ "default": null,
104
+ "title": "Held Usd"
105
+ },
94
106
  "vlm_calls": {
95
107
  "title": "Vlm Calls",
96
108
  "type": "integer"
@@ -228,5 +240,5 @@
228
240
  ],
229
241
  "title": "EvalDryRunResponse",
230
242
  "type": "object",
231
- "x-contract-version": "0.4.21"
243
+ "x-contract-version": "0.4.23"
232
244
  }
@@ -295,7 +295,7 @@
295
295
  },
296
296
  "ParamUsed": {
297
297
  "additionalProperties": false,
298
- "description": "One parameter's value in an arm, and who gave it: the eval (`cli`), the default its declaring side wrote\n(`policy` / `adapter` / `benchmark`), or the platform's own (`platform`). {gs-plans/eval-adapters/36}",
298
+ "description": "One parameter's value in an arm, and who gave it: the eval (`cli`), the default its declaring side wrote\n(`policy` / `adapter` / `benchmark`), the platform's own (`platform`), or the default the policy's deployment\nsets for every session (`deployment`: `seq policy params <name> k=v`, over the policy's own).\n{gs-plans/eval-adapters/36, deploy-serving/35}",
299
299
  "properties": {
300
300
  "source": {
301
301
  "enum": [
@@ -303,7 +303,8 @@
303
303
  "policy",
304
304
  "adapter",
305
305
  "benchmark",
306
- "platform"
306
+ "platform",
307
+ "deployment"
307
308
  ],
308
309
  "title": "Source",
309
310
  "type": "string"
@@ -522,5 +523,5 @@
522
523
  ],
523
524
  "title": "EvalReport",
524
525
  "type": "object",
525
- "x-contract-version": "0.4.21"
526
+ "x-contract-version": "0.4.23"
526
527
  }
@@ -281,5 +281,5 @@
281
281
  ],
282
282
  "title": "EvalRequest",
283
283
  "type": "object",
284
- "x-contract-version": "0.4.21"
284
+ "x-contract-version": "0.4.23"
285
285
  }
@@ -60,6 +60,18 @@
60
60
  "default": null,
61
61
  "title": "Default Timing"
62
62
  },
63
+ "held_usd": {
64
+ "anyOf": [
65
+ {
66
+ "type": "number"
67
+ },
68
+ {
69
+ "type": "null"
70
+ }
71
+ ],
72
+ "default": null,
73
+ "title": "Held Usd"
74
+ },
63
75
  "vlm_calls": {
64
76
  "title": "Vlm Calls",
65
77
  "type": "integer"
@@ -178,5 +190,5 @@
178
190
  ],
179
191
  "title": "EvalResponse",
180
192
  "type": "object",
181
- "x-contract-version": "0.4.21"
193
+ "x-contract-version": "0.4.23"
182
194
  }
@@ -49,5 +49,5 @@
49
49
  ],
50
50
  "title": "ImageFrame",
51
51
  "type": "object",
52
- "x-contract-version": "0.4.21"
52
+ "x-contract-version": "0.4.23"
53
53
  }
@@ -124,7 +124,7 @@
124
124
  },
125
125
  "SecretRef": {
126
126
  "additionalProperties": false,
127
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
127
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
128
128
  "properties": {
129
129
  "name": {
130
130
  "title": "Name",
@@ -204,5 +204,5 @@
204
204
  },
205
205
  "title": "ImageSpec",
206
206
  "type": "object",
207
- "x-contract-version": "0.4.21"
207
+ "x-contract-version": "0.4.23"
208
208
  }
@@ -38,5 +38,5 @@
38
38
  ],
39
39
  "title": "ImageStepAddLocal",
40
40
  "type": "object",
41
- "x-contract-version": "0.4.21"
41
+ "x-contract-version": "0.4.23"
42
42
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepApt",
16
16
  "type": "object",
17
- "x-contract-version": "0.4.21"
17
+ "x-contract-version": "0.4.23"
18
18
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepEnv",
16
16
  "type": "object",
17
- "x-contract-version": "0.4.21"
17
+ "x-contract-version": "0.4.23"
18
18
  }
@@ -2,7 +2,7 @@
2
2
  "$defs": {
3
3
  "SecretRef": {
4
4
  "additionalProperties": false,
5
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
5
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
6
6
  "properties": {
7
7
  "name": {
8
8
  "title": "Name",
@@ -46,5 +46,5 @@
46
46
  ],
47
47
  "title": "ImageStepRun",
48
48
  "type": "object",
49
- "x-contract-version": "0.4.21"
49
+ "x-contract-version": "0.4.23"
50
50
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepUvPip",
16
16
  "type": "object",
17
- "x-contract-version": "0.4.21"
17
+ "x-contract-version": "0.4.23"
18
18
  }
@@ -99,5 +99,5 @@
99
99
  ],
100
100
  "title": "InferParam",
101
101
  "type": "object",
102
- "x-contract-version": "0.4.21"
102
+ "x-contract-version": "0.4.23"
103
103
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "Lease",
26
26
  "type": "object",
27
- "x-contract-version": "0.4.21"
27
+ "x-contract-version": "0.4.23"
28
28
  }
@@ -17,5 +17,5 @@
17
17
  ],
18
18
  "title": "LossyTransform",
19
19
  "type": "object",
20
- "x-contract-version": "0.4.21"
20
+ "x-contract-version": "0.4.23"
21
21
  }
@@ -83,5 +83,5 @@
83
83
  ],
84
84
  "title": "MetricAgg",
85
85
  "type": "object",
86
- "x-contract-version": "0.4.21"
86
+ "x-contract-version": "0.4.23"
87
87
  }
@@ -164,5 +164,5 @@
164
164
  ],
165
165
  "title": "Observation",
166
166
  "type": "object",
167
- "x-contract-version": "0.4.21"
167
+ "x-contract-version": "0.4.23"
168
168
  }
@@ -82,5 +82,5 @@
82
82
  },
83
83
  "title": "ObservationContract",
84
84
  "type": "object",
85
- "x-contract-version": "0.4.21"
85
+ "x-contract-version": "0.4.23"
86
86
  }
@@ -701,7 +701,7 @@
701
701
  },
702
702
  "SecretRef": {
703
703
  "additionalProperties": false,
704
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
704
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
705
705
  "properties": {
706
706
  "name": {
707
707
  "title": "Name",
@@ -734,7 +734,7 @@
734
734
  ],
735
735
  "title": "SeqFlags",
736
736
  "type": "integer",
737
- "x-contract-version": "0.4.21",
737
+ "x-contract-version": "0.4.23",
738
738
  "x-flag-names": {
739
739
  "CHECK": 65536,
740
740
  "INFER": 16,
@@ -838,5 +838,5 @@
838
838
  ],
839
839
  "title": "PolicyRegistration",
840
840
  "type": "object",
841
- "x-contract-version": "0.4.21"
841
+ "x-contract-version": "0.4.23"
842
842
  }
@@ -470,7 +470,7 @@
470
470
  },
471
471
  "SecretRef": {
472
472
  "additionalProperties": false,
473
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
473
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
474
474
  "properties": {
475
475
  "name": {
476
476
  "title": "Name",
@@ -740,5 +740,5 @@
740
740
  ],
741
741
  "title": "PolicySpec",
742
742
  "type": "object",
743
- "x-contract-version": "0.4.21"
743
+ "x-contract-version": "0.4.23"
744
744
  }
@@ -63,5 +63,5 @@
63
63
  ],
64
64
  "title": "Proprioception",
65
65
  "type": "object",
66
- "x-contract-version": "0.4.21"
66
+ "x-contract-version": "0.4.23"
67
67
  }
@@ -36,5 +36,5 @@
36
36
  ],
37
37
  "title": "RenderSpec",
38
38
  "type": "object",
39
- "x-contract-version": "0.4.21"
39
+ "x-contract-version": "0.4.23"
40
40
  }
@@ -84,5 +84,5 @@
84
84
  ],
85
85
  "title": "Resources",
86
86
  "type": "object",
87
- "x-contract-version": "0.4.21"
87
+ "x-contract-version": "0.4.23"
88
88
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "RolloutResult",
57
57
  "type": "object",
58
- "x-contract-version": "0.4.21"
58
+ "x-contract-version": "0.4.23"
59
59
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "additionalProperties": false,
3
- "description": "POST /v1/secrets — one name = one group of env values (e.g. openrouter = {OPENROUTER_API_KEY}).\n`env` carries plaintext values; this is the WRITE-direction allow-list field (goal 15).",
3
+ "description": "POST /v1/secrets — one name = one group of env values (e.g. planner = {PLANNER_API_KEY}).\n`env` carries plaintext values; this is the WRITE-direction allow-list field (goal 15).",
4
4
  "properties": {
5
5
  "env": {
6
6
  "additionalProperties": {
@@ -21,5 +21,5 @@
21
21
  ],
22
22
  "title": "SecretCreateRequest",
23
23
  "type": "object",
24
- "x-contract-version": "0.4.21"
24
+ "x-contract-version": "0.4.23"
25
25
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "SecretInfo",
42
42
  "type": "object",
43
- "x-contract-version": "0.4.21"
43
+ "x-contract-version": "0.4.23"
44
44
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "additionalProperties": false,
3
- "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
3
+ "description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nplatform keeps the value and injects it when a worker starts. Never carries a value.",
4
4
  "properties": {
5
5
  "name": {
6
6
  "title": "Name",
@@ -12,5 +12,5 @@
12
12
  ],
13
13
  "title": "SecretRef",
14
14
  "type": "object",
15
- "x-contract-version": "0.4.21"
15
+ "x-contract-version": "0.4.23"
16
16
  }
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "title": "SeqFlags",
20
20
  "type": "integer",
21
- "x-contract-version": "0.4.21",
21
+ "x-contract-version": "0.4.23",
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.4.21"
85
+ "x-contract-version": "0.4.23"
86
86
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "SuiteAgg",
24
24
  "type": "object",
25
- "x-contract-version": "0.4.21"
25
+ "x-contract-version": "0.4.23"
26
26
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "TaskAgg",
24
24
  "type": "object",
25
- "x-contract-version": "0.4.21"
25
+ "x-contract-version": "0.4.23"
26
26
  }
@@ -16,5 +16,5 @@
16
16
  ],
17
17
  "title": "Timeouts",
18
18
  "type": "object",
19
- "x-contract-version": "0.4.21"
19
+ "x-contract-version": "0.4.23"
20
20
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "UploadTarget",
26
26
  "type": "object",
27
- "x-contract-version": "0.4.21"
27
+ "x-contract-version": "0.4.23"
28
28
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "additionalProperties": false,
3
- "description": "POST /v1/internal/usage — the worker's async metering report. Carries counts only, no secrets.\nThis usage shape is defined here (sequence-base) once, so gateway and worker cannot drift.",
3
+ "description": "A worker's metering report, sent as it serves. Carries counts only, no secrets.\nThis usage shape is defined here (sequence-base) once, so gateway and worker cannot drift.",
4
4
  "properties": {
5
5
  "controlled_seconds": {
6
6
  "title": "Controlled Seconds",
@@ -34,5 +34,5 @@
34
34
  ],
35
35
  "title": "UsageReport",
36
36
  "type": "object",
37
- "x-contract-version": "0.4.21"
37
+ "x-contract-version": "0.4.23"
38
38
  }
@@ -20,5 +20,5 @@
20
20
  ],
21
21
  "title": "Variant",
22
22
  "type": "object",
23
- "x-contract-version": "0.4.21"
23
+ "x-contract-version": "0.4.23"
24
24
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "VolumeAttach",
24
24
  "type": "object",
25
- "x-contract-version": "0.4.21"
25
+ "x-contract-version": "0.4.23"
26
26
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "VolumeFile",
27
27
  "type": "object",
28
- "x-contract-version": "0.4.21"
28
+ "x-contract-version": "0.4.23"
29
29
  }
@@ -68,5 +68,5 @@
68
68
  ],
69
69
  "title": "VolumeInfo",
70
70
  "type": "object",
71
- "x-contract-version": "0.4.21"
71
+ "x-contract-version": "0.4.23"
72
72
  }
@@ -17,5 +17,5 @@
17
17
  ],
18
18
  "title": "VolumeMount",
19
19
  "type": "object",
20
- "x-contract-version": "0.4.21"
20
+ "x-contract-version": "0.4.23"
21
21
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "VolumeRef",
26
26
  "type": "object",
27
- "x-contract-version": "0.4.21"
27
+ "x-contract-version": "0.4.23"
28
28
  }
@@ -56,5 +56,5 @@
56
56
  ],
57
57
  "title": "VolumeUploadRequest",
58
58
  "type": "object",
59
- "x-contract-version": "0.4.21"
59
+ "x-contract-version": "0.4.23"
60
60
  }
@@ -65,5 +65,5 @@
65
65
  ],
66
66
  "title": "VolumeUploadResponse",
67
67
  "type": "object",
68
- "x-contract-version": "0.4.21"
68
+ "x-contract-version": "0.4.23"
69
69
  }
@@ -86,5 +86,5 @@
86
86
  ],
87
87
  "title": "WarmingError",
88
88
  "type": "object",
89
- "x-contract-version": "0.4.21"
89
+ "x-contract-version": "0.4.23"
90
90
  }
File without changes