xoonya 2.4.0 → 2.6.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.
Files changed (43) hide show
  1. package/README.md +135 -7
  2. package/RELEASE_NOTES.md +27 -18
  3. package/SERVICE_CONTRACT.md +86 -0
  4. package/START_HERE.md +39 -0
  5. package/XOONYA_NATIVE_ATOM_SPEC.md +184 -0
  6. package/XOONYA_NATIVE_PROOF_FORMAT.md +502 -0
  7. package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +116 -0
  8. package/bin/xoonya-first-run.js +184 -0
  9. package/bin/xoonya.js +81 -0
  10. package/lib/artifact_distribution_lane_contract.js +54 -0
  11. package/lib/asyncapi_contract.js +135 -0
  12. package/lib/auth_interop_contract.js +69 -0
  13. package/lib/cloudevents_contract.js +79 -0
  14. package/lib/erc8004_proof_lane_contract.js +64 -0
  15. package/lib/event_system_lane_contract.js +76 -0
  16. package/lib/external_proof_import_lane_contract.js +87 -0
  17. package/lib/feature_control_lane_contract.js +54 -0
  18. package/lib/framework_lane_contract.js +76 -0
  19. package/lib/identity_interop_contract.js +83 -0
  20. package/lib/integration_matrix_contract.js +81 -0
  21. package/lib/major_rails_proof_lane_contract.js +87 -0
  22. package/lib/openapi_contract.js +227 -0
  23. package/lib/proof_bridge_lane_contract.js +82 -0
  24. package/lib/provenance_lane_contract.js +54 -0
  25. package/lib/provider_lane_contract.js +67 -0
  26. package/lib/release_history.js +32 -0
  27. package/lib/result_package_trust_lane_contract.js +74 -0
  28. package/lib/shared_signals_lane_contract.js +54 -0
  29. package/lib/telemetry_lane_contract.js +54 -0
  30. package/lib/treasury_proof_lane_contract.js +83 -0
  31. package/package.json +13 -17
  32. package/proof_sdk.js +2391 -44
  33. package/server.js +406 -2
  34. package/vectors/adversarial-vectors.json +373 -2
  35. package/vectors/conformance-vectors.json +342 -1
  36. package/vectors/native-atom-vectors.json +101 -0
  37. package/vectors/native-payload-profile-vectors.json +50 -0
  38. package/OPERATIONS_RUNBOOK.md +0 -50
  39. package/OPERATOR_START_HERE.md +0 -67
  40. package/PROGRAM_COMPLETE_RELEASE.md +0 -52
  41. package/PROGRAM_STATUS.md +0 -57
  42. package/PUBLISH_PLAN.md +0 -14
  43. package/RELEASE_CHECKLIST.md +0 -16
@@ -0,0 +1,184 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ const path = require("path");
5
+ const { spawnSync } = require("child_process");
6
+
7
+ const DEFAULT_KIT_URL = "https://www.naxytra.com/v1/first-run-kit";
8
+
9
+ function parseArgs(argv) {
10
+ const args = {};
11
+ for (let index = 0; index < argv.length; index += 1) {
12
+ const token = argv[index];
13
+ if (!token.startsWith("--")) continue;
14
+ const key = token.slice(2);
15
+ const next = argv[index + 1];
16
+ if (!next || next.startsWith("--")) {
17
+ args[key] = true;
18
+ continue;
19
+ }
20
+ args[key] = next;
21
+ index += 1;
22
+ }
23
+ return args;
24
+ }
25
+
26
+ function buildLocalGuide() {
27
+ return {
28
+ ok: true,
29
+ product: "xoonya",
30
+ category: "xoonya-first-run-proof-guide",
31
+ guide_version: "xoonya-first-run-proof-guide-v1",
32
+ public_command_kit_url: DEFAULT_KIT_URL,
33
+ role: "proof_followthrough_after_xytara_runtime_execution",
34
+ safe_local_verification_command: "xoonya first-run --verify-native --pretty",
35
+ proof_modes: [
36
+ {
37
+ method: "xoonya-native-sha256-v1",
38
+ verification: "replayable_digest"
39
+ },
40
+ {
41
+ method: "xoonya-native-signed-v1",
42
+ verification: "ed25519_signature"
43
+ },
44
+ {
45
+ method: "xoonya-native-anchored-v1",
46
+ verification: "anchor_binding"
47
+ },
48
+ {
49
+ method: "external_interop_methods",
50
+ verification: "structure_checked_external_verifier_boundary"
51
+ }
52
+ ],
53
+ public_checks: [
54
+ "https://xoonya.onrender.com/v1/proof-center/native-standard/summary",
55
+ "https://xoonya.onrender.com/v1/proof-center/native-atom-conformance/summary",
56
+ "https://xoonya.onrender.com/v1/proof-center/native-anchor-profile/summary"
57
+ ],
58
+ boundaries: [
59
+ "xoonya_verifies_proof_bundles_and_native_method_binding",
60
+ "xoonya_anchor_binding_does_not_claim_external_provider_or_chain_truth",
61
+ "xytara_owns_runtime_payment_and_execution_state"
62
+ ]
63
+ };
64
+ }
65
+
66
+ async function fetchPublicKit(url) {
67
+ const response = await fetch(url, { headers: { accept: "application/json" } });
68
+ if (!response.ok) {
69
+ throw new Error(`first_run_kit_fetch_failed_${response.status}`);
70
+ }
71
+ return response.json();
72
+ }
73
+
74
+ function writeJson(payload, pretty) {
75
+ process.stdout.write(`${JSON.stringify(payload, null, pretty ? 2 : 0)}\n`);
76
+ }
77
+
78
+ function printUsage() {
79
+ process.stdout.write([
80
+ "Usage: xoonya first-run [options]",
81
+ "",
82
+ "Options:",
83
+ " --json Print the guided proof followthrough object",
84
+ " --offline Do not fetch the public command kit",
85
+ " --verify-native Run local native/conformance verification",
86
+ " --pretty Pretty-print JSON output",
87
+ " --help Show this help message"
88
+ ].join("\n"));
89
+ }
90
+
91
+ function runNativeVerification(args) {
92
+ const scriptPath = path.join(__dirname, "..", "scripts", "verify_vectors.js");
93
+ const result = spawnSync(process.execPath, [
94
+ scriptPath,
95
+ "--json"
96
+ ], {
97
+ encoding: "utf8",
98
+ stdio: ["ignore", "pipe", "inherit"]
99
+ });
100
+ if (result.status !== 0) {
101
+ process.exitCode = typeof result.status === "number" ? result.status : 1;
102
+ return;
103
+ }
104
+ const summary = JSON.parse(result.stdout);
105
+ writeJson({
106
+ ok: true,
107
+ product: "xoonya",
108
+ category: "xoonya-first-run-native-verification",
109
+ verification_version: "xoonya-first-run-native-verification-v1",
110
+ proof_bundle_conformance_passed: summary.ok === true,
111
+ conformance_count: summary.conformance_count,
112
+ adversarial_count: summary.adversarial_count,
113
+ native_atom_vector_count: summary.native_atom_vector_count,
114
+ native_atom_adversarial_count: summary.native_atom_adversarial_count,
115
+ verification_methods: summary.verification_methods,
116
+ native_atom_error_codes: summary.native_atom_error_codes,
117
+ required_native_methods_present: [
118
+ "xoonya-native-sha256-v1",
119
+ "xoonya-native-signed-v1",
120
+ "xoonya-native-anchored-v1"
121
+ ].every((method) => summary.verification_methods.includes(method)),
122
+ boundary: "local_conformance_verifies_xoonya_binding_and_vectors_not_external_chain_truth"
123
+ }, args.pretty);
124
+ }
125
+
126
+ async function main() {
127
+ const args = parseArgs(process.argv.slice(2));
128
+ if (args.help) {
129
+ printUsage();
130
+ return;
131
+ }
132
+ if (args["verify-native"]) {
133
+ runNativeVerification(args);
134
+ return;
135
+ }
136
+
137
+ const localGuide = buildLocalGuide();
138
+ if (args.json) {
139
+ if (args.offline) {
140
+ writeJson(localGuide, args.pretty);
141
+ return;
142
+ }
143
+ try {
144
+ const publicKit = await fetchPublicKit(DEFAULT_KIT_URL);
145
+ writeJson({
146
+ ...localGuide,
147
+ public_command_kit: publicKit
148
+ }, args.pretty);
149
+ } catch (error) {
150
+ writeJson({
151
+ ...localGuide,
152
+ public_command_kit_fetch_error: error.message
153
+ }, args.pretty);
154
+ }
155
+ return;
156
+ }
157
+
158
+ process.stdout.write([
159
+ "xoonya first-run",
160
+ "",
161
+ "Proof followthrough after xytara execution:",
162
+ " xoonya first-run --verify-native --pretty",
163
+ "",
164
+ "Inspect the public command kit:",
165
+ ` ${DEFAULT_KIT_URL}`,
166
+ "",
167
+ "Native proof modes checked locally:",
168
+ " xoonya-native-sha256-v1",
169
+ " xoonya-native-signed-v1",
170
+ " xoonya-native-anchored-v1",
171
+ "",
172
+ "Public proof surfaces:",
173
+ " https://xoonya.onrender.com/v1/proof-center/native-standard/summary",
174
+ " https://xoonya.onrender.com/v1/proof-center/native-anchor-profile/summary",
175
+ "",
176
+ "Boundary:",
177
+ " xoonya verifies proof and anchor binding; external chain/provider truth stays external."
178
+ ].join("\n"));
179
+ }
180
+
181
+ main().catch((error) => {
182
+ process.stderr.write(`${error.message}\n`);
183
+ process.exitCode = 1;
184
+ });
package/bin/xoonya.js ADDED
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ const path = require("path");
5
+ const { spawnSync } = require("child_process");
6
+
7
+ function printUsage() {
8
+ process.stdout.write([
9
+ "Usage: xoonya <command> [options]",
10
+ "",
11
+ "Commands:",
12
+ " release [args] Open the release/adoption/reporting surface",
13
+ " review [args] Review a carried handoff or proof input",
14
+ " conformance Run proof conformance and adversarial vectors",
15
+ " first-run [args] Guide or run proof followthrough checks",
16
+ " start-here Print the shortest first-run path",
17
+ " help Show this help message",
18
+ "",
19
+ "Fastest first run:",
20
+ " xoonya start-here",
21
+ " xoonya first-run",
22
+ " xoonya first-run --verify-native --pretty",
23
+ " xoonya release --summary",
24
+ " xoonya conformance --json",
25
+ " xoonya review --help"
26
+ ].join("\n"));
27
+ }
28
+
29
+ function printStartHere() {
30
+ process.stdout.write([
31
+ "xoonya start-here",
32
+ "",
33
+ "Public first-run spine:",
34
+ " quote -> pay/credits -> execute -> prove",
35
+ "",
36
+ "1. Open https://www.naxytra.com/v1/first-run-kit",
37
+ "2. Run the xytara quote-only command first; it needs no wallet secret.",
38
+ "3. After funded execution, verify the proof side:",
39
+ " xoonya first-run --verify-native --pretty",
40
+ " node examples/package_quickstart.js",
41
+ " xoonya conformance --json",
42
+ "4. Inspect native proof surfaces:",
43
+ " https://xoonya.onrender.com/v1/proof-center/native-standard/summary",
44
+ " https://xoonya.onrender.com/v1/proof-center/native-anchor-profile/summary",
45
+ "",
46
+ "Native proof modes:",
47
+ " xoonya-native-sha256-v1 replayable digest proof",
48
+ " xoonya-native-signed-v1 key-bound authorship proof",
49
+ " xoonya-native-anchored-v1 anchor-binding proof",
50
+ "",
51
+ "Boundary:",
52
+ " xoonya verifies proof and anchor binding; external chain/provider truth stays external"
53
+ ].join("\n"));
54
+ }
55
+
56
+ function delegate(scriptName, args) {
57
+ const scriptPath = path.join(__dirname, scriptName);
58
+ const result = spawnSync(process.execPath, [scriptPath, ...args], { stdio: "inherit" });
59
+ process.exitCode = typeof result.status === "number" ? result.status : 1;
60
+ }
61
+
62
+ const [command, ...rest] = process.argv.slice(2);
63
+
64
+ if (!command || command === "help" || command === "--help" || command === "-h") {
65
+ printUsage();
66
+ } else if (command === "start-here" || command === "--start-here") {
67
+ printStartHere();
68
+ } else if (command === "release") {
69
+ delegate("xoonya-release.js", rest);
70
+ } else if (command === "review") {
71
+ delegate("xoonya-review.js", rest);
72
+ } else if (command === "first-run" || command === "firstrun") {
73
+ delegate("xoonya-first-run.js", rest);
74
+ } else if (command === "conformance" || command === "verify-vectors") {
75
+ const scriptPath = path.join(__dirname, "..", "scripts", "verify_vectors.js");
76
+ const result = spawnSync(process.execPath, [scriptPath, ...rest], { stdio: "inherit" });
77
+ process.exitCode = typeof result.status === "number" ? result.status : 1;
78
+ } else {
79
+ printUsage();
80
+ process.exitCode = 1;
81
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ function buildArtifactDistributionLanePack() {
4
+ return {
5
+ product: "xoonya",
6
+ category: "proof-artifact-distribution-lane-pack",
7
+ pack_version: "xoonya-artifact-distribution-lane-pack-v1",
8
+ lane_state: "first_party_artifact_distribution_lane_present",
9
+ posture: "oci_style_distribution_for_proof_bundles_and_integration_artifacts",
10
+ standards: ["oci_artifacts", "oras_style_distribution"],
11
+ artifact_families: ["proof_bundles", "handoff_bundles", "integration_snapshots", "release_artifacts"],
12
+ supported_surfaces: {
13
+ integrations_ref: "/v1/integrations",
14
+ integrations_snapshot_ref: "/v1/integrations/snapshot",
15
+ proof_bridge_ref: "/v1/proof-bridge",
16
+ result_package_trust_ref: "/v1/result-package-trust",
17
+ release_center_ref: "/v1/release-center"
18
+ },
19
+ first_run_flows: [
20
+ {
21
+ flow_ref: "proof_artifact_distribution_alignment",
22
+ recommended_reason: "best path for teams that want portable proof and integration artifacts rather than custom export conventions",
23
+ sequence: [
24
+ "inspect_artifact_distribution_lane_summary",
25
+ "inspect proof_bridge and import surfaces",
26
+ "treat proof bundles and integration snapshots as distribution-ready artifacts",
27
+ "publish or transfer them later through standard artifact registries without changing proof semantics"
28
+ ]
29
+ }
30
+ ],
31
+ guardrails: [
32
+ "artifact portability should preserve canonical proof bundle and handoff shapes",
33
+ "distribution posture must not create a second proof model"
34
+ ]
35
+ };
36
+ }
37
+
38
+ function summarizeArtifactDistributionLanePack() {
39
+ const pack = buildArtifactDistributionLanePack();
40
+ return {
41
+ product: "xoonya",
42
+ category: "proof-artifact-distribution-lane-pack-summary",
43
+ summary_version: "xoonya-artifact-distribution-lane-pack-summary-v1",
44
+ lane_state: pack.lane_state,
45
+ standard_count: pack.standards.length,
46
+ artifact_family_count: pack.artifact_families.length,
47
+ linked_surfaces: pack.supported_surfaces
48
+ };
49
+ }
50
+
51
+ module.exports = {
52
+ buildArtifactDistributionLanePack,
53
+ summarizeArtifactDistributionLanePack
54
+ };
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ const pkg = require("../package.json");
4
+
5
+ function buildAsyncApiDocument() {
6
+ return {
7
+ asyncapi: "3.0.0",
8
+ info: {
9
+ title: "xoonya Event Contract",
10
+ version: pkg.version,
11
+ summary: "Proof and review event contract.",
12
+ description: "This AsyncAPI document describes the stable proof-side canonicalization, receipt, proof-bundle, and bridge event surfaces."
13
+ },
14
+ servers: {
15
+ httpProof: {
16
+ host: "127.0.0.1:4340",
17
+ protocol: "http",
18
+ description: "Local xoonya HTTP proof event entrypoint"
19
+ }
20
+ },
21
+ channels: {
22
+ "proof/events/canonicalize": {
23
+ address: "/v1/events/canonicalize",
24
+ messages: {
25
+ canonicalizeEventRequest: {
26
+ name: "canonicalizeEventRequest",
27
+ title: "Canonicalize event request",
28
+ summary: "Canonicalize inbound event data before proof construction."
29
+ }
30
+ }
31
+ },
32
+ "proof/events/hash": {
33
+ address: "/v1/events/hash",
34
+ messages: {
35
+ hashEventRequest: {
36
+ name: "hashEventRequest",
37
+ title: "Hash event request",
38
+ summary: "Hash canonical event data."
39
+ }
40
+ }
41
+ },
42
+ "proof/receipts/emit": {
43
+ address: "/v1/receipts/emit",
44
+ messages: {
45
+ emitReceiptRequest: {
46
+ name: "emitReceiptRequest",
47
+ title: "Emit receipt request",
48
+ summary: "Emit proof receipt data."
49
+ }
50
+ }
51
+ },
52
+ "proof/bundles/build": {
53
+ address: "/v1/proof-bundles/build",
54
+ messages: {
55
+ buildProofBundleRequest: {
56
+ name: "buildProofBundleRequest",
57
+ title: "Build proof bundle request",
58
+ summary: "Build a proof bundle from canonical proof inputs."
59
+ }
60
+ }
61
+ },
62
+ "proof/bridge/economic-handoff": {
63
+ address: "/v1/proof-center/bridge/economic-handoff",
64
+ messages: {
65
+ economicHandoffRequest: {
66
+ name: "economicHandoffRequest",
67
+ title: "Economic handoff bridge request",
68
+ summary: "Bridge bounded economic consequence data into proof review."
69
+ }
70
+ }
71
+ }
72
+ },
73
+ operations: {
74
+ canonicalizeProofEvent: {
75
+ action: "send",
76
+ channel: { $ref: "#/channels/proof/events/canonicalize" },
77
+ summary: "Send canonicalization input into the proof loop."
78
+ },
79
+ hashProofEvent: {
80
+ action: "send",
81
+ channel: { $ref: "#/channels/proof/events/hash" },
82
+ summary: "Send event data for proof hash generation."
83
+ },
84
+ emitProofReceipt: {
85
+ action: "send",
86
+ channel: { $ref: "#/channels/proof/receipts/emit" },
87
+ summary: "Send receipt emission input into the proof loop."
88
+ },
89
+ buildProofBundle: {
90
+ action: "send",
91
+ channel: { $ref: "#/channels/proof/bundles/build" },
92
+ summary: "Send proof-bundle build input into the proof loop."
93
+ },
94
+ bridgeEconomicHandoff: {
95
+ action: "send",
96
+ channel: { $ref: "#/channels/proof/bridge/economic-handoff" },
97
+ summary: "Send runtime economic handoff data into proof review."
98
+ }
99
+ },
100
+ "x-naxytra-contract": {
101
+ product: "xoonya",
102
+ stability: "stable_public_event_layer",
103
+ channel_count: 5,
104
+ linked_docs: [
105
+ "SERVICE_CONTRACT.md",
106
+ "FINAL_CONTRACT.md",
107
+ "START_HERE.md"
108
+ ]
109
+ }
110
+ };
111
+ }
112
+
113
+ function summarizeAsyncApiDocument() {
114
+ const document = buildAsyncApiDocument();
115
+ return {
116
+ product: "xoonya",
117
+ category: "proof-asyncapi-contract-summary",
118
+ summary_version: "xoonya-asyncapi-contract-summary-v1",
119
+ asyncapi_version: document.asyncapi,
120
+ info_version: document.info.version,
121
+ channel_count: Object.keys(document.channels).length,
122
+ operation_count: Object.keys(document.operations).length,
123
+ primary_event_lanes: ["canonicalization", "receipts", "proof_bundles", "bridge"],
124
+ linked_surfaces: {
125
+ asyncapi_ref: "/asyncapi.json",
126
+ service_contract_ref: "SERVICE_CONTRACT.md",
127
+ openapi_ref: "/openapi.json"
128
+ }
129
+ };
130
+ }
131
+
132
+ module.exports = {
133
+ buildAsyncApiDocument,
134
+ summarizeAsyncApiDocument
135
+ };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ const pkg = require("../package.json");
4
+
5
+ function buildAuthInteropContract() {
6
+ return {
7
+ product: "xoonya",
8
+ category: "proof-auth-interop-contract",
9
+ contract_version: "xoonya-auth-interop-contract-v1",
10
+ service_version: pkg.version,
11
+ primary_posture: "proof_verification_with_oauth_oidc_and_token_exchange_interop",
12
+ supported_interop_profiles: [
13
+ {
14
+ profile_id: "proof_verifier_client_credentials",
15
+ standards: ["oauth_2_0", "oidc_optional"],
16
+ intended_use: "machine verifier access to proof verification surfaces",
17
+ primary_routes: ["/v1/receipts/verify", "/v1/proof-bundles/verify"]
18
+ },
19
+ {
20
+ profile_id: "runtime_to_proof_handoff_token_exchange",
21
+ standards: ["oauth_2_0_token_exchange", "jwt_bearer_optional"],
22
+ intended_use: "map runtime-side bearer posture into bounded proof-side review and bridge intake",
23
+ primary_routes: ["/v1/proof-center/bridge/economic-handoff"]
24
+ },
25
+ {
26
+ profile_id: "proof_role_governance_interop",
27
+ standards: ["oauth_2_0", "oidc"],
28
+ intended_use: "operator and reviewer access to frozen proof-role and governance surfaces",
29
+ primary_routes: ["/v1/role-freeze", "/v1/role-freeze/package"]
30
+ }
31
+ ],
32
+ native_proof_mapping: {
33
+ proof_verify: "/v1/proof-bundles/verify",
34
+ receipt_verify: "/v1/receipts/verify",
35
+ bridge_economic_handoff: "/v1/proof-center/bridge/economic-handoff",
36
+ role_freeze_package: "/v1/role-freeze/package"
37
+ },
38
+ guardrails: [
39
+ "proof verification semantics remain canonical inside xoonya rather than inside bearer tokens",
40
+ "token exchange may convey bounded review posture but must not redefine proof truth",
41
+ "bridge intake auth must remain subordinate to proof-side review and governance checks"
42
+ ],
43
+ linked_surfaces: {
44
+ openapi_ref: "/openapi.json",
45
+ asyncapi_ref: "/asyncapi.json",
46
+ cloudevents_ref: "/cloudevents.json",
47
+ service_contract_ref: "SERVICE_CONTRACT.md"
48
+ }
49
+ };
50
+ }
51
+
52
+ function summarizeAuthInteropContract() {
53
+ const contract = buildAuthInteropContract();
54
+ return {
55
+ product: "xoonya",
56
+ category: "proof-auth-interop-contract-summary",
57
+ summary_version: "xoonya-auth-interop-contract-summary-v1",
58
+ contract_version: contract.contract_version,
59
+ profile_count: contract.supported_interop_profiles.length,
60
+ primary_posture: contract.primary_posture,
61
+ primary_protocol_lanes: ["proof_verify", "receipt_verify", "bridge"],
62
+ linked_surfaces: contract.linked_surfaces
63
+ };
64
+ }
65
+
66
+ module.exports = {
67
+ buildAuthInteropContract,
68
+ summarizeAuthInteropContract
69
+ };
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ const pkg = require("../package.json");
4
+
5
+ function buildCloudEventsContract() {
6
+ return {
7
+ product: "xoonya",
8
+ category: "proof-cloudevents-contract",
9
+ contract_version: "xoonya-cloudevents-contract-v1",
10
+ specversion: "1.0",
11
+ service_version: pkg.version,
12
+ envelope: {
13
+ required_attributes: ["specversion", "id", "source", "type", "time", "subject", "datacontenttype", "data"],
14
+ datacontenttype_default: "application/json",
15
+ source_prefix: "urn:naxytra:xoonya",
16
+ id_shape: "evt_<opaque_id>",
17
+ time_format: "RFC3339"
18
+ },
19
+ event_families: [
20
+ {
21
+ type: "io.naxytra.xoonya.event.canonicalized",
22
+ source: "urn:naxytra:xoonya:events",
23
+ subject: "event.canonicalized"
24
+ },
25
+ {
26
+ type: "io.naxytra.xoonya.event.hashed",
27
+ source: "urn:naxytra:xoonya:events",
28
+ subject: "event.hashed"
29
+ },
30
+ {
31
+ type: "io.naxytra.xoonya.receipt.emitted",
32
+ source: "urn:naxytra:xoonya:receipts",
33
+ subject: "receipt.emitted"
34
+ },
35
+ {
36
+ type: "io.naxytra.xoonya.proof_bundle.built",
37
+ source: "urn:naxytra:xoonya:proof_bundles",
38
+ subject: "proof_bundle.built"
39
+ },
40
+ {
41
+ type: "io.naxytra.xoonya.bridge.economic_handoff.accepted",
42
+ source: "urn:naxytra:xoonya:bridge",
43
+ subject: "bridge.economic_handoff"
44
+ }
45
+ ],
46
+ stable_http_surfaces: [
47
+ "/v1/events/canonicalize",
48
+ "/v1/events/hash",
49
+ "/v1/receipts/emit",
50
+ "/v1/proof-bundles/build",
51
+ "/v1/proof-center/bridge/economic-handoff"
52
+ ],
53
+ linked_surfaces: {
54
+ openapi_ref: "/openapi.json",
55
+ asyncapi_ref: "/asyncapi.json",
56
+ service_contract_ref: "SERVICE_CONTRACT.md"
57
+ }
58
+ };
59
+ }
60
+
61
+ function summarizeCloudEventsContract() {
62
+ const contract = buildCloudEventsContract();
63
+ return {
64
+ product: "xoonya",
65
+ category: "proof-cloudevents-contract-summary",
66
+ summary_version: "xoonya-cloudevents-contract-summary-v1",
67
+ specversion: contract.specversion,
68
+ contract_version: contract.contract_version,
69
+ event_family_count: contract.event_families.length,
70
+ stable_surface_count: contract.stable_http_surfaces.length,
71
+ primary_event_lanes: ["canonicalization", "proof_bundle", "bridge"],
72
+ linked_surfaces: contract.linked_surfaces
73
+ };
74
+ }
75
+
76
+ module.exports = {
77
+ buildCloudEventsContract,
78
+ summarizeCloudEventsContract
79
+ };
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ const {
4
+ buildPhase4Erc8004ProofPack,
5
+ summarizePhase4Erc8004ProofPack
6
+ } = require("./phase_4_erc8004_proof_pack");
7
+
8
+ function buildErc8004ProofLanePack() {
9
+ const phasePack = buildPhase4Erc8004ProofPack();
10
+ return {
11
+ product: "xoonya",
12
+ category: "proof-erc8004-lane-pack",
13
+ pack_version: "xoonya-erc8004-lane-pack-v1",
14
+ lane_state: "first_party_erc8004_proof_present",
15
+ posture: "identity_and_attestation_proof_interop_lane",
16
+ phase_alignment: {
17
+ phase_ref: phasePack.phase_ref,
18
+ phase_proof_pack: phasePack,
19
+ phase_proof_summary: summarizePhase4Erc8004ProofPack()
20
+ },
21
+ supported_surfaces: {
22
+ phase_proof_ref: "/v1/phases/phase-4/erc8004/proof",
23
+ phase_proof_summary_ref: "/v1/phases/phase-4/erc8004/proof/summary",
24
+ identity_interop_ref: "/v1/identity-interop",
25
+ bridge_summary_ref: "/v1/proof-center/bridge/summary",
26
+ trust_intelligence_ref: "/v1/trust-intelligence/summary"
27
+ },
28
+ first_run_flows: [
29
+ {
30
+ flow_ref: "erc8004.attestation_proof_view",
31
+ recommended_reason: "best first proof-facing trust lane for attestation, subject binding, and policy carry review",
32
+ sequence: [
33
+ "inspect_erc8004_proof_lane_summary",
34
+ "inspect_identity_interop_contract",
35
+ "inspect_bridge_summary",
36
+ "inspect_trust_intelligence_summary"
37
+ ]
38
+ }
39
+ ],
40
+ guardrails: [
41
+ "erc8004 is an interop lane rather than the canonical source of proof truth",
42
+ "native proof review and attestation semantics remain canonical inside xoonya",
43
+ "erc8004 posture should improve external verifier trust without turning xoonya into a generic credential wallet"
44
+ ]
45
+ };
46
+ }
47
+
48
+ function summarizeErc8004ProofLanePack() {
49
+ const pack = buildErc8004ProofLanePack();
50
+ return {
51
+ product: "xoonya",
52
+ category: "proof-erc8004-lane-pack-summary",
53
+ summary_version: "xoonya-erc8004-lane-pack-summary-v1",
54
+ lane_state: pack.lane_state,
55
+ posture: pack.posture,
56
+ first_run_flow_count: pack.first_run_flows.length,
57
+ linked_surfaces: pack.supported_surfaces
58
+ };
59
+ }
60
+
61
+ module.exports = {
62
+ buildErc8004ProofLanePack,
63
+ summarizeErc8004ProofLanePack
64
+ };