xoonya 2.6.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CROSS_RUNTIME_POSTURE.md +32 -2
- package/README.md +14 -1
- package/RELEASE_NOTES.md +25 -0
- package/SERVICE_CONTRACT.md +4 -0
- package/XNYA_CONFORMANCE_MARK.md +78 -0
- package/XNYA_REFERENCE_IMPLEMENTATIONS.md +157 -0
- package/XOONYA_NATIVE_PROOF_FORMAT.md +2 -0
- package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +4 -1
- package/bin/xoonya-release.js +19 -1
- package/bin/xoonya.js +1 -0
- package/lib/release_history.js +27 -0
- package/package.json +12 -2
- package/proof_sdk.js +605 -2
- package/reference/python/README.md +35 -0
- package/reference/python/requirements-optional.txt +1 -0
- package/reference/python/verify_vectors.py +209 -0
- package/reference/python/xnya_reference.py +810 -0
- package/reference/rust/Cargo.toml +11 -0
- package/reference/rust/README.md +28 -0
- package/reference/rust/src/lib.rs +87 -0
- package/scripts/registry_cli.js +157 -0
- package/scripts/verify_all.js +593 -0
- package/scripts/verify_examples.js +19 -0
- package/scripts/verify_external_proof_import_gate.js +84 -0
- package/scripts/verify_integrations.js +170 -0
- package/scripts/verify_native_hybrid_design_gate.js +108 -0
- package/scripts/verify_reference_promotion_gate.js +74 -0
- package/scripts/verify_reference_python.js +49 -0
- package/scripts/verify_reference_python_crypto.js +87 -0
- package/scripts/verify_reference_rust_scaffold.js +50 -0
- package/scripts/verify_release_candidate.js +106 -0
- package/scripts/verify_service.js +2849 -0
- package/scripts/verify_tooling.js +1251 -0
- package/scripts/verify_vectors.js +164 -0
- package/server.js +20 -0
- package/vectors/adversarial-vectors.json +27 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const { execFileSync, execSync } = require("child_process");
|
|
6
|
+
const packageJson = require("../package.json");
|
|
7
|
+
|
|
8
|
+
function parsePackDryRun() {
|
|
9
|
+
const output = execSync("npm pack --dry-run --json", {
|
|
10
|
+
cwd: path.resolve(__dirname, ".."),
|
|
11
|
+
encoding: "utf8"
|
|
12
|
+
});
|
|
13
|
+
const parsed = JSON.parse(output);
|
|
14
|
+
return Array.isArray(parsed) ? parsed[0] : parsed;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function main() {
|
|
18
|
+
const releaseOutput = execFileSync(process.execPath, [
|
|
19
|
+
path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
|
|
20
|
+
"--candidate",
|
|
21
|
+
"--summary"
|
|
22
|
+
], {
|
|
23
|
+
cwd: path.resolve(__dirname, ".."),
|
|
24
|
+
encoding: "utf8"
|
|
25
|
+
});
|
|
26
|
+
const releaseCandidate = JSON.parse(releaseOutput);
|
|
27
|
+
assert.strictEqual(releaseCandidate.product, "xoonya", "release candidate product mismatch");
|
|
28
|
+
assert.strictEqual(releaseCandidate.publish_access, "public", "release candidate publish access mismatch");
|
|
29
|
+
assert.strictEqual(releaseCandidate.checklist_count >= 5, true, "release candidate checklist count mismatch");
|
|
30
|
+
|
|
31
|
+
const conformanceOutput = execFileSync(process.execPath, [
|
|
32
|
+
path.resolve(__dirname, "..", "bin", "xoonya.js"),
|
|
33
|
+
"conformance",
|
|
34
|
+
"--json"
|
|
35
|
+
], {
|
|
36
|
+
cwd: path.resolve(__dirname, ".."),
|
|
37
|
+
encoding: "utf8"
|
|
38
|
+
});
|
|
39
|
+
const conformanceSummary = JSON.parse(conformanceOutput);
|
|
40
|
+
assert.strictEqual(conformanceSummary.ok, true, "conformance command did not pass");
|
|
41
|
+
assert.strictEqual(conformanceSummary.conformance_count >= 8, true, "conformance vector count too small");
|
|
42
|
+
assert.strictEqual(conformanceSummary.adversarial_count >= 8, true, "adversarial vector count too small");
|
|
43
|
+
assert.strictEqual(
|
|
44
|
+
conformanceSummary.adversarial_reasons.includes("native_hybrid_design_gated"),
|
|
45
|
+
true,
|
|
46
|
+
"native hybrid design-gate adversarial reason missing"
|
|
47
|
+
);
|
|
48
|
+
assert.deepStrictEqual(
|
|
49
|
+
conformanceSummary.verification_methods,
|
|
50
|
+
[
|
|
51
|
+
"detached-assertion-v1",
|
|
52
|
+
"did-vc-v1",
|
|
53
|
+
"jwt-assertion-v1",
|
|
54
|
+
"legacy-opreturn-v1",
|
|
55
|
+
"partner-proof-envelope-v1",
|
|
56
|
+
"sd-jwt-vc-v1",
|
|
57
|
+
"signed-envelope-v1",
|
|
58
|
+
"xoonya-native-anchored-v1",
|
|
59
|
+
"xoonya-native-sha256-v1",
|
|
60
|
+
"xoonya-native-signed-v1"
|
|
61
|
+
],
|
|
62
|
+
"conformance methods mismatch"
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
const dryRun = parsePackDryRun();
|
|
66
|
+
assert.strictEqual(dryRun.name, packageJson.name, "npm pack dry-run name mismatch");
|
|
67
|
+
assert.strictEqual(dryRun.version, packageJson.version, "npm pack dry-run version mismatch");
|
|
68
|
+
assert.strictEqual(Array.isArray(dryRun.files), true, "npm pack dry-run file list missing");
|
|
69
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya.js"), true, "npm pack dry-run missing xoonya cli");
|
|
70
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-first-run.js"), true, "npm pack dry-run missing xoonya-first-run");
|
|
71
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-review.js"), true, "npm pack dry-run missing xoonya-review");
|
|
72
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-release.js"), true, "npm pack dry-run missing xoonya-release");
|
|
73
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_external_proof_import_gate.js"), true, "npm pack dry-run missing external proof import gate verifier script");
|
|
74
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_vectors.js"), true, "npm pack dry-run missing conformance verifier script");
|
|
75
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_reference_python.js"), true, "npm pack dry-run missing Python reference verifier script");
|
|
76
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_reference_python_crypto.js"), true, "npm pack dry-run missing Python crypto reference verifier script");
|
|
77
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_reference_promotion_gate.js"), true, "npm pack dry-run missing reference promotion gate verifier script");
|
|
78
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_reference_rust_scaffold.js"), true, "npm pack dry-run missing Rust reference scaffold verifier script");
|
|
79
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_native_hybrid_design_gate.js"), true, "npm pack dry-run missing native hybrid design-gate verifier script");
|
|
80
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_all.js"), true, "npm pack dry-run missing package verifier script");
|
|
81
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/conformance-vectors.json"), true, "npm pack dry-run missing conformance vectors");
|
|
82
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/adversarial-vectors.json"), true, "npm pack dry-run missing adversarial vectors");
|
|
83
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/native-atom-vectors.json"), true, "npm pack dry-run missing native atom vectors");
|
|
84
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "README.md"), true, "npm pack dry-run missing README");
|
|
85
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "XOONYA_NATIVE_ATOM_SPEC.md"), true, "npm pack dry-run missing native atom spec");
|
|
86
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "XOONYA_NATIVE_STANDARD_GOVERNANCE.md"), true, "npm pack dry-run missing native governance doc");
|
|
87
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "XNYA_CONFORMANCE_MARK.md"), true, "npm pack dry-run missing XNYA conformance mark doc");
|
|
88
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "XNYA_REFERENCE_IMPLEMENTATIONS.md"), true, "npm pack dry-run missing XNYA reference implementations doc");
|
|
89
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "reference/python/xnya_reference.py"), true, "npm pack dry-run missing Python XNYA candidate reference");
|
|
90
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "reference/python/verify_vectors.py"), true, "npm pack dry-run missing Python XNYA vector verifier");
|
|
91
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "reference/python/requirements-optional.txt"), true, "npm pack dry-run missing Python optional requirements");
|
|
92
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "reference/rust/Cargo.toml"), true, "npm pack dry-run missing Rust candidate Cargo manifest");
|
|
93
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "reference/rust/src/lib.rs"), true, "npm pack dry-run missing Rust candidate source");
|
|
94
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "reference/rust/README.md"), true, "npm pack dry-run missing Rust candidate boundary doc");
|
|
95
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "RELEASE_NOTES.md"), true, "npm pack dry-run missing release notes");
|
|
96
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "START_HERE.md"), true, "npm pack dry-run missing start-here");
|
|
97
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "SERVICE_CONTRACT.md"), true, "npm pack dry-run missing service contract");
|
|
98
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "OPERATOR_START_HERE.md"), false, "npm pack dry-run should not ship operator start-here");
|
|
99
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "OPERATIONS_RUNBOOK.md"), false, "npm pack dry-run should not ship operations runbook");
|
|
100
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "PUBLISH_PLAN.md"), false, "npm pack dry-run should not ship publish plan");
|
|
101
|
+
assert.strictEqual(dryRun.files.length >= 10, true, "npm pack dry-run file count too small");
|
|
102
|
+
|
|
103
|
+
console.log("xoonya verify:release-candidate passed");
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
main();
|