@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
package/CHANGELOG.md ADDED
@@ -0,0 +1,249 @@
1
+ # Changelog
2
+
3
+ ## 0.4.0-rc.1 - Unreleased
4
+
5
+ - Require the live Linux custody fixture to pass the exact deterministic Codex
6
+ sandbox boundary before it reads staged authentication or makes a model call.
7
+ Nested guests that cannot install seccomp fail with a native-Ubuntu/WSL2
8
+ recovery action instead of spending a model call. Failed live runs retain
9
+ only bounded event-type counts, boolean verdicts, and content hashes; the
10
+ harness independently verifies an exact shell sentinel rather than trusting
11
+ the model's report.
12
+ - Pin every GitHub Action by immutable commit and move checkout, Node setup,
13
+ and pnpm setup to their maintained Node 24 majors, removing the hosted
14
+ Node 20 compatibility shim from the candidate's platform matrix.
15
+ - Make the package self-contained from a clean source checkout: `prepack`
16
+ rebuilds `dist`, the npm-valid `canopus` bin entry survives publication, and
17
+ `publishConfig` requires public access with provenance. Pack and publish dry
18
+ runs now reject a package that silently drops the CLI.
19
+
20
+ ## 0.3.0 - 2026-07-17
21
+
22
+ - Add the compact `doctor`, `run`, `inspect`, `replay`, and explicit `withdraw`
23
+ product workflow over Vela 0.901.0 while retaining Mission v1 as the advanced
24
+ portable interface.
25
+ - Advance the exact product and hosted-integration pin to Vela 0.901.0.
26
+ Historical
27
+ Mission replay remains exact to its recorded Vela version and binary root.
28
+ - Bind the first Vela producer offer and reject silent target skipping, dirty source,
29
+ root drift, missing runtimes, missing verifier images, and cloud-synced output
30
+ paths before a worker call.
31
+ - Package the two exact Erdős 1056 verifier capsules, removing the installed
32
+ product's cross-compiler dependency while retaining verifier source.
33
+ - Preserve raw worker events, final output, stderr, candidate, run record, and a
34
+ content-addressed evidence manifest. A successful landing fast-forwards the
35
+ local source only after clean-clone reproduction and never pushes a remote.
36
+ - Replay the released range `10428008..10428200` with byte-equivalent output and
37
+ 50,254 observed tokens, down from 187,013.
38
+ - Complete the adjacent range `10428201..10428400` with 48,088 observed tokens,
39
+ an independently reproduced bounded-negative artifact, Receipt root
40
+ `sha256:6010cf159e7ee5d7867a6553b9f44eb5a1b153f87c38f09b9505d5656a943373`,
41
+ route `defer`, accepted-event delta zero, and matching clean-clone replay.
42
+ - Verify the protected rejection of Erdős proposal `vpr_f54338a5a453c1bf`
43
+ read-only: the signed decision is present, the other twelve proposals remain
44
+ pending, and canonical replay agrees. The final protected rebind, unchanged
45
+ root audit, and released Vela binary pin all pass.
46
+ - Add ADR 0005 and proposal-scoped withdrawal capabilities. After a deferred
47
+ landing and clean-clone reproduction, retain only the Receipt-bound agent
48
+ seed under `~/.canopus/capabilities/<proposal-id>/`; never expose it to the
49
+ worker, verifier, or run evidence. `canopus withdraw` verifies in a
50
+ disposable clone, proves accepted-state neutrality, fast-forwards the clean
51
+ source, and consumes the secret. The capability binds the successful run's
52
+ exact strict baseline and verifies Vela-canonical proposal/Receipt roots plus
53
+ the Receipt identity's self-signature.
54
+ - Target Vela 0.901.0 for protected one-proposal human decisions and the
55
+ signed, non-scientific `proposal.withdrawn` lifecycle event.
56
+ - Complete four custody-isolated first-party cold-use diagnostics on the exact
57
+ released product and rendered site: operator, producer, reviewer, and reader
58
+ all pass without authority attempts, workspace escape, target substitution,
59
+ authentication exposure, or checkout drift. These sessions earn no
60
+ independent or scientific credit.
61
+
62
+ ## 0.2.0 - 2026-07-16
63
+
64
+ - Accept ADR 0004 and add Mission v1 preparation, validation, inspection,
65
+ exact strict-debt registration, native tool worker, separate container
66
+ verifier, and the first-ranked Erdős 1056 k=15 bounded-search capsule.
67
+ - Run the exact native Codex CLI with a bundled default-deny macOS permission
68
+ profile and a target-packet-only workspace. Disable browser, search, MCP,
69
+ apps, memories, computer use, delegation, plugins, goals, hooks, and human-key
70
+ surfaces.
71
+ - Add live hostile custody and verifier fixtures. The custody fixture proves
72
+ shell execution while denying authentication, host canary, unrelated-repo,
73
+ outside-write, command-network, and process-environment access. The verifier
74
+ fixture denies network, writes, and host-home visibility.
75
+ - Bind the native permission profile, engine-output schema, Codex binary,
76
+ verifier capsule and image, target packet, Vela binary, Git roots, frontier
77
+ roots, budgets, and exact strict blocker set into the portable bundle.
78
+ - Publish exactly the frozen source artifacts in one unsigned non-authoritative
79
+ Git commit before `vela land`, keeping `vela.lock` and clean Git replay
80
+ self-contained.
81
+ - Complete the real first-ranked mission with an independently verified bounded
82
+ negative result, Receipt root
83
+ `sha256:be2b34b57eac8a41d689f411d9dc1c97328a7901f943bb1cc023c843adc672bf`,
84
+ route `defer`, accepted-event delta zero, and matching clean-clone replay.
85
+ - Preserve safe failed attempts as non-authoritative evidence. No failed or null
86
+ result is promoted as scientific success.
87
+
88
+ ## 0.1.11 - 2026-07-16
89
+
90
+ - Preserve the Stage A v5 measurement stop without editing or pooling its
91
+ result. The completed cell passed the hard safety boundary and stopped only
92
+ because raw substring comparison treated `HEAD^{tree}` and
93
+ `HEAD''^{tree}` as different command reports.
94
+ - Add a finite command-trace parser that unwraps shell `-c` scripts, splits
95
+ command boundaries, normalizes shell quoting, and requires one exact argv
96
+ match. Paths, omissions, reordering, substitutions, and substrings remain
97
+ different.
98
+ - Freeze hostile comparison vectors and Stage A v6 registration root
99
+ `sha256:1c79221f5118ca08c62988e1d95f349ea682d2411371c97d10105d415d1935b4`
100
+ before another model call.
101
+ - Add Proposed ADRs for preregistered cold-use measurement and the future
102
+ independent handoff runner. Neither ADR changes Vela authority or grants
103
+ independent credit.
104
+ - Retain the exact-tag Stage A v6 stop after two cells. Producer/timeless passed
105
+ with zero defects. Reviewer/temporal preserved hard safety but reported
106
+ executable path aliases and `<branch>` placeholders rather than exact
107
+ commands, so the registered argv scorer stopped on
108
+ `reported_command_trace`. No further Stage A or Stage B cell was run.
109
+
110
+ ## 0.1.10 - 2026-07-16
111
+
112
+ - Advance the cold-use fixture and released-binary composition gate to Vela
113
+ `v0.800.22`, the immutable-event-transaction correction.
114
+ - Retain the exact v0.1.9 producer hard stop: one eligible first-party cell
115
+ completed the pending `work` and `land` route but found that Vela `v0.800.21`
116
+ had rewritten all three preexisting event files. No authority action, human
117
+ key access, accepted-state change, or unsigned strict pass occurred.
118
+ - Register a new Stage A iteration only after the product fix, with the fixture
119
+ facts, prompts, answer contract, scorer semantics, direct Codex CLI, and
120
+ outer sandbox unchanged.
121
+ - Retain the exact-tag Stage A v5 stop: one producer/timeless cell passed the
122
+ hard safety boundary and preserved all historical bytes, but the frozen
123
+ scorer rejected two truthful `HEAD^{tree}` command reports because Codex's
124
+ shell trace escaped the same token as `HEAD''^{tree}`. No post-run semantic
125
+ repair or additional benchmark cell was attempted.
126
+
127
+ ## 0.1.9 - 2026-07-16
128
+
129
+ - Use the updated OpenAI-signed direct terminal Codex CLI `0.144.5` rather than
130
+ the older app-bundled `0.144.2` binary.
131
+ - Remove the redundant Codex product sandbox from inside Canopus's registered
132
+ macOS outer sandbox. Codex's external-sandbox mode is used only inside that
133
+ bounded profile, which remains the filesystem and task-network authority.
134
+ - Retain the v0.1.8 one-call nested-sandbox failure as ineligible
135
+ infrastructure evidence: it performed no command, authority action,
136
+ historical rewrite, accepted-state change, or semantic repair.
137
+
138
+ ## 0.1.8 - 2026-07-16
139
+
140
+ - Open Stage A v3 after v2 reached Codex but failed DNS resolution before any
141
+ provider response or scored cell.
142
+ - Reuse the DNS/TLS runtime file set from Canopus's proven tool-free outer
143
+ sandbox and add a no-model `chatgpt.com` DNS check to the four-cell preflight.
144
+ - Preserve the frozen Vela fixture, task prompts, answer contract, scoring
145
+ semantics, custody boundary, and all scientific and independence nonclaims.
146
+
147
+ ## 0.1.7 - 2026-07-16
148
+
149
+ - Open Stage A v2 after v1 retained two zero-call controller infrastructure
150
+ failures: an unbound cell variable and a lexical `/tmp` versus real
151
+ `/private/tmp` sandbox path mismatch.
152
+ - Bind both lexical and real workspace, HOME, and CODEX_HOME paths in the outer
153
+ sandbox, and add a four-cell sandbox preflight that performs no model call.
154
+ - Preserve the frozen Vela fixture, task prompts, answer contract, scoring
155
+ semantics, custody boundary, and all scientific and independence nonclaims.
156
+
157
+ ## 0.1.6 - 2026-07-16
158
+
159
+ - Repair the Stage A controller's pre-call cell binding after the first exact
160
+ execution stopped on a `ReferenceError` before any model session started.
161
+ - Supersede the prior Stage A registration with a new root that records the one
162
+ allowed transport repair, zero prior model calls, and no remaining repair
163
+ cycle.
164
+ - Preserve the frozen Vela `v0.800.21` bundles, prompts, scorer semantics,
165
+ custody boundary, and all scientific and independence nonclaims.
166
+
167
+ ## 0.1.5 - 2026-07-16
168
+
169
+ - Advance the active released-binary gate to Vela `v0.800.21`, commit
170
+ `2bbcf8323e53643fcaacb81137645fc757789073`, and published macOS arm64
171
+ SHA-256
172
+ `248665a9185e3ba4f0aad754f9b5b572480d5857ffe737ef6e466006d0cf83c6`.
173
+ - Freeze matched timeless and temporal actor-registration bundles with exact
174
+ Git, event-log, registry, and hostile-case roots. The released terminal
175
+ ceremony adds one audit event while preserving every preexisting event file
176
+ byte-for-byte.
177
+ - Register a four-cell fresh Codex Stage A controller with bounded filesystem
178
+ access, no task-network access, no human key, exact prompt/tool/transcript
179
+ roots, fail-closed scoring, and zero model calls before registration.
180
+ - Preserve the Vela authority boundary. The fixture, controller, and future
181
+ first-party sessions are diagnostic and carry no scientific, human,
182
+ independent, external, causal, or authority credit.
183
+
184
+ ## 0.1.4 - 2026-07-16
185
+
186
+ - Advance the active released-binary composition gate to public Vela
187
+ `v0.800.20`, commit
188
+ `06ca1712573d735263c869fb20c7a3c4b54ce345`, and published macOS arm64
189
+ SHA-256
190
+ `d246aa29519f9f2a5d9a6b8b40d3cbe64334fe53d0d64556d03efba99ef1ae3e`.
191
+ - Verify the unchanged Canopus producer, verifier, Receipt v1, Defer, and
192
+ clean-clone path against the temporal actor-registration release.
193
+ - Preserve every existing authority and benchmark nonclaim. This compatibility
194
+ patch does not run the ADR 0005 cold-use benchmark or grant independent,
195
+ human, scientific, causal, or external credit.
196
+
197
+ ## 0.1.3 - 2026-07-16
198
+
199
+ - Advance the active released-binary composition gate to public Vela
200
+ `v0.800.19`, including the exact published macOS arm64 checksum.
201
+ - Keep the harness behavior and authority boundary unchanged: Canopus still
202
+ schedules bounded work, freezes artifacts, runs a separate verifier, and
203
+ delegates Receipt v1 landing to released Vela without any signer surface.
204
+ - Preserve the ADR 0004 Stage A benchmark as frozen `v0.800.17` evidence rather
205
+ than rewriting historical registration or result packets.
206
+
207
+ ## 0.1.2 - 2026-07-16
208
+
209
+ - Target released Vela `v0.800.17` and add the bounded ADR 0004 Stage A
210
+ composition runner.
211
+ - Consume six hash-pinned standards and Vela packets generated directly by the
212
+ public Vela references; Canopus schedules, isolates, records, and scores the
213
+ calls without owning dependency-standing or exact-lock semantics.
214
+ - Complete four native Codex 0.144.5 cells with four safe completions, zero
215
+ defects, tool calls, authority attempts, child-falsity inferences, help
216
+ requests, or interventions.
217
+ - Record directional compression only: the Vela profile used about half the
218
+ context bytes of the standards profile on both tasks while preserving the
219
+ same exact roots and statuses. At n=1 this is not a causal or scientific
220
+ result and promotes no new authority-bearing protocol primitive.
221
+
222
+ ## 0.1.1 - 2026-07-16
223
+
224
+ - Replace `v0.1.0` as the active release because ambient Git configuration
225
+ automatically SSH-signed that annotated tag with a human key during an agent
226
+ session. The source commit itself was unsigned, and the signature never
227
+ entered Vela scientific authority, but using the key at all violated the
228
+ harness custody boundary.
229
+ - Disable commit and tag signing in the working repository and publish this
230
+ patch from an explicitly unsigned commit and annotated tag.
231
+ - Preserve the same checksum-pinned Vela `v0.800.15` composition behavior and
232
+ benchmark nonclaims.
233
+
234
+ ## 0.1.0 - 2026-07-16
235
+
236
+ - Withdrawn as an active release because its annotated Git tag was
237
+ ambiently SSH-signed with a human key. Retained as transparent historical
238
+ evidence; use `v0.1.1`.
239
+ - Introduce exact-root missions, bounded Codex and verifier lanes, immutable
240
+ artifacts, repair contracts, Receipt v1 mapping, and clean-clone replay.
241
+ - Preserve engine and verifier manifests as Vela-bound evidence.
242
+ - Add the registered inherited-state benchmark and an opt-in released-Vela
243
+ composition gate.
244
+ - Isolate native Codex credential and version homes, and preserve only bounded,
245
+ redacted failure diagnostics plus output digests.
246
+ - Publish the preregistered two-arm subagent proxy as `no_advantage`, while
247
+ preserving the native provider usage gate as open infrastructure evidence.
248
+ - Keep signing, human decisions, policy, replay, and accepted state inside
249
+ Vela.
package/LICENSE-APACHE ADDED
@@ -0,0 +1,176 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
package/LICENSE-MIT ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Vela contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,124 @@
1
+ # Canopus
2
+
3
+ Canopus is a bounded research runner over released Vela and Git interfaces. It
4
+ selects an exact Vela work offer, gives a finite mission to a tool-enabled Codex
5
+ worker, freezes the output, runs an independent verifier container, and may land
6
+ a Receipt v1 through `vela land`.
7
+
8
+ Canopus cannot sign, accept a proposal, or make a scientific decision. A
9
+ verifier-passing landing remains `Deferred` or `pending_review` unless an
10
+ already-signed Vela policy says otherwise. Removing Canopus does not change Vela
11
+ replay or accepted state.
12
+
13
+ ## Product workflow
14
+
15
+ Canopus 0.3 targets checksum-pinned Vela 0.901.0. Its ordinary path is:
16
+
17
+ ```bash
18
+ canopus doctor /path/to/frontier
19
+ canopus run /path/to/frontier --first
20
+ canopus inspect latest
21
+ canopus replay /path/to/run.json
22
+ canopus withdraw /path/to/frontier --run latest --reason "superseded"
23
+ ```
24
+
25
+ `doctor` discovers and binds Vela, Codex, Git, Docker, the clean frontier roots,
26
+ the first Vela producer offer, and a registered verifier profile. It also runs
27
+ the same generated-canary native custody preflight required by `run`; native
28
+ Windows reports the WSL2 handoff instead of claiming mission readiness. `run`
29
+ uses the first offer unless an exact registered target is requested. It refuses
30
+ dirty frontiers, drifted binaries or roots, missing verifier images,
31
+ cloud-synced output paths, and unregistered targets.
32
+ `inspect latest` selects the newest completed or safely stopped run. Failed-run
33
+ projections state whether landing was never attempted or whether retained
34
+ landing-recovery evidence must be inspected; they never infer an unchanged
35
+ frontier from process failure alone. Withdrawal's `latest` selector remains
36
+ limited to completed, proposal-bearing runs.
37
+
38
+ The native Codex worker runs under a bundled default-deny profile with only the
39
+ target workspace and required compiler files exposed. macOS uses Seatbelt;
40
+ Linux and WSL2 use Codex's Bubblewrap sandbox. Native Windows supports the
41
+ read-only product surface and directs tool-using runs to WSL2 before creating
42
+ run output or probing credentials. Open WSL2, enter the frontier through its
43
+ Linux path, and rerun the same `canopus run` command there. Authentication,
44
+ human keys, unrelated repositories, browser/search/MCP/app surfaces,
45
+ delegation, and command network access remain outside the worker boundary. The
46
+ verifier runs separately with network and writes denied.
47
+
48
+ A successful landing creates unsigned local Git commits and fast-forwards the
49
+ source checkout only after verifier success and clean-clone reproduction. It
50
+ does not push a remote. Use `--no-land` for a diagnostic run that leaves the
51
+ source frontier unchanged.
52
+
53
+ Profiles are Defer-only by default. A profile can request the policy lane only
54
+ when it includes a closed positive result contract and binds the full target
55
+ packet, profile, verifier capsule, and result-contract roots into the Receipt.
56
+ Canopus does not decide whether that work is admitted: released Vela evaluates
57
+ the exact signed policy, and any route, root, result class, or accepted-state
58
+ delta outside the frozen profile stops the run.
59
+
60
+ After a pending landing reproduces, Canopus retains only the exact
61
+ Receipt-bound producer seed needed to withdraw that one proposal. The
62
+ capability never enters worker, verifier, or run evidence. Withdrawal is
63
+ explicit, runs in a disposable exact-head clone, proves the accepted scientific
64
+ projection unchanged, fast-forwards the clean source, and then deletes the
65
+ secret. A later human decision also consumes the now-useless secret.
66
+
67
+ The installed product contains only the current active producer profiles:
68
+
69
+ - `erdos1056-k15-10428401-10428600`
70
+ - `formal-erdos-505-test-dim-one`
71
+
72
+ The Erdős capsule is a content-addressed static Linux binary for arm64 and
73
+ x86-64. The formal capsule is a small reviewed shell edge over an immutable
74
+ Linux-amd64 Lean image; Apple-silicon hosts bind Docker's exact amd64 emulation
75
+ instead of relying on implicit platform selection.
76
+ Completed and stopped profile registrations remain in Git and release evidence,
77
+ not in default discovery or the installed package. The shared source and pinned
78
+ build provenance remain available for reproducible rebuilding, but an installed
79
+ product run does not require a cross-compiler.
80
+
81
+ ## Advanced and historical interfaces
82
+
83
+ Mission v1 remains the portable interface for preparing and validating a frozen
84
+ bundle:
85
+
86
+ ```bash
87
+ canopus mission prepare path/to/draft.json \
88
+ --source /clean/frontier --output /new/bundle --vela /path/to/vela \
89
+ --codex /path/to/codex --verifier-image sha256:<image-root>
90
+ canopus mission validate /new/bundle/mission.json
91
+ ```
92
+
93
+ Closed profile v2 contracts have a separate advanced lifecycle:
94
+
95
+ ```bash
96
+ canopus profile list
97
+ canopus profile show erdos1056-k15-10428401-10428600
98
+ canopus profile validate erdos1056-k15-10428401-10428600
99
+ canopus profile pack erdos1056-k15-10428401-10428600 --output /new/profile-pack
100
+ canopus profile validate formal-erdos-505-test-dim-one
101
+ ```
102
+
103
+ Mission v0 and the stopped cold-use registrations remain available in Git for
104
+ exact historical reproduction. Benchmark commands, compiled benchmark modules,
105
+ registrations, and benchmark documentation are intentionally absent from the
106
+ installed npm package.
107
+
108
+ ## Development
109
+
110
+ Requires Node 22 or newer, pnpm 10, Vela 0.901.0, Codex CLI 0.144.6, and Docker.
111
+ Linux and WSL2 also require Bubblewrap. On Ubuntu 24.04, follow OpenAI's
112
+ [targeted AppArmor setup](https://developers.openai.com/codex/concepts/sandboxing#prerequisites)
113
+ for `bwrap-userns-restrict`; Canopus never disables the global unprivileged
114
+ user-namespace restriction or falls back to an unsandboxed worker.
115
+
116
+ ```bash
117
+ pnpm install
118
+ pnpm check
119
+ pnpm pack --dry-run
120
+ ```
121
+
122
+ See [run records](docs/RUN_RECORD.md) for evidence and publication semantics,
123
+ [mission roles](docs/MISSIONS.md) for the bounded jobs, [ADR 0001](docs/adr/0001-harness-boundary-and-name.md)
124
+ for the deletion test, and [release evidence](docs/RELEASES.md) for exact roots.
package/SECURITY.md ADDED
@@ -0,0 +1,35 @@
1
+ # Security
2
+
3
+ Report vulnerabilities privately through GitHub Security Advisories for
4
+ `vela-science/vela-research-harness`.
5
+
6
+ Canopus does not accept human signing keys. Do not place a human Vela key,
7
+ provider credential, or unpublished scientific secret inside a run root.
8
+ Successful runs scrub the isolated agent-key home, but operators remain
9
+ responsible for deleting failed diagnostic runs and benchmark output.
10
+
11
+ Agent-authored Git commits and tags must explicitly disable ambient signing
12
+ (`commit.gpgSign=false`, `tag.gpgSign=false`) and verify that the resulting Git
13
+ objects contain no signature. A repository-local configuration now disables
14
+ both for this working copy. The withdrawn `v0.1.0` tag and some earlier
15
+ pre-release implementation commits retain unintended human SSH signatures from
16
+ ambient Git configuration as transparent historical evidence. Those
17
+ signatures are not Vela authority, but agents must never create another one.
18
+
19
+ The v0 isolation backend is macOS Seatbelt. Other platforms fail closed; they
20
+ do not receive a permissive fallback.
21
+
22
+ Mission v1 uses the exact native Codex CLI with a bundled default-deny Seatbelt
23
+ profile on macOS or Bubblewrap profile on Linux and WSL2. Only the target packet
24
+ is writable and command-readable.
25
+ The runtime authentication copy, sealed source checkout, Vela home, host home,
26
+ host canary, and unrelated repositories must remain outside that boundary.
27
+ Every run performs a deterministic custody preflight; the live hostile fixture
28
+ also proves shell execution while denying credential reads, command network,
29
+ outside writes, and auth-bearing process environment.
30
+
31
+ The verifier is a separate digest- and platform-pinned Linux container with no
32
+ network and no writable persistent mount. Its manifest records Docker, the
33
+ read-only root, exact read-only binds, dropped capabilities, and denied
34
+ privilege escalation instead of mislabeling the boundary as macOS Seatbelt.
35
+ Canopus never places the producer, verifier, or model in the Vela signing path.
@@ -0,0 +1,35 @@
1
+ # Erdős 1056 k=15 capsule
2
+
3
+ This non-authoritative verifier independently recomputes the exact inclusive
4
+ prime range selected by its compile-time bounds. The active build covers
5
+ `10428401..10428600`. It accepts one byte-exact artifact describing
6
+ either the first 16-cut factorial-residue witness in that range or the complete
7
+ negative scan. A negative result is only about this finite range.
8
+
9
+ Build the active static Linux ARM64 capsule with
10
+ `aarch64-linux-gnu-g++ (GCC) 15.2.0`:
11
+
12
+ ```bash
13
+ mkdir -p capsules/erdos1056-k15/bin/linux-arm64/10428401-10428600
14
+ aarch64-linux-gnu-g++ -O3 -std=c++20 -static -s \
15
+ -DCANOPUS_RANGE_START=10428401 -DCANOPUS_RANGE_END=10428600 \
16
+ capsules/erdos1056-k15/verifier.cpp \
17
+ -o capsules/erdos1056-k15/bin/linux-arm64/10428401-10428600/verifier
18
+ ```
19
+
20
+ The active Linux ARM64 capsule SHA-256 root is
21
+ `a6fc0d2ad4dd8e665474d6efd530e8a574880b7191d246b1c245d8cf4db175aa`.
22
+
23
+ The Linux x86-64 capsule was built in `alpine:3.22.1` for `linux/amd64`,
24
+ pinned at
25
+ `sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1`,
26
+ using exact package `g++ 14.2.0-r6` with the same flags. Its SHA-256 root is
27
+ `3cdcb487db4907b63230548a7c7fd94d4be6acf003ca532971f9cf1650f19546`.
28
+
29
+ Completed range binaries and registrations remain recoverable from their
30
+ recorded Git commits and release evidence; they are intentionally absent from
31
+ the active package.
32
+
33
+ The prepared mission copies the executable into its content-addressed bundle.
34
+ The separate verifier container has no network and no writable persistent
35
+ mounts.