@vela-science/canopus 0.5.0 → 0.5.2
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 +14 -0
- package/README.md +9 -9
- package/dist/src/product/doctor.js +2 -2
- package/dist/src/projection/public-run.js +4 -1
- package/dist/src/receipt/map.js +7 -1
- package/dist/src/vela/cli.js +1 -1
- package/docs/RUN_RECORD.md +4 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.2 - 2026-07-20
|
|
4
|
+
|
|
5
|
+
- Compose against Vela 0.911.1 so same-actor retries of `vela work` return the
|
|
6
|
+
exact active session without appending a second lease event.
|
|
7
|
+
- Preserve the 0.911.0 cold-use run as immutable diagnostic evidence; the
|
|
8
|
+
retry defect it exposed is not rewritten away.
|
|
9
|
+
|
|
10
|
+
## 0.5.1 - 2026-07-20
|
|
11
|
+
|
|
12
|
+
- Preserve exact pending-result replay roots instead of recomputing a receipt
|
|
13
|
+
projection with incomplete post-run state.
|
|
14
|
+
- Keep the published `0.5.0` package and failed post-publication workflow as
|
|
15
|
+
audit evidence; `0.5.1` is the corrected default install target.
|
|
16
|
+
|
|
3
17
|
## 0.5.0 - 2026-07-20
|
|
4
18
|
|
|
5
19
|
- Compose against released Vela 0.911.0 and surface configured, available, and
|
package/README.md
CHANGED
|
@@ -38,8 +38,8 @@ Mission → GPT-5.6 → artifact → verifier → Receipt → Defer.
|
|
|
38
38
|
**90 seconds — inspect the shipped product:**
|
|
39
39
|
|
|
40
40
|
```sh
|
|
41
|
-
bunx @vela-science/canopus@0.5.
|
|
42
|
-
bunx @vela-science/canopus@0.5.
|
|
41
|
+
bunx @vela-science/canopus@0.5.2 --version
|
|
42
|
+
bunx @vela-science/canopus@0.5.2 profile validate sidon-a24-at-least-7194-gpt56-v3
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**Full workflow — reproduce without rebuilding Canopus:**
|
|
@@ -56,22 +56,22 @@ vela reproduce .
|
|
|
56
56
|
Run the provenance-backed public package with Bun:
|
|
57
57
|
|
|
58
58
|
```sh
|
|
59
|
-
bunx @vela-science/canopus@0.5.
|
|
59
|
+
bunx @vela-science/canopus@0.5.2 --version
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
Inspect a clean frontier, then run its first ranked producer offer:
|
|
63
63
|
|
|
64
64
|
```sh
|
|
65
|
-
bunx @vela-science/canopus@0.5.
|
|
66
|
-
bunx @vela-science/canopus@0.5.
|
|
67
|
-
bunx @vela-science/canopus@0.5.
|
|
68
|
-
bunx @vela-science/canopus@0.5.
|
|
65
|
+
bunx @vela-science/canopus@0.5.2 doctor /path/to/frontier
|
|
66
|
+
bunx @vela-science/canopus@0.5.2 run /path/to/frontier --first
|
|
67
|
+
bunx @vela-science/canopus@0.5.2 inspect latest
|
|
68
|
+
bunx @vela-science/canopus@0.5.2 replay /path/to/run.json
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
Use `--no-land` for a diagnostic mission that cannot change the source frontier:
|
|
72
72
|
|
|
73
73
|
```sh
|
|
74
|
-
bunx @vela-science/canopus@0.5.
|
|
74
|
+
bunx @vela-science/canopus@0.5.2 run /path/to/frontier --first --no-land
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
`doctor` binds the exact Vela, Codex, Git, frontier, packet, profile, and verifier
|
|
@@ -112,7 +112,7 @@ commits, run roots, audit evidence, and nonclaims live in
|
|
|
112
112
|
|
|
113
113
|
## Development
|
|
114
114
|
|
|
115
|
-
Requires Bun 1.3.12, Vela 0.911.
|
|
115
|
+
Requires Bun 1.3.12, Vela 0.911.1, Codex CLI 0.144.6, and Docker. The built
|
|
116
116
|
package also runs under Node 22 or 24; unsupported odd-numbered Node releases
|
|
117
117
|
are rejected rather than silently treated as supported.
|
|
118
118
|
|
|
@@ -120,8 +120,8 @@ export async function doctorProduct(options) {
|
|
|
120
120
|
runtimeIdentity({ name: "vela", cwd: frontier, home: runtime, runner }),
|
|
121
121
|
runtimeIdentity({ name: "git", cwd: frontier, home: runtime, runner }),
|
|
122
122
|
]);
|
|
123
|
-
if (vela.version !== "vela 0.911.
|
|
124
|
-
throw new Error(`Canopus ${CANOPUS_VERSION} requires vela 0.911.
|
|
123
|
+
if (vela.version !== "vela 0.911.1") {
|
|
124
|
+
throw new Error(`Canopus ${CANOPUS_VERSION} requires vela 0.911.1, observed ${vela.version}`);
|
|
125
125
|
}
|
|
126
126
|
const [status, offer, gitStatus] = await Promise.all([
|
|
127
127
|
jsonCommand({ runner, argv: [vela.binary, "status", ".", "--json"], cwd: frontier, home: runtime, label: "vela status" }),
|
|
@@ -16,6 +16,9 @@ function publicCaveat(value) {
|
|
|
16
16
|
}
|
|
17
17
|
return value;
|
|
18
18
|
}
|
|
19
|
+
function shellArgument(value) {
|
|
20
|
+
return `'${value.replaceAll("'", `'"'"'`)}'`;
|
|
21
|
+
}
|
|
19
22
|
export function projectPublicRun(options) {
|
|
20
23
|
const { record, mission } = options;
|
|
21
24
|
if (mission.schema !== "canopus.mission.v1") {
|
|
@@ -91,7 +94,7 @@ export function projectPublicRun(options) {
|
|
|
91
94
|
`git clone ${repository.url}.git`,
|
|
92
95
|
`cd ${repository.directory}`,
|
|
93
96
|
`git checkout ${record.final_roots.git_commit}`,
|
|
94
|
-
|
|
97
|
+
...mission.allowed_paths.map((artifact) => `vela reproduce ${shellArgument(artifact)}`),
|
|
95
98
|
],
|
|
96
99
|
},
|
|
97
100
|
nonclaims: [
|
package/dist/src/receipt/map.js
CHANGED
|
@@ -6,6 +6,12 @@ import { parseCandidate } from "../contracts/candidate.js";
|
|
|
6
6
|
function unique(values) {
|
|
7
7
|
return [...new Set(values)];
|
|
8
8
|
}
|
|
9
|
+
function finalizeWorkerCaveat(value) {
|
|
10
|
+
if (/verif(?:y|ication|ier).*(?:pending|has not run)|pending.*verif(?:y|ication|ier)/iu.test(value)) {
|
|
11
|
+
return "The worker handed off without verifier authority; Canopus subsequently recorded the separate verifier outcome.";
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
9
15
|
export function finalizeCandidate(options) {
|
|
10
16
|
const draftPaths = options.engine.draft.artifacts.map((artifact) => `${artifact.path}:${artifact.kind}`).sort();
|
|
11
17
|
const supporting = new Map((options.supportingArtifacts ?? []).map((entry) => [entry.path, entry.kind]));
|
|
@@ -34,7 +40,7 @@ export function finalizeCandidate(options) {
|
|
|
34
40
|
? `The engine proposed a candidate, but the declared verifier did not pass: ${options.engine.draft.claim}`
|
|
35
41
|
: exactPositiveClaim ?? options.engine.draft.claim;
|
|
36
42
|
const caveats = unique([
|
|
37
|
-
...options.engine.draft.caveats,
|
|
43
|
+
...options.engine.draft.caveats.map(finalizeWorkerCaveat),
|
|
38
44
|
`Declared verifier outcome: ${options.verifier.status}.`,
|
|
39
45
|
"Canopus produced this record; it is not a human acceptance decision.",
|
|
40
46
|
]);
|
package/dist/src/vela/cli.js
CHANGED
|
@@ -432,7 +432,7 @@ export class VelaClient {
|
|
|
432
432
|
if (replay.source_hash !== undefined) {
|
|
433
433
|
assertEqual(normalizeSha256(replay.source_hash, "vela check.replay.source_hash"), checkCurrent, "Vela source snapshot");
|
|
434
434
|
}
|
|
435
|
-
const proof = version === "0.900.0" || version === "0.900.1" || version === "0.900.2" || version === "0.901.0" || version === "0.910.0" || version === "0.911.0"
|
|
435
|
+
const proof = version === "0.900.0" || version === "0.900.1" || version === "0.900.2" || version === "0.901.0" || version === "0.910.0" || version === "0.911.0" || version === "0.911.1"
|
|
436
436
|
? {
|
|
437
437
|
ok: true,
|
|
438
438
|
command: "status_root_projection",
|
package/docs/RUN_RECORD.md
CHANGED
|
@@ -44,7 +44,10 @@ canopus public-run /local/run/run.json \
|
|
|
44
44
|
`canopus.public-run.v1` contains only mission and model identity, a bounded
|
|
45
45
|
activity summary, claim and caveats, artifact/verifier/Receipt roots, route,
|
|
46
46
|
accepted delta, usage, source/final commits, and clean-clone reproduction
|
|
47
|
-
commands.
|
|
47
|
+
commands. Those public commands target the mission's exact allowed artifact
|
|
48
|
+
paths; they do not substitute frontier-wide accepted-state replay for
|
|
49
|
+
verification of a pending artifact. It cannot export a failed or admitted run.
|
|
50
|
+
Never publish the raw run
|
|
48
51
|
directory, isolated homes, authentication, private paths, or unrestricted logs.
|
|
49
52
|
|
|
50
53
|
The run root also contains isolated checkouts and content-addressed artifacts.
|