@vela-science/canopus 0.4.0-rc.1

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 (118) hide show
  1. package/CHANGELOG.md +249 -0
  2. package/LICENSE-APACHE +176 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +124 -0
  5. package/SECURITY.md +35 -0
  6. package/capsules/erdos1056-k15/README.md +35 -0
  7. package/capsules/erdos1056-k15/bin/linux-arm64/10428401-10428600/verifier +0 -0
  8. package/capsules/erdos1056-k15/bin/linux-x86_64/10428401-10428600/verifier +0 -0
  9. package/capsules/formal-erdos-505-test-dim-one/README.md +20 -0
  10. package/capsules/formal-erdos-505-test-dim-one/verifier +105 -0
  11. package/dist/src/activity/events.d.ts +15 -0
  12. package/dist/src/activity/events.js +24 -0
  13. package/dist/src/activity/store.d.ts +10 -0
  14. package/dist/src/activity/store.js +165 -0
  15. package/dist/src/artifact/freeze.d.ts +21 -0
  16. package/dist/src/artifact/freeze.js +177 -0
  17. package/dist/src/artifact/materialize.d.ts +6 -0
  18. package/dist/src/artifact/materialize.js +29 -0
  19. package/dist/src/budget/enforce.d.ts +30 -0
  20. package/dist/src/budget/enforce.js +98 -0
  21. package/dist/src/candidate/validate.d.ts +3 -0
  22. package/dist/src/candidate/validate.js +32 -0
  23. package/dist/src/capability/withdrawal.d.ts +47 -0
  24. package/dist/src/capability/withdrawal.js +487 -0
  25. package/dist/src/cli.d.ts +2 -0
  26. package/dist/src/cli.js +503 -0
  27. package/dist/src/contracts/candidate.d.ts +50 -0
  28. package/dist/src/contracts/candidate.js +93 -0
  29. package/dist/src/contracts/mission.d.ts +139 -0
  30. package/dist/src/contracts/mission.js +401 -0
  31. package/dist/src/contracts/validation.d.ts +25 -0
  32. package/dist/src/contracts/validation.js +95 -0
  33. package/dist/src/engines/codex-events.d.ts +25 -0
  34. package/dist/src/engines/codex-events.js +219 -0
  35. package/dist/src/engines/codex-exec.d.ts +17 -0
  36. package/dist/src/engines/codex-exec.js +136 -0
  37. package/dist/src/engines/codex-home.d.ts +7 -0
  38. package/dist/src/engines/codex-home.js +50 -0
  39. package/dist/src/engines/codex-tool-free.d.ts +26 -0
  40. package/dist/src/engines/codex-tool-free.js +213 -0
  41. package/dist/src/engines/codex-tools-native.d.ts +30 -0
  42. package/dist/src/engines/codex-tools-native.js +405 -0
  43. package/dist/src/engines/engine.d.ts +55 -0
  44. package/dist/src/engines/engine.js +4 -0
  45. package/dist/src/engines/fake.d.ts +7 -0
  46. package/dist/src/engines/fake.js +37 -0
  47. package/dist/src/evidence/manifests.d.ts +9 -0
  48. package/dist/src/evidence/manifests.js +56 -0
  49. package/dist/src/index.d.ts +32 -0
  50. package/dist/src/index.js +32 -0
  51. package/dist/src/mission/prepare.d.ts +33 -0
  52. package/dist/src/mission/prepare.js +375 -0
  53. package/dist/src/product/custody.d.ts +27 -0
  54. package/dist/src/product/custody.js +131 -0
  55. package/dist/src/product/doctor.d.ts +61 -0
  56. package/dist/src/product/doctor.js +278 -0
  57. package/dist/src/product/profile-bundle.d.ts +21 -0
  58. package/dist/src/product/profile-bundle.js +78 -0
  59. package/dist/src/product/profile.d.ts +67 -0
  60. package/dist/src/product/profile.js +251 -0
  61. package/dist/src/product/replay.d.ts +10 -0
  62. package/dist/src/product/replay.js +71 -0
  63. package/dist/src/product/run.d.ts +31 -0
  64. package/dist/src/product/run.js +264 -0
  65. package/dist/src/product/runtime.d.ts +18 -0
  66. package/dist/src/product/runtime.js +64 -0
  67. package/dist/src/product/version.d.ts +1 -0
  68. package/dist/src/product/version.js +6 -0
  69. package/dist/src/product/withdraw.d.ts +8 -0
  70. package/dist/src/product/withdraw.js +255 -0
  71. package/dist/src/projection/diagnostic.d.ts +12 -0
  72. package/dist/src/projection/diagnostic.js +61 -0
  73. package/dist/src/projection/failure.d.ts +26 -0
  74. package/dist/src/projection/failure.js +63 -0
  75. package/dist/src/projection/run.d.ts +89 -0
  76. package/dist/src/projection/run.js +159 -0
  77. package/dist/src/receipt/map.d.ts +25 -0
  78. package/dist/src/receipt/map.js +162 -0
  79. package/dist/src/repair/plan.d.ts +2 -0
  80. package/dist/src/repair/plan.js +22 -0
  81. package/dist/src/roles.d.ts +2 -0
  82. package/dist/src/roles.js +9 -0
  83. package/dist/src/run.d.ts +94 -0
  84. package/dist/src/run.js +654 -0
  85. package/dist/src/util/canonical.d.ts +5 -0
  86. package/dist/src/util/canonical.js +53 -0
  87. package/dist/src/util/command.d.ts +26 -0
  88. package/dist/src/util/command.js +161 -0
  89. package/dist/src/util/files.d.ts +3 -0
  90. package/dist/src/util/files.js +65 -0
  91. package/dist/src/vela/cli.d.ts +71 -0
  92. package/dist/src/vela/cli.js +718 -0
  93. package/dist/src/vela/types.d.ts +27 -0
  94. package/dist/src/vela/types.js +1 -0
  95. package/dist/src/verifier/run.d.ts +24 -0
  96. package/dist/src/verifier/run.js +315 -0
  97. package/dist/src/workspace/prepare.d.ts +30 -0
  98. package/dist/src/workspace/prepare.js +183 -0
  99. package/docs/MISSIONS.md +78 -0
  100. package/docs/RELEASES.md +1036 -0
  101. package/docs/RUN_RECORD.md +70 -0
  102. package/missions/erdos1056-k15-next/mission.draft.json +40 -0
  103. package/missions/formal-erdos-505-test-dim-one/mission.draft.json +40 -0
  104. package/package.json +89 -0
  105. package/profiles/erdos1056-k15-10428401-10428600.json +33 -0
  106. package/profiles/formal-erdos-505-test-dim-one.json +35 -0
  107. package/runtime/native-worker/config-linux.toml +20 -0
  108. package/runtime/native-worker/config.toml +17 -0
  109. package/schemas/candidate.v0.json +125 -0
  110. package/schemas/engine-manifest.v0.json +45 -0
  111. package/schemas/engine-output.v0.json +41 -0
  112. package/schemas/mission.v0.json +175 -0
  113. package/schemas/mission.v1.json +224 -0
  114. package/schemas/verifier-manifest.v0.json +48 -0
  115. package/schemas/verifier-manifest.v1.json +59 -0
  116. package/scripts/run-hostile-native-custody-fixture.mjs +382 -0
  117. package/scripts/run-hostile-verifier-fixture.mjs +63 -0
  118. package/tests/fixtures/hostile-verifier/probe.py +35 -0
@@ -0,0 +1,175 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://vela.science/schemas/canopus/mission.v0.json",
4
+ "title": "Canopus mission v0",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "id",
10
+ "target",
11
+ "vela_version",
12
+ "vela_sha256",
13
+ "frontier",
14
+ "actor",
15
+ "role",
16
+ "claim_type",
17
+ "replayability",
18
+ "objective",
19
+ "completion_condition",
20
+ "roots",
21
+ "allowed_paths",
22
+ "budgets",
23
+ "verifier",
24
+ "scientific_chain",
25
+ "landing"
26
+ ],
27
+ "properties": {
28
+ "schema": { "const": "canopus.mission.v0" },
29
+ "id": {
30
+ "type": "string",
31
+ "pattern": "^mission_[a-z0-9][a-z0-9._-]{0,126}$"
32
+ },
33
+ "target": { "type": "string", "minLength": 1, "maxLength": 256 },
34
+ "vela_version": {
35
+ "type": "string",
36
+ "pattern": "^0\\.[0-9]+\\.[0-9]+$"
37
+ },
38
+ "vela_sha256": { "$ref": "#/$defs/sha256" },
39
+ "frontier": {
40
+ "anyOf": [{ "const": "." }, { "$ref": "#/$defs/relativePath" }]
41
+ },
42
+ "actor": {
43
+ "type": "string",
44
+ "pattern": "^agent:[a-z0-9][a-z0-9._-]{0,62}$"
45
+ },
46
+ "role": {
47
+ "enum": ["producer", "adversary", "verifier", "fidelity"]
48
+ },
49
+ "claim_type": {
50
+ "enum": ["computational", "theoretical", "empirical", "negative", "contradiction"]
51
+ },
52
+ "replayability": {
53
+ "const": "exact"
54
+ },
55
+ "objective": { "type": "string", "minLength": 1, "maxLength": 8192 },
56
+ "completion_condition": {
57
+ "type": "string",
58
+ "minLength": 1,
59
+ "maxLength": 4096
60
+ },
61
+ "roots": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": ["git_commit", "git_tree", "vela_event_log", "vela_snapshot"],
65
+ "properties": {
66
+ "git_commit": { "$ref": "#/$defs/gitObject" },
67
+ "git_tree": { "$ref": "#/$defs/gitObject" },
68
+ "vela_event_log": { "$ref": "#/$defs/sha256" },
69
+ "vela_snapshot": { "$ref": "#/$defs/sha256" }
70
+ }
71
+ },
72
+ "allowed_paths": {
73
+ "type": "array",
74
+ "minItems": 1,
75
+ "maxItems": 64,
76
+ "uniqueItems": true,
77
+ "items": { "$ref": "#/$defs/relativePath" }
78
+ },
79
+ "budgets": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": [
83
+ "max_research_wall_time_ms",
84
+ "max_research_processes",
85
+ "max_research_output_bytes",
86
+ "max_prompt_bytes",
87
+ "max_artifact_bytes",
88
+ "max_attempts",
89
+ "max_observed_tokens"
90
+ ],
91
+ "properties": {
92
+ "max_research_wall_time_ms": { "type": "integer", "minimum": 100, "maximum": 3600000 },
93
+ "max_research_processes": { "type": "integer", "minimum": 1, "maximum": 64 },
94
+ "max_research_output_bytes": { "type": "integer", "minimum": 1024, "maximum": 67108864 },
95
+ "max_prompt_bytes": { "type": "integer", "minimum": 1024, "maximum": 8388608 },
96
+ "max_artifact_bytes": { "type": "integer", "minimum": 1, "maximum": 1073741824 },
97
+ "max_attempts": { "type": "integer", "minimum": 1, "maximum": 8 },
98
+ "max_observed_tokens": { "type": "integer", "minimum": 1, "maximum": 1000000 }
99
+ }
100
+ },
101
+ "verifier": {
102
+ "type": "object",
103
+ "additionalProperties": false,
104
+ "required": ["argv", "executable_sha256", "cwd", "timeout_ms", "max_output_bytes", "network", "writes"],
105
+ "properties": {
106
+ "argv": {
107
+ "type": "array",
108
+ "minItems": 1,
109
+ "maxItems": 64,
110
+ "items": { "type": "string", "maxLength": 4096 }
111
+ },
112
+ "executable_sha256": { "$ref": "#/$defs/sha256" },
113
+ "cwd": { "$ref": "#/$defs/relativePath" },
114
+ "timeout_ms": { "type": "integer", "minimum": 100, "maximum": 3600000 },
115
+ "max_output_bytes": { "type": "integer", "minimum": 1024, "maximum": 67108864 },
116
+ "network": { "const": "deny" },
117
+ "writes": { "const": "deny" }
118
+ }
119
+ },
120
+ "scientific_chain": {
121
+ "type": "object",
122
+ "additionalProperties": false,
123
+ "required": ["performed_test"],
124
+ "properties": {
125
+ "predicted_observable": {
126
+ "type": "string",
127
+ "minLength": 1,
128
+ "maxLength": 16384
129
+ },
130
+ "not_applicable": { "const": true },
131
+ "performed_test": {
132
+ "type": "string",
133
+ "minLength": 1,
134
+ "maxLength": 16384
135
+ }
136
+ },
137
+ "oneOf": [
138
+ { "required": ["predicted_observable"], "not": { "required": ["not_applicable"] } },
139
+ { "required": ["not_applicable"], "not": { "required": ["predicted_observable"] } }
140
+ ]
141
+ },
142
+ "landing": {
143
+ "type": "object",
144
+ "additionalProperties": false,
145
+ "required": ["expected_routes", "max_accepted_delta"],
146
+ "properties": {
147
+ "expected_routes": {
148
+ "type": "array",
149
+ "minItems": 1,
150
+ "maxItems": 3,
151
+ "uniqueItems": true,
152
+ "items": { "enum": ["permit", "defer"] }
153
+ },
154
+ "max_accepted_delta": { "type": "integer", "minimum": 0, "maximum": 1 }
155
+ }
156
+ },
157
+ "parent_candidate": { "$ref": "#/$defs/sha256" },
158
+ "repair_reason": { "type": "string", "minLength": 1, "maxLength": 4096 }
159
+ },
160
+ "$defs": {
161
+ "gitObject": {
162
+ "type": "string",
163
+ "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$"
164
+ },
165
+ "sha256": {
166
+ "type": "string",
167
+ "pattern": "^sha256:[0-9a-f]{64}$"
168
+ },
169
+ "relativePath": {
170
+ "type": "string",
171
+ "minLength": 1,
172
+ "maxLength": 1024
173
+ }
174
+ }
175
+ }
@@ -0,0 +1,224 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://vela.science/schemas/canopus/mission.v1.json",
4
+ "title": "Canopus mission v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema", "id", "target", "vela_version", "vela_sha256", "frontier",
9
+ "actor", "role", "claim_type", "replayability", "objective",
10
+ "completion_condition", "roots", "target_packet", "strict_baseline",
11
+ "allowed_paths", "budgets", "worker", "verifier", "scientific_chain",
12
+ "landing"
13
+ ],
14
+ "dependentRequired": {
15
+ "execution_binding": ["result_contract"],
16
+ "result_contract": ["execution_binding"]
17
+ },
18
+ "allOf": [
19
+ {
20
+ "if": {
21
+ "properties": {
22
+ "landing": {
23
+ "properties": {
24
+ "expected_routes": { "const": ["permit"] }
25
+ },
26
+ "required": ["expected_routes"]
27
+ }
28
+ }
29
+ },
30
+ "then": { "required": ["execution_binding", "result_contract"] }
31
+ }
32
+ ],
33
+ "properties": {
34
+ "schema": { "const": "canopus.mission.v1" },
35
+ "id": { "type": "string", "pattern": "^mission_[a-z0-9][a-z0-9._-]{0,126}$" },
36
+ "target": { "type": "string", "minLength": 1, "maxLength": 256 },
37
+ "vela_version": { "type": "string", "pattern": "^0\\.[0-9]+\\.[0-9]+$" },
38
+ "vela_sha256": { "$ref": "#/$defs/sha256" },
39
+ "frontier": { "anyOf": [{ "const": "." }, { "$ref": "#/$defs/relativePath" }] },
40
+ "actor": { "type": "string", "pattern": "^agent:[a-z0-9][a-z0-9._-]{0,62}$" },
41
+ "role": { "enum": ["producer", "adversary", "verifier", "fidelity"] },
42
+ "claim_type": { "enum": ["computational", "theoretical", "empirical", "negative", "contradiction"] },
43
+ "replayability": { "const": "exact" },
44
+ "objective": { "type": "string", "minLength": 1, "maxLength": 8192 },
45
+ "completion_condition": { "type": "string", "minLength": 1, "maxLength": 4096 },
46
+ "roots": { "$ref": "#/$defs/roots" },
47
+ "target_packet": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": ["path", "sha256"],
51
+ "properties": {
52
+ "path": { "$ref": "#/$defs/relativePath" },
53
+ "sha256": { "$ref": "#/$defs/sha256" }
54
+ }
55
+ },
56
+ "profile": {
57
+ "type": "object",
58
+ "additionalProperties": false,
59
+ "required": ["name", "root"],
60
+ "properties": {
61
+ "name": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$", "maxLength": 128 },
62
+ "root": { "$ref": "#/$defs/sha256" }
63
+ }
64
+ },
65
+ "execution_binding": {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "required": ["schema", "packet_root", "profile_root", "verifier_capsule_root", "result_contract_root"],
69
+ "properties": {
70
+ "schema": { "const": "vela.execution-binding.v1" },
71
+ "packet_root": { "$ref": "#/$defs/sha256" },
72
+ "profile_root": { "$ref": "#/$defs/sha256" },
73
+ "verifier_capsule_root": { "$ref": "#/$defs/sha256" },
74
+ "result_contract_root": { "$ref": "#/$defs/sha256" }
75
+ }
76
+ },
77
+ "result_contract": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": ["schema", "target", "claim_type", "replayability", "candidate_status", "verifier_status", "required_artifact_kinds"],
81
+ "properties": {
82
+ "schema": { "const": "canopus.result-contract.v1" },
83
+ "target": { "type": "string", "minLength": 1, "maxLength": 256 },
84
+ "claim_type": { "const": "computational" },
85
+ "replayability": { "const": "exact" },
86
+ "candidate_status": { "const": "success" },
87
+ "verifier_status": { "const": "passed" },
88
+ "required_artifact_kinds": {
89
+ "type": "array",
90
+ "minItems": 1,
91
+ "maxItems": 16,
92
+ "uniqueItems": true,
93
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9._-]*$", "maxLength": 64 }
94
+ }
95
+ }
96
+ },
97
+ "strict_baseline": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": ["status", "blocker_count", "blockers_root", "rule_counts"],
101
+ "properties": {
102
+ "status": { "enum": ["pass", "fail"] },
103
+ "blocker_count": { "type": "integer", "minimum": 0, "maximum": 1000000 },
104
+ "blockers_root": { "$ref": "#/$defs/sha256" },
105
+ "rule_counts": {
106
+ "type": "array",
107
+ "maxItems": 64,
108
+ "items": {
109
+ "type": "object",
110
+ "additionalProperties": false,
111
+ "required": ["rule", "count"],
112
+ "properties": {
113
+ "rule": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$", "maxLength": 128 },
114
+ "count": { "type": "integer", "minimum": 1, "maximum": 1000000 }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ },
120
+ "allowed_paths": {
121
+ "type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true,
122
+ "items": { "$ref": "#/$defs/relativePath" }
123
+ },
124
+ "budgets": { "$ref": "#/$defs/budgets" },
125
+ "worker": {
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "required": ["kind", "platform", "codex_version", "codex_sha256", "permission_profile_path", "permission_profile_sha256", "workspace", "output_schema_sha256", "model", "network", "tools"],
129
+ "properties": {
130
+ "kind": { "const": "codex_tools_native" },
131
+ "platform": { "enum": ["darwin", "linux"] },
132
+ "codex_version": { "type": "string", "pattern": "^codex-cli [0-9]+\\.[0-9]+\\.[0-9]+(?:[-+][A-Za-z0-9.-]+)?$" },
133
+ "codex_sha256": { "$ref": "#/$defs/sha256" },
134
+ "permission_profile_path": { "$ref": "#/$defs/relativePath" },
135
+ "permission_profile_sha256": { "$ref": "#/$defs/sha256" },
136
+ "workspace": { "const": "target_packet_only" },
137
+ "output_schema_sha256": { "$ref": "#/$defs/sha256" },
138
+ "model": { "type": "string", "minLength": 1, "maxLength": 128 },
139
+ "network": { "const": "provider_only" },
140
+ "tools": { "const": ["shell", "apply_patch"] }
141
+ }
142
+ },
143
+ "verifier": {
144
+ "type": "object",
145
+ "additionalProperties": false,
146
+ "required": ["argv", "executable_sha256", "cwd", "timeout_ms", "max_output_bytes", "network", "writes", "capsule_path", "capsule_sha256", "image"],
147
+ "properties": {
148
+ "argv": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "string", "maxLength": 4096 } },
149
+ "executable_sha256": { "$ref": "#/$defs/sha256" },
150
+ "cwd": { "$ref": "#/$defs/relativePath" },
151
+ "timeout_ms": { "type": "integer", "minimum": 100, "maximum": 3600000 },
152
+ "max_output_bytes": { "type": "integer", "minimum": 1024, "maximum": 67108864 },
153
+ "network": { "const": "deny" },
154
+ "writes": { "const": "deny" },
155
+ "capsule_path": { "$ref": "#/$defs/relativePath" },
156
+ "capsule_sha256": { "$ref": "#/$defs/sha256" },
157
+ "image": { "$ref": "#/$defs/sha256" },
158
+ "platform": { "enum": ["linux/amd64", "linux/arm64"] }
159
+ }
160
+ },
161
+ "scientific_chain": { "$ref": "#/$defs/scientificChain" },
162
+ "landing": {
163
+ "type": "object",
164
+ "additionalProperties": false,
165
+ "required": ["expected_routes", "max_accepted_delta"],
166
+ "oneOf": [
167
+ {
168
+ "properties": {
169
+ "expected_routes": { "const": ["defer"] },
170
+ "max_accepted_delta": { "const": 0 }
171
+ }
172
+ },
173
+ {
174
+ "properties": {
175
+ "expected_routes": { "const": ["permit"] },
176
+ "max_accepted_delta": { "const": 1 }
177
+ }
178
+ }
179
+ ]
180
+ },
181
+ "parent_candidate": { "$ref": "#/$defs/sha256" },
182
+ "repair_reason": { "type": "string", "minLength": 1, "maxLength": 4096 }
183
+ },
184
+ "$defs": {
185
+ "gitObject": { "type": "string", "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$" },
186
+ "sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
187
+ "relativePath": { "type": "string", "minLength": 1, "maxLength": 1024 },
188
+ "roots": {
189
+ "type": "object", "additionalProperties": false,
190
+ "required": ["git_commit", "git_tree", "vela_event_log", "vela_snapshot"],
191
+ "properties": {
192
+ "git_commit": { "$ref": "#/$defs/gitObject" },
193
+ "git_tree": { "$ref": "#/$defs/gitObject" },
194
+ "vela_event_log": { "$ref": "#/$defs/sha256" },
195
+ "vela_snapshot": { "$ref": "#/$defs/sha256" }
196
+ }
197
+ },
198
+ "budgets": {
199
+ "type": "object", "additionalProperties": false,
200
+ "required": ["max_research_wall_time_ms", "max_research_processes", "max_research_output_bytes", "max_prompt_bytes", "max_artifact_bytes", "max_attempts", "max_observed_tokens"],
201
+ "properties": {
202
+ "max_research_wall_time_ms": { "type": "integer", "minimum": 100, "maximum": 3600000 },
203
+ "max_research_processes": { "type": "integer", "minimum": 1, "maximum": 64 },
204
+ "max_research_output_bytes": { "type": "integer", "minimum": 1024, "maximum": 67108864 },
205
+ "max_prompt_bytes": { "type": "integer", "minimum": 1024, "maximum": 8388608 },
206
+ "max_artifact_bytes": { "type": "integer", "minimum": 1, "maximum": 1073741824 },
207
+ "max_attempts": { "type": "integer", "minimum": 1, "maximum": 8 },
208
+ "max_observed_tokens": { "type": "integer", "minimum": 1, "maximum": 1000000 }
209
+ }
210
+ },
211
+ "scientificChain": {
212
+ "type": "object", "additionalProperties": false, "required": ["performed_test"],
213
+ "properties": {
214
+ "predicted_observable": { "type": "string", "minLength": 1, "maxLength": 16384 },
215
+ "not_applicable": { "const": true },
216
+ "performed_test": { "type": "string", "minLength": 1, "maxLength": 16384 }
217
+ },
218
+ "oneOf": [
219
+ { "required": ["predicted_observable"], "not": { "required": ["not_applicable"] } },
220
+ { "required": ["not_applicable"], "not": { "required": ["predicted_observable"] } }
221
+ ]
222
+ }
223
+ }
224
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://vela.science/schemas/canopus/verifier-manifest.v0.json",
4
+ "title": "Canopus verifier manifest v0",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "capsule_path",
10
+ "executable_sha256",
11
+ "argv_template",
12
+ "cwd",
13
+ "sandbox",
14
+ "platform"
15
+ ],
16
+ "properties": {
17
+ "schema": { "const": "canopus.verifier-manifest.v0" },
18
+ "capsule_path": { "type": "string", "minLength": 1, "maxLength": 1024 },
19
+ "executable_sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
20
+ "argv_template": {
21
+ "type": "array",
22
+ "minItems": 1,
23
+ "maxItems": 64,
24
+ "items": { "type": "string", "maxLength": 4096 }
25
+ },
26
+ "cwd": { "type": "string", "minLength": 1, "maxLength": 1024 },
27
+ "sandbox": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "required": ["backend", "network", "persistent_writes", "process_fork"],
31
+ "properties": {
32
+ "backend": { "const": "macos_seatbelt" },
33
+ "network": { "const": "deny" },
34
+ "persistent_writes": { "const": "deny" },
35
+ "process_fork": { "const": "deny" }
36
+ }
37
+ },
38
+ "platform": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["os", "arch"],
42
+ "properties": {
43
+ "os": { "const": "darwin" },
44
+ "arch": { "enum": ["arm64", "x64"] }
45
+ }
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://vela.science/schemas/canopus/verifier-manifest.v1.json",
4
+ "title": "Canopus verifier manifest v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "capsule_path",
10
+ "executable_sha256",
11
+ "argv_template",
12
+ "cwd",
13
+ "image",
14
+ "sandbox",
15
+ "platform"
16
+ ],
17
+ "properties": {
18
+ "schema": { "const": "canopus.verifier-manifest.v1" },
19
+ "capsule_path": { "type": "string", "minLength": 1, "maxLength": 1024 },
20
+ "executable_sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
21
+ "argv_template": {
22
+ "type": "array",
23
+ "minItems": 1,
24
+ "maxItems": 64,
25
+ "items": { "type": "string", "maxLength": 4096 }
26
+ },
27
+ "cwd": { "type": "string", "minLength": 1, "maxLength": 1024 },
28
+ "image": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
29
+ "sandbox": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": [
33
+ "backend",
34
+ "network",
35
+ "root_filesystem",
36
+ "bind_mounts",
37
+ "capabilities",
38
+ "privilege_escalation"
39
+ ],
40
+ "properties": {
41
+ "backend": { "const": "docker" },
42
+ "network": { "const": "deny" },
43
+ "root_filesystem": { "const": "read_only" },
44
+ "bind_mounts": { "const": "exact_inputs_read_only" },
45
+ "capabilities": { "const": "drop_all" },
46
+ "privilege_escalation": { "const": "deny" }
47
+ }
48
+ },
49
+ "platform": {
50
+ "type": "object",
51
+ "additionalProperties": false,
52
+ "required": ["os", "arch"],
53
+ "properties": {
54
+ "os": { "const": "linux" },
55
+ "arch": { "enum": ["amd64", "arm64", "unspecified"] }
56
+ }
57
+ }
58
+ }
59
+ }