xoonya 2.3.0 → 2.4.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 -5
- package/lib/role_freeze.js +436 -0
- package/package.json +1 -1
- package/server.js +223 -0
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# xoonya 2.
|
|
1
|
+
# xoonya 2.4.0 Release Notes
|
|
2
2
|
|
|
3
|
-
`xoonya` 2.
|
|
3
|
+
`xoonya` 2.4.0 is the proof-role freeze and transition-clarity line.
|
|
4
4
|
|
|
5
5
|
Highlights:
|
|
6
6
|
|
|
@@ -9,6 +9,9 @@ Highlights:
|
|
|
9
9
|
- review intelligence for governance burden, dispute risk, and dependency posture
|
|
10
10
|
- governance intelligence for escalation, signoff, and handoff continuity
|
|
11
11
|
- bridge intelligence for compatibility strength and bridge coverage posture
|
|
12
|
+
- explicit proof-role freeze, operator bundle, policy pack, and package surfaces
|
|
13
|
+
- explicit role-transition package recording long-term coordination-shell direction
|
|
14
|
+
- explicit capability-registry-home package recording `xytara` as current home and `xoonya` as the later canonical target
|
|
12
15
|
- canonical event, receipt, and proof-bundle model with stable runtime-to-proof followthrough
|
|
13
16
|
- partner-ready onboarding, launch docs, and public example paths remain in place
|
|
14
17
|
|
|
@@ -18,12 +21,15 @@ Recommended first checks:
|
|
|
18
21
|
2. `xoonya-release --candidate --summary`
|
|
19
22
|
3. `npm run verify:release-candidate`
|
|
20
23
|
4. `node examples/partner_proof_walkthrough.js`
|
|
21
|
-
5. inspect `/v1/
|
|
22
|
-
6. inspect `/v1/
|
|
23
|
-
7. inspect `/v1/
|
|
24
|
+
5. inspect `/v1/role-freeze/package`
|
|
25
|
+
6. inspect `/v1/role-transition`
|
|
26
|
+
7. inspect `/v1/capability-registry-home`
|
|
27
|
+
8. inspect `/v1/trust-intelligence` and `/v1/review-intelligence`
|
|
28
|
+
9. inspect `/v1/proof-center/summary` on the deployed service
|
|
24
29
|
|
|
25
30
|
Recommended first docs:
|
|
26
31
|
|
|
27
32
|
- `PROGRAM_COMPLETE_RELEASE.md`
|
|
33
|
+
- `FINAL_CONTRACT.md`
|
|
28
34
|
- `WHY_XYTARA_XOONYA.md`
|
|
29
35
|
- `PARTNER_READY_PATH.md`
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
const proofSdk = require("../proof_sdk");
|
|
5
|
+
const {
|
|
6
|
+
buildTrustIntelligencePack
|
|
7
|
+
} = require("./trust_intelligence");
|
|
8
|
+
const {
|
|
9
|
+
buildReviewIntelligencePack
|
|
10
|
+
} = require("./review_intelligence");
|
|
11
|
+
const {
|
|
12
|
+
buildGovernanceIntelligencePack
|
|
13
|
+
} = require("./governance_intelligence");
|
|
14
|
+
const {
|
|
15
|
+
buildBridgeIntelligencePack
|
|
16
|
+
} = require("./bridge_intelligence");
|
|
17
|
+
|
|
18
|
+
function buildRoleFreezePack() {
|
|
19
|
+
const proofCenterSummary = proofSdk.summarizeDefaultProofCenter();
|
|
20
|
+
const resultPackageHandoffSummary = proofSdk.summarizeInteractionResultPackageHandoffCenter();
|
|
21
|
+
const governanceSummary = proofSdk.summarizeGovernanceCenter();
|
|
22
|
+
const bridgeSummary = proofSdk.summarizeBridgeCenter();
|
|
23
|
+
const trustIntelligence = buildTrustIntelligencePack();
|
|
24
|
+
const reviewIntelligence = buildReviewIntelligencePack();
|
|
25
|
+
const governanceIntelligence = buildGovernanceIntelligencePack();
|
|
26
|
+
const bridgeIntelligence = buildBridgeIntelligencePack();
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
ok: true,
|
|
30
|
+
product: packageJson.name,
|
|
31
|
+
category: "proof-role-freeze-pack",
|
|
32
|
+
frozen_role: "proof_review_governance_bridge_followthrough",
|
|
33
|
+
role_state: "explicitly_frozen",
|
|
34
|
+
owns: [
|
|
35
|
+
"canonical_proof_bundle_model",
|
|
36
|
+
"result_package_review_and_followthrough",
|
|
37
|
+
"governance_review_and_signoff",
|
|
38
|
+
"bridge_and_compatibility_followthrough",
|
|
39
|
+
"proof_side_operator_and_review_intelligence"
|
|
40
|
+
],
|
|
41
|
+
does_not_own: [
|
|
42
|
+
"runtime_execution_ownership",
|
|
43
|
+
"wallet_or_ledger_truth",
|
|
44
|
+
"machine_economics_or_pricing_truth",
|
|
45
|
+
"fiat_ingress_ownership",
|
|
46
|
+
"settlement_authority_ownership"
|
|
47
|
+
],
|
|
48
|
+
role_doctrine: {
|
|
49
|
+
lead_entry_surface: "/v1/proof-center/result-package-handoff/review/summary",
|
|
50
|
+
primary_center_surface: "/v1/proof-center/summary",
|
|
51
|
+
runtime_boundary: "xytara_owns_runtime_wallet_authority_identity_and_economics_truth",
|
|
52
|
+
bridge_boundary: "xoonya_carries_reviewable_proof_followthrough_without_becoming_runtime_core"
|
|
53
|
+
},
|
|
54
|
+
role_strength_signals: {
|
|
55
|
+
proof_helper_count: proofCenterSummary.helper_count,
|
|
56
|
+
result_package_source_ref_count: resultPackageHandoffSummary.source_ref_count,
|
|
57
|
+
governance_capability_count: governanceSummary.capability_count,
|
|
58
|
+
bridge_capability_count: bridgeSummary.capability_count
|
|
59
|
+
},
|
|
60
|
+
intelligence_posture: {
|
|
61
|
+
proof_readiness_state: trustIntelligence.proof_readiness_state,
|
|
62
|
+
review_burden_state: reviewIntelligence.review_burden_state,
|
|
63
|
+
escalation_readiness_state: governanceIntelligence.escalation_readiness_state,
|
|
64
|
+
bridge_coverage_state: bridgeIntelligence.bridge_coverage_state
|
|
65
|
+
},
|
|
66
|
+
linked_surfaces: {
|
|
67
|
+
proof_center_summary_ref: "/v1/proof-center/summary",
|
|
68
|
+
result_package_handoff_summary_ref: "/v1/proof-center/result-package-handoff/summary",
|
|
69
|
+
governance_summary_ref: "/v1/proof-center/governance/summary",
|
|
70
|
+
bridge_summary_ref: "/v1/proof-center/bridge/summary",
|
|
71
|
+
trust_intelligence_summary_ref: "/v1/trust-intelligence/summary",
|
|
72
|
+
review_intelligence_summary_ref: "/v1/review-intelligence/summary",
|
|
73
|
+
governance_intelligence_summary_ref: "/v1/governance-intelligence/summary",
|
|
74
|
+
bridge_intelligence_summary_ref: "/v1/bridge-intelligence/summary"
|
|
75
|
+
},
|
|
76
|
+
generated_from: {
|
|
77
|
+
proof_bundle_version: proofCenterSummary.proof_bundle_version,
|
|
78
|
+
center_ref: proofCenterSummary.center_ref || "/v1/proof-center",
|
|
79
|
+
governance_center_ref: governanceSummary.center_ref,
|
|
80
|
+
bridge_center_ref: bridgeSummary.center_ref
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function summarizeRoleFreezePack() {
|
|
86
|
+
const pack = buildRoleFreezePack();
|
|
87
|
+
return {
|
|
88
|
+
ok: true,
|
|
89
|
+
product: pack.product,
|
|
90
|
+
category: pack.category,
|
|
91
|
+
frozen_role: pack.frozen_role,
|
|
92
|
+
role_state: pack.role_state,
|
|
93
|
+
lead_entry_surface: pack.role_doctrine.lead_entry_surface,
|
|
94
|
+
owns_count: pack.owns.length,
|
|
95
|
+
does_not_own_count: pack.does_not_own.length
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function buildRoleFreezeOperatorBundle() {
|
|
100
|
+
const roleFreeze = buildRoleFreezePack();
|
|
101
|
+
const trustIntelligence = buildTrustIntelligencePack();
|
|
102
|
+
const reviewIntelligence = buildReviewIntelligencePack();
|
|
103
|
+
const governanceIntelligence = buildGovernanceIntelligencePack();
|
|
104
|
+
const bridgeIntelligence = buildBridgeIntelligencePack();
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
ok: true,
|
|
108
|
+
product: packageJson.name,
|
|
109
|
+
category: "proof-role-freeze-operator-bundle",
|
|
110
|
+
bundle_version: "xoonya-proof-role-freeze-operator-bundle-v1",
|
|
111
|
+
operator_posture: {
|
|
112
|
+
frozen_role: roleFreeze.frozen_role,
|
|
113
|
+
role_state: roleFreeze.role_state,
|
|
114
|
+
proof_readiness_state: trustIntelligence.proof_readiness_state,
|
|
115
|
+
review_burden_state: reviewIntelligence.review_burden_state,
|
|
116
|
+
escalation_readiness_state: governanceIntelligence.escalation_readiness_state,
|
|
117
|
+
bridge_coverage_state: bridgeIntelligence.bridge_coverage_state,
|
|
118
|
+
recommended_operator_motion: bridgeIntelligence.bridge_coverage_state === "thin"
|
|
119
|
+
? "strengthen_bridge_followthrough"
|
|
120
|
+
: governanceIntelligence.escalation_readiness_state === "active"
|
|
121
|
+
? "advance_governance_followthrough"
|
|
122
|
+
: trustIntelligence.proof_readiness_state !== "strong"
|
|
123
|
+
? "strengthen_result_package_review_entry"
|
|
124
|
+
: "maintain_frozen_proof_role"
|
|
125
|
+
},
|
|
126
|
+
role_freeze: roleFreeze,
|
|
127
|
+
trust_intelligence: trustIntelligence,
|
|
128
|
+
review_intelligence: reviewIntelligence,
|
|
129
|
+
governance_intelligence: governanceIntelligence,
|
|
130
|
+
bridge_intelligence: bridgeIntelligence,
|
|
131
|
+
linked_surfaces: {
|
|
132
|
+
role_freeze_ref: "/v1/role-freeze",
|
|
133
|
+
role_freeze_summary_ref: "/v1/role-freeze/summary",
|
|
134
|
+
trust_intelligence_ref: "/v1/trust-intelligence",
|
|
135
|
+
review_intelligence_ref: "/v1/review-intelligence",
|
|
136
|
+
governance_intelligence_ref: "/v1/governance-intelligence",
|
|
137
|
+
bridge_intelligence_ref: "/v1/bridge-intelligence"
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function summarizeRoleFreezeOperatorBundle() {
|
|
143
|
+
const bundle = buildRoleFreezeOperatorBundle();
|
|
144
|
+
return {
|
|
145
|
+
ok: true,
|
|
146
|
+
product: bundle.product,
|
|
147
|
+
category: bundle.category,
|
|
148
|
+
bundle_version: bundle.bundle_version,
|
|
149
|
+
frozen_role: bundle.operator_posture.frozen_role,
|
|
150
|
+
role_state: bundle.operator_posture.role_state,
|
|
151
|
+
recommended_operator_motion: bundle.operator_posture.recommended_operator_motion
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function buildRoleFreezePolicyPack() {
|
|
156
|
+
const roleFreeze = buildRoleFreezePack();
|
|
157
|
+
const operatorBundle = buildRoleFreezeOperatorBundle();
|
|
158
|
+
const policyTemplates = [
|
|
159
|
+
{
|
|
160
|
+
template_id: "result_package_review_lead",
|
|
161
|
+
recommended_for: "runtime-to-proof followthrough as the main entry path",
|
|
162
|
+
target_motion: "strengthen_result_package_review_entry",
|
|
163
|
+
reinforces: [
|
|
164
|
+
"canonical_proof_bundle_model",
|
|
165
|
+
"result_package_review_and_followthrough"
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
template_id: "governance_followthrough_lead",
|
|
170
|
+
recommended_for: "active signoff and escalation pressure",
|
|
171
|
+
target_motion: "advance_governance_followthrough",
|
|
172
|
+
reinforces: [
|
|
173
|
+
"governance_review_and_signoff",
|
|
174
|
+
"proof_side_operator_and_review_intelligence"
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
template_id: "bridge_followthrough_lead",
|
|
179
|
+
recommended_for: "thin bridge coverage or compatibility reinforcement",
|
|
180
|
+
target_motion: "strengthen_bridge_followthrough",
|
|
181
|
+
reinforces: [
|
|
182
|
+
"bridge_and_compatibility_followthrough",
|
|
183
|
+
"proof_side_operator_and_review_intelligence"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
template_id: "frozen_role_maintenance",
|
|
188
|
+
recommended_for: "strong balanced proof-side posture",
|
|
189
|
+
target_motion: "maintain_frozen_proof_role",
|
|
190
|
+
reinforces: roleFreeze.owns.slice()
|
|
191
|
+
}
|
|
192
|
+
];
|
|
193
|
+
|
|
194
|
+
return {
|
|
195
|
+
ok: true,
|
|
196
|
+
product: packageJson.name,
|
|
197
|
+
category: "proof-role-freeze-policy-pack",
|
|
198
|
+
pack_version: "xoonya-proof-role-freeze-policy-pack-v1",
|
|
199
|
+
role_freeze: roleFreeze,
|
|
200
|
+
operator_bundle: operatorBundle,
|
|
201
|
+
recommended_policy_motion: operatorBundle.operator_posture.recommended_operator_motion,
|
|
202
|
+
policy_templates: policyTemplates,
|
|
203
|
+
linked_surfaces: {
|
|
204
|
+
role_freeze_ref: "/v1/role-freeze",
|
|
205
|
+
role_freeze_operator_bundle_ref: "/v1/role-freeze/operator-bundle",
|
|
206
|
+
role_freeze_policy_application_summary_ref: "/v1/role-freeze/policy-application-summary"
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function summarizeRoleFreezePolicyPack() {
|
|
212
|
+
const pack = buildRoleFreezePolicyPack();
|
|
213
|
+
return {
|
|
214
|
+
ok: true,
|
|
215
|
+
product: pack.product,
|
|
216
|
+
category: pack.category,
|
|
217
|
+
pack_version: pack.pack_version,
|
|
218
|
+
recommended_policy_motion: pack.recommended_policy_motion,
|
|
219
|
+
template_count: pack.policy_templates.length
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function buildRoleFreezePolicyApplicationSummary(templateId) {
|
|
224
|
+
const pack = buildRoleFreezePolicyPack();
|
|
225
|
+
const selectedTemplate = pack.policy_templates.find((entry) => entry.template_id === templateId)
|
|
226
|
+
|| pack.policy_templates.find((entry) => entry.target_motion === pack.recommended_policy_motion)
|
|
227
|
+
|| pack.policy_templates[0];
|
|
228
|
+
return {
|
|
229
|
+
ok: true,
|
|
230
|
+
product: packageJson.name,
|
|
231
|
+
category: "proof-role-freeze-policy-application-summary",
|
|
232
|
+
summary_version: "xoonya-proof-role-freeze-policy-application-summary-v1",
|
|
233
|
+
recommended_policy_motion: pack.recommended_policy_motion,
|
|
234
|
+
selected_template_id: selectedTemplate ? selectedTemplate.template_id : null,
|
|
235
|
+
selected_template: selectedTemplate || null,
|
|
236
|
+
available_template_ids: pack.policy_templates.map((entry) => entry.template_id),
|
|
237
|
+
linked_surfaces: {
|
|
238
|
+
role_freeze_policy_pack_ref: "/v1/role-freeze/policy-pack",
|
|
239
|
+
role_freeze_operator_bundle_ref: "/v1/role-freeze/operator-bundle"
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function buildRoleFreezePackage() {
|
|
245
|
+
const roleFreeze = buildRoleFreezePack();
|
|
246
|
+
const operatorBundle = buildRoleFreezeOperatorBundle();
|
|
247
|
+
const policyPack = buildRoleFreezePolicyPack();
|
|
248
|
+
const policyApplicationSummary = buildRoleFreezePolicyApplicationSummary(null);
|
|
249
|
+
return {
|
|
250
|
+
ok: true,
|
|
251
|
+
product: packageJson.name,
|
|
252
|
+
category: "proof-role-freeze-package",
|
|
253
|
+
package_version: "xoonya-proof-role-freeze-package-v1",
|
|
254
|
+
package_posture: {
|
|
255
|
+
frozen_role: roleFreeze.frozen_role,
|
|
256
|
+
role_state: roleFreeze.role_state,
|
|
257
|
+
recommended_operator_motion: operatorBundle.operator_posture.recommended_operator_motion,
|
|
258
|
+
recommended_policy_motion: policyPack.recommended_policy_motion
|
|
259
|
+
},
|
|
260
|
+
role_freeze: roleFreeze,
|
|
261
|
+
role_freeze_operator_bundle: operatorBundle,
|
|
262
|
+
role_freeze_policy_pack: policyPack,
|
|
263
|
+
role_freeze_policy_application_summary: policyApplicationSummary,
|
|
264
|
+
linked_surfaces: {
|
|
265
|
+
role_freeze_ref: "/v1/role-freeze",
|
|
266
|
+
role_freeze_operator_bundle_ref: "/v1/role-freeze/operator-bundle",
|
|
267
|
+
role_freeze_policy_pack_ref: "/v1/role-freeze/policy-pack",
|
|
268
|
+
role_freeze_policy_application_summary_ref: "/v1/role-freeze/policy-application-summary"
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function summarizeRoleFreezePackage() {
|
|
274
|
+
const pack = buildRoleFreezePackage();
|
|
275
|
+
return {
|
|
276
|
+
ok: true,
|
|
277
|
+
product: pack.product,
|
|
278
|
+
category: pack.category,
|
|
279
|
+
package_version: pack.package_version,
|
|
280
|
+
frozen_role: pack.package_posture.frozen_role,
|
|
281
|
+
role_state: pack.package_posture.role_state,
|
|
282
|
+
recommended_operator_motion: pack.package_posture.recommended_operator_motion,
|
|
283
|
+
recommended_policy_motion: pack.package_posture.recommended_policy_motion
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
function buildRoleTransitionPack() {
|
|
288
|
+
const roleFreeze = buildRoleFreezePack();
|
|
289
|
+
const roleFreezePackage = buildRoleFreezePackage();
|
|
290
|
+
return {
|
|
291
|
+
ok: true,
|
|
292
|
+
product: packageJson.name,
|
|
293
|
+
category: "proof-role-transition-pack",
|
|
294
|
+
package_version: "xoonya-proof-role-transition-pack-v1",
|
|
295
|
+
current_role: {
|
|
296
|
+
frozen_role: roleFreeze.frozen_role,
|
|
297
|
+
role_state: roleFreeze.role_state,
|
|
298
|
+
current_primary_posture: "proof_primary"
|
|
299
|
+
},
|
|
300
|
+
long_term_direction: {
|
|
301
|
+
target_role: "capability_execution_coordination_shell_with_proof_strength",
|
|
302
|
+
direction_state: "explicit_direction_recorded",
|
|
303
|
+
current_transition_state: "proof_primary_today_coordination_shell_later",
|
|
304
|
+
rationale: [
|
|
305
|
+
"xytara remains canonical wallet_ledger_authority_identity_and_pricing_truth",
|
|
306
|
+
"xoonya remains the strongest home for proof review governance bridge and execution-adjacent followthrough",
|
|
307
|
+
"future canonical capability ownership may move toward xoonya if coordination-shell direction is affirmed"
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
boundary_guardrails: {
|
|
311
|
+
xytara_must_continue_to_own: [
|
|
312
|
+
"wallet_truth",
|
|
313
|
+
"ledger_truth",
|
|
314
|
+
"authority_truth",
|
|
315
|
+
"machine_economics_truth",
|
|
316
|
+
"fiat_ingress_and_settlement_truth"
|
|
317
|
+
],
|
|
318
|
+
xoonya_may_expand_to_own: [
|
|
319
|
+
"capability_identity",
|
|
320
|
+
"capability_execution_coordination",
|
|
321
|
+
"capability_registry_source_of_truth"
|
|
322
|
+
],
|
|
323
|
+
xoonya_must_not_absorb: [
|
|
324
|
+
"wallet_balances",
|
|
325
|
+
"economic_capacity_truth",
|
|
326
|
+
"pricing_settlement_authority",
|
|
327
|
+
"adapter_or_fiat_business_logic"
|
|
328
|
+
]
|
|
329
|
+
},
|
|
330
|
+
transition_readiness_signals: {
|
|
331
|
+
proof_readiness_state: roleFreeze.intelligence_posture.proof_readiness_state,
|
|
332
|
+
review_burden_state: roleFreezePackage.role_freeze_operator_bundle.review_intelligence.review_burden_state,
|
|
333
|
+
bridge_coverage_state: roleFreezePackage.role_freeze_operator_bundle.bridge_intelligence.bridge_coverage_state,
|
|
334
|
+
governance_posture_state: roleFreezePackage.role_freeze_operator_bundle.governance_intelligence.signoff_motion_state
|
|
335
|
+
},
|
|
336
|
+
recommended_transition_motion: roleFreezePackage.role_freeze_operator_bundle.operator_posture.recommended_operator_motion === "maintain_frozen_proof_role"
|
|
337
|
+
? "record_transition_guardrails_and_prepare_registry_home_decision"
|
|
338
|
+
: "strengthen_proof_followthrough_before_coordination_expansion",
|
|
339
|
+
linked_surfaces: {
|
|
340
|
+
role_freeze_ref: "/v1/role-freeze",
|
|
341
|
+
role_freeze_package_ref: "/v1/role-freeze/package",
|
|
342
|
+
role_transition_summary_ref: "/v1/role-transition/summary"
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
function summarizeRoleTransitionPack() {
|
|
348
|
+
const pack = buildRoleTransitionPack();
|
|
349
|
+
return {
|
|
350
|
+
ok: true,
|
|
351
|
+
product: pack.product,
|
|
352
|
+
category: pack.category,
|
|
353
|
+
package_version: pack.package_version,
|
|
354
|
+
current_primary_posture: pack.current_role.current_primary_posture,
|
|
355
|
+
target_role: pack.long_term_direction.target_role,
|
|
356
|
+
current_transition_state: pack.long_term_direction.current_transition_state,
|
|
357
|
+
recommended_transition_motion: pack.recommended_transition_motion
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
function buildCapabilityRegistryHomePack() {
|
|
362
|
+
const roleTransition = buildRoleTransitionPack();
|
|
363
|
+
return {
|
|
364
|
+
ok: true,
|
|
365
|
+
product: packageJson.name,
|
|
366
|
+
category: "proof-capability-registry-home-pack",
|
|
367
|
+
package_version: "xoonya-proof-capability-registry-home-pack-v1",
|
|
368
|
+
current_registry_home: {
|
|
369
|
+
current_owner: "xytara",
|
|
370
|
+
current_state: "explicit_runtime_registry_active",
|
|
371
|
+
current_primary_surface: "xytara:/v1/capability-registry"
|
|
372
|
+
},
|
|
373
|
+
target_registry_home: {
|
|
374
|
+
target_owner: "xoonya",
|
|
375
|
+
target_state: "direction_recorded_not_yet_migrated",
|
|
376
|
+
target_role_dependency: "xoonya_as_capability_execution_coordination_shell"
|
|
377
|
+
},
|
|
378
|
+
migration_guardrails: {
|
|
379
|
+
xytara_keeps: [
|
|
380
|
+
"capability_refs_needed_for_wallet_authority_pricing_and_consequence",
|
|
381
|
+
"runtime_settlement_and_economics_binding_truth"
|
|
382
|
+
],
|
|
383
|
+
xoonya_may_become_source_of_truth_for: [
|
|
384
|
+
"capability_identity",
|
|
385
|
+
"capability_owner_identity",
|
|
386
|
+
"capability_execution_coordination_semantics",
|
|
387
|
+
"capability_registry_publication_and_discovery"
|
|
388
|
+
],
|
|
389
|
+
migration_preconditions: [
|
|
390
|
+
"role_transition_direction_is_explicit",
|
|
391
|
+
"registry_home_split_is_machine_readable",
|
|
392
|
+
"xytara_can_continue_to_resolve_stable_capability_refs_after_transition"
|
|
393
|
+
]
|
|
394
|
+
},
|
|
395
|
+
current_transition_alignment: {
|
|
396
|
+
role_transition_state: roleTransition.long_term_direction.current_transition_state,
|
|
397
|
+
target_role: roleTransition.long_term_direction.target_role,
|
|
398
|
+
alignment_state: "registry_direction_matches_role_transition"
|
|
399
|
+
},
|
|
400
|
+
recommended_registry_home_motion: "keep_runtime_registry_in_xytara_while_recording_xoonya_as_target_canonical_home",
|
|
401
|
+
linked_surfaces: {
|
|
402
|
+
role_transition_ref: "/v1/role-transition",
|
|
403
|
+
role_transition_summary_ref: "/v1/role-transition/summary"
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
function summarizeCapabilityRegistryHomePack() {
|
|
409
|
+
const pack = buildCapabilityRegistryHomePack();
|
|
410
|
+
return {
|
|
411
|
+
ok: true,
|
|
412
|
+
product: pack.product,
|
|
413
|
+
category: pack.category,
|
|
414
|
+
package_version: pack.package_version,
|
|
415
|
+
current_owner: pack.current_registry_home.current_owner,
|
|
416
|
+
target_owner: pack.target_registry_home.target_owner,
|
|
417
|
+
target_state: pack.target_registry_home.target_state,
|
|
418
|
+
recommended_registry_home_motion: pack.recommended_registry_home_motion
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
module.exports = {
|
|
423
|
+
buildRoleFreezePack,
|
|
424
|
+
summarizeRoleFreezePack,
|
|
425
|
+
buildRoleFreezeOperatorBundle,
|
|
426
|
+
summarizeRoleFreezeOperatorBundle,
|
|
427
|
+
buildRoleFreezePolicyPack,
|
|
428
|
+
summarizeRoleFreezePolicyPack,
|
|
429
|
+
buildRoleFreezePolicyApplicationSummary,
|
|
430
|
+
buildRoleFreezePackage,
|
|
431
|
+
summarizeRoleFreezePackage,
|
|
432
|
+
buildRoleTransitionPack,
|
|
433
|
+
summarizeRoleTransitionPack,
|
|
434
|
+
buildCapabilityRegistryHomePack,
|
|
435
|
+
summarizeCapabilityRegistryHomePack
|
|
436
|
+
};
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -75,6 +75,21 @@ const {
|
|
|
75
75
|
buildBridgeIntelligencePack,
|
|
76
76
|
summarizeBridgeIntelligencePack
|
|
77
77
|
} = require('./lib/bridge_intelligence');
|
|
78
|
+
const {
|
|
79
|
+
buildRoleFreezePack,
|
|
80
|
+
summarizeRoleFreezePack,
|
|
81
|
+
buildRoleFreezeOperatorBundle,
|
|
82
|
+
summarizeRoleFreezeOperatorBundle,
|
|
83
|
+
buildRoleFreezePolicyPack,
|
|
84
|
+
summarizeRoleFreezePolicyPack,
|
|
85
|
+
buildRoleFreezePolicyApplicationSummary,
|
|
86
|
+
buildRoleFreezePackage,
|
|
87
|
+
summarizeRoleFreezePackage,
|
|
88
|
+
buildRoleTransitionPack,
|
|
89
|
+
summarizeRoleTransitionPack,
|
|
90
|
+
buildCapabilityRegistryHomePack,
|
|
91
|
+
summarizeCapabilityRegistryHomePack
|
|
92
|
+
} = require('./lib/role_freeze');
|
|
78
93
|
const {
|
|
79
94
|
buildReleaseCandidatePack,
|
|
80
95
|
summarizeReleaseCandidatePack
|
|
@@ -1985,6 +2000,71 @@ async function routeRequest(req, res) {
|
|
|
1985
2000
|
return;
|
|
1986
2001
|
}
|
|
1987
2002
|
|
|
2003
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze') {
|
|
2004
|
+
sendJson(res, 200, buildRoleFreezePack());
|
|
2005
|
+
return;
|
|
2006
|
+
}
|
|
2007
|
+
|
|
2008
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/summary') {
|
|
2009
|
+
sendJson(res, 200, summarizeRoleFreezePack());
|
|
2010
|
+
return;
|
|
2011
|
+
}
|
|
2012
|
+
|
|
2013
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/operator-bundle') {
|
|
2014
|
+
sendJson(res, 200, buildRoleFreezeOperatorBundle());
|
|
2015
|
+
return;
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2018
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/operator-bundle/summary') {
|
|
2019
|
+
sendJson(res, 200, summarizeRoleFreezeOperatorBundle());
|
|
2020
|
+
return;
|
|
2021
|
+
}
|
|
2022
|
+
|
|
2023
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/policy-pack') {
|
|
2024
|
+
sendJson(res, 200, buildRoleFreezePolicyPack());
|
|
2025
|
+
return;
|
|
2026
|
+
}
|
|
2027
|
+
|
|
2028
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/policy-pack/summary') {
|
|
2029
|
+
sendJson(res, 200, summarizeRoleFreezePolicyPack());
|
|
2030
|
+
return;
|
|
2031
|
+
}
|
|
2032
|
+
|
|
2033
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/policy-application-summary') {
|
|
2034
|
+
sendJson(res, 200, buildRoleFreezePolicyApplicationSummary(url.searchParams.get('template_id')));
|
|
2035
|
+
return;
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/package') {
|
|
2039
|
+
sendJson(res, 200, buildRoleFreezePackage());
|
|
2040
|
+
return;
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-freeze/package/summary') {
|
|
2044
|
+
sendJson(res, 200, summarizeRoleFreezePackage());
|
|
2045
|
+
return;
|
|
2046
|
+
}
|
|
2047
|
+
|
|
2048
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-transition') {
|
|
2049
|
+
sendJson(res, 200, buildRoleTransitionPack());
|
|
2050
|
+
return;
|
|
2051
|
+
}
|
|
2052
|
+
|
|
2053
|
+
if (req.method === 'GET' && url.pathname === '/v1/role-transition/summary') {
|
|
2054
|
+
sendJson(res, 200, summarizeRoleTransitionPack());
|
|
2055
|
+
return;
|
|
2056
|
+
}
|
|
2057
|
+
|
|
2058
|
+
if (req.method === 'GET' && url.pathname === '/v1/capability-registry-home') {
|
|
2059
|
+
sendJson(res, 200, buildCapabilityRegistryHomePack());
|
|
2060
|
+
return;
|
|
2061
|
+
}
|
|
2062
|
+
|
|
2063
|
+
if (req.method === 'GET' && url.pathname === '/v1/capability-registry-home/summary') {
|
|
2064
|
+
sendJson(res, 200, summarizeCapabilityRegistryHomePack());
|
|
2065
|
+
return;
|
|
2066
|
+
}
|
|
2067
|
+
|
|
1988
2068
|
if (req.method === 'GET' && url.pathname === '/v1/proof-center') {
|
|
1989
2069
|
sendJson(res, 200, proofSdk.buildDefaultProofCenter());
|
|
1990
2070
|
return;
|
|
@@ -2692,6 +2772,149 @@ async function routeRequest(req, res) {
|
|
|
2692
2772
|
return;
|
|
2693
2773
|
}
|
|
2694
2774
|
|
|
2775
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze') {
|
|
2776
|
+
try {
|
|
2777
|
+
await readJsonBody(req);
|
|
2778
|
+
const result = buildRoleFreezePack();
|
|
2779
|
+
sendJson(res, 200, result);
|
|
2780
|
+
} catch (error) {
|
|
2781
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2782
|
+
}
|
|
2783
|
+
return;
|
|
2784
|
+
}
|
|
2785
|
+
|
|
2786
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/summary') {
|
|
2787
|
+
try {
|
|
2788
|
+
await readJsonBody(req);
|
|
2789
|
+
const result = summarizeRoleFreezePack();
|
|
2790
|
+
sendJson(res, 200, result);
|
|
2791
|
+
} catch (error) {
|
|
2792
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2793
|
+
}
|
|
2794
|
+
return;
|
|
2795
|
+
}
|
|
2796
|
+
|
|
2797
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/operator-bundle') {
|
|
2798
|
+
try {
|
|
2799
|
+
await readJsonBody(req);
|
|
2800
|
+
const result = buildRoleFreezeOperatorBundle();
|
|
2801
|
+
sendJson(res, 200, result);
|
|
2802
|
+
} catch (error) {
|
|
2803
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2804
|
+
}
|
|
2805
|
+
return;
|
|
2806
|
+
}
|
|
2807
|
+
|
|
2808
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/operator-bundle/summary') {
|
|
2809
|
+
try {
|
|
2810
|
+
await readJsonBody(req);
|
|
2811
|
+
const result = summarizeRoleFreezeOperatorBundle();
|
|
2812
|
+
sendJson(res, 200, result);
|
|
2813
|
+
} catch (error) {
|
|
2814
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2815
|
+
}
|
|
2816
|
+
return;
|
|
2817
|
+
}
|
|
2818
|
+
|
|
2819
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/policy-pack') {
|
|
2820
|
+
try {
|
|
2821
|
+
await readJsonBody(req);
|
|
2822
|
+
const result = buildRoleFreezePolicyPack();
|
|
2823
|
+
sendJson(res, 200, result);
|
|
2824
|
+
} catch (error) {
|
|
2825
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2826
|
+
}
|
|
2827
|
+
return;
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/policy-pack/summary') {
|
|
2831
|
+
try {
|
|
2832
|
+
await readJsonBody(req);
|
|
2833
|
+
const result = summarizeRoleFreezePolicyPack();
|
|
2834
|
+
sendJson(res, 200, result);
|
|
2835
|
+
} catch (error) {
|
|
2836
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2837
|
+
}
|
|
2838
|
+
return;
|
|
2839
|
+
}
|
|
2840
|
+
|
|
2841
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/policy-application-summary') {
|
|
2842
|
+
try {
|
|
2843
|
+
const body = await readJsonBody(req);
|
|
2844
|
+
const result = buildRoleFreezePolicyApplicationSummary(body && body.template_id ? body.template_id : null);
|
|
2845
|
+
sendJson(res, 200, result);
|
|
2846
|
+
} catch (error) {
|
|
2847
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2848
|
+
}
|
|
2849
|
+
return;
|
|
2850
|
+
}
|
|
2851
|
+
|
|
2852
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/package') {
|
|
2853
|
+
try {
|
|
2854
|
+
await readJsonBody(req);
|
|
2855
|
+
const result = buildRoleFreezePackage();
|
|
2856
|
+
sendJson(res, 200, result);
|
|
2857
|
+
} catch (error) {
|
|
2858
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2859
|
+
}
|
|
2860
|
+
return;
|
|
2861
|
+
}
|
|
2862
|
+
|
|
2863
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-freeze/package/summary') {
|
|
2864
|
+
try {
|
|
2865
|
+
await readJsonBody(req);
|
|
2866
|
+
const result = summarizeRoleFreezePackage();
|
|
2867
|
+
sendJson(res, 200, result);
|
|
2868
|
+
} catch (error) {
|
|
2869
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2870
|
+
}
|
|
2871
|
+
return;
|
|
2872
|
+
}
|
|
2873
|
+
|
|
2874
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-transition') {
|
|
2875
|
+
try {
|
|
2876
|
+
await readJsonBody(req);
|
|
2877
|
+
const result = buildRoleTransitionPack();
|
|
2878
|
+
sendJson(res, 200, result);
|
|
2879
|
+
} catch (error) {
|
|
2880
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2881
|
+
}
|
|
2882
|
+
return;
|
|
2883
|
+
}
|
|
2884
|
+
|
|
2885
|
+
if (req.method === 'POST' && url.pathname === '/v1/role-transition/summary') {
|
|
2886
|
+
try {
|
|
2887
|
+
await readJsonBody(req);
|
|
2888
|
+
const result = summarizeRoleTransitionPack();
|
|
2889
|
+
sendJson(res, 200, result);
|
|
2890
|
+
} catch (error) {
|
|
2891
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2892
|
+
}
|
|
2893
|
+
return;
|
|
2894
|
+
}
|
|
2895
|
+
|
|
2896
|
+
if (req.method === 'POST' && url.pathname === '/v1/capability-registry-home') {
|
|
2897
|
+
try {
|
|
2898
|
+
await readJsonBody(req);
|
|
2899
|
+
const result = buildCapabilityRegistryHomePack();
|
|
2900
|
+
sendJson(res, 200, result);
|
|
2901
|
+
} catch (error) {
|
|
2902
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2903
|
+
}
|
|
2904
|
+
return;
|
|
2905
|
+
}
|
|
2906
|
+
|
|
2907
|
+
if (req.method === 'POST' && url.pathname === '/v1/capability-registry-home/summary') {
|
|
2908
|
+
try {
|
|
2909
|
+
await readJsonBody(req);
|
|
2910
|
+
const result = summarizeCapabilityRegistryHomePack();
|
|
2911
|
+
sendJson(res, 200, result);
|
|
2912
|
+
} catch (error) {
|
|
2913
|
+
sendJson(res, 400, { ok: false, reason: error.message });
|
|
2914
|
+
}
|
|
2915
|
+
return;
|
|
2916
|
+
}
|
|
2917
|
+
|
|
2695
2918
|
if (req.method === 'POST' && url.pathname === '/v1/proof-center/governance/operator-view') {
|
|
2696
2919
|
try {
|
|
2697
2920
|
const body = await readJsonBody(req);
|