xoonya 2.7.0 → 2.9.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.
@@ -40,6 +40,11 @@ function main() {
40
40
  assert.strictEqual(conformanceSummary.ok, true, "conformance command did not pass");
41
41
  assert.strictEqual(conformanceSummary.conformance_count >= 8, true, "conformance vector count too small");
42
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
+ );
43
48
  assert.deepStrictEqual(
44
49
  conformanceSummary.verification_methods,
45
50
  [
@@ -65,7 +70,13 @@ function main() {
65
70
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-first-run.js"), true, "npm pack dry-run missing xoonya-first-run");
66
71
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-review.js"), true, "npm pack dry-run missing xoonya-review");
67
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");
68
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");
69
80
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_all.js"), true, "npm pack dry-run missing package verifier script");
70
81
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/conformance-vectors.json"), true, "npm pack dry-run missing conformance vectors");
71
82
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/adversarial-vectors.json"), true, "npm pack dry-run missing adversarial vectors");
@@ -73,6 +84,14 @@ function main() {
73
84
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "README.md"), true, "npm pack dry-run missing README");
74
85
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "XOONYA_NATIVE_ATOM_SPEC.md"), true, "npm pack dry-run missing native atom spec");
75
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");
76
95
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "RELEASE_NOTES.md"), true, "npm pack dry-run missing release notes");
77
96
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "START_HERE.md"), true, "npm pack dry-run missing start-here");
78
97
  assert.strictEqual(dryRun.files.some((entry) => entry.path === "SERVICE_CONTRACT.md"), true, "npm pack dry-run missing service contract");
@@ -1047,6 +1047,28 @@ async function main() {
1047
1047
  assert.strictEqual(nativeStandardizationSummaryResponse.status, 200, 'native standardization summary route failed');
1048
1048
  assert.strictEqual(nativeStandardizationSummaryResponse.json.category, 'xoonya-native-standardization-summary', 'native standardization summary category missing');
1049
1049
  assert.strictEqual(nativeStandardizationSummaryResponse.json.public_claim.includes('deterministic'), true, 'native standardization summary claim missing');
1050
+ const nativeConformanceMarkResponse = await getJson(baseUrl, '/v1/proof-center/native-conformance-mark');
1051
+ assert.strictEqual(nativeConformanceMarkResponse.status, 200, 'native conformance mark route failed');
1052
+ assert.strictEqual(nativeConformanceMarkResponse.json.mark, 'XNYA-compatible', 'native conformance mark missing');
1053
+ assert.strictEqual(nativeConformanceMarkResponse.json.required_artifacts.includes('XNYA_CONFORMANCE_MARK.md'), true, 'native conformance mark doc missing');
1054
+ assert.strictEqual(nativeConformanceMarkResponse.json.forbidden_claims_without_extra_evidence.some((entry) => entry.claim === 'pqc_or_hybrid_verified'), true, 'native conformance mark pq gate missing');
1055
+ const nativeConformanceMarkSummaryResponse = await getJson(baseUrl, '/v1/proof-center/native-conformance-mark/summary');
1056
+ assert.strictEqual(nativeConformanceMarkSummaryResponse.status, 200, 'native conformance mark summary route failed');
1057
+ assert.strictEqual(nativeConformanceMarkSummaryResponse.json.category, 'xoonya-native-conformance-mark-summary', 'native conformance mark summary category missing');
1058
+ assert.strictEqual(nativeConformanceMarkSummaryResponse.json.claim_class_count >= 4, true, 'native conformance mark claim classes missing');
1059
+ const nativeReferenceImplementationResponse = await getJson(baseUrl, '/v1/proof-center/native-reference-implementations');
1060
+ assert.strictEqual(nativeReferenceImplementationResponse.status, 200, 'native reference implementations route failed');
1061
+ assert.strictEqual(nativeReferenceImplementationResponse.json.category, 'xoonya-native-reference-implementation-pack', 'native reference implementations category missing');
1062
+ assert.strictEqual(nativeReferenceImplementationResponse.json.implemented_reference_implementations.some((entry) => entry.language === 'javascript' && entry.status === 'implemented'), true, 'native reference javascript implementation missing');
1063
+ assert.strictEqual(nativeReferenceImplementationResponse.json.planned_reference_candidates.some((entry) => entry.language === 'python'), true, 'native reference python candidate missing');
1064
+ assert.strictEqual(nativeReferenceImplementationResponse.json.planned_reference_candidates.some((entry) => entry.language === 'rust'), true, 'native reference rust candidate missing');
1065
+ const nativeReferenceImplementationSummaryResponse = await getJson(baseUrl, '/v1/proof-center/native-reference-implementations/summary');
1066
+ assert.strictEqual(nativeReferenceImplementationSummaryResponse.status, 200, 'native reference implementations summary route failed');
1067
+ assert.strictEqual(nativeReferenceImplementationSummaryResponse.json.category, 'xoonya-native-reference-implementation-summary', 'native reference implementations summary category missing');
1068
+ assert.strictEqual(nativeReferenceImplementationSummaryResponse.json.implemented_reference_count, 1, 'native reference implementations summary count mismatch');
1069
+ assert.strictEqual(nativeReferenceImplementationSummaryResponse.json.planned_reference_count >= 2, true, 'native planned reference implementations summary count mismatch');
1070
+ assert.strictEqual(nativeReferenceImplementationSummaryResponse.json.verified_candidate_scaffold_count >= 1, true, 'native verified candidate scaffold summary missing');
1071
+ assert.strictEqual(nativeReferenceImplementationSummaryResponse.json.deterministic_rejection_code_count >= 11, true, 'native reference promotion rejection code count missing');
1050
1072
  const nativePayloadProfileResponse = await getJson(baseUrl, '/v1/proof-center/native-payload-profile');
1051
1073
  assert.strictEqual(nativePayloadProfileResponse.status, 200, 'native payload profile route failed');
1052
1074
  assert.strictEqual(nativePayloadProfileResponse.json.category, 'xoonya-native-payload-profile-pack', 'native payload profile category missing');
@@ -1104,10 +1126,12 @@ async function main() {
1104
1126
  assert.strictEqual(importAdapterResponse.json.category, 'xoonya-external-proof-import-adapter', 'external proof import category missing');
1105
1127
  assert.strictEqual(importAdapterResponse.json.supported_methods.some((entry) => entry.method === 'jwt-assertion-v1'), true, 'external proof import jwt method missing');
1106
1128
  assert.strictEqual(importAdapterResponse.json.verification_boundary.external_verifier_retains.includes('issuer_cryptographic_truth'), true, 'external proof import boundary missing');
1129
+ assert.strictEqual(importAdapterResponse.json.deterministic_rejection_codes.includes('external_issuer_truth_claim_requires_external_verifier'), true, 'external proof import truth rejection code missing');
1107
1130
  const importAdapterSummaryResponse = await getJson(baseUrl, '/v1/proof-center/import-adapter/summary');
1108
1131
  assert.strictEqual(importAdapterSummaryResponse.status, 200, 'external proof import adapter summary route failed');
1109
1132
  assert.strictEqual(importAdapterSummaryResponse.json.category, 'xoonya-external-proof-import-adapter-summary', 'external proof import summary category missing');
1110
1133
  assert.strictEqual(importAdapterSummaryResponse.json.supported_methods.includes('did-vc-v1'), true, 'external proof import did-vc summary missing');
1134
+ assert.strictEqual(importAdapterSummaryResponse.json.deterministic_rejection_code_count >= 11, true, 'external proof import rejection code summary missing');
1111
1135
  const proofLoopsResponse = await getJson(baseUrl, '/v1/proof-center/default-loops');
1112
1136
  assert.strictEqual(proofLoopsResponse.status, 200, 'proof loop catalog route failed');
1113
1137
  assert.strictEqual(proofLoopsResponse.json.loop_count >= 2, true, 'proof loop catalog count missing');
@@ -121,6 +121,29 @@ function main() {
121
121
  assert.strictEqual(releaseSummary.product, "xoonya", "xoonya-release cli product mismatch");
122
122
  assert.strictEqual(releaseSummary.release_cli, "xoonya-release --summary", "xoonya-release cli release command mismatch");
123
123
  assert.strictEqual(releaseSummary.install_command, "npm install xoonya", "xoonya-release cli install command mismatch");
124
+ const nativeConformanceMarkOutput = execFileSync(process.execPath, [
125
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
126
+ "--native-conformance-mark",
127
+ "--summary"
128
+ ], {
129
+ cwd: path.resolve(__dirname, ".."),
130
+ encoding: "utf8"
131
+ });
132
+ const nativeConformanceMarkSummary = JSON.parse(nativeConformanceMarkOutput);
133
+ assert.strictEqual(nativeConformanceMarkSummary.category, "xoonya-native-conformance-mark-summary", "xoonya native conformance mark cli category mismatch");
134
+ assert.strictEqual(nativeConformanceMarkSummary.mark, "XNYA-compatible", "xoonya native conformance mark cli mark mismatch");
135
+ const nativeReferenceImplementationOutput = execFileSync(process.execPath, [
136
+ path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
137
+ "--native-reference-implementations",
138
+ "--summary"
139
+ ], {
140
+ cwd: path.resolve(__dirname, ".."),
141
+ encoding: "utf8"
142
+ });
143
+ const nativeReferenceImplementationSummary = JSON.parse(nativeReferenceImplementationOutput);
144
+ assert.strictEqual(nativeReferenceImplementationSummary.category, "xoonya-native-reference-implementation-summary", "xoonya native reference implementation cli category mismatch");
145
+ assert.strictEqual(nativeReferenceImplementationSummary.implemented_reference_count, 1, "xoonya native reference implementation cli count mismatch");
146
+ assert.strictEqual(nativeReferenceImplementationSummary.verified_candidate_scaffold_count >= 1, true, "xoonya native reference implementation cli scaffold mismatch");
124
147
  const comparisonOutput = execFileSync(process.execPath, [
125
148
  path.resolve(__dirname, "..", "bin", "xoonya-release.js"),
126
149
  "--comparison",
package/server.js CHANGED
@@ -2386,6 +2386,26 @@ async function routeRequest(req, res) {
2386
2386
  return;
2387
2387
  }
2388
2388
 
2389
+ if (req.method === 'GET' && url.pathname === '/v1/proof-center/native-conformance-mark') {
2390
+ sendJson(res, 200, proofSdk.buildXoonyaNativeConformanceMarkPack());
2391
+ return;
2392
+ }
2393
+
2394
+ if (req.method === 'GET' && url.pathname === '/v1/proof-center/native-conformance-mark/summary') {
2395
+ sendJson(res, 200, proofSdk.summarizeXoonyaNativeConformanceMarkPack());
2396
+ return;
2397
+ }
2398
+
2399
+ if (req.method === 'GET' && url.pathname === '/v1/proof-center/native-reference-implementations') {
2400
+ sendJson(res, 200, proofSdk.buildXoonyaNativeReferenceImplementationPack());
2401
+ return;
2402
+ }
2403
+
2404
+ if (req.method === 'GET' && url.pathname === '/v1/proof-center/native-reference-implementations/summary') {
2405
+ sendJson(res, 200, proofSdk.summarizeXoonyaNativeReferenceImplementationPack());
2406
+ return;
2407
+ }
2408
+
2389
2409
  if (req.method === 'GET' && url.pathname === '/v1/proof-center/native-payload-profile') {
2390
2410
  sendJson(res, 200, proofSdk.buildXoonyaNativePayloadProfilePack());
2391
2411
  return;
@@ -159,6 +159,33 @@
159
159
  },
160
160
  "expected_reason": "verification_method_unsupported"
161
161
  },
162
+ {
163
+ "id": "reject-native-hybrid-design-gated",
164
+ "kind": "verify_bundle_reason",
165
+ "bundle": {
166
+ "version": "proof-bundle/v1",
167
+ "ceb": {
168
+ "version": "canonical-event-bundle/v1",
169
+ "domain_id": "vectors.native",
170
+ "sequence": "7",
171
+ "actor_id": "agent-native",
172
+ "adapter_source": "vector-suite",
173
+ "event_type": "native.event",
174
+ "event_hash": "3434343434343434343434343434343434343434343434343434343434343434"
175
+ },
176
+ "receipt": {
177
+ "version": "receipt/v1",
178
+ "receipt_id": "7c4930d56110f0b9623f79025c7be4789e0c0a6155b2645b243ce4c126f53e96",
179
+ "agent_identity": "agent-native-signing",
180
+ "domain_id": "vectors.native",
181
+ "sequence": "7",
182
+ "event_commitment": "7361278f20b4d6c6f305ebfb490989b0faa3928823954d1852a7d7e78d92d8cd",
183
+ "algorithm": "xoonya-native-hybrid-v1",
184
+ "signature": "xoonya-native-hybrid-v1:design-gated-placeholder"
185
+ }
186
+ },
187
+ "expected_reason": "native_hybrid_design_gated"
188
+ },
162
189
  {
163
190
  "id": "reject-replayed-receipt-sequence",
164
191
  "kind": "verify_bundle_reason",