xoonya 3.0.0 → 3.1.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/.env.example +2 -2
- package/CARRIED_HANDOFF_DEMO.md +60 -60
- package/COMPATIBILITY_NOTE.md +27 -27
- package/CROSS_RUNTIME_POSTURE.md +77 -77
- package/EXAMPLE_PATHS.md +53 -53
- package/FINAL_CONTRACT.md +445 -445
- package/LICENSE +201 -201
- package/NOTICE +3 -3
- package/OPERATIONS_RUNBOOK.md +50 -0
- package/OPERATOR_START_HERE.md +67 -0
- package/PARTNER_READY_PATH.md +67 -67
- package/PROGRAM_COMPLETE_RELEASE.md +52 -0
- package/PROGRAM_STATUS.md +57 -0
- package/PUBLIC_DEMO_SCRIPT.md +79 -79
- package/PUBLISH_PLAN.md +25 -0
- package/README.md +807 -732
- package/RELEASE_CHECKLIST.md +16 -0
- package/RELEASE_NOTES.md +15 -15
- package/SERVICE_CONTRACT.md +207 -195
- package/START_HERE.md +159 -150
- package/TERMINOLOGY.md +55 -55
- package/WHY_XYTARA_XOONYA.md +43 -43
- package/XNYA_CONFORMANCE_MARK.md +78 -78
- package/XNYA_REFERENCE_IMPLEMENTATIONS.md +157 -157
- package/XOONYA_DEFAULT_PATH_MODEL.md +63 -63
- package/XOONYA_FOLLOWTHROUGH_TRUTH_MODEL.md +63 -63
- package/XOONYA_NATIVE_ATOM_SPEC.md +184 -184
- package/XOONYA_NATIVE_PROOF_FORMAT.md +527 -527
- package/XOONYA_NATIVE_STANDARD_GOVERNANCE.md +119 -119
- package/XOONYA_PROOF_TRUTH_MODEL.md +58 -58
- package/bin/xoonya-first-run.js +184 -184
- package/bin/xoonya-release.js +1367 -1367
- package/bin/xoonya-review.js +70 -70
- package/bin/xoonya.js +82 -82
- package/examples/integration_boundary_walkthrough.js +37 -37
- package/examples/package_quickstart.js +1007 -1007
- package/examples/partner_proof_walkthrough.js +68 -68
- package/examples/proof_review_walkthrough.js +66 -66
- package/examples/review_carried_handoff.js +72 -72
- package/index.js +31 -22
- package/integrations/PROOF_INTEGRATION_PROCESS.md +45 -45
- package/integrations/examples/example-third-party-verifier-registration.record.json +22 -22
- package/integrations/registration-record.schema.json +99 -99
- package/integrations/registry-snapshot.schema.json +36 -36
- package/integrations/registry.js +636 -636
- package/integrations/views.js +36 -36
- package/lib/adapter_certification_contract.js +90 -0
- package/lib/announcement_pack.js +61 -61
- package/lib/artifact_distribution_lane_contract.js +54 -54
- package/lib/asyncapi_contract.js +135 -135
- package/lib/auth_interop_contract.js +69 -69
- package/lib/authority_binding_lifecycle_contract.js +182 -0
- package/lib/bridge_intelligence.js +102 -102
- package/lib/cloudevents_contract.js +79 -79
- package/lib/crypto_agility_matrix.js +125 -0
- package/lib/default_path_contract.js +380 -380
- package/lib/ecosystem_entry.js +64 -64
- package/lib/erc8004_proof_lane_contract.js +64 -64
- package/lib/event_system_lane_contract.js +76 -76
- package/lib/external_proof_import_lane_contract.js +87 -87
- package/lib/feature_control_lane_contract.js +54 -54
- package/lib/followthrough_truth_contract.js +214 -214
- package/lib/framework_lane_contract.js +76 -76
- package/lib/governance_disputes_summary.js +36 -36
- package/lib/governance_intelligence.js +108 -108
- package/lib/identity_interop_contract.js +83 -83
- package/lib/integration_matrix_contract.js +81 -81
- package/lib/launch_narrative.js +53 -53
- package/lib/machine_identity_registry_contract.js +199 -0
- package/lib/major_rails_proof_lane_contract.js +87 -87
- package/lib/offline_verifiability_recovery_contract.js +155 -0
- package/lib/openapi_contract.js +227 -227
- package/lib/operational_receipt_contract.js +165 -0
- package/lib/outreach_proof.js +71 -71
- package/lib/phase_10_closeout_pack.js +45 -45
- package/lib/phase_10_completion_pack.js +76 -76
- package/lib/phase_10_decision_record_pack.js +54 -54
- package/lib/phase_10_decision_resolution_pack.js +53 -53
- package/lib/phase_10_demand_signal_adapters_proof_pack.js +74 -74
- package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +74 -74
- package/lib/phase_10_freeze_baseline_pack.js +67 -67
- package/lib/phase_10_freeze_review_pack.js +64 -64
- package/lib/phase_10_gate_pack.js +57 -57
- package/lib/phase_10_long_tail_continuity_pack.js +80 -80
- package/lib/phase_10_long_tail_ecosystem_pack.js +68 -68
- package/lib/phase_10_niche_extension_registry_proof_pack.js +74 -74
- package/lib/phase_1_claude_mcp_pack.js +60 -60
- package/lib/phase_1_claude_mcp_proof_pack.js +57 -57
- package/lib/phase_1_ecosystem_pack.js +51 -51
- package/lib/phase_1_openai_codex_pack.js +60 -60
- package/lib/phase_1_openai_codex_proof_pack.js +57 -57
- package/lib/phase_2_base_proof_pack.js +71 -71
- package/lib/phase_2_base_usdc_proof_pack.js +72 -72
- package/lib/phase_2_closeout_pack.js +65 -65
- package/lib/phase_2_completion_pack.js +113 -113
- package/lib/phase_2_decision_record_pack.js +66 -66
- package/lib/phase_2_decision_resolution_pack.js +69 -69
- package/lib/phase_2_eth_proof_pack.js +70 -70
- package/lib/phase_2_evm_base_proof_pack.js +73 -73
- package/lib/phase_2_evm_proof_pack.js +71 -71
- package/lib/phase_2_flip_preview_pack.js +60 -60
- package/lib/phase_2_freeze_review_pack.js +99 -99
- package/lib/phase_2_gate_pack.js +77 -77
- package/lib/phase_2_payment_rails_pack.js +71 -71
- package/lib/phase_2_usdc_proof_pack.js +71 -71
- package/lib/phase_3_brc_proof_pack.js +81 -81
- package/lib/phase_3_bsv_teranode_proof_pack.js +81 -81
- package/lib/phase_3_closeout_pack.js +62 -62
- package/lib/phase_3_completion_pack.js +92 -92
- package/lib/phase_3_decision_record_pack.js +64 -64
- package/lib/phase_3_decision_resolution_pack.js +69 -69
- package/lib/phase_3_freeze_baseline_pack.js +67 -67
- package/lib/phase_3_freeze_review_pack.js +80 -80
- package/lib/phase_3_gate_pack.js +76 -76
- package/lib/phase_3_metanet_proof_pack.js +81 -81
- package/lib/phase_3_native_bsv_pack.js +89 -89
- package/lib/phase_3_native_continuity_pack.js +82 -82
- package/lib/phase_4_attestation_proof_pack.js +75 -75
- package/lib/phase_4_closeout_pack.js +45 -45
- package/lib/phase_4_completion_pack.js +82 -82
- package/lib/phase_4_decision_record_pack.js +54 -54
- package/lib/phase_4_decision_resolution_pack.js +45 -45
- package/lib/phase_4_erc8004_proof_pack.js +76 -76
- package/lib/phase_4_freeze_baseline_pack.js +67 -67
- package/lib/phase_4_freeze_review_pack.js +68 -68
- package/lib/phase_4_gate_pack.js +58 -58
- package/lib/phase_4_identity_registry_proof_pack.js +75 -75
- package/lib/phase_4_identity_trust_pack.js +73 -73
- package/lib/phase_4_trust_continuity_pack.js +86 -86
- package/lib/phase_5_antelope_proof_pack.js +76 -76
- package/lib/phase_5_closeout_pack.js +44 -44
- package/lib/phase_5_completion_pack.js +82 -82
- package/lib/phase_5_decision_record_pack.js +54 -54
- package/lib/phase_5_decision_resolution_pack.js +45 -45
- package/lib/phase_5_freeze_baseline_pack.js +67 -67
- package/lib/phase_5_freeze_review_pack.js +68 -68
- package/lib/phase_5_gate_pack.js +58 -58
- package/lib/phase_5_major_rails_continuity_pack.js +86 -86
- package/lib/phase_5_major_rails_pack.js +74 -74
- package/lib/phase_5_proton_xpr_proof_pack.js +76 -76
- package/lib/phase_5_solana_proof_pack.js +76 -76
- package/lib/phase_6_autogen_proof_pack.js +74 -74
- package/lib/phase_6_closeout_pack.js +46 -46
- package/lib/phase_6_completion_pack.js +77 -77
- package/lib/phase_6_decision_record_pack.js +54 -54
- package/lib/phase_6_decision_resolution_pack.js +53 -53
- package/lib/phase_6_framework_continuity_pack.js +81 -81
- package/lib/phase_6_framework_runtime_pack.js +68 -68
- package/lib/phase_6_freeze_baseline_pack.js +68 -68
- package/lib/phase_6_freeze_review_pack.js +65 -65
- package/lib/phase_6_gate_pack.js +59 -59
- package/lib/phase_6_langchain_proof_pack.js +74 -74
- package/lib/phase_6_langgraph_proof_pack.js +74 -74
- package/lib/phase_6_semantic_kernel_proof_pack.js +74 -74
- package/lib/phase_7_closeout_pack.js +45 -45
- package/lib/phase_7_completion_pack.js +85 -85
- package/lib/phase_7_decision_record_pack.js +53 -53
- package/lib/phase_7_decision_resolution_pack.js +53 -53
- package/lib/phase_7_event_system_continuity_pack.js +89 -89
- package/lib/phase_7_event_system_pack.js +76 -76
- package/lib/phase_7_freeze_baseline_pack.js +74 -74
- package/lib/phase_7_freeze_review_pack.js +65 -65
- package/lib/phase_7_gate_pack.js +58 -58
- package/lib/phase_7_kafka_proof_pack.js +76 -76
- package/lib/phase_7_mqtt_proof_pack.js +76 -76
- package/lib/phase_7_nats_proof_pack.js +76 -76
- package/lib/phase_7_webhook_event_bus_proof_pack.js +76 -76
- package/lib/phase_8_closeout_pack.js +46 -46
- package/lib/phase_8_completion_pack.js +82 -82
- package/lib/phase_8_decision_record_pack.js +54 -54
- package/lib/phase_8_decision_resolution_pack.js +53 -53
- package/lib/phase_8_external_receipt_import_proof_pack.js +74 -74
- package/lib/phase_8_external_result_import_proof_pack.js +74 -74
- package/lib/phase_8_freeze_baseline_pack.js +71 -71
- package/lib/phase_8_freeze_review_pack.js +64 -64
- package/lib/phase_8_gate_pack.js +58 -58
- package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
- package/lib/phase_8_proof_bridges_pack.js +72 -72
- package/lib/phase_8_proof_bundle_normalization_proof_pack.js +74 -74
- package/lib/phase_9_closeout_pack.js +46 -46
- package/lib/phase_9_completion_pack.js +82 -82
- package/lib/phase_9_custody_refs_proof_pack.js +74 -74
- package/lib/phase_9_decision_record_pack.js +54 -54
- package/lib/phase_9_decision_resolution_pack.js +53 -53
- package/lib/phase_9_freeze_baseline_pack.js +71 -71
- package/lib/phase_9_freeze_review_pack.js +64 -64
- package/lib/phase_9_gate_pack.js +58 -58
- package/lib/phase_9_operator_accounting_bridges_proof_pack.js +74 -74
- package/lib/phase_9_treasury_connectivity_pack.js +72 -72
- package/lib/phase_9_treasury_continuity_pack.js +86 -86
- package/lib/phase_9_treasury_destinations_proof_pack.js +74 -74
- package/lib/phase_program_pack.js +47 -47
- package/lib/proof_bridge_lane_contract.js +82 -82
- package/lib/proof_truth_contract.js +224 -224
- package/lib/provenance_lane_contract.js +54 -54
- package/lib/provider_lane_contract.js +67 -67
- package/lib/public_surface_policy_contract.js +111 -0
- package/lib/publish_plan.js +51 -51
- package/lib/release_candidate.js +50 -50
- package/lib/release_center.js +1037 -1037
- package/lib/release_history.js +206 -206
- package/lib/release_manifest.js +114 -114
- package/lib/release_pack.js +391 -391
- package/lib/result_package_trust_lane_contract.js +74 -74
- package/lib/review_intelligence.js +100 -100
- package/lib/role_freeze.js +436 -436
- package/lib/shared_signals_lane_contract.js +54 -54
- package/lib/signed_audit_provenance_contract.js +93 -0
- package/lib/telemetry_lane_contract.js +54 -54
- package/lib/treasury_proof_lane_contract.js +83 -83
- package/lib/trust_intelligence.js +106 -106
- package/lib/trust_portability_boundary_contract.js +66 -0
- package/lib/trust_portability_pack.js +224 -224
- package/lib/verification_service_pack.js +149 -149
- package/package.json +97 -95
- package/proof_sdk.js +6265 -6265
- package/reference/python/README.md +35 -35
- package/reference/python/requirements-optional.txt +1 -1
- package/reference/python/verify_vectors.py +223 -223
- package/reference/python/xnya_reference.py +810 -810
- package/reference/rust/Cargo.toml +11 -11
- package/reference/rust/README.md +28 -28
- package/reference/rust/src/lib.rs +87 -87
- package/scripts/registry_cli.js +157 -157
- package/scripts/verify_all.js +603 -603
- package/scripts/verify_control_plane_contracts.js +34 -0
- package/scripts/verify_control_plane_routes.js +70 -0
- package/scripts/verify_examples.js +19 -19
- package/scripts/verify_external_proof_import_gate.js +84 -84
- package/scripts/verify_integrations.js +170 -170
- package/scripts/verify_native_hybrid_design_gate.js +114 -114
- package/scripts/verify_reference_promotion_gate.js +74 -74
- package/scripts/verify_reference_python.js +49 -49
- package/scripts/verify_reference_python_crypto.js +87 -87
- package/scripts/verify_reference_rust_scaffold.js +50 -50
- package/scripts/verify_release_candidate.js +131 -131
- package/scripts/verify_service.js +2940 -2940
- package/scripts/verify_tooling.js +1251 -1251
- package/scripts/verify_trust_portability.js +56 -56
- package/scripts/verify_vectors.js +192 -192
- package/scripts/verify_verification_services.js +56 -56
- package/server.js +4099 -3997
- package/vectors/adversarial-vectors.json +552 -552
- package/vectors/conformance-vectors.json +446 -446
- package/vectors/native-atom-vectors.json +101 -101
- package/vectors/native-payload-profile-vectors.json +50 -50
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const packageJson = require("../package.json");
|
|
4
|
-
|
|
5
|
-
function buildPhase10NicheExtensionRegistryProofPack() {
|
|
6
|
-
return {
|
|
7
|
-
ok: true,
|
|
8
|
-
product: packageJson.name,
|
|
9
|
-
category: "proof-phase-10-niche-extension-registry-proof-pack",
|
|
10
|
-
phase_ref: "phase_10",
|
|
11
|
-
posture: "proof_path",
|
|
12
|
-
ecosystems: ["niche_extension_registry"],
|
|
13
|
-
proof_shape: {
|
|
14
|
-
proof_modes: ["demand_signal_capture", "extension_registry_mapping", "backlog_triage"],
|
|
15
|
-
demand_modes: ["partner_signal_flow", "extension_fit_flow", "queue_handoff_flow"],
|
|
16
|
-
proof_artifacts: ["registry_bundle", "fit_bundle", "triage_bundle"],
|
|
17
|
-
proof_surfaces: [
|
|
18
|
-
"/v1/proof-center/bridge/summary",
|
|
19
|
-
"/v1/release-center/summary",
|
|
20
|
-
"/v1/phases/phase-10/summary"
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
first_path: {
|
|
24
|
-
purpose: "show the Phase 10 proof path that carries candidate extension demand into governed registry continuity",
|
|
25
|
-
first_http_sequence: [
|
|
26
|
-
"/v1/phases/phase-10/summary",
|
|
27
|
-
"/v1/phases/phase-10/niche-extension-registry/proof/summary",
|
|
28
|
-
"/v1/release-center/summary"
|
|
29
|
-
],
|
|
30
|
-
first_cli_sequence: [
|
|
31
|
-
"xoonya-release --phase-10-niche-extension-registry-proof --summary",
|
|
32
|
-
"xoonya-release --phase-10 --summary"
|
|
33
|
-
],
|
|
34
|
-
expected_signals: [
|
|
35
|
-
"niche extension registry is a public Phase 10 proof lane",
|
|
36
|
-
"registry proof artifacts are explicit at the lane level",
|
|
37
|
-
"registry posture is visible before Phase 10 closure discipline"
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
completion: {
|
|
41
|
-
completion_checks: [
|
|
42
|
-
"niche extension registry proof lane is public and inspectable",
|
|
43
|
-
"proof artifacts are visible at lane level",
|
|
44
|
-
"proof surfaces remain attached to the registry lane",
|
|
45
|
-
"the lane is ready to support broader long-tail ecosystem breadth"
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function summarizePhase10NicheExtensionRegistryProofPack() {
|
|
52
|
-
const pack = buildPhase10NicheExtensionRegistryProofPack();
|
|
53
|
-
return {
|
|
54
|
-
ok: true,
|
|
55
|
-
product: pack.product,
|
|
56
|
-
category: pack.category,
|
|
57
|
-
phase_ref: pack.phase_ref,
|
|
58
|
-
ecosystem_count: pack.ecosystems.length,
|
|
59
|
-
proof_mode_count: pack.proof_shape.proof_modes.length,
|
|
60
|
-
demand_mode_count: pack.proof_shape.demand_modes.length,
|
|
61
|
-
proof_artifact_count: pack.proof_shape.proof_artifacts.length,
|
|
62
|
-
completion_check_count: pack.completion.completion_checks.length,
|
|
63
|
-
http_step_count: pack.first_path.first_http_sequence.length,
|
|
64
|
-
cli_step_count: pack.first_path.first_cli_sequence.length,
|
|
65
|
-
signal_count: pack.first_path.expected_signals.length,
|
|
66
|
-
proof_surface_count: pack.proof_shape.proof_surfaces.length,
|
|
67
|
-
first_http_step: pack.first_path.first_http_sequence[0] || null
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
module.exports = {
|
|
72
|
-
buildPhase10NicheExtensionRegistryProofPack,
|
|
73
|
-
summarizePhase10NicheExtensionRegistryProofPack
|
|
74
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildPhase10NicheExtensionRegistryProofPack() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-phase-10-niche-extension-registry-proof-pack",
|
|
10
|
+
phase_ref: "phase_10",
|
|
11
|
+
posture: "proof_path",
|
|
12
|
+
ecosystems: ["niche_extension_registry"],
|
|
13
|
+
proof_shape: {
|
|
14
|
+
proof_modes: ["demand_signal_capture", "extension_registry_mapping", "backlog_triage"],
|
|
15
|
+
demand_modes: ["partner_signal_flow", "extension_fit_flow", "queue_handoff_flow"],
|
|
16
|
+
proof_artifacts: ["registry_bundle", "fit_bundle", "triage_bundle"],
|
|
17
|
+
proof_surfaces: [
|
|
18
|
+
"/v1/proof-center/bridge/summary",
|
|
19
|
+
"/v1/release-center/summary",
|
|
20
|
+
"/v1/phases/phase-10/summary"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
first_path: {
|
|
24
|
+
purpose: "show the Phase 10 proof path that carries candidate extension demand into governed registry continuity",
|
|
25
|
+
first_http_sequence: [
|
|
26
|
+
"/v1/phases/phase-10/summary",
|
|
27
|
+
"/v1/phases/phase-10/niche-extension-registry/proof/summary",
|
|
28
|
+
"/v1/release-center/summary"
|
|
29
|
+
],
|
|
30
|
+
first_cli_sequence: [
|
|
31
|
+
"xoonya-release --phase-10-niche-extension-registry-proof --summary",
|
|
32
|
+
"xoonya-release --phase-10 --summary"
|
|
33
|
+
],
|
|
34
|
+
expected_signals: [
|
|
35
|
+
"niche extension registry is a public Phase 10 proof lane",
|
|
36
|
+
"registry proof artifacts are explicit at the lane level",
|
|
37
|
+
"registry posture is visible before Phase 10 closure discipline"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
completion: {
|
|
41
|
+
completion_checks: [
|
|
42
|
+
"niche extension registry proof lane is public and inspectable",
|
|
43
|
+
"proof artifacts are visible at lane level",
|
|
44
|
+
"proof surfaces remain attached to the registry lane",
|
|
45
|
+
"the lane is ready to support broader long-tail ecosystem breadth"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function summarizePhase10NicheExtensionRegistryProofPack() {
|
|
52
|
+
const pack = buildPhase10NicheExtensionRegistryProofPack();
|
|
53
|
+
return {
|
|
54
|
+
ok: true,
|
|
55
|
+
product: pack.product,
|
|
56
|
+
category: pack.category,
|
|
57
|
+
phase_ref: pack.phase_ref,
|
|
58
|
+
ecosystem_count: pack.ecosystems.length,
|
|
59
|
+
proof_mode_count: pack.proof_shape.proof_modes.length,
|
|
60
|
+
demand_mode_count: pack.proof_shape.demand_modes.length,
|
|
61
|
+
proof_artifact_count: pack.proof_shape.proof_artifacts.length,
|
|
62
|
+
completion_check_count: pack.completion.completion_checks.length,
|
|
63
|
+
http_step_count: pack.first_path.first_http_sequence.length,
|
|
64
|
+
cli_step_count: pack.first_path.first_cli_sequence.length,
|
|
65
|
+
signal_count: pack.first_path.expected_signals.length,
|
|
66
|
+
proof_surface_count: pack.proof_shape.proof_surfaces.length,
|
|
67
|
+
first_http_step: pack.first_path.first_http_sequence[0] || null
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
module.exports = {
|
|
72
|
+
buildPhase10NicheExtensionRegistryProofPack,
|
|
73
|
+
summarizePhase10NicheExtensionRegistryProofPack
|
|
74
|
+
};
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const packageJson = require("../package.json");
|
|
4
|
-
|
|
5
|
-
function buildPhase1ClaudeMcpPack() {
|
|
6
|
-
return {
|
|
7
|
-
ok: true,
|
|
8
|
-
product: packageJson.name,
|
|
9
|
-
category: "proof-phase-1-claude-mcp-pack",
|
|
10
|
-
phase_ref: "phase_1",
|
|
11
|
-
ecosystem_ref: "claude_anthropic_mcp",
|
|
12
|
-
status: "active",
|
|
13
|
-
adoption_wedge: "carried proof review for MCP-style adapter-origin runs",
|
|
14
|
-
main_repo_weight: "xoonya_medium",
|
|
15
|
-
scope: {
|
|
16
|
-
proof_posture: [
|
|
17
|
-
"carried handoff review",
|
|
18
|
-
"adapter-origin run verification",
|
|
19
|
-
"bridge-aware continuation",
|
|
20
|
-
"review artifacts for weak-trust tool use"
|
|
21
|
-
],
|
|
22
|
-
first_surfaces: [
|
|
23
|
-
"/v1/outreach-proof/summary",
|
|
24
|
-
"/v1/release-pack/scenarios/summary",
|
|
25
|
-
"/v1/proof-center/bridge/summary",
|
|
26
|
-
"/v1/release-center/summary"
|
|
27
|
-
],
|
|
28
|
-
first_commands: [
|
|
29
|
-
"xoonya-release --outreach-proof --summary",
|
|
30
|
-
"xoonya-release --phase-1-claude-mcp --summary",
|
|
31
|
-
"xoonya-review --file ./handoff.json --summary"
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
done_means: [
|
|
35
|
-
"outside builders can see how xoonya reviews MCP-style adapter-origin runs without relying on private context",
|
|
36
|
-
"the proof-side Claude/MCP path is clear enough to try from one review CLI and one proof surface",
|
|
37
|
-
"Phase 1 proof posture for MCP-style runs is explicit in public product surfaces"
|
|
38
|
-
]
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function summarizePhase1ClaudeMcpPack() {
|
|
43
|
-
const pack = buildPhase1ClaudeMcpPack();
|
|
44
|
-
return {
|
|
45
|
-
ok: true,
|
|
46
|
-
product: pack.product,
|
|
47
|
-
category: pack.category,
|
|
48
|
-
phase_ref: pack.phase_ref,
|
|
49
|
-
ecosystem_ref: pack.ecosystem_ref,
|
|
50
|
-
surface_count: pack.scope.first_surfaces.length,
|
|
51
|
-
command_count: pack.scope.first_commands.length,
|
|
52
|
-
done_mean_count: pack.done_means.length,
|
|
53
|
-
first_surface: pack.scope.first_surfaces[0] || null
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
module.exports = {
|
|
58
|
-
buildPhase1ClaudeMcpPack,
|
|
59
|
-
summarizePhase1ClaudeMcpPack
|
|
60
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildPhase1ClaudeMcpPack() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-phase-1-claude-mcp-pack",
|
|
10
|
+
phase_ref: "phase_1",
|
|
11
|
+
ecosystem_ref: "claude_anthropic_mcp",
|
|
12
|
+
status: "active",
|
|
13
|
+
adoption_wedge: "carried proof review for MCP-style adapter-origin runs",
|
|
14
|
+
main_repo_weight: "xoonya_medium",
|
|
15
|
+
scope: {
|
|
16
|
+
proof_posture: [
|
|
17
|
+
"carried handoff review",
|
|
18
|
+
"adapter-origin run verification",
|
|
19
|
+
"bridge-aware continuation",
|
|
20
|
+
"review artifacts for weak-trust tool use"
|
|
21
|
+
],
|
|
22
|
+
first_surfaces: [
|
|
23
|
+
"/v1/outreach-proof/summary",
|
|
24
|
+
"/v1/release-pack/scenarios/summary",
|
|
25
|
+
"/v1/proof-center/bridge/summary",
|
|
26
|
+
"/v1/release-center/summary"
|
|
27
|
+
],
|
|
28
|
+
first_commands: [
|
|
29
|
+
"xoonya-release --outreach-proof --summary",
|
|
30
|
+
"xoonya-release --phase-1-claude-mcp --summary",
|
|
31
|
+
"xoonya-review --file ./handoff.json --summary"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
done_means: [
|
|
35
|
+
"outside builders can see how xoonya reviews MCP-style adapter-origin runs without relying on private context",
|
|
36
|
+
"the proof-side Claude/MCP path is clear enough to try from one review CLI and one proof surface",
|
|
37
|
+
"Phase 1 proof posture for MCP-style runs is explicit in public product surfaces"
|
|
38
|
+
]
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function summarizePhase1ClaudeMcpPack() {
|
|
43
|
+
const pack = buildPhase1ClaudeMcpPack();
|
|
44
|
+
return {
|
|
45
|
+
ok: true,
|
|
46
|
+
product: pack.product,
|
|
47
|
+
category: pack.category,
|
|
48
|
+
phase_ref: pack.phase_ref,
|
|
49
|
+
ecosystem_ref: pack.ecosystem_ref,
|
|
50
|
+
surface_count: pack.scope.first_surfaces.length,
|
|
51
|
+
command_count: pack.scope.first_commands.length,
|
|
52
|
+
done_mean_count: pack.done_means.length,
|
|
53
|
+
first_surface: pack.scope.first_surfaces[0] || null
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = {
|
|
58
|
+
buildPhase1ClaudeMcpPack,
|
|
59
|
+
summarizePhase1ClaudeMcpPack
|
|
60
|
+
};
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const packageJson = require("../package.json");
|
|
4
|
-
|
|
5
|
-
function buildPhase1ClaudeMcpProofPack() {
|
|
6
|
-
return {
|
|
7
|
-
ok: true,
|
|
8
|
-
product: packageJson.name,
|
|
9
|
-
category: "proof-phase-1-claude-mcp-proof-pack",
|
|
10
|
-
phase_ref: "phase_1",
|
|
11
|
-
ecosystem_ref: "claude_anthropic_mcp",
|
|
12
|
-
posture: "proof_path",
|
|
13
|
-
first_path: {
|
|
14
|
-
purpose: "review an MCP-style adapter-origin run through xoonya's bridge and result-package proof surfaces",
|
|
15
|
-
first_http_sequence: [
|
|
16
|
-
"/v1/proof-center/bridge/summary",
|
|
17
|
-
"/v1/proof-center/result-package-handoff/review/summary",
|
|
18
|
-
"/v1/outreach-proof/summary"
|
|
19
|
-
],
|
|
20
|
-
first_cli_sequence: [
|
|
21
|
-
"xoonya-release --phase-1-claude-mcp-proof --summary",
|
|
22
|
-
"xoonya-review --file ./handoff.json --summary"
|
|
23
|
-
],
|
|
24
|
-
expected_signals: [
|
|
25
|
-
"MCP-style adapter-origin results have a concrete proof review path",
|
|
26
|
-
"bridge-aware continuation is visible as a bounded public surface",
|
|
27
|
-
"proof review for weak-trust tool use feels native instead of improvised"
|
|
28
|
-
],
|
|
29
|
-
intake_expectations: [
|
|
30
|
-
"handoff_bundle.result_package_ref or source_ref",
|
|
31
|
-
"handoff_bundle.seam_layers including bridge-aware carry when relevant",
|
|
32
|
-
"handoff_bundle.transaction_id or proof_ref"
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function summarizePhase1ClaudeMcpProofPack() {
|
|
39
|
-
const pack = buildPhase1ClaudeMcpProofPack();
|
|
40
|
-
return {
|
|
41
|
-
ok: true,
|
|
42
|
-
product: pack.product,
|
|
43
|
-
category: pack.category,
|
|
44
|
-
phase_ref: pack.phase_ref,
|
|
45
|
-
ecosystem_ref: pack.ecosystem_ref,
|
|
46
|
-
http_step_count: pack.first_path.first_http_sequence.length,
|
|
47
|
-
cli_step_count: pack.first_path.first_cli_sequence.length,
|
|
48
|
-
signal_count: pack.first_path.expected_signals.length,
|
|
49
|
-
intake_count: pack.first_path.intake_expectations.length,
|
|
50
|
-
first_http_step: pack.first_path.first_http_sequence[0] || null
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
module.exports = {
|
|
55
|
-
buildPhase1ClaudeMcpProofPack,
|
|
56
|
-
summarizePhase1ClaudeMcpProofPack
|
|
57
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildPhase1ClaudeMcpProofPack() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-phase-1-claude-mcp-proof-pack",
|
|
10
|
+
phase_ref: "phase_1",
|
|
11
|
+
ecosystem_ref: "claude_anthropic_mcp",
|
|
12
|
+
posture: "proof_path",
|
|
13
|
+
first_path: {
|
|
14
|
+
purpose: "review an MCP-style adapter-origin run through xoonya's bridge and result-package proof surfaces",
|
|
15
|
+
first_http_sequence: [
|
|
16
|
+
"/v1/proof-center/bridge/summary",
|
|
17
|
+
"/v1/proof-center/result-package-handoff/review/summary",
|
|
18
|
+
"/v1/outreach-proof/summary"
|
|
19
|
+
],
|
|
20
|
+
first_cli_sequence: [
|
|
21
|
+
"xoonya-release --phase-1-claude-mcp-proof --summary",
|
|
22
|
+
"xoonya-review --file ./handoff.json --summary"
|
|
23
|
+
],
|
|
24
|
+
expected_signals: [
|
|
25
|
+
"MCP-style adapter-origin results have a concrete proof review path",
|
|
26
|
+
"bridge-aware continuation is visible as a bounded public surface",
|
|
27
|
+
"proof review for weak-trust tool use feels native instead of improvised"
|
|
28
|
+
],
|
|
29
|
+
intake_expectations: [
|
|
30
|
+
"handoff_bundle.result_package_ref or source_ref",
|
|
31
|
+
"handoff_bundle.seam_layers including bridge-aware carry when relevant",
|
|
32
|
+
"handoff_bundle.transaction_id or proof_ref"
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function summarizePhase1ClaudeMcpProofPack() {
|
|
39
|
+
const pack = buildPhase1ClaudeMcpProofPack();
|
|
40
|
+
return {
|
|
41
|
+
ok: true,
|
|
42
|
+
product: pack.product,
|
|
43
|
+
category: pack.category,
|
|
44
|
+
phase_ref: pack.phase_ref,
|
|
45
|
+
ecosystem_ref: pack.ecosystem_ref,
|
|
46
|
+
http_step_count: pack.first_path.first_http_sequence.length,
|
|
47
|
+
cli_step_count: pack.first_path.first_cli_sequence.length,
|
|
48
|
+
signal_count: pack.first_path.expected_signals.length,
|
|
49
|
+
intake_count: pack.first_path.intake_expectations.length,
|
|
50
|
+
first_http_step: pack.first_path.first_http_sequence[0] || null
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
module.exports = {
|
|
55
|
+
buildPhase1ClaudeMcpProofPack,
|
|
56
|
+
summarizePhase1ClaudeMcpProofPack
|
|
57
|
+
};
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const packageJson = require("../package.json");
|
|
4
|
-
|
|
5
|
-
function buildPhase1EcosystemPack() {
|
|
6
|
-
return {
|
|
7
|
-
ok: true,
|
|
8
|
-
product: packageJson.name,
|
|
9
|
-
category: "proof-phase-1-ecosystem-pack",
|
|
10
|
-
phase_ref: "phase_1",
|
|
11
|
-
ecosystems: [
|
|
12
|
-
{
|
|
13
|
-
ecosystem_ref: "openai_codex",
|
|
14
|
-
status: "active",
|
|
15
|
-
main_repo_weight: "xoonya_medium",
|
|
16
|
-
goal: "proof-side continuation and review for tool-using agent runs",
|
|
17
|
-
first_artifacts: ["/v1/release-center/summary", "/v1/release-pack/scenarios/summary"],
|
|
18
|
-
first_cli: ["xoonya-release --center --summary", "xoonya-review --file ./handoff.json --summary"]
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
ecosystem_ref: "claude_anthropic_mcp",
|
|
22
|
-
status: "active",
|
|
23
|
-
main_repo_weight: "xoonya_medium",
|
|
24
|
-
goal: "proof review and carried handoff posture for MCP-style adapter-origin runs",
|
|
25
|
-
first_artifacts: ["/v1/outreach-proof/summary", "/v1/release-pack/scenarios/summary"],
|
|
26
|
-
first_cli: ["xoonya-release --outreach-proof --summary", "xoonya-review --file ./handoff.json --summary"]
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
done_means: [
|
|
30
|
-
"Phase 1 ecosystems have an explicit proof-side first path",
|
|
31
|
-
"early ecosystem users can see how runtime facts continue into review artifacts",
|
|
32
|
-
"the phase is visible in release-facing surfaces rather than only in roadmap notes"
|
|
33
|
-
]
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function summarizePhase1EcosystemPack() {
|
|
38
|
-
const pack = buildPhase1EcosystemPack();
|
|
39
|
-
return {
|
|
40
|
-
ok: true,
|
|
41
|
-
product: pack.product,
|
|
42
|
-
category: pack.category,
|
|
43
|
-
phase_ref: pack.phase_ref,
|
|
44
|
-
ecosystem_count: pack.ecosystems.length,
|
|
45
|
-
active_count: pack.ecosystems.filter((entry) => entry.status === "active").length,
|
|
46
|
-
done_mean_count: pack.done_means.length,
|
|
47
|
-
first_ecosystem: pack.ecosystems[0] ? pack.ecosystems[0].ecosystem_ref : null
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
module.exports = { buildPhase1EcosystemPack, summarizePhase1EcosystemPack };
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildPhase1EcosystemPack() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-phase-1-ecosystem-pack",
|
|
10
|
+
phase_ref: "phase_1",
|
|
11
|
+
ecosystems: [
|
|
12
|
+
{
|
|
13
|
+
ecosystem_ref: "openai_codex",
|
|
14
|
+
status: "active",
|
|
15
|
+
main_repo_weight: "xoonya_medium",
|
|
16
|
+
goal: "proof-side continuation and review for tool-using agent runs",
|
|
17
|
+
first_artifacts: ["/v1/release-center/summary", "/v1/release-pack/scenarios/summary"],
|
|
18
|
+
first_cli: ["xoonya-release --center --summary", "xoonya-review --file ./handoff.json --summary"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
ecosystem_ref: "claude_anthropic_mcp",
|
|
22
|
+
status: "active",
|
|
23
|
+
main_repo_weight: "xoonya_medium",
|
|
24
|
+
goal: "proof review and carried handoff posture for MCP-style adapter-origin runs",
|
|
25
|
+
first_artifacts: ["/v1/outreach-proof/summary", "/v1/release-pack/scenarios/summary"],
|
|
26
|
+
first_cli: ["xoonya-release --outreach-proof --summary", "xoonya-review --file ./handoff.json --summary"]
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
done_means: [
|
|
30
|
+
"Phase 1 ecosystems have an explicit proof-side first path",
|
|
31
|
+
"early ecosystem users can see how runtime facts continue into review artifacts",
|
|
32
|
+
"the phase is visible in release-facing surfaces rather than only in roadmap notes"
|
|
33
|
+
]
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function summarizePhase1EcosystemPack() {
|
|
38
|
+
const pack = buildPhase1EcosystemPack();
|
|
39
|
+
return {
|
|
40
|
+
ok: true,
|
|
41
|
+
product: pack.product,
|
|
42
|
+
category: pack.category,
|
|
43
|
+
phase_ref: pack.phase_ref,
|
|
44
|
+
ecosystem_count: pack.ecosystems.length,
|
|
45
|
+
active_count: pack.ecosystems.filter((entry) => entry.status === "active").length,
|
|
46
|
+
done_mean_count: pack.done_means.length,
|
|
47
|
+
first_ecosystem: pack.ecosystems[0] ? pack.ecosystems[0].ecosystem_ref : null
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
module.exports = { buildPhase1EcosystemPack, summarizePhase1EcosystemPack };
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const packageJson = require("../package.json");
|
|
4
|
-
|
|
5
|
-
function buildPhase1OpenaiCodexPack() {
|
|
6
|
-
return {
|
|
7
|
-
ok: true,
|
|
8
|
-
product: packageJson.name,
|
|
9
|
-
category: "proof-phase-1-openai-codex-pack",
|
|
10
|
-
phase_ref: "phase_1",
|
|
11
|
-
ecosystem_ref: "openai_codex",
|
|
12
|
-
status: "active",
|
|
13
|
-
adoption_wedge: "proof-side continuation and review for tool-using agent runs",
|
|
14
|
-
main_repo_weight: "xoonya_medium",
|
|
15
|
-
scope: {
|
|
16
|
-
proof_posture: [
|
|
17
|
-
"runtime-to-proof followthrough",
|
|
18
|
-
"result package review",
|
|
19
|
-
"economic consequence carry",
|
|
20
|
-
"reviewable handoff bundles"
|
|
21
|
-
],
|
|
22
|
-
first_surfaces: [
|
|
23
|
-
"/v1/release-center/summary",
|
|
24
|
-
"/v1/release-pack/scenarios/summary",
|
|
25
|
-
"/v1/outreach-proof/summary",
|
|
26
|
-
"/v1/proof-center/result-package-handoff/summary"
|
|
27
|
-
],
|
|
28
|
-
first_commands: [
|
|
29
|
-
"xoonya-release --center --summary",
|
|
30
|
-
"xoonya-release --phase-1-openai-codex --summary",
|
|
31
|
-
"xoonya-review --file ./handoff.json --summary"
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
done_means: [
|
|
35
|
-
"outside builders can see how xoonya continues runtime facts into review artifacts for OpenAI/Codex-style runs",
|
|
36
|
-
"the first proof-side OpenAI/Codex path is clear enough to try from one CLI and one release-center route",
|
|
37
|
-
"Phase 1 proof posture is explicit in public product surfaces"
|
|
38
|
-
]
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function summarizePhase1OpenaiCodexPack() {
|
|
43
|
-
const pack = buildPhase1OpenaiCodexPack();
|
|
44
|
-
return {
|
|
45
|
-
ok: true,
|
|
46
|
-
product: pack.product,
|
|
47
|
-
category: pack.category,
|
|
48
|
-
phase_ref: pack.phase_ref,
|
|
49
|
-
ecosystem_ref: pack.ecosystem_ref,
|
|
50
|
-
surface_count: pack.scope.first_surfaces.length,
|
|
51
|
-
command_count: pack.scope.first_commands.length,
|
|
52
|
-
done_mean_count: pack.done_means.length,
|
|
53
|
-
first_surface: pack.scope.first_surfaces[0] || null
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
module.exports = {
|
|
58
|
-
buildPhase1OpenaiCodexPack,
|
|
59
|
-
summarizePhase1OpenaiCodexPack
|
|
60
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
|
|
5
|
+
function buildPhase1OpenaiCodexPack() {
|
|
6
|
+
return {
|
|
7
|
+
ok: true,
|
|
8
|
+
product: packageJson.name,
|
|
9
|
+
category: "proof-phase-1-openai-codex-pack",
|
|
10
|
+
phase_ref: "phase_1",
|
|
11
|
+
ecosystem_ref: "openai_codex",
|
|
12
|
+
status: "active",
|
|
13
|
+
adoption_wedge: "proof-side continuation and review for tool-using agent runs",
|
|
14
|
+
main_repo_weight: "xoonya_medium",
|
|
15
|
+
scope: {
|
|
16
|
+
proof_posture: [
|
|
17
|
+
"runtime-to-proof followthrough",
|
|
18
|
+
"result package review",
|
|
19
|
+
"economic consequence carry",
|
|
20
|
+
"reviewable handoff bundles"
|
|
21
|
+
],
|
|
22
|
+
first_surfaces: [
|
|
23
|
+
"/v1/release-center/summary",
|
|
24
|
+
"/v1/release-pack/scenarios/summary",
|
|
25
|
+
"/v1/outreach-proof/summary",
|
|
26
|
+
"/v1/proof-center/result-package-handoff/summary"
|
|
27
|
+
],
|
|
28
|
+
first_commands: [
|
|
29
|
+
"xoonya-release --center --summary",
|
|
30
|
+
"xoonya-release --phase-1-openai-codex --summary",
|
|
31
|
+
"xoonya-review --file ./handoff.json --summary"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
done_means: [
|
|
35
|
+
"outside builders can see how xoonya continues runtime facts into review artifacts for OpenAI/Codex-style runs",
|
|
36
|
+
"the first proof-side OpenAI/Codex path is clear enough to try from one CLI and one release-center route",
|
|
37
|
+
"Phase 1 proof posture is explicit in public product surfaces"
|
|
38
|
+
]
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function summarizePhase1OpenaiCodexPack() {
|
|
43
|
+
const pack = buildPhase1OpenaiCodexPack();
|
|
44
|
+
return {
|
|
45
|
+
ok: true,
|
|
46
|
+
product: pack.product,
|
|
47
|
+
category: pack.category,
|
|
48
|
+
phase_ref: pack.phase_ref,
|
|
49
|
+
ecosystem_ref: pack.ecosystem_ref,
|
|
50
|
+
surface_count: pack.scope.first_surfaces.length,
|
|
51
|
+
command_count: pack.scope.first_commands.length,
|
|
52
|
+
done_mean_count: pack.done_means.length,
|
|
53
|
+
first_surface: pack.scope.first_surfaces[0] || null
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = {
|
|
58
|
+
buildPhase1OpenaiCodexPack,
|
|
59
|
+
summarizePhase1OpenaiCodexPack
|
|
60
|
+
};
|