@vela-science/canopus 0.4.6 → 0.5.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 +11 -0
- package/README.md +15 -14
- package/capsules/erdos1056-k15/bin/linux-arm64/10428401-10428600/verifier +0 -0
- package/capsules/erdos1056-k15/bin/linux-x86_64/10428401-10428600/verifier +0 -0
- package/capsules/formal-erdos-505-test-dim-one/verifier +0 -0
- package/capsules/quantum-10-1-4/verifier.py +152 -0
- package/capsules/sidon-a24/bin/linux-arm64/verifier +0 -0
- package/capsules/sidon-a24/bin/linux-x86_64/verifier +0 -0
- package/dist/src/product/doctor.js +20 -4
- package/dist/src/vela/cli.js +1 -1
- package/docs/RELEASES.md +40 -0
- package/missions/quantum-10-1-4-retry/mission.draft.json +40 -0
- package/package.json +12 -9
- package/profiles/quantum-10-1-4-stabilizer-retry.json +35 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.0 - 2026-07-20
|
|
4
|
+
|
|
5
|
+
- Compose against released Vela 0.911.0 and surface configured, available, and
|
|
6
|
+
leased producer work without treating a lease as an empty frontier.
|
|
7
|
+
- Restore the packaged quantum-codes profile, mission draft, and verifier
|
|
8
|
+
capsule so all four published frontiers have reproducible product coverage.
|
|
9
|
+
- Make Bun 1.3.12 the canonical development and public invocation path while
|
|
10
|
+
preserving the supported Node runtime for the installed package.
|
|
11
|
+
- Keep historical Build Week registrations and evidence byte-identical; this
|
|
12
|
+
release adds composition and usability, not scientific authority.
|
|
13
|
+
|
|
3
14
|
## 0.4.6 - 2026-07-20
|
|
4
15
|
|
|
5
16
|
- Register and complete the GPT-5.6 Sidon mission that produces a new
|
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
|
-
|
|
42
|
-
|
|
41
|
+
bunx @vela-science/canopus@0.5.0 --version
|
|
42
|
+
bunx @vela-science/canopus@0.5.0 profile validate sidon-a24-at-least-7194-gpt56-v3
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**Full workflow — reproduce without rebuilding Canopus:**
|
|
@@ -53,26 +53,25 @@ vela reproduce .
|
|
|
53
53
|
|
|
54
54
|
## Quickstart
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
Run the provenance-backed public package with Bun:
|
|
57
57
|
|
|
58
58
|
```sh
|
|
59
|
-
|
|
60
|
-
canopus --version
|
|
59
|
+
bunx @vela-science/canopus@0.5.0 --version
|
|
61
60
|
```
|
|
62
61
|
|
|
63
62
|
Inspect a clean frontier, then run its first ranked producer offer:
|
|
64
63
|
|
|
65
64
|
```sh
|
|
66
|
-
canopus doctor /path/to/frontier
|
|
67
|
-
canopus run /path/to/frontier --first
|
|
68
|
-
canopus inspect latest
|
|
69
|
-
canopus replay /path/to/run.json
|
|
65
|
+
bunx @vela-science/canopus@0.5.0 doctor /path/to/frontier
|
|
66
|
+
bunx @vela-science/canopus@0.5.0 run /path/to/frontier --first
|
|
67
|
+
bunx @vela-science/canopus@0.5.0 inspect latest
|
|
68
|
+
bunx @vela-science/canopus@0.5.0 replay /path/to/run.json
|
|
70
69
|
```
|
|
71
70
|
|
|
72
71
|
Use `--no-land` for a diagnostic mission that cannot change the source frontier:
|
|
73
72
|
|
|
74
73
|
```sh
|
|
75
|
-
canopus run /path/to/frontier --first --no-land
|
|
74
|
+
bunx @vela-science/canopus@0.5.0 run /path/to/frontier --first --no-land
|
|
76
75
|
```
|
|
77
76
|
|
|
78
77
|
`doctor` binds the exact Vela, Codex, Git, frontier, packet, profile, and verifier
|
|
@@ -113,12 +112,14 @@ commits, run roots, audit evidence, and nonclaims live in
|
|
|
113
112
|
|
|
114
113
|
## Development
|
|
115
114
|
|
|
116
|
-
Requires
|
|
115
|
+
Requires Bun 1.3.12, Vela 0.911.0, Codex CLI 0.144.6, and Docker. The built
|
|
116
|
+
package also runs under Node 22 or 24; unsupported odd-numbered Node releases
|
|
117
|
+
are rejected rather than silently treated as supported.
|
|
117
118
|
|
|
118
119
|
```sh
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
bun install --frozen-lockfile
|
|
121
|
+
bun run check
|
|
122
|
+
bun run pack:check
|
|
122
123
|
```
|
|
123
124
|
|
|
124
125
|
## Documentation
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Verify one explicit [[10,1,d>=4]] stabilizer witness."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import itertools
|
|
7
|
+
import json
|
|
8
|
+
import pathlib
|
|
9
|
+
import sys
|
|
10
|
+
|
|
11
|
+
SCHEMA = "canopus.quantum-stabilizer-witness.v1"
|
|
12
|
+
TARGET = "quantum:[[10,1,4]]"
|
|
13
|
+
N = 10
|
|
14
|
+
K = 1
|
|
15
|
+
EXPECTED_KEYS = {"schema", "target", "n", "k", "generators"}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def fail(message: str) -> "NoReturn":
|
|
19
|
+
print(f"quantum verifier: {message}", file=sys.stderr)
|
|
20
|
+
raise SystemExit(1)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def pauli_vector(pauli: str) -> int:
|
|
24
|
+
if len(pauli) != N or any(symbol not in "IXYZ" for symbol in pauli):
|
|
25
|
+
fail("each generator must be a length-10 string over I, X, Y, Z")
|
|
26
|
+
vector = 0
|
|
27
|
+
for qubit, symbol in enumerate(pauli):
|
|
28
|
+
if symbol in "XY":
|
|
29
|
+
vector |= 1 << qubit
|
|
30
|
+
if symbol in "ZY":
|
|
31
|
+
vector |= 1 << (N + qubit)
|
|
32
|
+
return vector
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def symplectic(left: int, right: int) -> int:
|
|
36
|
+
mask = (1 << N) - 1
|
|
37
|
+
left_x, left_z = left & mask, left >> N
|
|
38
|
+
right_x, right_z = right & mask, right >> N
|
|
39
|
+
return ((left_x & right_z).bit_count() + (left_z & right_x).bit_count()) & 1
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def binary_rank(rows: list[int]) -> int:
|
|
43
|
+
basis: dict[int, int] = {}
|
|
44
|
+
for original in rows:
|
|
45
|
+
row = original
|
|
46
|
+
while row:
|
|
47
|
+
pivot = row.bit_length() - 1
|
|
48
|
+
if pivot in basis:
|
|
49
|
+
row ^= basis[pivot]
|
|
50
|
+
else:
|
|
51
|
+
basis[pivot] = row
|
|
52
|
+
break
|
|
53
|
+
return len(basis)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def stabilizer_span(generators: list[int]) -> set[int]:
|
|
57
|
+
span = {0}
|
|
58
|
+
for generator in generators:
|
|
59
|
+
span.update(value ^ generator for value in tuple(span))
|
|
60
|
+
return span
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def error_vector(positions: tuple[int, ...], symbols: tuple[str, ...]) -> int:
|
|
64
|
+
vector = 0
|
|
65
|
+
for qubit, symbol in zip(positions, symbols, strict=True):
|
|
66
|
+
if symbol in "XY":
|
|
67
|
+
vector |= 1 << qubit
|
|
68
|
+
if symbol in "ZY":
|
|
69
|
+
vector |= 1 << (N + qubit)
|
|
70
|
+
return vector
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def main() -> None:
|
|
74
|
+
if len(sys.argv) != 2:
|
|
75
|
+
fail("usage: verifier.py WITNESS.json")
|
|
76
|
+
witness_path = pathlib.Path(sys.argv[1])
|
|
77
|
+
metadata = witness_path.lstat()
|
|
78
|
+
if not witness_path.is_file() or witness_path.is_symlink() or metadata.st_size > 65_536:
|
|
79
|
+
fail("witness must be one bounded regular file")
|
|
80
|
+
with witness_path.open("rb") as source:
|
|
81
|
+
raw = source.read(65_537)
|
|
82
|
+
if len(raw) > 65_536:
|
|
83
|
+
fail("witness exceeds 65536 bytes")
|
|
84
|
+
try:
|
|
85
|
+
witness = json.loads(raw)
|
|
86
|
+
except (UnicodeDecodeError, json.JSONDecodeError) as error:
|
|
87
|
+
fail(f"witness is not valid UTF-8 JSON: {error}")
|
|
88
|
+
if not isinstance(witness, dict) or set(witness) != EXPECTED_KEYS:
|
|
89
|
+
fail("witness fields must be exactly schema, target, n, k, generators")
|
|
90
|
+
if witness["schema"] != SCHEMA or witness["target"] != TARGET:
|
|
91
|
+
fail("witness schema or target is wrong")
|
|
92
|
+
if type(witness["n"]) is not int or type(witness["k"]) is not int:
|
|
93
|
+
fail("n and k must be integers")
|
|
94
|
+
if witness["n"] != N or witness["k"] != K:
|
|
95
|
+
fail("witness must declare n=10 and k=1")
|
|
96
|
+
declared = witness["generators"]
|
|
97
|
+
if not isinstance(declared, list) or len(declared) != N - K:
|
|
98
|
+
fail("witness must contain exactly nine generators")
|
|
99
|
+
if any(not isinstance(generator, str) for generator in declared):
|
|
100
|
+
fail("every generator must be a string")
|
|
101
|
+
if len(set(declared)) != len(declared):
|
|
102
|
+
fail("generators must be distinct")
|
|
103
|
+
generators = [pauli_vector(generator) for generator in declared]
|
|
104
|
+
if any(generator == 0 for generator in generators):
|
|
105
|
+
fail("identity is not a generator")
|
|
106
|
+
for left, right in itertools.combinations(generators, 2):
|
|
107
|
+
if symplectic(left, right) != 0:
|
|
108
|
+
fail("generators do not commute")
|
|
109
|
+
rank = binary_rank(generators)
|
|
110
|
+
if rank != N - K:
|
|
111
|
+
fail(f"generator rank is {rank}, expected nine")
|
|
112
|
+
span = stabilizer_span(generators)
|
|
113
|
+
if len(span) != 1 << (N - K):
|
|
114
|
+
fail("stabilizer span has the wrong cardinality")
|
|
115
|
+
|
|
116
|
+
tested = 0
|
|
117
|
+
degenerate = 0
|
|
118
|
+
for weight in range(1, 4):
|
|
119
|
+
for positions in itertools.combinations(range(N), weight):
|
|
120
|
+
for symbols in itertools.product("XYZ", repeat=weight):
|
|
121
|
+
tested += 1
|
|
122
|
+
error = error_vector(positions, symbols)
|
|
123
|
+
if all(symplectic(error, generator) == 0 for generator in generators):
|
|
124
|
+
if error not in span:
|
|
125
|
+
fail(
|
|
126
|
+
"found an undetectable non-stabilizer Pauli below weight four: "
|
|
127
|
+
f"positions={positions}, symbols={''.join(symbols)}"
|
|
128
|
+
)
|
|
129
|
+
degenerate += 1
|
|
130
|
+
if tested != 3_675:
|
|
131
|
+
fail(f"internal enumeration count is {tested}, expected 3675")
|
|
132
|
+
print(
|
|
133
|
+
json.dumps(
|
|
134
|
+
{
|
|
135
|
+
"schema": "canopus.quantum-stabilizer-verification.v1",
|
|
136
|
+
"target": TARGET,
|
|
137
|
+
"n": N,
|
|
138
|
+
"k": K,
|
|
139
|
+
"rank": rank,
|
|
140
|
+
"stabilizer_size": len(span),
|
|
141
|
+
"errors_weight_1_to_3_tested": tested,
|
|
142
|
+
"low_weight_stabilizers": degenerate,
|
|
143
|
+
"distance_at_least": 4,
|
|
144
|
+
},
|
|
145
|
+
sort_keys=True,
|
|
146
|
+
separators=(",", ":"),
|
|
147
|
+
)
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
if __name__ == "__main__":
|
|
152
|
+
main()
|
|
File without changes
|
|
File without changes
|
|
@@ -28,10 +28,26 @@ function nonnegative(value, at) {
|
|
|
28
28
|
}
|
|
29
29
|
return value;
|
|
30
30
|
}
|
|
31
|
+
function noAvailableProducerTarget(offer) {
|
|
32
|
+
const leased = Array.isArray(offer.leased_targets) ? offer.leased_targets : [];
|
|
33
|
+
if (leased.length > 0) {
|
|
34
|
+
const summaries = leased.map((value, index) => {
|
|
35
|
+
const lease = objectAt(value, `vela next.leased_targets[${index}]`);
|
|
36
|
+
const target = stringAt(lease.target_id, "leased target id", { min: 1, max: 256 });
|
|
37
|
+
const actor = stringAt(lease.actor, "leased target actor", { min: 1, max: 256 });
|
|
38
|
+
const expires = lease.expires_at === undefined
|
|
39
|
+
? "unknown expiry"
|
|
40
|
+
: stringAt(lease.expires_at, "leased target expiry", { min: 1, max: 64 });
|
|
41
|
+
return `${target} by ${actor} until ${expires}`;
|
|
42
|
+
});
|
|
43
|
+
return new Error(`no producer target is currently available; configured work is leased: ${summaries.join(", ")}`);
|
|
44
|
+
}
|
|
45
|
+
return new Error("vela next returned no producer target");
|
|
46
|
+
}
|
|
31
47
|
export function selectProductOffer(offer, profile, requestedTarget) {
|
|
32
48
|
const targets = offer.targets;
|
|
33
49
|
if (!Array.isArray(targets) || targets.length === 0) {
|
|
34
|
-
throw
|
|
50
|
+
throw noAvailableProducerTarget(offer);
|
|
35
51
|
}
|
|
36
52
|
if (requestedTarget !== undefined && requestedTarget !== profile.target) {
|
|
37
53
|
throw new Error(`registered profile ${profile.name} targets ${profile.target}, not requested target ${requestedTarget}`);
|
|
@@ -62,7 +78,7 @@ export async function resolveProductProfile(offer, profileName, requestedTarget)
|
|
|
62
78
|
return loadProductProfile(profileName);
|
|
63
79
|
const targets = offer.targets;
|
|
64
80
|
if (!Array.isArray(targets) || targets.length === 0) {
|
|
65
|
-
throw
|
|
81
|
+
throw noAvailableProducerTarget(offer);
|
|
66
82
|
}
|
|
67
83
|
const selectedOffer = requestedTarget === undefined
|
|
68
84
|
? objectAt(targets[0], "vela next.targets[0]")
|
|
@@ -104,8 +120,8 @@ export async function doctorProduct(options) {
|
|
|
104
120
|
runtimeIdentity({ name: "vela", cwd: frontier, home: runtime, runner }),
|
|
105
121
|
runtimeIdentity({ name: "git", cwd: frontier, home: runtime, runner }),
|
|
106
122
|
]);
|
|
107
|
-
if (vela.version !== "vela 0.
|
|
108
|
-
throw new Error(`Canopus ${CANOPUS_VERSION} requires vela 0.
|
|
123
|
+
if (vela.version !== "vela 0.911.0") {
|
|
124
|
+
throw new Error(`Canopus ${CANOPUS_VERSION} requires vela 0.911.0, observed ${vela.version}`);
|
|
109
125
|
}
|
|
110
126
|
const [status, offer, gitStatus] = await Promise.all([
|
|
111
127
|
jsonCommand({ runner, argv: [vela.binary, "status", ".", "--json"], cwd: frontier, home: runtime, label: "vela status" }),
|
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"
|
|
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"
|
|
436
436
|
? {
|
|
437
437
|
ok: true,
|
|
438
438
|
command: "status_root_projection",
|
package/docs/RELEASES.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Release evidence
|
|
2
2
|
|
|
3
|
+
## Canopus v0.4.6
|
|
4
|
+
|
|
5
|
+
Version `0.4.6` is the primary Build Week science release. It registers the
|
|
6
|
+
bounded `gpt-5.6-sol` Sidon mission, securely retains the worker's declared
|
|
7
|
+
large artifact before workspace teardown, packages the frozen Sidon verifier
|
|
8
|
+
capsules, and publishes the sanitized public projection of the successful
|
|
9
|
+
7,194-point construction.
|
|
10
|
+
|
|
11
|
+
The exact run completed the full product chain: worker success, frozen
|
|
12
|
+
verifier pass, Vela route `defer`, accepted-state delta zero, and matching
|
|
13
|
+
clean-clone replay. The pending proposal is evidence, not scientific
|
|
14
|
+
acceptance.
|
|
15
|
+
|
|
16
|
+
- Source/tag: `ad72a7aca63aaa6c060f840020cca6871e4a9f11` / `v0.4.6`
|
|
17
|
+
- Cross-platform CI and installed-package smoke:
|
|
18
|
+
[run 29783128714](https://github.com/vela-science/vela-research-harness/actions/runs/29783128714)
|
|
19
|
+
- CodeQL:
|
|
20
|
+
[run 29783117151](https://github.com/vela-science/vela-research-harness/actions/runs/29783117151)
|
|
21
|
+
- OIDC publish and GitHub build attestation:
|
|
22
|
+
[run 29783128737](https://github.com/vela-science/vela-research-harness/actions/runs/29783128737)
|
|
23
|
+
- Package SHA-256: `d1c30b0c35b56cb7d874e3646a5d3ddc2abe2f61e38da0c6d2c7163d6de09300`
|
|
24
|
+
- npm shasum: `ca9e9f5a8c064c749523f2e47a4936030367eed3`
|
|
25
|
+
- npm integrity:
|
|
26
|
+
`sha512-Y3vL/29YEYnKt6iniPvSi5C85UHEOWZ+vtlXiqZSyyyNo5emXkC5gt8fJ4chzEMi7iTYzaRPOv0hsNuPnbUhVQ==`
|
|
27
|
+
- A fresh `npm audit signatures --include-attestations` verifies the registry
|
|
28
|
+
signatures and the SLSA provenance v1 attestation.
|
|
29
|
+
- A clean registry execution under Node `v24.14.0` returned `canopus 0.4.6`
|
|
30
|
+
and validated the exact packaged Sidon v3 profile root.
|
|
31
|
+
- Public package and matching release:
|
|
32
|
+
[npm](https://www.npmjs.com/package/@vela-science/canopus/v/0.4.6),
|
|
33
|
+
[GitHub](https://github.com/vela-science/vela-research-harness/releases/tag/v0.4.6)
|
|
34
|
+
|
|
35
|
+
The OIDC workflow published successfully, but its immediate registry
|
|
36
|
+
attestation audit encountered a transient npm attestations-endpoint `404`, so
|
|
37
|
+
the final GitHub-release step did not run. Once the same registry tarball
|
|
38
|
+
passed both `gh attestation verify` against the exact release workflow/tag and
|
|
39
|
+
the npm signature audit, the matching GitHub release was created from those
|
|
40
|
+
bytes. The tag did not move and no reusable npm token was introduced. The
|
|
41
|
+
workflow now retries the full audit while the registry endpoint propagates.
|
|
42
|
+
|
|
3
43
|
## Canopus v0.4.5
|
|
4
44
|
|
|
5
45
|
Version `0.4.5` is a documentation-only truthfulness correction over 0.4.4.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "mission_quantum_10_1_4_stabilizer_v2",
|
|
3
|
+
"target": "quantum:[[10,1,4]]",
|
|
4
|
+
"frontier": ".",
|
|
5
|
+
"actor": "agent:canopus-local",
|
|
6
|
+
"role": "producer",
|
|
7
|
+
"claim_type": "computational",
|
|
8
|
+
"replayability": "exact",
|
|
9
|
+
"objective": "Produce exactly one explicit stabilizer witness at artifacts/quantum-10-1-4.witness.json. The JSON fields must be exactly schema, target, n, k, and generators. Set schema to canopus.quantum-stabilizer-witness.v1, target to quantum:[[10,1,4]], n to 10, k to 1, and generators to exactly nine distinct length-10 strings over I, X, Y, Z. The generators must be non-identity, pairwise commuting, GF(2)-independent, and define no undetectable non-stabilizer Pauli of weight one, two, or three. A null or failed result is valid if no candidate is found. Work only from the supplied frontier and do not assume access to any earlier run artifact. Do not claim classification, optimality, or universal nonexistence.",
|
|
10
|
+
"completion_condition": "The frozen verifier independently checks generator validity, pairwise symplectic commutation, rank nine, stabilizer-span membership, and all 3,675 Pauli errors of weight one through three in a separate network-denied and write-denied container.",
|
|
11
|
+
"allowed_paths": [
|
|
12
|
+
"artifacts/quantum-10-1-4.witness.json"
|
|
13
|
+
],
|
|
14
|
+
"budgets": {
|
|
15
|
+
"max_research_wall_time_ms": 1800000,
|
|
16
|
+
"max_research_processes": 16,
|
|
17
|
+
"max_research_output_bytes": 16777216,
|
|
18
|
+
"max_prompt_bytes": 2097152,
|
|
19
|
+
"max_artifact_bytes": 65536,
|
|
20
|
+
"max_attempts": 1,
|
|
21
|
+
"max_observed_tokens": 400000
|
|
22
|
+
},
|
|
23
|
+
"worker": {
|
|
24
|
+
"model": "gpt-5.4"
|
|
25
|
+
},
|
|
26
|
+
"verifier": {
|
|
27
|
+
"argv": [
|
|
28
|
+
"capsule/verifier",
|
|
29
|
+
"{artifact:artifacts/quantum-10-1-4.witness.json}"
|
|
30
|
+
],
|
|
31
|
+
"cwd": "targets",
|
|
32
|
+
"timeout_ms": 30000,
|
|
33
|
+
"max_output_bytes": 65536,
|
|
34
|
+
"capsule_path": "capsule/verifier"
|
|
35
|
+
},
|
|
36
|
+
"scientific_chain": {
|
|
37
|
+
"predicted_observable": "The frozen verifier reports rank nine, stabilizer size 512, exactly 3,675 checked Pauli errors, and distance_at_least=4 for the supplied generator set.",
|
|
38
|
+
"performed_test": "capsule/verifier artifacts/quantum-10-1-4.witness.json"
|
|
39
|
+
}
|
|
40
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vela-science/canopus",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "A bounded, replaceable research harness over released Vela interfaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"engines": {
|
|
17
17
|
"node": ">=22 <23 || >=24 <25"
|
|
18
18
|
},
|
|
19
|
+
"packageManager": "bun@1.3.12",
|
|
19
20
|
"bin": {
|
|
20
21
|
"canopus": "dist/src/cli.js"
|
|
21
22
|
},
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"capsules/erdos1056-k15/bin/linux-arm64/10428401-10428600/verifier",
|
|
56
57
|
"capsules/erdos1056-k15/bin/linux-x86_64/10428401-10428600/verifier",
|
|
57
58
|
"capsules/formal-erdos-505-test-dim-one/verifier",
|
|
59
|
+
"capsules/quantum-10-1-4/verifier.py",
|
|
58
60
|
"capsules/sidon-a24/bin/linux-arm64/verifier",
|
|
59
61
|
"capsules/sidon-a24/bin/linux-x86_64/verifier",
|
|
60
62
|
"missions",
|
|
@@ -76,18 +78,19 @@
|
|
|
76
78
|
"LICENSE-APACHE",
|
|
77
79
|
"LICENSE-MIT"
|
|
78
80
|
],
|
|
79
|
-
"devDependencies": {
|
|
80
|
-
"@types/node": "^24.0.0",
|
|
81
|
-
"typescript": "^5.9.0"
|
|
82
|
-
},
|
|
83
81
|
"scripts": {
|
|
84
82
|
"build": "node scripts/clean-dist.mjs && tsc -p tsconfig.json",
|
|
85
83
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
86
84
|
"lint": "tsc -p tsconfig.json --noEmit",
|
|
87
|
-
"test": "
|
|
88
|
-
"check": "
|
|
89
|
-
"
|
|
85
|
+
"test": "bun run build && node --test 'dist/tests/**/*.test.js' 'tests/**/*.test.mjs'",
|
|
86
|
+
"check": "bun run lint && bun run test",
|
|
87
|
+
"prepack": "bun run build",
|
|
88
|
+
"pack:check": "bun pm pack --dry-run",
|
|
90
89
|
"fixture:hostile-custody": "node scripts/run-hostile-native-custody-fixture.mjs",
|
|
91
90
|
"fixture:hostile-verifier": "node scripts/run-hostile-verifier-fixture.mjs"
|
|
91
|
+
},
|
|
92
|
+
"devDependencies": {
|
|
93
|
+
"@types/node": "^24.0.0",
|
|
94
|
+
"typescript": "^5.9.0"
|
|
92
95
|
}
|
|
93
|
-
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "canopus.profile.v2",
|
|
3
|
+
"name": "quantum-10-1-4-stabilizer-retry",
|
|
4
|
+
"target": "quantum:[[10,1,4]]",
|
|
5
|
+
"target_packet_schema": "quantum-codes.stabilizer-work.v1",
|
|
6
|
+
"draft": "missions/quantum-10-1-4-retry/mission.draft.json",
|
|
7
|
+
"draft_sha256": "sha256:e19f77440210492229e77014766abda013ab08ae5d8780a1ba7ae88f299c6c9d",
|
|
8
|
+
"objective_sha256": "sha256:bb432a7dedff4ed91facabc519f9d822988fe5a071342e6b1b7da15ab922e81e",
|
|
9
|
+
"completion_condition_sha256": "sha256:3f8efa58f9262d0e7a5cf3c7357a52b41331c8de4996c8d46d4bc187893a2372",
|
|
10
|
+
"allowed_artifacts_sha256": "sha256:17c9b63d133d87c3f8947805a414772597b99babcebdf95645c80a8357b67e35",
|
|
11
|
+
"budgets_sha256": "sha256:af61ff3790f8a96491fecca0693b6498f89b87ae7f67cebdbe85bef1670c48a0",
|
|
12
|
+
"replay_argv_sha256": "sha256:db20f2bd15f3bad1de911942247efbc190199d9d3683462a41723302b7ffacce",
|
|
13
|
+
"landing": {
|
|
14
|
+
"expected_routes": [
|
|
15
|
+
"defer"
|
|
16
|
+
],
|
|
17
|
+
"max_accepted_delta": 0
|
|
18
|
+
},
|
|
19
|
+
"platforms": {
|
|
20
|
+
"darwin-arm64": {
|
|
21
|
+
"worker_profile": "runtime/native-worker/config.toml",
|
|
22
|
+
"worker_profile_sha256": "sha256:12b58762819481ad101e7a172a296224b6050a8a07a7431272e521a4102908da",
|
|
23
|
+
"verifier_capsule": "capsules/quantum-10-1-4/verifier.py",
|
|
24
|
+
"verifier_capsule_sha256": "sha256:7070364ac9017b597b7765efd772f68f543008b64217df4b0d43e72719527160",
|
|
25
|
+
"verifier_image": "ghcr.io/vela-science/canopus-verifier@sha256:a6f354862f2a3f7d72eb99244c65fa8583c98b74e17e3d5ce6e31ef48aa16536"
|
|
26
|
+
},
|
|
27
|
+
"linux-x86_64": {
|
|
28
|
+
"worker_profile": "runtime/native-worker/config-linux.toml",
|
|
29
|
+
"worker_profile_sha256": "sha256:fddecc4b7458b91f6d55ae16b666d297ae7bcd1a2f5deeb6650dcea60fc0242c",
|
|
30
|
+
"verifier_capsule": "capsules/quantum-10-1-4/verifier.py",
|
|
31
|
+
"verifier_capsule_sha256": "sha256:7070364ac9017b597b7765efd772f68f543008b64217df4b0d43e72719527160",
|
|
32
|
+
"verifier_image": "ghcr.io/vela-science/canopus-verifier@sha256:a6f354862f2a3f7d72eb99244c65fa8583c98b74e17e3d5ce6e31ef48aa16536"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|