sequence-base 0.4.2__tar.gz → 0.4.3__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.4.2 → sequence_base-0.4.3}/.gitignore +1 -0
  2. {sequence_base-0.4.2 → sequence_base-0.4.3}/PKG-INFO +2 -1
  3. {sequence_base-0.4.2 → sequence_base-0.4.3}/pyproject.toml +4 -1
  4. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/__init__.py +4 -1
  5. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/constants/version.py +1 -1
  6. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/__init__.py +5 -2
  7. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/policy.py +30 -2
  8. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schema_export.py +4 -0
  9. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ActRequest.json +1 -1
  10. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ActResponse.json +1 -1
  11. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ActionChunk.json +1 -1
  12. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ActionContract.json +1 -1
  13. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ActionStep.json +1 -1
  14. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/AdapterTransform.json +1 -1
  15. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/AddLocal.json +1 -1
  16. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Autoscaler.json +1 -1
  17. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
  18. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/BenchmarkRegisterRequest.json +43 -2
  19. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/BenchmarkSpec.json +44 -3
  20. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
  21. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/BootstrapResponse.json +1 -1
  22. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Camera.json +1 -1
  23. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ClampInfo.json +1 -1
  24. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/CodeBundle.json +1 -1
  25. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Concurrency.json +1 -1
  26. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Conditions.json +1 -1
  27. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ConnectRequest.json +1 -1
  28. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ConnectResponse.json +1 -1
  29. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/DeploymentAccepted.json +1 -1
  30. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/DeploymentPolicy.json +1 -1
  31. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/DeploymentRequest.json +43 -2
  32. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
  33. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Embodiment.json +1 -1
  34. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ErrorBody.json +1 -1
  35. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ErrorCodes.json +1 -1
  36. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Estimate.json +1 -1
  37. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
  38. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/EvalReport.json +1 -1
  39. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/EvalRequest.json +1 -1
  40. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/EvalResponse.json +1 -1
  41. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ImageFrame.json +1 -1
  42. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ImageSpec.json +43 -2
  43. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
  44. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ImageStepApt.json +1 -1
  45. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ImageStepEnv.json +1 -1
  46. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ImageStepRun.json +1 -1
  47. sequence_base-0.4.3/sequence_base/schemas/ImageStepTemplateFiles.json +41 -0
  48. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ImageStepUvPip.json +1 -1
  49. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/InferParam.json +1 -1
  50. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Lease.json +1 -1
  51. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/LossyTransform.json +1 -1
  52. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/MetricAgg.json +1 -1
  53. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Observation.json +1 -1
  54. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/ObservationContract.json +1 -1
  55. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/PolicyRegistration.json +44 -3
  56. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/PolicySpec.json +43 -2
  57. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Proprioception.json +1 -1
  58. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/RenderSpec.json +1 -1
  59. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Resources.json +1 -1
  60. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/RolloutResult.json +1 -1
  61. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/SecretCreateRequest.json +1 -1
  62. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/SecretInfo.json +1 -1
  63. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/SecretRef.json +1 -1
  64. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/SeqFlags.json +1 -1
  65. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Step.json +1 -1
  66. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/SuiteAgg.json +1 -1
  67. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/TaskAgg.json +1 -1
  68. sequence_base-0.4.3/sequence_base/schemas/TemplateFiles.json +26 -0
  69. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Timeouts.json +1 -1
  70. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/UploadTarget.json +1 -1
  71. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/Variant.json +1 -1
  72. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/VolumeAttach.json +1 -1
  73. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/VolumeFile.json +1 -1
  74. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/VolumeInfo.json +1 -1
  75. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/VolumeMount.json +1 -1
  76. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/VolumeRef.json +1 -1
  77. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
  78. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
  79. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/schemas/WarmingError.json +1 -1
  80. {sequence_base-0.4.2 → sequence_base-0.4.3}/README.md +0 -0
  81. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/auth.py +0 -0
  82. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/codec/__init__.py +0 -0
  83. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/codec/image.py +0 -0
  84. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/constants/__init__.py +0 -0
  85. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/constants/headers.py +0 -0
  86. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/accounts.py +0 -0
  87. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/act.py +0 -0
  88. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/benchmarks.py +0 -0
  89. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/connect.py +0 -0
  90. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/deployments.py +0 -0
  91. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/errors.py +0 -0
  92. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/eval.py +0 -0
  93. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/flags.py +0 -0
  94. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/io.py +0 -0
  95. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/templates.py +0 -0
  96. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/volumes.py +0 -0
  97. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/contract/wire.py +0 -0
  98. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/errors/__init__.py +0 -0
  99. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/errors/transport.py +0 -0
  100. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/obs/__init__.py +0 -0
  101. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/obs/log.py +0 -0
  102. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/obs/rid.py +0 -0
  103. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/presets/__init__.py +0 -0
  104. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/presets/robot_arm.py +0 -0
  105. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/telemetry/__init__.py +0 -0
  106. {sequence_base-0.4.2 → sequence_base-0.4.3}/sequence_base/telemetry/events.py +0 -0
@@ -4,3 +4,4 @@ __pycache__/
4
4
  .venv/
5
5
  *.egg-info/
6
6
  .DS_Store
7
+ dist/
@@ -1,7 +1,8 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sequence-base
3
- Version: 0.4.2
3
+ Version: 0.4.3
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
+ Project-URL: Changelog, https://generalsequences.com/docs/changelog/
5
6
  Requires-Python: >=3.10
6
7
  Requires-Dist: pydantic>=2.0
7
8
  Provides-Extra: codec
@@ -1,10 +1,13 @@
1
1
  [project]
2
2
  name = "sequence-base"
3
- version = "0.4.2"
3
+ version = "0.4.3"
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"]
7
7
 
8
+ [project.urls]
9
+ Changelog = "https://generalsequences.com/docs/changelog/"
10
+
8
11
  [project.optional-dependencies]
9
12
  codec = ["pillow>=10", "numpy>=1.26"]
10
13
  test = ["pytest", "jsonschema>=4"]
@@ -18,6 +18,9 @@ from sequence_base.contract import (
18
18
  ActResponse,
19
19
  AddLocal,
20
20
  ImageStepAddLocal,
21
+ FROZEN_PATH,
22
+ TemplateFiles,
23
+ ImageStepTemplateFiles,
21
24
  Camera,
22
25
  Embodiment,
23
26
  ObservationContract,
@@ -126,7 +129,7 @@ __all__ = [
126
129
  "ActRequest", "ActResponse",
127
130
 
128
131
  "SeqFlags", "ImageStepUvPip", "ImageStepApt", "ImageStepEnv", "ImageStepRun", "AddLocal", "ImageStepAddLocal",
129
- "ImageStep", "ImageSpec",
132
+ "FROZEN_PATH", "TemplateFiles", "ImageStepTemplateFiles", "ImageStep", "ImageSpec",
130
133
  "VolumeMount", "VolumeRef", "Concurrency", "ActionContract", "Camera", "ObservationContract", "Embodiment",
131
134
  "PolicySpec", "PolicyRegistration",
132
135
 
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- CONTRACT_VERSION = "0.5.2"
7
+ CONTRACT_VERSION = "0.5.3"
8
8
 
9
9
 
10
10
 
@@ -31,6 +31,9 @@ from sequence_base.contract.policy import (
31
31
  ImageStepUvPip,
32
32
  AddLocal,
33
33
  ImageStepAddLocal,
34
+ FROZEN_PATH,
35
+ TemplateFiles,
36
+ ImageStepTemplateFiles,
34
37
  PolicyRegistration,
35
38
  PolicySpec,
36
39
  VolumeMount,
@@ -117,8 +120,8 @@ __all__ = [
117
120
  "ActRequest", "ActResponse",
118
121
 
119
122
  "SeqFlags",
120
- "ImageStepUvPip", "ImageStepApt", "ImageStepEnv", "ImageStepRun", "AddLocal", "ImageStepAddLocal", "ImageStep",
121
- "ImageSpec",
123
+ "ImageStepUvPip", "ImageStepApt", "ImageStepEnv", "ImageStepRun", "AddLocal", "ImageStepAddLocal",
124
+ "TemplateFiles", "ImageStepTemplateFiles", "FROZEN_PATH", "ImageStep", "ImageSpec",
122
125
  "VolumeMount", "VolumeRef", "Concurrency", "ActionContract", "Camera", "ObservationContract", "Embodiment",
123
126
  "PolicySpec", "PolicyRegistration",
124
127
 
@@ -32,6 +32,9 @@ __all__ = [
32
32
  "ImageStepRun",
33
33
  "AddLocal",
34
34
  "ImageStepAddLocal",
35
+ "FROZEN_PATH",
36
+ "TemplateFiles",
37
+ "ImageStepTemplateFiles",
35
38
  "ImageStep",
36
39
  "ImageSpec",
37
40
  "VolumeMount",
@@ -101,14 +104,36 @@ class ImageStepAddLocal(BaseModel):
101
104
  add_local: AddLocal
102
105
 
103
106
 
104
- ImageStep = ImageStepUvPip | ImageStepApt | ImageStepEnv | ImageStepRun | ImageStepAddLocal
107
+
108
+ FROZEN_PATH = "/seq/frozen"
109
+
110
+
111
+ class TemplateFiles(BaseModel):
112
+ """An official template version's frozen build files - the source at its pinned commit, every Python package and
113
+ system package its image installs, the assets it downloads - which the platform keeps itself, so a build never
114
+ reaches the sites they came from (`seq.Image.template_files`). Each run_commands step after this one reads them,
115
+ read-only, at FROZEN_PATH; nothing of them stays in the image unless a step copies or installs it.
116
+ """
117
+
118
+ model_config = ConfigDict(extra="forbid")
119
+
120
+ template: str = Field(..., pattern=r"^[a-z0-9][a-z0-9-]{0,63}$", description="the template's name, as seq init takes it")
121
+ version: int = Field(..., ge=1, le=999_999_999, description="the template version whose files these are")
122
+
123
+
124
+ class ImageStepTemplateFiles(BaseModel):
125
+ model_config = ConfigDict(extra="forbid")
126
+ template_files: TemplateFiles
127
+
128
+
129
+ ImageStep = ImageStepUvPip | ImageStepApt | ImageStepEnv | ImageStepRun | ImageStepAddLocal | ImageStepTemplateFiles
105
130
 
106
131
 
107
132
  class ImageSpec(BaseModel):
108
133
  """Declarative image, built by the platform. Exactly one of
109
134
  `base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile
110
135
  is its OWN component, never smuggled into the `base` string, so the gateway can tell a
111
- registry build from a Dockerfile build. `steps` is an ordered list of the four-variant union above
136
+ registry build from a Dockerfile build. `steps` is an ordered list of the step variants above
112
137
  (a bare list[dict] is refused), extending whichever base was chosen."""
113
138
 
114
139
  model_config = ConfigDict(extra="forbid")
@@ -130,6 +155,9 @@ class ImageSpec(BaseModel):
130
155
  "(inline Dockerfile source); got "
131
156
  + ("both" if self.base is not None else "neither")
132
157
  )
158
+
159
+ if sum(isinstance(s, ImageStepTemplateFiles) for s in self.steps) > 1:
160
+ raise ValueError("an image takes one template_files step - the files of one template version")
133
161
  return self
134
162
 
135
163
 
@@ -92,6 +92,8 @@ from sequence_base.contract.policy import (
92
92
  AddLocal,
93
93
  ImageStepAddLocal,
94
94
  ImageStepRun,
95
+ ImageStepTemplateFiles,
96
+ TemplateFiles,
95
97
  ImageStepUvPip,
96
98
  PolicyRegistration,
97
99
  PolicySpec,
@@ -120,6 +122,8 @@ WIRE_MODELS: dict[str, type[BaseModel]] = {
120
122
  "ImageStepRun": ImageStepRun,
121
123
  "AddLocal": AddLocal,
122
124
  "ImageStepAddLocal": ImageStepAddLocal,
125
+ "TemplateFiles": TemplateFiles,
126
+ "ImageStepTemplateFiles": ImageStepTemplateFiles,
123
127
  "ImageSpec": ImageSpec,
124
128
  "VolumeMount": VolumeMount,
125
129
  "VolumeRef": VolumeRef,
@@ -65,5 +65,5 @@
65
65
  ],
66
66
  "title": "ActRequest",
67
67
  "type": "object",
68
- "x-contract-version": "0.5.2"
68
+ "x-contract-version": "0.5.3"
69
69
  }
@@ -75,5 +75,5 @@
75
75
  ],
76
76
  "title": "ActResponse",
77
77
  "type": "object",
78
- "x-contract-version": "0.5.2"
78
+ "x-contract-version": "0.5.3"
79
79
  }
@@ -99,5 +99,5 @@
99
99
  ],
100
100
  "title": "ActionChunk",
101
101
  "type": "object",
102
- "x-contract-version": "0.5.2"
102
+ "x-contract-version": "0.5.3"
103
103
  }
@@ -116,5 +116,5 @@
116
116
  ],
117
117
  "title": "ActionContract",
118
118
  "type": "object",
119
- "x-contract-version": "0.5.2"
119
+ "x-contract-version": "0.5.3"
120
120
  }
@@ -19,5 +19,5 @@
19
19
  ],
20
20
  "title": "ActionStep",
21
21
  "type": "object",
22
- "x-contract-version": "0.5.2"
22
+ "x-contract-version": "0.5.3"
23
23
  }
@@ -38,5 +38,5 @@
38
38
  ],
39
39
  "title": "AdapterTransform",
40
40
  "type": "object",
41
- "x-contract-version": "0.5.2"
41
+ "x-contract-version": "0.5.3"
42
42
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "AddLocal",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.2"
26
+ "x-contract-version": "0.5.3"
27
27
  }
@@ -69,5 +69,5 @@
69
69
  },
70
70
  "title": "Autoscaler",
71
71
  "type": "object",
72
- "x-contract-version": "0.5.2"
72
+ "x-contract-version": "0.5.3"
73
73
  }
@@ -62,5 +62,5 @@
62
62
  ],
63
63
  "title": "BenchmarkConditionSpec",
64
64
  "type": "object",
65
- "x-contract-version": "0.5.2"
65
+ "x-contract-version": "0.5.3"
66
66
  }
@@ -269,7 +269,7 @@
269
269
  },
270
270
  "ImageSpec": {
271
271
  "additionalProperties": false,
272
- "description": "Declarative image, built by the platform. Exactly one of\n`base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile\nis its OWN component, never smuggled into the `base` string, so the gateway can tell a\nregistry build from a Dockerfile build. `steps` is an ordered list of the four-variant union above\n(a bare list[dict] is refused), extending whichever base was chosen.",
272
+ "description": "Declarative image, built by the platform. Exactly one of\n`base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile\nis its OWN component, never smuggled into the `base` string, so the gateway can tell a\nregistry build from a Dockerfile build. `steps` is an ordered list of the step variants above\n(a bare list[dict] is refused), extending whichever base was chosen.",
273
273
  "properties": {
274
274
  "base": {
275
275
  "anyOf": [
@@ -325,6 +325,9 @@
325
325
  },
326
326
  {
327
327
  "$ref": "#/$defs/ImageStepAddLocal"
328
+ },
329
+ {
330
+ "$ref": "#/$defs/ImageStepTemplateFiles"
328
331
  }
329
332
  ]
330
333
  },
@@ -414,6 +417,19 @@
414
417
  "title": "ImageStepRun",
415
418
  "type": "object"
416
419
  },
420
+ "ImageStepTemplateFiles": {
421
+ "additionalProperties": false,
422
+ "properties": {
423
+ "template_files": {
424
+ "$ref": "#/$defs/TemplateFiles"
425
+ }
426
+ },
427
+ "required": [
428
+ "template_files"
429
+ ],
430
+ "title": "ImageStepTemplateFiles",
431
+ "type": "object"
432
+ },
417
433
  "ImageStepUvPip": {
418
434
  "additionalProperties": false,
419
435
  "properties": {
@@ -587,6 +603,31 @@
587
603
  "title": "SecretRef",
588
604
  "type": "object"
589
605
  },
606
+ "TemplateFiles": {
607
+ "additionalProperties": false,
608
+ "description": "An official template version's frozen build files - the source at its pinned commit, every Python package and\nsystem package its image installs, the assets it downloads - which the platform keeps itself, so a build never\nreaches the sites they came from (`seq.Image.template_files`). Each run_commands step after this one reads them,\nread-only, at FROZEN_PATH; nothing of them stays in the image unless a step copies or installs it.",
609
+ "properties": {
610
+ "template": {
611
+ "description": "the template's name, as seq init takes it",
612
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
613
+ "title": "Template",
614
+ "type": "string"
615
+ },
616
+ "version": {
617
+ "description": "the template version whose files these are",
618
+ "maximum": 999999999,
619
+ "minimum": 1,
620
+ "title": "Version",
621
+ "type": "integer"
622
+ }
623
+ },
624
+ "required": [
625
+ "template",
626
+ "version"
627
+ ],
628
+ "title": "TemplateFiles",
629
+ "type": "object"
630
+ },
590
631
  "Variant": {
591
632
  "additionalProperties": false,
592
633
  "description": "One structured variant axis of the eval matrix (e.g. axis=\"lighting\", values=[\"day\",\"night\"]).",
@@ -865,5 +906,5 @@
865
906
  ],
866
907
  "title": "BenchmarkRegisterRequest",
867
908
  "type": "object",
868
- "x-contract-version": "0.5.2"
909
+ "x-contract-version": "0.5.3"
869
910
  }
@@ -61,7 +61,7 @@
61
61
  },
62
62
  "ImageSpec": {
63
63
  "additionalProperties": false,
64
- "description": "Declarative image, built by the platform. Exactly one of\n`base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile\nis its OWN component, never smuggled into the `base` string, so the gateway can tell a\nregistry build from a Dockerfile build. `steps` is an ordered list of the four-variant union above\n(a bare list[dict] is refused), extending whichever base was chosen.",
64
+ "description": "Declarative image, built by the platform. Exactly one of\n`base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile\nis its OWN component, never smuggled into the `base` string, so the gateway can tell a\nregistry build from a Dockerfile build. `steps` is an ordered list of the step variants above\n(a bare list[dict] is refused), extending whichever base was chosen.",
65
65
  "properties": {
66
66
  "base": {
67
67
  "anyOf": [
@@ -117,6 +117,9 @@
117
117
  },
118
118
  {
119
119
  "$ref": "#/$defs/ImageStepAddLocal"
120
+ },
121
+ {
122
+ "$ref": "#/$defs/ImageStepTemplateFiles"
120
123
  }
121
124
  ]
122
125
  },
@@ -206,6 +209,19 @@
206
209
  "title": "ImageStepRun",
207
210
  "type": "object"
208
211
  },
212
+ "ImageStepTemplateFiles": {
213
+ "additionalProperties": false,
214
+ "properties": {
215
+ "template_files": {
216
+ "$ref": "#/$defs/TemplateFiles"
217
+ }
218
+ },
219
+ "required": [
220
+ "template_files"
221
+ ],
222
+ "title": "ImageStepTemplateFiles",
223
+ "type": "object"
224
+ },
209
225
  "ImageStepUvPip": {
210
226
  "additionalProperties": false,
211
227
  "properties": {
@@ -297,7 +313,7 @@
297
313
  ],
298
314
  "title": "SeqFlags",
299
315
  "type": "integer",
300
- "x-contract-version": "0.5.2",
316
+ "x-contract-version": "0.5.3",
301
317
  "x-flag-names": {
302
318
  "CHECK": 65536,
303
319
  "INFER": 16,
@@ -314,6 +330,31 @@
314
330
  "WARMUP": 1
315
331
  }
316
332
  },
333
+ "TemplateFiles": {
334
+ "additionalProperties": false,
335
+ "description": "An official template version's frozen build files - the source at its pinned commit, every Python package and\nsystem package its image installs, the assets it downloads - which the platform keeps itself, so a build never\nreaches the sites they came from (`seq.Image.template_files`). Each run_commands step after this one reads them,\nread-only, at FROZEN_PATH; nothing of them stays in the image unless a step copies or installs it.",
336
+ "properties": {
337
+ "template": {
338
+ "description": "the template's name, as seq init takes it",
339
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
340
+ "title": "Template",
341
+ "type": "string"
342
+ },
343
+ "version": {
344
+ "description": "the template version whose files these are",
345
+ "maximum": 999999999,
346
+ "minimum": 1,
347
+ "title": "Version",
348
+ "type": "integer"
349
+ }
350
+ },
351
+ "required": [
352
+ "template",
353
+ "version"
354
+ ],
355
+ "title": "TemplateFiles",
356
+ "type": "object"
357
+ },
317
358
  "Variant": {
318
359
  "additionalProperties": false,
319
360
  "description": "One structured variant axis of the eval matrix (e.g. axis=\"lighting\", values=[\"day\",\"night\"]).",
@@ -518,5 +559,5 @@
518
559
  ],
519
560
  "title": "BenchmarkSpec",
520
561
  "type": "object",
521
- "x-contract-version": "0.5.2"
562
+ "x-contract-version": "0.5.3"
522
563
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "BenchmarkStatusResponse",
42
42
  "type": "object",
43
- "x-contract-version": "0.5.2"
43
+ "x-contract-version": "0.5.3"
44
44
  }
@@ -79,5 +79,5 @@
79
79
  ],
80
80
  "title": "BootstrapResponse",
81
81
  "type": "object",
82
- "x-contract-version": "0.5.2"
82
+ "x-contract-version": "0.5.3"
83
83
  }
@@ -72,5 +72,5 @@
72
72
  ],
73
73
  "title": "Camera",
74
74
  "type": "object",
75
- "x-contract-version": "0.5.2"
75
+ "x-contract-version": "0.5.3"
76
76
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "ClampInfo",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.2"
26
+ "x-contract-version": "0.5.3"
27
27
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "CodeBundle",
25
25
  "type": "object",
26
- "x-contract-version": "0.5.2"
26
+ "x-contract-version": "0.5.3"
27
27
  }
@@ -77,5 +77,5 @@
77
77
  },
78
78
  "title": "Concurrency",
79
79
  "type": "object",
80
- "x-contract-version": "0.5.2"
80
+ "x-contract-version": "0.5.3"
81
81
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "Conditions",
57
57
  "type": "object",
58
- "x-contract-version": "0.5.2"
58
+ "x-contract-version": "0.5.3"
59
59
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "ConnectRequest",
27
27
  "type": "object",
28
- "x-contract-version": "0.5.2"
28
+ "x-contract-version": "0.5.3"
29
29
  }
@@ -342,5 +342,5 @@
342
342
  ],
343
343
  "title": "ConnectResponse",
344
344
  "type": "object",
345
- "x-contract-version": "0.5.2"
345
+ "x-contract-version": "0.5.3"
346
346
  }
@@ -18,5 +18,5 @@
18
18
  ],
19
19
  "title": "DeploymentAccepted",
20
20
  "type": "object",
21
- "x-contract-version": "0.5.2"
21
+ "x-contract-version": "0.5.3"
22
22
  }
@@ -530,5 +530,5 @@
530
530
  ],
531
531
  "title": "DeploymentPolicy",
532
532
  "type": "object",
533
- "x-contract-version": "0.5.2"
533
+ "x-contract-version": "0.5.3"
534
534
  }
@@ -574,7 +574,7 @@
574
574
  },
575
575
  "ImageSpec": {
576
576
  "additionalProperties": false,
577
- "description": "Declarative image, built by the platform. Exactly one of\n`base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile\nis its OWN component, never smuggled into the `base` string, so the gateway can tell a\nregistry build from a Dockerfile build. `steps` is an ordered list of the four-variant union above\n(a bare list[dict] is refused), extending whichever base was chosen.",
577
+ "description": "Declarative image, built by the platform. Exactly one of\n`base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile\nis its OWN component, never smuggled into the `base` string, so the gateway can tell a\nregistry build from a Dockerfile build. `steps` is an ordered list of the step variants above\n(a bare list[dict] is refused), extending whichever base was chosen.",
578
578
  "properties": {
579
579
  "base": {
580
580
  "anyOf": [
@@ -630,6 +630,9 @@
630
630
  },
631
631
  {
632
632
  "$ref": "#/$defs/ImageStepAddLocal"
633
+ },
634
+ {
635
+ "$ref": "#/$defs/ImageStepTemplateFiles"
633
636
  }
634
637
  ]
635
638
  },
@@ -719,6 +722,19 @@
719
722
  "title": "ImageStepRun",
720
723
  "type": "object"
721
724
  },
725
+ "ImageStepTemplateFiles": {
726
+ "additionalProperties": false,
727
+ "properties": {
728
+ "template_files": {
729
+ "$ref": "#/$defs/TemplateFiles"
730
+ }
731
+ },
732
+ "required": [
733
+ "template_files"
734
+ ],
735
+ "title": "ImageStepTemplateFiles",
736
+ "type": "object"
737
+ },
722
738
  "ImageStepUvPip": {
723
739
  "additionalProperties": false,
724
740
  "properties": {
@@ -986,6 +1002,31 @@
986
1002
  "title": "SecretRef",
987
1003
  "type": "object"
988
1004
  },
1005
+ "TemplateFiles": {
1006
+ "additionalProperties": false,
1007
+ "description": "An official template version's frozen build files - the source at its pinned commit, every Python package and\nsystem package its image installs, the assets it downloads - which the platform keeps itself, so a build never\nreaches the sites they came from (`seq.Image.template_files`). Each run_commands step after this one reads them,\nread-only, at FROZEN_PATH; nothing of them stays in the image unless a step copies or installs it.",
1008
+ "properties": {
1009
+ "template": {
1010
+ "description": "the template's name, as seq init takes it",
1011
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
1012
+ "title": "Template",
1013
+ "type": "string"
1014
+ },
1015
+ "version": {
1016
+ "description": "the template version whose files these are",
1017
+ "maximum": 999999999,
1018
+ "minimum": 1,
1019
+ "title": "Version",
1020
+ "type": "integer"
1021
+ }
1022
+ },
1023
+ "required": [
1024
+ "template",
1025
+ "version"
1026
+ ],
1027
+ "title": "TemplateFiles",
1028
+ "type": "object"
1029
+ },
989
1030
  "Timeouts": {
990
1031
  "additionalProperties": false,
991
1032
  "properties": {
@@ -1164,5 +1205,5 @@
1164
1205
  ],
1165
1206
  "title": "DeploymentRequest",
1166
1207
  "type": "object",
1167
- "x-contract-version": "0.5.2"
1208
+ "x-contract-version": "0.5.3"
1168
1209
  }
@@ -58,5 +58,5 @@
58
58
  ],
59
59
  "title": "DeploymentStatusResponse",
60
60
  "type": "object",
61
- "x-contract-version": "0.5.2"
61
+ "x-contract-version": "0.5.3"
62
62
  }
@@ -267,5 +267,5 @@
267
267
  ],
268
268
  "title": "Embodiment",
269
269
  "type": "object",
270
- "x-contract-version": "0.5.2"
270
+ "x-contract-version": "0.5.3"
271
271
  }
@@ -94,5 +94,5 @@
94
94
  ],
95
95
  "title": "ErrorBody",
96
96
  "type": "object",
97
- "x-contract-version": "0.5.2"
97
+ "x-contract-version": "0.5.3"
98
98
  }
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "title": "ErrorCode",
24
24
  "type": "string",
25
- "x-contract-version": "0.5.2",
25
+ "x-contract-version": "0.5.3",
26
26
  "x-errors": {
27
27
  "budget_exhausted": {
28
28
  "exit_code": 6,
@@ -60,5 +60,5 @@
60
60
  ],
61
61
  "title": "Estimate",
62
62
  "type": "object",
63
- "x-contract-version": "0.5.2"
63
+ "x-contract-version": "0.5.3"
64
64
  }
@@ -240,5 +240,5 @@
240
240
  ],
241
241
  "title": "EvalDryRunResponse",
242
242
  "type": "object",
243
- "x-contract-version": "0.5.2"
243
+ "x-contract-version": "0.5.3"
244
244
  }
@@ -523,5 +523,5 @@
523
523
  ],
524
524
  "title": "EvalReport",
525
525
  "type": "object",
526
- "x-contract-version": "0.5.2"
526
+ "x-contract-version": "0.5.3"
527
527
  }
@@ -281,5 +281,5 @@
281
281
  ],
282
282
  "title": "EvalRequest",
283
283
  "type": "object",
284
- "x-contract-version": "0.5.2"
284
+ "x-contract-version": "0.5.3"
285
285
  }
@@ -190,5 +190,5 @@
190
190
  ],
191
191
  "title": "EvalResponse",
192
192
  "type": "object",
193
- "x-contract-version": "0.5.2"
193
+ "x-contract-version": "0.5.3"
194
194
  }