xoonya 2.6.0 → 2.7.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/RELEASE_NOTES.md +11 -0
- package/lib/release_history.js +13 -0
- package/package.json +2 -1
- package/scripts/registry_cli.js +157 -0
- package/scripts/verify_all.js +558 -0
- package/scripts/verify_examples.js +19 -0
- package/scripts/verify_integrations.js +170 -0
- package/scripts/verify_release_candidate.js +87 -0
- package/scripts/verify_service.js +2825 -0
- package/scripts/verify_tooling.js +1228 -0
- package/scripts/verify_vectors.js +164 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const stagedPartnerVerifierRegistrationRecord = require("../integrations/examples/example-third-party-verifier-registration.record.json");
|
|
5
|
+
const root = require("../index.js");
|
|
6
|
+
|
|
7
|
+
async function main() {
|
|
8
|
+
const integrations = root.listIntegrations();
|
|
9
|
+
assert.ok(Array.isArray(integrations), "proof integrations list missing");
|
|
10
|
+
assert.ok(integrations.length >= 4, "proof integration breadth missing");
|
|
11
|
+
assert.ok(integrations.some((integration) => integration.integration_id === "builtin.identity.legacy_material"), "legacy identity integration missing");
|
|
12
|
+
assert.ok(integrations.some((integration) => integration.integration_id === "builtin.verifier.registry_profile"), "registry verifier integration missing");
|
|
13
|
+
assert.ok(integrations.some((integration) => integration.integration_id === stagedPartnerVerifierRegistrationRecord.integration_id), "staged proof verifier integration missing");
|
|
14
|
+
assert.ok(integrations.some((integration) => integration.certification_state === "certified"), "proof integration certification metadata missing");
|
|
15
|
+
|
|
16
|
+
const summary = root.summarizeIntegrations();
|
|
17
|
+
assert.strictEqual(summary.ok, true, "proof integration summary ok mismatch");
|
|
18
|
+
assert.ok(summary.integration_count >= integrations.length, "proof integration count mismatch");
|
|
19
|
+
assert.strictEqual(summary.certified_integration_count >= 5, true, "proof integration certified count mismatch");
|
|
20
|
+
assert.strictEqual(summary.production_default_count >= 5, true, "proof integration production-default count mismatch");
|
|
21
|
+
assert.strictEqual(summary.staged_registration_count >= 1, true, "proof integration staged registration count mismatch");
|
|
22
|
+
|
|
23
|
+
const detail = root.getIntegration("builtin.verifier.economic_profile");
|
|
24
|
+
assert.ok(detail, "proof integration detail missing");
|
|
25
|
+
assert.strictEqual(detail.integration_class, "verification_helper_adapter", "proof integration class mismatch");
|
|
26
|
+
assert.strictEqual(detail.integration_maturity, "production_default", "proof integration maturity mismatch");
|
|
27
|
+
|
|
28
|
+
const bundledFiltered = root.listIntegrations({
|
|
29
|
+
source: "builtin",
|
|
30
|
+
certification_state: "certified",
|
|
31
|
+
integration_maturity: "production_default",
|
|
32
|
+
bundled: "true"
|
|
33
|
+
});
|
|
34
|
+
assert.ok(bundledFiltered.length >= 5, "proof builtin integration filtering mismatch");
|
|
35
|
+
|
|
36
|
+
const stagedFiltered = root.listIntegrations({
|
|
37
|
+
source: "third_party_example",
|
|
38
|
+
registration_state: "staging_registered",
|
|
39
|
+
proof_scope: "profile_verification",
|
|
40
|
+
bundled: "false"
|
|
41
|
+
});
|
|
42
|
+
assert.strictEqual(stagedFiltered.length, 1, "proof staged integration filtering mismatch");
|
|
43
|
+
assert.strictEqual(stagedFiltered[0].registration.requires_explicit_selection, true, "proof staged integration explicit-selection mismatch");
|
|
44
|
+
|
|
45
|
+
const validation = root.validateIntegrationRegistration({
|
|
46
|
+
integration_id: stagedPartnerVerifierRegistrationRecord.integration_id,
|
|
47
|
+
integration_class: stagedPartnerVerifierRegistrationRecord.integration_class,
|
|
48
|
+
proof_scope: stagedPartnerVerifierRegistrationRecord.proof_scope
|
|
49
|
+
}, stagedPartnerVerifierRegistrationRecord);
|
|
50
|
+
assert.strictEqual(validation.ok, true, "proof integration registration validation failed");
|
|
51
|
+
|
|
52
|
+
const imported = root.importRegisteredIntegration({
|
|
53
|
+
integration_id: "partner.verifier.memory_canary",
|
|
54
|
+
integration_class: "verification_helper_adapter",
|
|
55
|
+
display_name: "Memory Canary Verifier",
|
|
56
|
+
description: "Imported proof-side verifier used to validate normalization.",
|
|
57
|
+
proof_scope: "profile_verification",
|
|
58
|
+
capabilities: ["memory_canary.verify"],
|
|
59
|
+
public_surfaces: ["sdk"],
|
|
60
|
+
required_inputs: ["profile"],
|
|
61
|
+
emitted_artifacts: [],
|
|
62
|
+
verification_targets: ["memory_canary_profile"]
|
|
63
|
+
}, {
|
|
64
|
+
integration_id: "partner.verifier.memory_canary",
|
|
65
|
+
integration_class: "verification_helper_adapter",
|
|
66
|
+
proof_scope: "profile_verification",
|
|
67
|
+
registration_state: "local_only",
|
|
68
|
+
integration_maturity: "reference_example",
|
|
69
|
+
certification_state: "reference_example",
|
|
70
|
+
bundled: false,
|
|
71
|
+
default_selection_enabled: false,
|
|
72
|
+
requires_explicit_selection: true,
|
|
73
|
+
registered_at: "2026-03-20T00:00:00Z"
|
|
74
|
+
}, {
|
|
75
|
+
source: "verification_import_test",
|
|
76
|
+
certification_scope: ["contract_shape"],
|
|
77
|
+
operational_readiness: "reference"
|
|
78
|
+
});
|
|
79
|
+
assert.strictEqual(imported.integration_id, "partner.verifier.memory_canary", "proof imported integration id mismatch");
|
|
80
|
+
assert.strictEqual(imported.registration.registration_state, "local_only", "proof imported integration registration state mismatch");
|
|
81
|
+
|
|
82
|
+
const snapshot = root.exportIntegrationRegistrySnapshot({
|
|
83
|
+
registration_state: "staging_registered"
|
|
84
|
+
});
|
|
85
|
+
assert.strictEqual(snapshot.integration_count >= 1, true, "proof integration snapshot count mismatch");
|
|
86
|
+
assert.strictEqual(root.validateIntegrationRegistrySnapshot(snapshot).ok, true, "proof integration snapshot validation mismatch");
|
|
87
|
+
|
|
88
|
+
const builtinPromotion = root.summarizeIntegrationPromotionReadiness("builtin.verifier.registry_profile");
|
|
89
|
+
assert.strictEqual(builtinPromotion.ok, true, "proof builtin promotion readiness mismatch");
|
|
90
|
+
assert.strictEqual(builtinPromotion.promotion_readiness.default_eligible, true, "proof builtin default eligibility mismatch");
|
|
91
|
+
assert.strictEqual(builtinPromotion.promotion_readiness.production_default_ready, true, "proof builtin production-default readiness mismatch");
|
|
92
|
+
|
|
93
|
+
const stagedPromotion = root.summarizeIntegrationPromotionReadiness("partner.verifier.lattice_notary");
|
|
94
|
+
assert.strictEqual(stagedPromotion.ok, true, "proof staged promotion readiness mismatch");
|
|
95
|
+
assert.strictEqual(stagedPromotion.promotion_readiness.review_ready, true, "proof staged review-ready mismatch");
|
|
96
|
+
assert.strictEqual(stagedPromotion.promotion_readiness.default_eligible, false, "proof staged default eligibility mismatch");
|
|
97
|
+
assert.strictEqual(stagedPromotion.promotion_readiness.production_default_ready, false, "proof staged production-default readiness mismatch");
|
|
98
|
+
assert.ok(stagedPromotion.promotion_readiness.blockers.includes("not_certified"), "proof staged certification blocker missing");
|
|
99
|
+
|
|
100
|
+
const builtinPromotionWorkflow = root.summarizeIntegrationPromotionWorkflow("builtin.verifier.registry_profile");
|
|
101
|
+
assert.strictEqual(builtinPromotionWorkflow.ok, true, "proof builtin promotion workflow mismatch");
|
|
102
|
+
assert.strictEqual(
|
|
103
|
+
builtinPromotionWorkflow.next_transition.action,
|
|
104
|
+
"maintain_production_default",
|
|
105
|
+
"proof builtin promotion workflow next-transition mismatch"
|
|
106
|
+
);
|
|
107
|
+
assert.strictEqual(
|
|
108
|
+
builtinPromotionWorkflow.promotion_recommendation.recommendation,
|
|
109
|
+
"eligible_for_production_default",
|
|
110
|
+
"proof builtin promotion workflow recommendation mismatch"
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
const stagedPromotionWorkflow = root.summarizeIntegrationPromotionWorkflow("partner.verifier.lattice_notary");
|
|
114
|
+
assert.strictEqual(stagedPromotionWorkflow.ok, true, "proof staged promotion workflow mismatch");
|
|
115
|
+
assert.strictEqual(
|
|
116
|
+
stagedPromotionWorkflow.next_transition.action,
|
|
117
|
+
"complete_certification",
|
|
118
|
+
"proof staged promotion workflow next-transition mismatch"
|
|
119
|
+
);
|
|
120
|
+
assert.strictEqual(
|
|
121
|
+
stagedPromotionWorkflow.next_transition.later_actions.includes("promote_maturity"),
|
|
122
|
+
true,
|
|
123
|
+
"proof staged promotion workflow later-actions mismatch"
|
|
124
|
+
);
|
|
125
|
+
assert.strictEqual(
|
|
126
|
+
stagedPromotionWorkflow.promotion_recommendation.recommendation,
|
|
127
|
+
"keep_staged_until_requirements_clear",
|
|
128
|
+
"proof staged promotion workflow recommendation mismatch"
|
|
129
|
+
);
|
|
130
|
+
assert.strictEqual(
|
|
131
|
+
stagedPromotionWorkflow.certification_gaps.missing_requirements.includes("certification_state"),
|
|
132
|
+
true,
|
|
133
|
+
"proof staged promotion workflow certification gap mismatch"
|
|
134
|
+
);
|
|
135
|
+
assert.strictEqual(
|
|
136
|
+
stagedPromotionWorkflow.blocker_categories.some((entry) => entry.category === "certification"),
|
|
137
|
+
true,
|
|
138
|
+
"proof staged promotion workflow blocker-category mismatch"
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
const promotionWorkflowList = root.summarizeIntegrationPromotionWorkflowList({
|
|
142
|
+
source: "third_party_example",
|
|
143
|
+
registration_state: "staging_registered",
|
|
144
|
+
bundled: "false"
|
|
145
|
+
});
|
|
146
|
+
assert.strictEqual(promotionWorkflowList.ok, true, "proof promotion workflow list mismatch");
|
|
147
|
+
assert.strictEqual(promotionWorkflowList.integration_count >= 1, true, "proof promotion workflow list breadth mismatch");
|
|
148
|
+
assert.strictEqual(
|
|
149
|
+
promotionWorkflowList.next_actions.some((entry) => entry.action === "complete_certification"),
|
|
150
|
+
true,
|
|
151
|
+
"proof promotion workflow list next-action mismatch"
|
|
152
|
+
);
|
|
153
|
+
assert.strictEqual(
|
|
154
|
+
promotionWorkflowList.recommendations.some((entry) => entry.recommendation === "keep_staged_until_requirements_clear"),
|
|
155
|
+
true,
|
|
156
|
+
"proof promotion workflow list recommendation mismatch"
|
|
157
|
+
);
|
|
158
|
+
assert.strictEqual(
|
|
159
|
+
promotionWorkflowList.blocker_categories.some((entry) => entry.category === "certification"),
|
|
160
|
+
true,
|
|
161
|
+
"proof promotion workflow list blocker-category mismatch"
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
console.log("xoonya verify:integrations passed");
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
main().catch((error) => {
|
|
168
|
+
console.error(error);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
});
|
|
@@ -0,0 +1,87 @@
|
|
|
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.deepStrictEqual(
|
|
44
|
+
conformanceSummary.verification_methods,
|
|
45
|
+
[
|
|
46
|
+
"detached-assertion-v1",
|
|
47
|
+
"did-vc-v1",
|
|
48
|
+
"jwt-assertion-v1",
|
|
49
|
+
"legacy-opreturn-v1",
|
|
50
|
+
"partner-proof-envelope-v1",
|
|
51
|
+
"sd-jwt-vc-v1",
|
|
52
|
+
"signed-envelope-v1",
|
|
53
|
+
"xoonya-native-anchored-v1",
|
|
54
|
+
"xoonya-native-sha256-v1",
|
|
55
|
+
"xoonya-native-signed-v1"
|
|
56
|
+
],
|
|
57
|
+
"conformance methods mismatch"
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const dryRun = parsePackDryRun();
|
|
61
|
+
assert.strictEqual(dryRun.name, packageJson.name, "npm pack dry-run name mismatch");
|
|
62
|
+
assert.strictEqual(dryRun.version, packageJson.version, "npm pack dry-run version mismatch");
|
|
63
|
+
assert.strictEqual(Array.isArray(dryRun.files), true, "npm pack dry-run file list missing");
|
|
64
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya.js"), true, "npm pack dry-run missing xoonya cli");
|
|
65
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-first-run.js"), true, "npm pack dry-run missing xoonya-first-run");
|
|
66
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-review.js"), true, "npm pack dry-run missing xoonya-review");
|
|
67
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "bin/xoonya-release.js"), true, "npm pack dry-run missing xoonya-release");
|
|
68
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_vectors.js"), true, "npm pack dry-run missing conformance verifier script");
|
|
69
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "scripts/verify_all.js"), true, "npm pack dry-run missing package verifier script");
|
|
70
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/conformance-vectors.json"), true, "npm pack dry-run missing conformance vectors");
|
|
71
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/adversarial-vectors.json"), true, "npm pack dry-run missing adversarial vectors");
|
|
72
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "vectors/native-atom-vectors.json"), true, "npm pack dry-run missing native atom vectors");
|
|
73
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "README.md"), true, "npm pack dry-run missing README");
|
|
74
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "XOONYA_NATIVE_ATOM_SPEC.md"), true, "npm pack dry-run missing native atom spec");
|
|
75
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "XOONYA_NATIVE_STANDARD_GOVERNANCE.md"), true, "npm pack dry-run missing native governance doc");
|
|
76
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "RELEASE_NOTES.md"), true, "npm pack dry-run missing release notes");
|
|
77
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "START_HERE.md"), true, "npm pack dry-run missing start-here");
|
|
78
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "SERVICE_CONTRACT.md"), true, "npm pack dry-run missing service contract");
|
|
79
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "OPERATOR_START_HERE.md"), false, "npm pack dry-run should not ship operator start-here");
|
|
80
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "OPERATIONS_RUNBOOK.md"), false, "npm pack dry-run should not ship operations runbook");
|
|
81
|
+
assert.strictEqual(dryRun.files.some((entry) => entry.path === "PUBLISH_PLAN.md"), false, "npm pack dry-run should not ship publish plan");
|
|
82
|
+
assert.strictEqual(dryRun.files.length >= 10, true, "npm pack dry-run file count too small");
|
|
83
|
+
|
|
84
|
+
console.log("xoonya verify:release-candidate passed");
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
main();
|