synth-containers 0.1.0__py3-none-any.whl

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.
@@ -0,0 +1,235 @@
1
+ """Shared Synth container and environment runtime substrate."""
2
+
3
+ from .adapters import (
4
+ FrameworkAdapterDescriptor,
5
+ all_framework_descriptors,
6
+ archipelago_descriptor,
7
+ environments_old_descriptor,
8
+ harbor_descriptor,
9
+ openenv_descriptor,
10
+ )
11
+ from .capabilities import (
12
+ DatasetDescriptor,
13
+ RouteHints,
14
+ RuntimeCapabilitySurface,
15
+ RuntimeMetadata,
16
+ TaskCatalog,
17
+ TaskInfo,
18
+ TokenEmissionCapabilities,
19
+ )
20
+ from .compatibility import (
21
+ CONSUMER_REQUIREMENTS,
22
+ CompatibilityIssue,
23
+ CompatibilityReport,
24
+ ConsumerRequirement,
25
+ ConsumerTarget,
26
+ assert_consumer_support,
27
+ compatibility_matrix,
28
+ consumer_requirement,
29
+ evaluate_consumer_support,
30
+ evaluate_runtime_requirement,
31
+ )
32
+ from .contracts import (
33
+ ArtifactContract,
34
+ ArtifactPaths,
35
+ CheckpointResumeContract,
36
+ ContainerExecutionContract,
37
+ GoExContractDump,
38
+ LeverBundle,
39
+ RunPolicyContract,
40
+ TaskContract,
41
+ TransformPreferencePolicy,
42
+ )
43
+ from .formats import execution_to_rollout_payload, execution_to_state_payload, metadata_to_http_payload, task_info_to_http_payload
44
+ from .http_adapter import ManagedRuntime, create_reference_app
45
+ from .http_client import HTTPContainerClient
46
+ from .nouns import (
47
+ Action,
48
+ Actor,
49
+ ArtifactDescriptor,
50
+ CheckpointDescriptor,
51
+ ExecutionRecord,
52
+ Observation,
53
+ Outcome,
54
+ RewardSignal,
55
+ StateSnapshot,
56
+ TaskDefinition,
57
+ TaskInstance,
58
+ TokenTrace,
59
+ ToolCallRecord,
60
+ ToolSpecification,
61
+ TraceEvent,
62
+ Trajectory,
63
+ TurnRecord,
64
+ VerifierResult,
65
+ )
66
+ from .ontology import (
67
+ CONTRACT_VERSION,
68
+ CapabilityLevel,
69
+ CheckpointSemantics,
70
+ CoreNoun,
71
+ ExecutionKind,
72
+ ExecutionProfile,
73
+ OutcomeKind,
74
+ PrimitiveProtocol,
75
+ ResumeSemantics,
76
+ RewardSource,
77
+ RolloutMode,
78
+ RuntimeFamily,
79
+ RuntimeKind,
80
+ StatefulnessTier,
81
+ )
82
+ from .profiles import all_profile_specs, infer_profiles, missing_protocols, spec_for_profile
83
+ from .proxying import AgentRuntimeTarget, InferenceApiFamily, InferenceTarget, ProxyMode, ProxyResolution, ToolCallStyle, TraceIdentity
84
+ from .recovery import (
85
+ ArtifactTrustLevel,
86
+ RecoveryActionKind,
87
+ RecoveryPoint,
88
+ RunRecoveryProjection,
89
+ TransformFailure,
90
+ derive_run_recovery_projection,
91
+ )
92
+ from .reference_runtime import CounterRuntime, InMemoryAsyncRolloutExecutor, ReferenceManagedRuntime
93
+ from .resources import ResourceKind, ResourceRef
94
+ from .rewards import NLEScoutRewardTracker, ScoutRewardUpdate, TimePenaltyMode
95
+ from .runtime_requests import (
96
+ CheckpointLabelsRequest,
97
+ PauseRequest,
98
+ RuntimeCheckpointRequest,
99
+ RuntimeResumeRequest,
100
+ TerminateRequest,
101
+ )
102
+ from .tasks import DatasetSplit, InMemoryTaskCatalog, TaskFilter, task_definition_from_task_info
103
+ from .tool_runtime import ToolCallSchemaKind, ToolOutputMode, ToolRuntimeCapabilities, ToolRuntimeKind
104
+ from .wire import (
105
+ RequestValidationIssue,
106
+ RolloutState,
107
+ SubmissionMode,
108
+ assert_valid_transition,
109
+ lifecycle_projection,
110
+ project_lifecycle_fields,
111
+ resolve_submission_mode,
112
+ state_from_status,
113
+ validate_submission_mode_request,
114
+ )
115
+
116
+ __all__ = [
117
+ "Action",
118
+ "Actor",
119
+ "AgentRuntimeTarget",
120
+ "ArtifactContract",
121
+ "ArtifactDescriptor",
122
+ "ArtifactPaths",
123
+ "ArtifactTrustLevel",
124
+ "CONSUMER_REQUIREMENTS",
125
+ "CapabilityLevel",
126
+ "CheckpointDescriptor",
127
+ "CheckpointLabelsRequest",
128
+ "CheckpointResumeContract",
129
+ "CheckpointSemantics",
130
+ "CompatibilityIssue",
131
+ "CompatibilityReport",
132
+ "CONTRACT_VERSION",
133
+ "ContainerExecutionContract",
134
+ "ConsumerRequirement",
135
+ "ConsumerTarget",
136
+ "CoreNoun",
137
+ "CounterRuntime",
138
+ "DatasetDescriptor",
139
+ "DatasetSplit",
140
+ "ExecutionKind",
141
+ "ExecutionProfile",
142
+ "ExecutionRecord",
143
+ "FrameworkAdapterDescriptor",
144
+ "GoExContractDump",
145
+ "HTTPContainerClient",
146
+ "InMemoryAsyncRolloutExecutor",
147
+ "InMemoryTaskCatalog",
148
+ "InferenceApiFamily",
149
+ "InferenceTarget",
150
+ "LeverBundle",
151
+ "ManagedRuntime",
152
+ "NLEScoutRewardTracker",
153
+ "Observation",
154
+ "Outcome",
155
+ "OutcomeKind",
156
+ "PauseRequest",
157
+ "PrimitiveProtocol",
158
+ "ProxyMode",
159
+ "ProxyResolution",
160
+ "RecoveryActionKind",
161
+ "RecoveryPoint",
162
+ "ReferenceManagedRuntime",
163
+ "RequestValidationIssue",
164
+ "ResumeSemantics",
165
+ "RewardSignal",
166
+ "RewardSource",
167
+ "ResourceKind",
168
+ "ResourceRef",
169
+ "RolloutMode",
170
+ "RolloutState",
171
+ "RouteHints",
172
+ "RunPolicyContract",
173
+ "RunRecoveryProjection",
174
+ "RuntimeCapabilitySurface",
175
+ "RuntimeCheckpointRequest",
176
+ "RuntimeFamily",
177
+ "RuntimeKind",
178
+ "RuntimeMetadata",
179
+ "RuntimeResumeRequest",
180
+ "ScoutRewardUpdate",
181
+ "StateSnapshot",
182
+ "StatefulnessTier",
183
+ "SubmissionMode",
184
+ "TaskCatalog",
185
+ "TaskContract",
186
+ "TaskDefinition",
187
+ "TaskFilter",
188
+ "TaskInfo",
189
+ "TaskInstance",
190
+ "TerminateRequest",
191
+ "TimePenaltyMode",
192
+ "TokenEmissionCapabilities",
193
+ "TokenTrace",
194
+ "ToolCallRecord",
195
+ "ToolCallSchemaKind",
196
+ "ToolCallStyle",
197
+ "ToolOutputMode",
198
+ "ToolRuntimeCapabilities",
199
+ "ToolRuntimeKind",
200
+ "ToolSpecification",
201
+ "TraceEvent",
202
+ "TraceIdentity",
203
+ "Trajectory",
204
+ "TransformFailure",
205
+ "TransformPreferencePolicy",
206
+ "TurnRecord",
207
+ "VerifierResult",
208
+ "all_framework_descriptors",
209
+ "all_profile_specs",
210
+ "archipelago_descriptor",
211
+ "assert_consumer_support",
212
+ "assert_valid_transition",
213
+ "compatibility_matrix",
214
+ "consumer_requirement",
215
+ "create_reference_app",
216
+ "derive_run_recovery_projection",
217
+ "environments_old_descriptor",
218
+ "evaluate_consumer_support",
219
+ "evaluate_runtime_requirement",
220
+ "execution_to_rollout_payload",
221
+ "execution_to_state_payload",
222
+ "harbor_descriptor",
223
+ "infer_profiles",
224
+ "lifecycle_projection",
225
+ "metadata_to_http_payload",
226
+ "missing_protocols",
227
+ "openenv_descriptor",
228
+ "project_lifecycle_fields",
229
+ "resolve_submission_mode",
230
+ "spec_for_profile",
231
+ "state_from_status",
232
+ "task_definition_from_task_info",
233
+ "task_info_to_http_payload",
234
+ "validate_submission_mode_request",
235
+ ]
@@ -0,0 +1,221 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass, field
4
+
5
+ from .ontology import CapabilityLevel, CoreNoun, ExecutionProfile, PrimitiveProtocol, RuntimeKind
6
+ from .serde import JsonDataclassMixin
7
+
8
+
9
+ @dataclass(frozen=True, slots=True)
10
+ class FrameworkAdapterDescriptor(JsonDataclassMixin):
11
+ framework: str
12
+ runtime_kind: RuntimeKind
13
+ noun_fidelity: dict[CoreNoun, CapabilityLevel]
14
+ protocol_fidelity: dict[PrimitiveProtocol, CapabilityLevel]
15
+ profile_fidelity: dict[ExecutionProfile, CapabilityLevel]
16
+ notes: list[str] = field(default_factory=list)
17
+
18
+
19
+
20
+ def environments_old_descriptor() -> FrameworkAdapterDescriptor:
21
+ return FrameworkAdapterDescriptor(
22
+ framework="environments_old",
23
+ runtime_kind=RuntimeKind.ENVIRONMENT,
24
+ noun_fidelity={
25
+ CoreNoun.RUNTIME: CapabilityLevel.NATIVE,
26
+ CoreNoun.ACTOR: CapabilityLevel.NATIVE,
27
+ CoreNoun.ACTION: CapabilityLevel.NATIVE,
28
+ CoreNoun.OBSERVATION: CapabilityLevel.NATIVE,
29
+ CoreNoun.STATE: CapabilityLevel.NATIVE,
30
+ CoreNoun.EXECUTION: CapabilityLevel.NATIVE,
31
+ CoreNoun.OUTCOME: CapabilityLevel.DERIVED,
32
+ CoreNoun.TASK_INSTANCE: CapabilityLevel.NATIVE,
33
+ CoreNoun.CHECKPOINT: CapabilityLevel.NATIVE,
34
+ CoreNoun.TASK_CATALOG: CapabilityLevel.NATIVE,
35
+ },
36
+ protocol_fidelity={
37
+ PrimitiveProtocol.CATALOG_BACKED: CapabilityLevel.NATIVE,
38
+ PrimitiveProtocol.RESETTABLE: CapabilityLevel.NATIVE,
39
+ PrimitiveProtocol.STEPPABLE: CapabilityLevel.NATIVE,
40
+ PrimitiveProtocol.OBSERVABLE: CapabilityLevel.NATIVE,
41
+ PrimitiveProtocol.STATE_READABLE: CapabilityLevel.NATIVE,
42
+ PrimitiveProtocol.CHECKPOINTABLE: CapabilityLevel.NATIVE,
43
+ PrimitiveProtocol.RESTORABLE: CapabilityLevel.NATIVE,
44
+ PrimitiveProtocol.FORKABLE: CapabilityLevel.DERIVED,
45
+ PrimitiveProtocol.ROLLOUT_RUNNABLE: CapabilityLevel.APPROXIMATE,
46
+ PrimitiveProtocol.ASYNC_ROLLOUT_RUNNABLE: CapabilityLevel.DERIVED,
47
+ PrimitiveProtocol.TRACE_EMITTING: CapabilityLevel.DERIVED,
48
+ PrimitiveProtocol.REWARD_EMITTING: CapabilityLevel.APPROXIMATE,
49
+ PrimitiveProtocol.VERIFIER_BACKED: CapabilityLevel.APPROXIMATE,
50
+ PrimitiveProtocol.TOOL_CALLABLE: CapabilityLevel.APPROXIMATE,
51
+ PrimitiveProtocol.TOKEN_TRACE_EMITTING: CapabilityLevel.UNSUPPORTED,
52
+ PrimitiveProtocol.MULTI_ACTOR: CapabilityLevel.UNSUPPORTED,
53
+ PrimitiveProtocol.PROXIED_INFERENCE_BACKED: CapabilityLevel.UNSUPPORTED,
54
+ },
55
+ profile_fidelity={
56
+ ExecutionProfile.GYM_STYLE_ENVIRONMENT: CapabilityLevel.NATIVE,
57
+ ExecutionProfile.CHECKPOINTABLE_STATEFUL_ENVIRONMENT: CapabilityLevel.NATIVE,
58
+ ExecutionProfile.CHECKPOINTABLE_LONG_HORIZON_ENVIRONMENT: CapabilityLevel.DERIVED,
59
+ ExecutionProfile.RL_TRAJECTORY_EMITTER: CapabilityLevel.APPROXIMATE,
60
+ },
61
+ notes=[
62
+ "Preserves engine-vs-environment split and checkpointing semantics.",
63
+ "Async rollout control usually arrives through a wrapper service rather than the core framework.",
64
+ ],
65
+ )
66
+
67
+
68
+
69
+ def openenv_descriptor() -> FrameworkAdapterDescriptor:
70
+ return FrameworkAdapterDescriptor(
71
+ framework="openenv",
72
+ runtime_kind=RuntimeKind.ENVIRONMENT,
73
+ noun_fidelity={
74
+ CoreNoun.RUNTIME: CapabilityLevel.NATIVE,
75
+ CoreNoun.ACTOR: CapabilityLevel.NATIVE,
76
+ CoreNoun.ACTION: CapabilityLevel.NATIVE,
77
+ CoreNoun.OBSERVATION: CapabilityLevel.NATIVE,
78
+ CoreNoun.STATE: CapabilityLevel.NATIVE,
79
+ CoreNoun.EXECUTION: CapabilityLevel.NATIVE,
80
+ CoreNoun.OUTCOME: CapabilityLevel.NATIVE,
81
+ CoreNoun.TASK_INSTANCE: CapabilityLevel.APPROXIMATE,
82
+ CoreNoun.TASK_CATALOG: CapabilityLevel.UNSUPPORTED,
83
+ },
84
+ protocol_fidelity={
85
+ PrimitiveProtocol.RESETTABLE: CapabilityLevel.NATIVE,
86
+ PrimitiveProtocol.STEPPABLE: CapabilityLevel.NATIVE,
87
+ PrimitiveProtocol.OBSERVABLE: CapabilityLevel.NATIVE,
88
+ PrimitiveProtocol.STATE_READABLE: CapabilityLevel.NATIVE,
89
+ PrimitiveProtocol.CHECKPOINTABLE: CapabilityLevel.APPROXIMATE,
90
+ PrimitiveProtocol.RESTORABLE: CapabilityLevel.APPROXIMATE,
91
+ PrimitiveProtocol.ROLLOUT_RUNNABLE: CapabilityLevel.APPROXIMATE,
92
+ PrimitiveProtocol.ASYNC_ROLLOUT_RUNNABLE: CapabilityLevel.APPROXIMATE,
93
+ PrimitiveProtocol.TRACE_EMITTING: CapabilityLevel.DERIVED,
94
+ PrimitiveProtocol.REWARD_EMITTING: CapabilityLevel.NATIVE,
95
+ PrimitiveProtocol.VERIFIER_BACKED: CapabilityLevel.UNSUPPORTED,
96
+ PrimitiveProtocol.TOOL_CALLABLE: CapabilityLevel.APPROXIMATE,
97
+ PrimitiveProtocol.TOKEN_TRACE_EMITTING: CapabilityLevel.APPROXIMATE,
98
+ PrimitiveProtocol.MULTI_ACTOR: CapabilityLevel.APPROXIMATE,
99
+ PrimitiveProtocol.PROXIED_INFERENCE_BACKED: CapabilityLevel.APPROXIMATE,
100
+ PrimitiveProtocol.CATALOG_BACKED: CapabilityLevel.UNSUPPORTED,
101
+ },
102
+ profile_fidelity={
103
+ ExecutionProfile.GYM_STYLE_ENVIRONMENT: CapabilityLevel.NATIVE,
104
+ ExecutionProfile.RL_TRAJECTORY_EMITTER: CapabilityLevel.NATIVE,
105
+ ExecutionProfile.CHECKPOINTABLE_STATEFUL_ENVIRONMENT: CapabilityLevel.APPROXIMATE,
106
+ ExecutionProfile.HARNESS_MANAGED_BENCHMARK_ENVIRONMENT: CapabilityLevel.UNSUPPORTED,
107
+ },
108
+ notes=[
109
+ "Best external reference for clean reset/step/state client-server interaction.",
110
+ "Task catalog and benchmark orchestration are weaker than in the Synth substrate.",
111
+ ],
112
+ )
113
+
114
+
115
+
116
+ def archipelago_descriptor() -> FrameworkAdapterDescriptor:
117
+ return FrameworkAdapterDescriptor(
118
+ framework="archipelago",
119
+ runtime_kind=RuntimeKind.SANDBOX,
120
+ noun_fidelity={
121
+ CoreNoun.RUNTIME: CapabilityLevel.NATIVE,
122
+ CoreNoun.ACTOR: CapabilityLevel.NATIVE,
123
+ CoreNoun.ACTION: CapabilityLevel.NATIVE,
124
+ CoreNoun.OBSERVATION: CapabilityLevel.APPROXIMATE,
125
+ CoreNoun.STATE: CapabilityLevel.APPROXIMATE,
126
+ CoreNoun.EXECUTION: CapabilityLevel.NATIVE,
127
+ CoreNoun.OUTCOME: CapabilityLevel.NATIVE,
128
+ CoreNoun.TASK_INSTANCE: CapabilityLevel.NATIVE,
129
+ CoreNoun.ARTIFACT: CapabilityLevel.NATIVE,
130
+ CoreNoun.TOOL: CapabilityLevel.NATIVE,
131
+ CoreNoun.CHECKPOINT: CapabilityLevel.APPROXIMATE,
132
+ },
133
+ protocol_fidelity={
134
+ PrimitiveProtocol.CATALOG_BACKED: CapabilityLevel.APPROXIMATE,
135
+ PrimitiveProtocol.RESETTABLE: CapabilityLevel.APPROXIMATE,
136
+ PrimitiveProtocol.STEPPABLE: CapabilityLevel.APPROXIMATE,
137
+ PrimitiveProtocol.OBSERVABLE: CapabilityLevel.APPROXIMATE,
138
+ PrimitiveProtocol.STATE_READABLE: CapabilityLevel.APPROXIMATE,
139
+ PrimitiveProtocol.CHECKPOINTABLE: CapabilityLevel.APPROXIMATE,
140
+ PrimitiveProtocol.RESTORABLE: CapabilityLevel.APPROXIMATE,
141
+ PrimitiveProtocol.FORKABLE: CapabilityLevel.APPROXIMATE,
142
+ PrimitiveProtocol.ROLLOUT_RUNNABLE: CapabilityLevel.DERIVED,
143
+ PrimitiveProtocol.ASYNC_ROLLOUT_RUNNABLE: CapabilityLevel.NATIVE,
144
+ PrimitiveProtocol.TRACE_EMITTING: CapabilityLevel.NATIVE,
145
+ PrimitiveProtocol.REWARD_EMITTING: CapabilityLevel.APPROXIMATE,
146
+ PrimitiveProtocol.VERIFIER_BACKED: CapabilityLevel.NATIVE,
147
+ PrimitiveProtocol.TOOL_CALLABLE: CapabilityLevel.NATIVE,
148
+ PrimitiveProtocol.TOKEN_TRACE_EMITTING: CapabilityLevel.UNSUPPORTED,
149
+ PrimitiveProtocol.MULTI_ACTOR: CapabilityLevel.APPROXIMATE,
150
+ PrimitiveProtocol.PROXIED_INFERENCE_BACKED: CapabilityLevel.APPROXIMATE,
151
+ },
152
+ profile_fidelity={
153
+ ExecutionProfile.SANDBOXED_MCP_WORLD: CapabilityLevel.NATIVE,
154
+ ExecutionProfile.HARNESS_MANAGED_BENCHMARK_ENVIRONMENT: CapabilityLevel.NATIVE,
155
+ ExecutionProfile.CHECKPOINTABLE_STATEFUL_ENVIRONMENT: CapabilityLevel.APPROXIMATE,
156
+ },
157
+ notes=[
158
+ "Sandbox and MCP gateway patterns are first-class.",
159
+ "Snapshots are often grading-oriented rather than branchable true environment checkpoints.",
160
+ ],
161
+ )
162
+
163
+
164
+
165
+ def harbor_descriptor() -> FrameworkAdapterDescriptor:
166
+ return FrameworkAdapterDescriptor(
167
+ framework="harbor",
168
+ runtime_kind=RuntimeKind.HARNESS,
169
+ noun_fidelity={
170
+ CoreNoun.RUNTIME: CapabilityLevel.NATIVE,
171
+ CoreNoun.ACTOR: CapabilityLevel.NATIVE,
172
+ CoreNoun.ACTION: CapabilityLevel.NATIVE,
173
+ CoreNoun.OBSERVATION: CapabilityLevel.APPROXIMATE,
174
+ CoreNoun.STATE: CapabilityLevel.UNSUPPORTED,
175
+ CoreNoun.EXECUTION: CapabilityLevel.NATIVE,
176
+ CoreNoun.OUTCOME: CapabilityLevel.NATIVE,
177
+ CoreNoun.TASK_INSTANCE: CapabilityLevel.NATIVE,
178
+ CoreNoun.ARTIFACT: CapabilityLevel.NATIVE,
179
+ CoreNoun.TRACE: CapabilityLevel.NATIVE,
180
+ CoreNoun.VERIFIER_RESULT: CapabilityLevel.NATIVE,
181
+ CoreNoun.TASK_CATALOG: CapabilityLevel.NATIVE,
182
+ },
183
+ protocol_fidelity={
184
+ PrimitiveProtocol.CATALOG_BACKED: CapabilityLevel.NATIVE,
185
+ PrimitiveProtocol.RESETTABLE: CapabilityLevel.APPROXIMATE,
186
+ PrimitiveProtocol.STEPPABLE: CapabilityLevel.APPROXIMATE,
187
+ PrimitiveProtocol.OBSERVABLE: CapabilityLevel.APPROXIMATE,
188
+ PrimitiveProtocol.STATE_READABLE: CapabilityLevel.UNSUPPORTED,
189
+ PrimitiveProtocol.CHECKPOINTABLE: CapabilityLevel.APPROXIMATE,
190
+ PrimitiveProtocol.RESTORABLE: CapabilityLevel.APPROXIMATE,
191
+ PrimitiveProtocol.FORKABLE: CapabilityLevel.APPROXIMATE,
192
+ PrimitiveProtocol.ROLLOUT_RUNNABLE: CapabilityLevel.NATIVE,
193
+ PrimitiveProtocol.ASYNC_ROLLOUT_RUNNABLE: CapabilityLevel.NATIVE,
194
+ PrimitiveProtocol.TRACE_EMITTING: CapabilityLevel.NATIVE,
195
+ PrimitiveProtocol.REWARD_EMITTING: CapabilityLevel.NATIVE,
196
+ PrimitiveProtocol.VERIFIER_BACKED: CapabilityLevel.NATIVE,
197
+ PrimitiveProtocol.TOOL_CALLABLE: CapabilityLevel.APPROXIMATE,
198
+ PrimitiveProtocol.TOKEN_TRACE_EMITTING: CapabilityLevel.APPROXIMATE,
199
+ PrimitiveProtocol.MULTI_ACTOR: CapabilityLevel.DERIVED,
200
+ PrimitiveProtocol.PROXIED_INFERENCE_BACKED: CapabilityLevel.NATIVE,
201
+ },
202
+ profile_fidelity={
203
+ ExecutionProfile.HARNESS_MANAGED_BENCHMARK_ENVIRONMENT: CapabilityLevel.NATIVE,
204
+ ExecutionProfile.RL_TRAJECTORY_EMITTER: CapabilityLevel.APPROXIMATE,
205
+ ExecutionProfile.CHECKPOINTABLE_LONG_HORIZON_ENVIRONMENT: CapabilityLevel.APPROXIMATE,
206
+ },
207
+ notes=[
208
+ "Strong benchmark/eval/RL orchestration reference.",
209
+ "Harness-centric design means engine state and native checkpoint semantics are weaker than substrate-first systems.",
210
+ ],
211
+ )
212
+
213
+
214
+
215
+ def all_framework_descriptors() -> list[FrameworkAdapterDescriptor]:
216
+ return [
217
+ environments_old_descriptor(),
218
+ openenv_descriptor(),
219
+ archipelago_descriptor(),
220
+ harbor_descriptor(),
221
+ ]