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 CHANGED
@@ -1,3 +1,14 @@
1
+ # xoonya 2.7.0 Release Notes
2
+
3
+ `xoonya` 2.7.0 is the expansion-closeout release line for package-hardening, clean-consumer release smoke testing, and disciplined native-standard claim boundaries.
4
+
5
+ Highlights:
6
+
7
+ - ships `scripts/` in the npm artifact so `xoonya conformance` and `xoonya first-run --verify-native` work from a clean npm install
8
+ - adds release-candidate guards that fail if conformance verifier scripts are missing from `npm pack`
9
+ - participates in the Naxytra release-smoke harness that installs packed tarballs into a clean consumer project before synchronized release
10
+ - keeps the 2.6.0 XNYA native, payload, line-rate frame, import-adapter, and standardization capabilities intact while closing the packaging reliability gap
11
+
1
12
  # xoonya 2.6.0 Release Notes
2
13
 
3
14
  `xoonya` 2.6.0 is the expansion release line for Xoonya Native standard hardening, external proof import, native signed and anchored verification, and strict XNYA payload/frame profile work.
@@ -10,6 +10,19 @@ function buildReleaseHistory() {
10
10
  current_version: packageJson.version,
11
11
  release_track: "public_release",
12
12
  history: [
13
+ {
14
+ version: "2.7.0",
15
+ channel: "public_release",
16
+ maturity_posture: "expansion_closeout",
17
+ headline: "expansion-closeout release with packaged conformance verifiers, clean-consumer release smoke testing, and disciplined native-standard claim boundaries",
18
+ milestone_refs: [
19
+ "npm_packaged_first_run_native_verification",
20
+ "npm_packaged_conformance_cli",
21
+ "release_candidate_packaging_guard",
22
+ "clean_consumer_release_smoke",
23
+ "expansion_closeout_claim_boundaries"
24
+ ]
25
+ },
13
26
  {
14
27
  version: "2.6.0",
15
28
  channel: "public_release",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xoonya",
3
- "version": "2.6.0",
3
+ "version": "2.7.0",
4
4
  "description": "Deterministic proof and review engine for receipts, handoffs, governance, and verification.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -23,6 +23,7 @@
23
23
  "proof_sdk.js",
24
24
  "server.js",
25
25
  "bin/",
26
+ "scripts/",
26
27
  "lib/",
27
28
  "integrations/",
28
29
  "vectors/",
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+ const {
6
+ exportIntegrationRegistrySnapshot,
7
+ summarizeIntegrationPromotionWorkflow,
8
+ summarizeIntegrationPromotionWorkflowList,
9
+ summarizeIntegrationPromotionReadiness,
10
+ validateIntegrationRegistration
11
+ } = require("../integrations/registry");
12
+
13
+ function readJson(filePath) {
14
+ return JSON.parse(fs.readFileSync(filePath, "utf8"));
15
+ }
16
+
17
+ function writeJson(payload) {
18
+ process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
19
+ }
20
+
21
+ function resolveExampleRegistration(name) {
22
+ const filename = name === "verifier"
23
+ ? "example-third-party-verifier-registration.record.json"
24
+ : "example-third-party-verifier-registration.record.json";
25
+ return path.resolve(__dirname, "..", "integrations", "examples", filename);
26
+ }
27
+
28
+ function resolveExampleDescriptor(name) {
29
+ const descriptorByExample = {
30
+ verifier: {
31
+ integration_id: "partner.verifier.lattice_notary",
32
+ integration_class: "verification_helper_adapter",
33
+ proof_scope: "profile_verification"
34
+ }
35
+ };
36
+ return descriptorByExample[name] || descriptorByExample.verifier;
37
+ }
38
+
39
+ function parseArgs(argv) {
40
+ const [command, ...rest] = argv;
41
+ const options = {};
42
+ for (let index = 0; index < rest.length; index += 1) {
43
+ const token = rest[index];
44
+ if (!token.startsWith("--")) continue;
45
+ const key = token.slice(2);
46
+ const next = rest[index + 1];
47
+ if (!next || next.startsWith("--")) {
48
+ options[key] = true;
49
+ continue;
50
+ }
51
+ options[key] = next;
52
+ index += 1;
53
+ }
54
+ return {
55
+ command: command || "",
56
+ options
57
+ };
58
+ }
59
+
60
+ function runValidateRegistration(options) {
61
+ const exampleName = options.example === "verifier" ? "verifier" : "verifier";
62
+ const filePath = options.file
63
+ ? path.resolve(process.cwd(), options.file)
64
+ : resolveExampleRegistration(exampleName);
65
+ const registrationRecord = readJson(filePath);
66
+ const descriptor = resolveExampleDescriptor(exampleName);
67
+ const validation = validateIntegrationRegistration(descriptor, registrationRecord);
68
+ writeJson({
69
+ ok: validation.ok,
70
+ file: filePath,
71
+ descriptor,
72
+ errors: validation.errors
73
+ });
74
+ process.exitCode = validation.ok ? 0 : 1;
75
+ }
76
+
77
+ function runExportSnapshot(options) {
78
+ const filters = {
79
+ source: options.source || undefined,
80
+ certification_state: options.certification_state || undefined,
81
+ integration_maturity: options.integration_maturity || undefined,
82
+ registration_state: options.registration_state || undefined,
83
+ proof_scope: options.proof_scope || undefined,
84
+ bundled: options.bundled || undefined
85
+ };
86
+ const snapshot = exportIntegrationRegistrySnapshot(filters);
87
+ writeJson({
88
+ generated_by: "registry_cli",
89
+ filters: snapshot.filters,
90
+ snapshot
91
+ });
92
+ }
93
+
94
+ function runPromotionReadiness(options) {
95
+ const integrationId = options.integration || "partner.verifier.lattice_notary";
96
+ writeJson({
97
+ integration_id: integrationId,
98
+ review: summarizeIntegrationPromotionReadiness(integrationId)
99
+ });
100
+ }
101
+
102
+ function runPromotionWorkflow(options) {
103
+ const integrationId = options.integration || "partner.verifier.lattice_notary";
104
+ writeJson({
105
+ integration_id: integrationId,
106
+ review: summarizeIntegrationPromotionWorkflow(integrationId)
107
+ });
108
+ }
109
+
110
+ function runPromotionWorkflowSummary(options) {
111
+ writeJson({
112
+ review: summarizeIntegrationPromotionWorkflowList({
113
+ source: options.source || undefined,
114
+ registration_state: options.registration_state || undefined,
115
+ proof_scope: options.proof_scope || undefined,
116
+ bundled: options.bundled || undefined
117
+ })
118
+ });
119
+ }
120
+
121
+ function main() {
122
+ const { command, options } = parseArgs(process.argv.slice(2));
123
+ if (command === "validate-registration") {
124
+ runValidateRegistration(options);
125
+ return;
126
+ }
127
+ if (command === "export-snapshot") {
128
+ runExportSnapshot(options);
129
+ return;
130
+ }
131
+ if (command === "promotion-readiness") {
132
+ runPromotionReadiness(options);
133
+ return;
134
+ }
135
+ if (command === "promotion-workflow") {
136
+ runPromotionWorkflow(options);
137
+ return;
138
+ }
139
+ if (command === "promotion-workflow-summary") {
140
+ runPromotionWorkflowSummary(options);
141
+ return;
142
+ }
143
+
144
+ writeJson({
145
+ ok: false,
146
+ usage: [
147
+ "node scripts/registry_cli.js validate-registration [--file <path>] [--example verifier]",
148
+ "node scripts/registry_cli.js export-snapshot [--source <value>] [--registration_state <value>] [--proof_scope <value>]",
149
+ "node scripts/registry_cli.js promotion-readiness [--integration <integration_id>]",
150
+ "node scripts/registry_cli.js promotion-workflow [--integration <integration_id>]",
151
+ "node scripts/registry_cli.js promotion-workflow-summary [--source <value>] [--registration_state <value>] [--proof_scope <value>] [--bundled true|false]"
152
+ ]
153
+ });
154
+ process.exitCode = 1;
155
+ }
156
+
157
+ main();