@vela-science/canopus 0.7.0 → 0.8.0
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.
- package/CHANGELOG.md +80 -0
- package/README.md +67 -145
- package/capsules/erdos1056-k15/bin/linux-arm64/{10428801-10429000 → 10429201-10429400}/verifier +0 -0
- package/capsules/erdos1056-k15/bin/linux-x86_64/{10428801-10429000 → 10429201-10429400}/verifier +0 -0
- package/compatibility.json +25 -0
- package/dist/src/{receipt/map.d.ts → candidate/finalize.d.ts} +2 -9
- package/dist/src/candidate/finalize.js +71 -0
- package/dist/src/cli.js +89 -195
- package/dist/src/contracts/mission.d.ts +1 -13
- package/dist/src/contracts/mission.js +4 -42
- package/dist/src/contracts/validation.d.ts +1 -25
- package/dist/src/contracts/validation.js +1 -95
- package/dist/src/engines/codex-tools-native.js +2 -2
- package/dist/src/index.d.ts +5 -34
- package/dist/src/index.js +4 -34
- package/dist/src/mission/prepare.d.ts +10 -1
- package/dist/src/mission/prepare.js +29 -30
- package/dist/src/product/coverage.d.ts +17 -0
- package/dist/src/product/coverage.js +137 -0
- package/dist/src/product/doctor.d.ts +1 -2
- package/dist/src/product/doctor.js +29 -8
- package/dist/src/product/profile.js +8 -2
- package/dist/src/product/replay.js +11 -12
- package/dist/src/product/run.d.ts +5 -9
- package/dist/src/product/run.js +17 -81
- package/dist/src/product/submission.d.ts +40 -0
- package/dist/src/product/submission.js +217 -0
- package/dist/src/product/submit.d.ts +22 -0
- package/dist/src/product/submit.js +264 -0
- package/dist/src/product/version.d.ts +2 -2
- package/dist/src/product/version.js +27 -4
- package/dist/src/projection/current-run.d.ts +12 -0
- package/dist/src/projection/current-run.js +94 -0
- package/dist/src/projection/failure.d.ts +17 -7
- package/dist/src/projection/failure.js +43 -12
- package/dist/src/projection/retained-mission.d.ts +6 -0
- package/dist/src/projection/retained-mission.js +41 -0
- package/dist/src/projection/retained-run.d.ts +7 -0
- package/dist/src/projection/retained-run.js +50 -0
- package/dist/src/run.d.ts +43 -34
- package/dist/src/run.js +34 -397
- package/dist/src/util/canonical.d.ts +1 -5
- package/dist/src/util/canonical.js +1 -53
- package/dist/src/vela/cli.d.ts +7 -42
- package/dist/src/vela/cli.js +102 -475
- package/dist/src/vela/types.d.ts +3 -19
- package/dist/src/verifier/run.js +1 -1
- package/dist/src/workspace/prepare.d.ts +1 -1
- package/dist/src/workspace/prepare.js +15 -15
- package/docs/EVALUATION.md +142 -0
- package/docs/MISSIONS.md +42 -80
- package/docs/RUN_RECORD.md +77 -99
- package/docs/adr/0010-nonmutating-runs-and-explicit-submission.md +191 -0
- package/missions/erdos1056-k15-next/mission.draft.json +10 -8
- package/package.json +18 -15
- package/profiles/{erdos1056-k15-10428801-10429000.json → erdos1056-k15-10429201-10429400.json} +10 -10
- package/schemas/failure.v1.json +17 -0
- package/schemas/mission.v0.json +3 -4
- package/schemas/mission.v1.json +7 -28
- package/schemas/{run.v1.json → run.v2.json} +58 -116
- package/schemas/submission-bundle.v1.json +63 -0
- package/toolchain.lock.json +31 -0
- package/capsules/formal-erdos-505-test-dim-one/verifier +0 -105
- package/capsules/quantum-10-1-4/verifier.py +0 -152
- package/capsules/sidon-a24/bin/linux-arm64/verifier +0 -0
- package/capsules/sidon-a24/bin/linux-x86_64/verifier +0 -0
- package/dist/src/engines/codex-exec.d.ts +0 -17
- package/dist/src/engines/codex-exec.js +0 -136
- package/dist/src/engines/codex-tool-free.d.ts +0 -26
- package/dist/src/engines/codex-tool-free.js +0 -213
- package/dist/src/projection/diagnostic.d.ts +0 -12
- package/dist/src/projection/diagnostic.js +0 -61
- package/dist/src/projection/public-run.d.ts +0 -59
- package/dist/src/projection/public-run.js +0 -106
- package/dist/src/projection/publication.d.ts +0 -36
- package/dist/src/projection/publication.js +0 -47
- package/dist/src/projection/run.d.ts +0 -95
- package/dist/src/projection/run.js +0 -173
- package/dist/src/receipt/map.js +0 -168
- package/dist/src/repair/plan.d.ts +0 -2
- package/dist/src/repair/plan.js +0 -22
- package/dist/src/roles.d.ts +0 -2
- package/dist/src/roles.js +0 -9
- package/missions/formal-erdos-505-test-dim-one-gpt56/mission.draft.json +0 -40
- package/missions/quantum-10-1-4-retry/mission.draft.json +0 -40
- package/missions/sidon-a24-at-least-7194-gpt56/mission.draft.json +0 -42
- package/missions/sidon-a24-at-least-7194-gpt56-v2/mission.draft.json +0 -42
- package/missions/sidon-a24-at-least-7194-gpt56-v3/mission.draft.json +0 -42
- package/profiles/formal-erdos-505-test-dim-one-gpt56.json +0 -35
- package/profiles/quantum-10-1-4-stabilizer-retry.json +0 -35
- package/profiles/sidon-a24-at-least-7194-gpt56-v2.json +0 -35
- package/profiles/sidon-a24-at-least-7194-gpt56-v3.json +0 -35
- package/profiles/sidon-a24-at-least-7194-gpt56.json +0 -35
- package/schemas/canopus.public-run.v1.json +0 -116
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# ADR 0010: Nonmutating Runs and explicit Submission
|
|
2
|
+
|
|
3
|
+
- Status: Accepted
|
|
4
|
+
- Candidate release: Canopus `v0.8.0`
|
|
5
|
+
- Protocol effect: None
|
|
6
|
+
- Vela requirement: current `vela.submission.v1` and `vela submit`
|
|
7
|
+
- Supersedes for current writers: automatic landing portions of ADR 0004
|
|
8
|
+
- Acceptance gate: the corrected real Erdős Submission must register as
|
|
9
|
+
pending review with accepted-event delta zero and reproduce from a clean
|
|
10
|
+
clone; package, custody, provenance, and release checks must also pass.
|
|
11
|
+
|
|
12
|
+
## Context
|
|
13
|
+
|
|
14
|
+
Canopus is a bounded research runner, not a scientific-state authority. Its
|
|
15
|
+
released product nevertheless combined model execution, independent verifier
|
|
16
|
+
replay, Receipt construction, Vela work mutation, Proposal registration, and
|
|
17
|
+
landing into one ordinary `run` command.
|
|
18
|
+
|
|
19
|
+
That composition made a successful computation hard to distinguish from a
|
|
20
|
+
registered scientific request. It also made safe inspection depend on terms
|
|
21
|
+
such as landing and Receipt that are no longer part of Vela's current producer
|
|
22
|
+
language.
|
|
23
|
+
|
|
24
|
+
The current product cycle is:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
doctor -> run -> show -> replay -> export -> submit
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The boundary must remain useful when Canopus is deleted and interoperable with
|
|
31
|
+
any producer capable of emitting the same authenticated Vela Submission.
|
|
32
|
+
|
|
33
|
+
## Decision
|
|
34
|
+
|
|
35
|
+
### Run
|
|
36
|
+
|
|
37
|
+
`canopus run` is nonmutating by default and has no mutating mode.
|
|
38
|
+
|
|
39
|
+
It:
|
|
40
|
+
|
|
41
|
+
1. resolves one exact Vela offer;
|
|
42
|
+
2. prepares disposable, bounded worker and verifier environments;
|
|
43
|
+
3. freezes the candidate bytes;
|
|
44
|
+
4. executes the independent verifier;
|
|
45
|
+
5. reproduces the verifier result from a clean clone; and
|
|
46
|
+
6. writes `canopus.run.v2` with `effect: "none"`,
|
|
47
|
+
`authority: "non_authoritative"`, and `submission: null`.
|
|
48
|
+
|
|
49
|
+
It does not claim Vela work, publish Artifacts into a Frontier, register a
|
|
50
|
+
Proposal, create a Verification Record, create a Decision or Event, or change
|
|
51
|
+
Standing.
|
|
52
|
+
|
|
53
|
+
There is no `--no-land` switch because the safe behavior is not optional.
|
|
54
|
+
|
|
55
|
+
### Show and replay
|
|
56
|
+
|
|
57
|
+
`canopus show` reads current Run v2 and retained failure records. Historical
|
|
58
|
+
diagnostic and landed Run formats remain readable through their exact tagged
|
|
59
|
+
Canopus releases; the current package does not ship their parsers or schemas
|
|
60
|
+
and never normalizes their bytes into the current schema.
|
|
61
|
+
|
|
62
|
+
`canopus replay` reruns the frozen verifier without a model call or Frontier
|
|
63
|
+
mutation. The current command accepts Run v2 only.
|
|
64
|
+
|
|
65
|
+
### Export
|
|
66
|
+
|
|
67
|
+
`canopus export <run.json>` converts only a successful, independently
|
|
68
|
+
verifier-passing current Run into a portable bundle:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
canopus.submission-bundle.v1
|
|
72
|
+
submission.json
|
|
73
|
+
manifest.json
|
|
74
|
+
artifacts/sha256/<full-digest>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`submission.json` is a whole-body Ed25519-signed `vela.submission.v1`. The
|
|
78
|
+
identity is ephemeral and agent-class. Canopus retains no private key or
|
|
79
|
+
withdrawal capability after the authenticated Submission bytes exist.
|
|
80
|
+
|
|
81
|
+
Independent verifier output is named as a verification requirement. It is not
|
|
82
|
+
placed in `producer_checks`, called a Verification Record, or treated as
|
|
83
|
+
acceptance.
|
|
84
|
+
|
|
85
|
+
`vela.execution-binding.v1` remains optional on Submission v1. A review-only
|
|
86
|
+
Run without a positive result contract may export without it; the Submission's
|
|
87
|
+
verification requirement still binds the exact capsule root. Such a Submission
|
|
88
|
+
is not policy-eligible. Exact policy eligibility requires the full packet,
|
|
89
|
+
profile, verifier-capsule, and result-contract binding.
|
|
90
|
+
|
|
91
|
+
### Submit
|
|
92
|
+
|
|
93
|
+
`canopus submit <bundle> <frontier>` is the only current Canopus operation that
|
|
94
|
+
may change a Frontier.
|
|
95
|
+
|
|
96
|
+
Before mutation it verifies:
|
|
97
|
+
|
|
98
|
+
- the closed bundle manifest;
|
|
99
|
+
- the Submission identity, whole-body signature, and full root;
|
|
100
|
+
- exact agreement between bundled and declared Artifacts;
|
|
101
|
+
- safe relative paths, byte counts, and full digests;
|
|
102
|
+
- the exact retained source Git commit and tree;
|
|
103
|
+
- that the current clean Frontier is that commit or a descendant of it;
|
|
104
|
+
- a clean source worktree; and
|
|
105
|
+
- the current supported registration binary version and its observed SHA-256.
|
|
106
|
+
|
|
107
|
+
The Run's historical Vela version and SHA-256 remain immutable source
|
|
108
|
+
provenance. They are not incorrectly required to write a later current
|
|
109
|
+
repository epoch. The submit result records the exact current registration
|
|
110
|
+
binary identity.
|
|
111
|
+
|
|
112
|
+
It performs registration in a disposable exact-head clone, accepts only
|
|
113
|
+
`vela.submit-result.v1` with `pending_review` and accepted-event delta zero,
|
|
114
|
+
then fast-forwards the still-clean source checkout. A failure before the final
|
|
115
|
+
fast-forward leaves the source Frontier unchanged.
|
|
116
|
+
|
|
117
|
+
Canopus never emits a Verification Record, Decision, Event, or scientific
|
|
118
|
+
Standing.
|
|
119
|
+
|
|
120
|
+
## Compatibility and migration
|
|
121
|
+
|
|
122
|
+
Historical Run, Receipt, landing, and activity bytes remain immutable in Git
|
|
123
|
+
history, releases, and retained run evidence. Their exact releases remain the
|
|
124
|
+
corresponding readers. The current package contains neither their writers nor
|
|
125
|
+
their readers.
|
|
126
|
+
|
|
127
|
+
Mission v1 and profile v2 remain advanced, content-addressed input contracts.
|
|
128
|
+
Their historical `landing` field is interpreted only as a bounded legacy
|
|
129
|
+
result expectation; current Run does not execute a landing. A future input
|
|
130
|
+
schema may rename that field only with a demonstrated interoperation need.
|
|
131
|
+
|
|
132
|
+
Current source exposes exactly:
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
doctor run show replay export submit
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
`inspect`, automatic landing, Receipt authoring, retained producer
|
|
139
|
+
capabilities, and Canopus-managed withdrawal are not compatibility aliases.
|
|
140
|
+
|
|
141
|
+
## Adversarial cases
|
|
142
|
+
|
|
143
|
+
- A dirty or root-drifted source Frontier blocks submit.
|
|
144
|
+
- A missing source commit, wrong retained tree, or non-descendant current
|
|
145
|
+
Frontier blocks submit.
|
|
146
|
+
- The submit result discloses the exact registration-binary SHA-256; release
|
|
147
|
+
qualification fails if it does not match the pinned platform artifact.
|
|
148
|
+
- A malformed, extra-field, path-traversing, duplicated, missing, truncated,
|
|
149
|
+
or digest-mismatched Artifact blocks before Vela runs.
|
|
150
|
+
- A manifest that swaps producer, identity binding, Submission, source roots,
|
|
151
|
+
or Artifact bindings blocks.
|
|
152
|
+
- A verifier pass cannot populate a Verification Record or accepted Standing.
|
|
153
|
+
- A failed clean-clone reproduction cannot be exported.
|
|
154
|
+
- A successful Run cannot mutate the Frontier, even when a historical Mission
|
|
155
|
+
contains a landing expectation.
|
|
156
|
+
- Deleting Canopus and all private Run evidence cannot change Vela replay.
|
|
157
|
+
|
|
158
|
+
## Conformance contract
|
|
159
|
+
|
|
160
|
+
Focused tests must prove:
|
|
161
|
+
|
|
162
|
+
- current help exposes exactly the six-command cycle;
|
|
163
|
+
- Run v2 leaves source Git and Vela roots unchanged;
|
|
164
|
+
- a current Run reproduces from a clean clone;
|
|
165
|
+
- export emits an authenticated Vela Submission with no retained key;
|
|
166
|
+
- bundle and Submission Artifact sets agree exactly;
|
|
167
|
+
- submit rejects path traversal, bundle drift, unsupported registration
|
|
168
|
+
binaries, missing/non-descendant source history, and authority-changing Vela
|
|
169
|
+
results;
|
|
170
|
+
- submit fast-forwards only after verified pending registration;
|
|
171
|
+
- historical current-source readers still parse released Run formats; and
|
|
172
|
+
- released Vela composition retains zero mutation during Run.
|
|
173
|
+
|
|
174
|
+
Release checks:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
bun install --frozen-lockfile
|
|
178
|
+
bun run check
|
|
179
|
+
bun run pack:check
|
|
180
|
+
git diff --check
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Consequences
|
|
184
|
+
|
|
185
|
+
The ordinary product now matches its actual responsibility: Canopus produces
|
|
186
|
+
bounded, replayable research evidence; Vela registers authenticated producer
|
|
187
|
+
input and owns review and Standing.
|
|
188
|
+
|
|
189
|
+
The extra explicit `export` and `submit` steps are deliberate. They make the
|
|
190
|
+
mutation boundary inspectable, scriptable, and replaceable without adding a
|
|
191
|
+
new service, protocol object, authority surface, or retained key lifecycle.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"id": "
|
|
2
|
+
"id": "mission_erdos1056_k15_range_10429201_10429400",
|
|
3
3
|
"target": "auto",
|
|
4
4
|
"frontier": ".",
|
|
5
5
|
"actor": "agent:canopus-local",
|
|
6
6
|
"role": "producer",
|
|
7
7
|
"claim_type": "computational",
|
|
8
8
|
"replayability": "exact",
|
|
9
|
-
"objective": "Perform one finite exhaustive search for an Erdős 1056 k=15 witness over every prime p in the exact inclusive range
|
|
10
|
-
"completion_condition": "The
|
|
9
|
+
"objective": "Perform one finite exhaustive search for an Erdős 1056 k=15 witness over every prime p in the exact inclusive range 10429201..10429400. Use a compiled C++ program, one prime at a time; a flat open-addressed table keyed by the factorial residue keeps this bounded computation inside the registered memory and time limits. For each prime, compute t! modulo p for every cut t in 0..p-1 and count every residue fiber. For each p choose its largest fiber, breaking a tie by the smallest residue. If any largest fiber has at least 16 cuts, stop at the first such prime and report status=witness. Otherwise report status=negative and the greatest multiplicity over the whole range, breaking ties by the earliest prime and then the smallest residue. In both cases list every increasing cut in the selected fiber. Produce exactly one UTF-8 artifact at artifacts/erdos1056-k15-range-10429201-10429400.txt with these newline-terminated lines in order: schema=canopus.erdos1056-k15-search.v1; status=witness or status=negative; problem=1056; k=15; range_start=10429201; range_end=10429400; primes_tested=<exact count>; max_multiplicity=<exact count>; best_p=<prime>; best_residue=<residue>; cuts=<comma-separated cuts>. Independently cross-check the selected prime, residue, multiplicity, and complete cut list before emitting the artifact. Return engine status success only after the program completes the entire registered range and writes the exact artifact. This is an exact bounded computation, not a universal answer to Erdős 1056.",
|
|
10
|
+
"completion_condition": "The frozen verifier independently recomputes the full exact range in a separate network-denied and write-denied container and byte-matches the single artifact.",
|
|
11
11
|
"allowed_paths": [
|
|
12
|
-
"artifacts/erdos1056-k15-range-
|
|
12
|
+
"artifacts/erdos1056-k15-range-10429201-10429400.txt"
|
|
13
13
|
],
|
|
14
14
|
"budgets": {
|
|
15
15
|
"max_research_wall_time_ms": 1800000,
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"verifier": {
|
|
27
27
|
"argv": [
|
|
28
28
|
"capsule/verifier",
|
|
29
|
-
"{artifact:artifacts/erdos1056-k15-range-
|
|
29
|
+
"{artifact:artifacts/erdos1056-k15-range-10429201-10429400.txt}"
|
|
30
30
|
],
|
|
31
31
|
"cwd": "site",
|
|
32
32
|
"timeout_ms": 300000,
|
|
@@ -34,7 +34,9 @@
|
|
|
34
34
|
"capsule_path": "capsule/verifier"
|
|
35
35
|
},
|
|
36
36
|
"scientific_chain": {
|
|
37
|
-
"predicted_observable": "The frozen verifier independently obtains the same first witness or complete bounded-negative result for all primes in
|
|
38
|
-
"performed_test": "capsule/verifier artifacts/erdos1056-k15-range-
|
|
39
|
-
}
|
|
37
|
+
"predicted_observable": "The frozen verifier independently obtains the same first witness or complete bounded-negative result for all primes in 10429201..10429400 and exits zero on the exact candidate bytes.",
|
|
38
|
+
"performed_test": "capsule/verifier artifacts/erdos1056-k15-range-10429201-10429400.txt"
|
|
39
|
+
},
|
|
40
|
+
"parent_candidate": "sha256:b369f29c3dfe777401375eeb47f682d20d89ca0387deaf600d791c01f98da9c0",
|
|
41
|
+
"repair_reason": "Continue Erdős 1056 with the next exact non-overlapping inclusive range after the retained 10429001..10429200 artifact. Do not reuse a prior numeric result, and independently cross-check the selected fiber before emitting the one allowed artifact."
|
|
40
42
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vela-science/canopus",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "A bounded, replaceable research harness over released Vela interfaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
7
7
|
"license": "Apache-2.0 OR MIT",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/vela-science/vela
|
|
10
|
+
"url": "git+https://github.com/vela-science/vela.git",
|
|
11
|
+
"directory": "packages/canopus"
|
|
11
12
|
},
|
|
12
13
|
"publishConfig": {
|
|
13
14
|
"access": "public",
|
|
@@ -37,8 +38,6 @@
|
|
|
37
38
|
"dist/src/mission",
|
|
38
39
|
"dist/src/product",
|
|
39
40
|
"dist/src/projection",
|
|
40
|
-
"dist/src/receipt",
|
|
41
|
-
"dist/src/repair",
|
|
42
41
|
"dist/src/util",
|
|
43
42
|
"dist/src/vela",
|
|
44
43
|
"dist/src/verifier",
|
|
@@ -47,19 +46,15 @@
|
|
|
47
46
|
"dist/src/cli.d.ts",
|
|
48
47
|
"dist/src/index.js",
|
|
49
48
|
"dist/src/index.d.ts",
|
|
50
|
-
"dist/src/roles.js",
|
|
51
|
-
"dist/src/roles.d.ts",
|
|
52
49
|
"dist/src/run.js",
|
|
53
50
|
"dist/src/run.d.ts",
|
|
54
51
|
"schemas",
|
|
55
|
-
"capsules/erdos1056-k15/bin/linux-arm64/
|
|
56
|
-
"capsules/erdos1056-k15/bin/linux-x86_64/
|
|
57
|
-
"capsules/formal-erdos-505-test-dim-one/verifier",
|
|
58
|
-
"capsules/quantum-10-1-4/verifier.py",
|
|
59
|
-
"capsules/sidon-a24/bin/linux-arm64/verifier",
|
|
60
|
-
"capsules/sidon-a24/bin/linux-x86_64/verifier",
|
|
52
|
+
"capsules/erdos1056-k15/bin/linux-arm64/10429201-10429400/verifier",
|
|
53
|
+
"capsules/erdos1056-k15/bin/linux-x86_64/10429201-10429400/verifier",
|
|
61
54
|
"missions",
|
|
62
55
|
"profiles",
|
|
56
|
+
"compatibility.json",
|
|
57
|
+
"toolchain.lock.json",
|
|
63
58
|
"runtime",
|
|
64
59
|
"scripts/run-hostile-native-custody-fixture.mjs",
|
|
65
60
|
"scripts/run-hostile-verifier-fixture.mjs",
|
|
@@ -68,6 +63,8 @@
|
|
|
68
63
|
"THIRD_PARTY.md",
|
|
69
64
|
"docs/MISSIONS.md",
|
|
70
65
|
"docs/RUN_RECORD.md",
|
|
66
|
+
"docs/EVALUATION.md",
|
|
67
|
+
"docs/adr/0010-nonmutating-runs-and-explicit-submission.md",
|
|
71
68
|
"CHANGELOG.md",
|
|
72
69
|
"SECURITY.md",
|
|
73
70
|
"LICENSE-APACHE",
|
|
@@ -81,13 +78,19 @@
|
|
|
81
78
|
"check": "bun run lint && bun run test",
|
|
82
79
|
"prepack": "bun run build",
|
|
83
80
|
"pack:check": "bun pm pack --dry-run",
|
|
84
|
-
"experiment:task-authority": "bun experiments/task-authority/run.mjs",
|
|
85
|
-
"experiment:task-authority-shadow": "bun experiments/task-authority/run-live-shadow.mjs",
|
|
86
81
|
"fixture:hostile-custody": "node scripts/run-hostile-native-custody-fixture.mjs",
|
|
87
|
-
"fixture:hostile-verifier": "node scripts/run-hostile-verifier-fixture.mjs"
|
|
82
|
+
"fixture:hostile-verifier": "node scripts/run-hostile-verifier-fixture.mjs",
|
|
83
|
+
"eval:validate": "bun evaluation/scripts/validate-plan.mjs",
|
|
84
|
+
"eval:run": "bun evaluation/scripts/run-plan.mjs",
|
|
85
|
+
"eval:report": "bun evaluation/scripts/report.mjs",
|
|
86
|
+
"eval:conformance": "node --test tests/evaluation-plan.test.mjs",
|
|
87
|
+
"trace:export": "bun evaluation/scripts/trace-export.mjs"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@types/node": "^24.0.0",
|
|
91
91
|
"typescript": "^5.9.0"
|
|
92
|
+
},
|
|
93
|
+
"dependencies": {
|
|
94
|
+
"@vela-science/protocol": "0.1.0"
|
|
92
95
|
}
|
|
93
96
|
}
|
package/profiles/{erdos1056-k15-10428801-10429000.json → erdos1056-k15-10429201-10429400.json}
RENAMED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "canopus.profile.v2",
|
|
3
|
-
"name": "erdos1056-k15-
|
|
3
|
+
"name": "erdos1056-k15-10429201-10429400",
|
|
4
4
|
"target": "erdos:1056",
|
|
5
5
|
"target_packet_schema": "erdos-frontier.problem-work.v1",
|
|
6
6
|
"draft": "missions/erdos1056-k15-next/mission.draft.json",
|
|
7
|
-
"draft_sha256": "sha256:
|
|
8
|
-
"objective_sha256": "sha256:
|
|
9
|
-
"completion_condition_sha256": "sha256:
|
|
10
|
-
"allowed_artifacts_sha256": "sha256:
|
|
7
|
+
"draft_sha256": "sha256:b0d702c5f475daaa1edd37710cf9b90609d8d17a268f8635289f3dec31aeeed1",
|
|
8
|
+
"objective_sha256": "sha256:95e7fc685a31e7c2f1f876e5b3082d87e95427e2822214625551476ca0d54f4b",
|
|
9
|
+
"completion_condition_sha256": "sha256:92a9aa5ba79b24363a8a1406188b16b61d942e799038c3b512778065fe9bff5e",
|
|
10
|
+
"allowed_artifacts_sha256": "sha256:0e56c453a599e65fa40ec30e781fe5fdc2fa779aae3d4c4e057181dd405f00b7",
|
|
11
11
|
"budgets_sha256": "sha256:5457a393d492978d8f191aca42fde0bf95261d74d701ce7ecd1b99f6e0dcbc0c",
|
|
12
|
-
"replay_argv_sha256": "sha256:
|
|
12
|
+
"replay_argv_sha256": "sha256:91c8625cb6aedde017b328a322645239015f5d73958dd26aa2510567790bddb1",
|
|
13
13
|
"landing": {
|
|
14
14
|
"expected_routes": ["defer"],
|
|
15
15
|
"max_accepted_delta": 0
|
|
@@ -18,15 +18,15 @@
|
|
|
18
18
|
"darwin-arm64": {
|
|
19
19
|
"worker_profile": "runtime/native-worker/config.toml",
|
|
20
20
|
"worker_profile_sha256": "sha256:12b58762819481ad101e7a172a296224b6050a8a07a7431272e521a4102908da",
|
|
21
|
-
"verifier_capsule": "capsules/erdos1056-k15/bin/linux-arm64/
|
|
22
|
-
"verifier_capsule_sha256": "sha256:
|
|
21
|
+
"verifier_capsule": "capsules/erdos1056-k15/bin/linux-arm64/10429201-10429400/verifier",
|
|
22
|
+
"verifier_capsule_sha256": "sha256:6abe6125b5ed7cfeb256a1d86f3a66c6e7000a5542417d9dd04b2e5f9d3ffe81",
|
|
23
23
|
"verifier_image": "ghcr.io/vela-science/canopus-verifier@sha256:a6f354862f2a3f7d72eb99244c65fa8583c98b74e17e3d5ce6e31ef48aa16536"
|
|
24
24
|
},
|
|
25
25
|
"linux-x86_64": {
|
|
26
26
|
"worker_profile": "runtime/native-worker/config-linux.toml",
|
|
27
27
|
"worker_profile_sha256": "sha256:fddecc4b7458b91f6d55ae16b666d297ae7bcd1a2f5deeb6650dcea60fc0242c",
|
|
28
|
-
"verifier_capsule": "capsules/erdos1056-k15/bin/linux-x86_64/
|
|
29
|
-
"verifier_capsule_sha256": "sha256:
|
|
28
|
+
"verifier_capsule": "capsules/erdos1056-k15/bin/linux-x86_64/10429201-10429400/verifier",
|
|
29
|
+
"verifier_capsule_sha256": "sha256:ce73ca27d54a2ed31607a6d279d85ed36f28c2a830891b5d5d27b9cf50f0fcb4",
|
|
30
30
|
"verifier_image": "ghcr.io/vela-science/canopus-verifier@sha256:a6f354862f2a3f7d72eb99244c65fa8583c98b74e17e3d5ce6e31ef48aa16536"
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://vela.science/schemas/canopus/failure.v1.json",
|
|
4
|
+
"title": "Canopus nonmutating failure v1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema", "run_id", "error", "phase", "effect", "activity_tip", "authority"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "canopus.failure.v1" },
|
|
10
|
+
"run_id": { "type": "string", "pattern": "^run_[A-Za-z0-9._-]+$" },
|
|
11
|
+
"error": { "type": "string", "minLength": 1, "maxLength": 16384 },
|
|
12
|
+
"phase": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$" },
|
|
13
|
+
"effect": { "const": "none" },
|
|
14
|
+
"activity_tip": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
15
|
+
"authority": { "const": "non_authoritative" }
|
|
16
|
+
}
|
|
17
|
+
}
|
package/schemas/mission.v0.json
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"target": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
34
34
|
"vela_version": {
|
|
35
35
|
"type": "string",
|
|
36
|
-
"pattern": "^0\\.[0-9]+\\.[0-9]
|
|
36
|
+
"pattern": "^0\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
|
|
37
37
|
},
|
|
38
38
|
"vela_sha256": { "$ref": "#/$defs/sha256" },
|
|
39
39
|
"frontier": {
|
|
@@ -61,12 +61,11 @@
|
|
|
61
61
|
"roots": {
|
|
62
62
|
"type": "object",
|
|
63
63
|
"additionalProperties": false,
|
|
64
|
-
"required": ["git_commit", "git_tree", "
|
|
64
|
+
"required": ["git_commit", "git_tree", "vela_repository"],
|
|
65
65
|
"properties": {
|
|
66
66
|
"git_commit": { "$ref": "#/$defs/gitObject" },
|
|
67
67
|
"git_tree": { "$ref": "#/$defs/gitObject" },
|
|
68
|
-
"
|
|
69
|
-
"vela_snapshot": { "$ref": "#/$defs/sha256" }
|
|
68
|
+
"vela_repository": { "$ref": "#/$defs/sha256" }
|
|
70
69
|
}
|
|
71
70
|
},
|
|
72
71
|
"allowed_paths": {
|
package/schemas/mission.v1.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"required": [
|
|
8
8
|
"schema", "id", "target", "vela_version", "vela_sha256", "frontier",
|
|
9
9
|
"actor", "role", "claim_type", "replayability", "objective",
|
|
10
|
-
"completion_condition", "roots", "target_packet",
|
|
10
|
+
"completion_condition", "roots", "target_packet",
|
|
11
11
|
"allowed_paths", "budgets", "worker", "verifier", "scientific_chain",
|
|
12
12
|
"landing"
|
|
13
13
|
],
|
|
@@ -34,7 +34,10 @@
|
|
|
34
34
|
"schema": { "const": "canopus.mission.v1" },
|
|
35
35
|
"id": { "type": "string", "pattern": "^mission_[a-z0-9][a-z0-9._-]{0,126}$" },
|
|
36
36
|
"target": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
37
|
-
"vela_version": {
|
|
37
|
+
"vela_version": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"pattern": "^0\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
|
|
40
|
+
},
|
|
38
41
|
"vela_sha256": { "$ref": "#/$defs/sha256" },
|
|
39
42
|
"frontier": { "anyOf": [{ "const": "." }, { "$ref": "#/$defs/relativePath" }] },
|
|
40
43
|
"actor": { "type": "string", "pattern": "^agent:[a-z0-9][a-z0-9._-]{0,62}$" },
|
|
@@ -94,29 +97,6 @@
|
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
},
|
|
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
100
|
"allowed_paths": {
|
|
121
101
|
"type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true,
|
|
122
102
|
"items": { "$ref": "#/$defs/relativePath" }
|
|
@@ -187,12 +167,11 @@
|
|
|
187
167
|
"relativePath": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
188
168
|
"roots": {
|
|
189
169
|
"type": "object", "additionalProperties": false,
|
|
190
|
-
"required": ["git_commit", "git_tree", "
|
|
170
|
+
"required": ["git_commit", "git_tree", "vela_repository"],
|
|
191
171
|
"properties": {
|
|
192
172
|
"git_commit": { "$ref": "#/$defs/gitObject" },
|
|
193
173
|
"git_tree": { "$ref": "#/$defs/gitObject" },
|
|
194
|
-
"
|
|
195
|
-
"vela_snapshot": { "$ref": "#/$defs/sha256" }
|
|
174
|
+
"vela_repository": { "$ref": "#/$defs/sha256" }
|
|
196
175
|
}
|
|
197
176
|
},
|
|
198
177
|
"budgets": {
|