@vela-science/canopus 0.6.5 → 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.
Files changed (120) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.md +67 -139
  3. package/SECURITY.md +3 -2
  4. package/capsules/erdos1056-k15/bin/linux-arm64/{10428801-10429000 → 10429201-10429400}/verifier +0 -0
  5. package/capsules/erdos1056-k15/bin/linux-x86_64/{10428801-10429000 → 10429201-10429400}/verifier +0 -0
  6. package/compatibility.json +25 -0
  7. package/dist/src/activity/events.d.ts +4 -1
  8. package/dist/src/activity/events.js +8 -2
  9. package/dist/src/activity/store.d.ts +2 -2
  10. package/dist/src/activity/store.js +4 -3
  11. package/dist/src/{receipt/map.d.ts → candidate/finalize.d.ts} +2 -9
  12. package/dist/src/candidate/finalize.js +71 -0
  13. package/dist/src/cli.js +88 -229
  14. package/dist/src/contracts/mission.d.ts +1 -13
  15. package/dist/src/contracts/mission.js +4 -42
  16. package/dist/src/contracts/validation.d.ts +1 -25
  17. package/dist/src/contracts/validation.js +1 -95
  18. package/dist/src/engines/codex-tools-native.js +2 -2
  19. package/dist/src/index.d.ts +5 -34
  20. package/dist/src/index.js +4 -34
  21. package/dist/src/mission/prepare.d.ts +10 -1
  22. package/dist/src/mission/prepare.js +29 -30
  23. package/dist/src/product/coverage.d.ts +17 -0
  24. package/dist/src/product/coverage.js +137 -0
  25. package/dist/src/product/doctor.d.ts +1 -2
  26. package/dist/src/product/doctor.js +29 -8
  27. package/dist/src/product/profile.js +8 -2
  28. package/dist/src/product/replay.js +11 -12
  29. package/dist/src/product/run.d.ts +5 -9
  30. package/dist/src/product/run.js +17 -88
  31. package/dist/src/product/submission.d.ts +40 -0
  32. package/dist/src/product/submission.js +217 -0
  33. package/dist/src/product/submit.d.ts +22 -0
  34. package/dist/src/product/submit.js +264 -0
  35. package/dist/src/product/version.d.ts +2 -2
  36. package/dist/src/product/version.js +27 -4
  37. package/dist/src/projection/current-run.d.ts +12 -0
  38. package/dist/src/projection/current-run.js +94 -0
  39. package/dist/src/projection/failure.d.ts +17 -7
  40. package/dist/src/projection/failure.js +43 -12
  41. package/dist/src/projection/retained-mission.d.ts +6 -0
  42. package/dist/src/projection/retained-mission.js +41 -0
  43. package/dist/src/projection/retained-run.d.ts +7 -0
  44. package/dist/src/projection/retained-run.js +50 -0
  45. package/dist/src/run.d.ts +43 -41
  46. package/dist/src/run.js +34 -412
  47. package/dist/src/util/canonical.d.ts +1 -5
  48. package/dist/src/util/canonical.js +1 -53
  49. package/dist/src/vela/cli.d.ts +7 -51
  50. package/dist/src/vela/cli.js +102 -523
  51. package/dist/src/vela/types.d.ts +3 -19
  52. package/dist/src/verifier/run.js +1 -1
  53. package/dist/src/workspace/prepare.d.ts +1 -1
  54. package/dist/src/workspace/prepare.js +15 -15
  55. package/docs/EVALUATION.md +142 -0
  56. package/docs/MISSIONS.md +42 -80
  57. package/docs/RUN_RECORD.md +77 -99
  58. package/docs/adr/0010-nonmutating-runs-and-explicit-submission.md +191 -0
  59. package/missions/erdos1056-k15-next/mission.draft.json +10 -8
  60. package/package.json +18 -22
  61. package/profiles/{erdos1056-k15-10428801-10429000.json → erdos1056-k15-10429201-10429400.json} +10 -10
  62. package/schemas/failure.v1.json +17 -0
  63. package/schemas/mission.v0.json +3 -4
  64. package/schemas/mission.v1.json +7 -28
  65. package/schemas/{run.v1.json → run.v2.json} +58 -116
  66. package/schemas/submission-bundle.v1.json +63 -0
  67. package/toolchain.lock.json +31 -0
  68. package/BUILD_WEEK.md +0 -198
  69. package/advisories/erdos1056-claim-fidelity/output.schema.json +0 -90
  70. package/advisories/erdos1056-claim-fidelity/registration.json +0 -42
  71. package/advisories/erdos1056-claim-fidelity/results/assessment.json +0 -1
  72. package/advisories/erdos1056-claim-fidelity/results/verification.json +0 -1
  73. package/capsules/formal-erdos-505-test-dim-one/verifier +0 -105
  74. package/capsules/quantum-10-1-4/verifier.py +0 -152
  75. package/capsules/sidon-a24/bin/linux-arm64/verifier +0 -0
  76. package/capsules/sidon-a24/bin/linux-x86_64/verifier +0 -0
  77. package/dist/src/capability/withdrawal.d.ts +0 -47
  78. package/dist/src/capability/withdrawal.js +0 -487
  79. package/dist/src/engines/codex-exec.d.ts +0 -17
  80. package/dist/src/engines/codex-exec.js +0 -136
  81. package/dist/src/engines/codex-tool-free.d.ts +0 -26
  82. package/dist/src/engines/codex-tool-free.js +0 -213
  83. package/dist/src/product/withdraw.d.ts +0 -8
  84. package/dist/src/product/withdraw.js +0 -255
  85. package/dist/src/projection/diagnostic.d.ts +0 -12
  86. package/dist/src/projection/diagnostic.js +0 -61
  87. package/dist/src/projection/public-run.d.ts +0 -59
  88. package/dist/src/projection/public-run.js +0 -106
  89. package/dist/src/projection/publication.d.ts +0 -36
  90. package/dist/src/projection/publication.js +0 -47
  91. package/dist/src/projection/run.d.ts +0 -95
  92. package/dist/src/projection/run.js +0 -173
  93. package/dist/src/receipt/map.js +0 -168
  94. package/dist/src/repair/plan.d.ts +0 -2
  95. package/dist/src/repair/plan.js +0 -22
  96. package/dist/src/roles.d.ts +0 -2
  97. package/dist/src/roles.js +0 -9
  98. package/docs/RELEASES.md +0 -1389
  99. package/evidence/build-week/run_eb6bcd46-cffd-4ae8-b630-2681bd84da71.public.json +0 -1
  100. package/evidence/build-week/run_f68e4cfc-e5c7-4c73-86cb-d79807c47ec4.public.json +0 -1
  101. package/evidence/erdos/run_192b3bef-9d6e-49e5-b72d-7ae903b29d5e/pending-commands.json +0 -1
  102. package/evidence/erdos/run_192b3bef-9d6e-49e5-b72d-7ae903b29d5e/public-run.json +0 -1
  103. package/evidence/erdos/run_192b3bef-9d6e-49e5-b72d-7ae903b29d5e/root-manifest.json +0 -1
  104. package/evidence/erdos/run_192b3bef-9d6e-49e5-b72d-7ae903b29d5e/web-import.json +0 -1
  105. package/evidence/erdos/run_b3b0cf07-b149-4d53-8258-76ba0e1fc0a5/pending-commands.json +0 -1
  106. package/evidence/erdos/run_b3b0cf07-b149-4d53-8258-76ba0e1fc0a5/public-run.json +0 -1
  107. package/evidence/erdos/run_b3b0cf07-b149-4d53-8258-76ba0e1fc0a5/root-manifest.json +0 -1
  108. package/evidence/erdos/run_b3b0cf07-b149-4d53-8258-76ba0e1fc0a5/web-import.json +0 -1
  109. package/missions/formal-erdos-505-test-dim-one-gpt56/mission.draft.json +0 -40
  110. package/missions/quantum-10-1-4-retry/mission.draft.json +0 -40
  111. package/missions/sidon-a24-at-least-7194-gpt56/mission.draft.json +0 -42
  112. package/missions/sidon-a24-at-least-7194-gpt56-v2/mission.draft.json +0 -42
  113. package/missions/sidon-a24-at-least-7194-gpt56-v3/mission.draft.json +0 -42
  114. package/profiles/formal-erdos-505-test-dim-one-gpt56.json +0 -35
  115. package/profiles/quantum-10-1-4-stabilizer-retry.json +0 -35
  116. package/profiles/sidon-a24-at-least-7194-gpt56-v2.json +0 -35
  117. package/profiles/sidon-a24-at-least-7194-gpt56-v3.json +0 -35
  118. package/profiles/sidon-a24-at-least-7194-gpt56.json +0 -35
  119. package/schemas/canopus.public-run.v1.json +0 -116
  120. package/scripts/run-claim-fidelity-advisory.mjs +0 -235
@@ -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": "mission_erdos1056_k15_range_10428801_10429000_native3",
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 10428801..10429000. 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-10428801-10429000.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=10428801; range_end=10429000; primes_tested=<exact count>; max_multiplicity=<exact count>; best_p=<prime>; best_residue=<residue>; cuts=<comma-separated cuts>. 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 independent frozen capsule recomputes the full exact range in a separate network-denied and write-denied container and byte-matches the single artifact.",
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-10428801-10429000.txt"
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-10428801-10429000.txt}"
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 10428801..10429000 and exits zero on the exact candidate bytes.",
38
- "performed_test": "capsule/verifier artifacts/erdos1056-k15-range-10428801-10429000.txt"
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.6.5",
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-research-harness.git"
10
+ "url": "git+https://github.com/vela-science/vela.git",
11
+ "directory": "packages/canopus"
11
12
  },
12
13
  "publishConfig": {
13
14
  "access": "public",
@@ -31,15 +32,12 @@
31
32
  "dist/src/artifact",
32
33
  "dist/src/budget",
33
34
  "dist/src/candidate",
34
- "dist/src/capability",
35
35
  "dist/src/contracts",
36
36
  "dist/src/engines",
37
37
  "dist/src/evidence",
38
38
  "dist/src/mission",
39
39
  "dist/src/product",
40
40
  "dist/src/projection",
41
- "dist/src/receipt",
42
- "dist/src/repair",
43
41
  "dist/src/util",
44
42
  "dist/src/vela",
45
43
  "dist/src/verifier",
@@ -48,33 +46,25 @@
48
46
  "dist/src/cli.d.ts",
49
47
  "dist/src/index.js",
50
48
  "dist/src/index.d.ts",
51
- "dist/src/roles.js",
52
- "dist/src/roles.d.ts",
53
49
  "dist/src/run.js",
54
50
  "dist/src/run.d.ts",
55
51
  "schemas",
56
- "capsules/erdos1056-k15/bin/linux-arm64/10428801-10429000/verifier",
57
- "capsules/erdos1056-k15/bin/linux-x86_64/10428801-10429000/verifier",
58
- "capsules/formal-erdos-505-test-dim-one/verifier",
59
- "capsules/quantum-10-1-4/verifier.py",
60
- "capsules/sidon-a24/bin/linux-arm64/verifier",
61
- "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",
62
54
  "missions",
63
55
  "profiles",
56
+ "compatibility.json",
57
+ "toolchain.lock.json",
64
58
  "runtime",
65
- "advisories",
66
- "evidence/build-week",
67
- "evidence/erdos",
68
- "scripts/run-claim-fidelity-advisory.mjs",
69
59
  "scripts/run-hostile-native-custody-fixture.mjs",
70
60
  "scripts/run-hostile-verifier-fixture.mjs",
71
61
  "tests/fixtures/hostile-verifier",
72
62
  "README.md",
73
- "BUILD_WEEK.md",
74
63
  "THIRD_PARTY.md",
75
64
  "docs/MISSIONS.md",
76
- "docs/RELEASES.md",
77
65
  "docs/RUN_RECORD.md",
66
+ "docs/EVALUATION.md",
67
+ "docs/adr/0010-nonmutating-runs-and-explicit-submission.md",
78
68
  "CHANGELOG.md",
79
69
  "SECURITY.md",
80
70
  "LICENSE-APACHE",
@@ -88,13 +78,19 @@
88
78
  "check": "bun run lint && bun run test",
89
79
  "prepack": "bun run build",
90
80
  "pack:check": "bun pm pack --dry-run",
91
- "experiment:task-authority": "bun experiments/task-authority/run.mjs",
92
- "experiment:task-authority-shadow": "bun experiments/task-authority/run-live-shadow.mjs",
93
81
  "fixture:hostile-custody": "node scripts/run-hostile-native-custody-fixture.mjs",
94
- "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"
95
88
  },
96
89
  "devDependencies": {
97
90
  "@types/node": "^24.0.0",
98
91
  "typescript": "^5.9.0"
92
+ },
93
+ "dependencies": {
94
+ "@vela-science/protocol": "0.1.0"
99
95
  }
100
96
  }
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "schema": "canopus.profile.v2",
3
- "name": "erdos1056-k15-10428801-10429000",
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:bcf426097f93fef79e2743e1591940f0d2e13a899f6b81b5e58e697213ddfd9e",
8
- "objective_sha256": "sha256:cc5ec511b6b66a5d4e99047aba59a8b2e89dff5c8f496a759183355547f968a5",
9
- "completion_condition_sha256": "sha256:4a4a06e2c867867a191af27900e96c23e677db2775783f1829c31e4867a7f270",
10
- "allowed_artifacts_sha256": "sha256:f0f5f096175d80648c9d0463c726ebdf2811ed25511b1640e7151ab3eb622bd3",
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:5442bf3648b752afc9898cfec9197cb47021bde71caa48028700ede7367a9176",
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/10428801-10429000/verifier",
22
- "verifier_capsule_sha256": "sha256:c9533a8650ca2a76f37c4d482e5467849eb6df4e11d18759207abd94739293f3",
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/10428801-10429000/verifier",
29
- "verifier_capsule_sha256": "sha256:f9c33462ce457cf465aa95ae7e557a33c3c3988f5a9b7891b2accedb0eabee9e",
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
+ }
@@ -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", "vela_event_log", "vela_snapshot"],
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
- "vela_event_log": { "$ref": "#/$defs/sha256" },
69
- "vela_snapshot": { "$ref": "#/$defs/sha256" }
68
+ "vela_repository": { "$ref": "#/$defs/sha256" }
70
69
  }
71
70
  },
72
71
  "allowed_paths": {
@@ -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", "strict_baseline",
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": { "type": "string", "pattern": "^0\\.[0-9]+\\.[0-9]+$" },
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", "vela_event_log", "vela_snapshot"],
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
- "vela_event_log": { "$ref": "#/$defs/sha256" },
195
- "vela_snapshot": { "$ref": "#/$defs/sha256" }
174
+ "vela_repository": { "$ref": "#/$defs/sha256" }
196
175
  }
197
176
  },
198
177
  "budgets": {