xoonya 1.13.0 → 1.15.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/README.md CHANGED
@@ -136,12 +136,23 @@ Primary proof-model routes:
136
136
  - `POST /v1/proof-center/result-package-handoff/review/extension-boundary`
137
137
  - `POST /v1/proof-center/result-package-handoff/review/default-continuation`
138
138
  - `POST /v1/proof-center/result-package-handoff/review/default-boundary`
139
+ - `POST /v1/proof-center/result-package-handoff/review/contract-summary`
140
+ - `POST /v1/proof-center/result-package-handoff/review/contract-boundary`
141
+ - `POST /v1/proof-center/result-package-handoff/review/contract-carry`
142
+ - `POST /v1/proof-center/result-package-handoff/review/bridge-summary`
143
+ - `POST /v1/proof-center/result-package-handoff/review/bridge-boundary`
144
+ - `POST /v1/proof-center/result-package-handoff/review/bridge-carry`
145
+ - `POST /v1/proof-center/result-package-handoff/review/bridge-run`
139
146
  - `POST /v1/proof-center/result-package-handoff/run`
140
147
 
141
148
  The result-package review surface now also returns a durability summary so the preserved execution, economic, and proof-facing context is easier to inspect before proof-native execution.
142
149
  It also now exposes an extension-readiness summary so the stable post-review proof boundary is easier to treat as a reusable seam.
143
150
  It now also exposes a reusable-default continuation summary so that same stable post-review boundary is easier to reuse as a standard proof-side default path.
144
151
  It now also exposes a compact reusable-default boundary summary so the proof-side default seam can be treated as a stable public boundary, not just a recommended path.
152
+ It now also exposes composition-contract summaries so the proof-side default seam can be treated more clearly as a stable public contract across review and run.
153
+ It now also exposes compact contract-carry summaries so the stable proof-side contract context is easier to inspect directly without expanding proof scope.
154
+ It now also exposes bridge summaries, bridge-boundary summaries, and bridge-carry summaries so the proof-side review seam is easier to treat as an adapter-ready bridge without widening proof scope.
155
+ It now also exposes a bridge-run summary so that same proof-side bridge can be read directly as the final run posture instead of only as review-stage carry.
145
156
  - `POST /v1/events/canonicalize`
146
157
  - `POST /v1/events/hash`
147
158
  - `POST /v1/receipts/emit`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xoonya",
3
- "version": "1.13.0",
3
+ "version": "1.15.0",
4
4
  "description": "Deterministic proof SDK for canonical events, receipts, proof bundles, and verification.",
5
5
  "main": "index.js",
6
6
  "type": "commonjs",
package/proof_sdk.js CHANGED
@@ -1455,6 +1455,123 @@ function summarizeReviewReusableDefaultBoundary(input) {
1455
1455
  };
1456
1456
  }
1457
1457
 
1458
+ function summarizeReviewCompositionContract(input) {
1459
+ const reusableDefault = summarizeReviewReusableDefaultContinuation(input);
1460
+ return {
1461
+ ok: reusableDefault.ok === true,
1462
+ handoff_kind: reusableDefault.handoff_kind || null,
1463
+ result_package_ref: reusableDefault.result_package_ref || null,
1464
+ reusable_default_ref: reusableDefault.reusable_default_ref || null,
1465
+ composition_contract_ref: reusableDefault.reusable_default_ref
1466
+ ? `contract.${reusableDefault.reusable_default_ref}`
1467
+ : null,
1468
+ public_contract_ids: [
1469
+ "review_default_continuation",
1470
+ "review_summary",
1471
+ "proof_run"
1472
+ ],
1473
+ stable_contract_context: {
1474
+ execution_context_ready: reusableDefault.stable_default_context && reusableDefault.stable_default_context.execution_context_ready === true,
1475
+ economic_context_ready: reusableDefault.stable_default_context && reusableDefault.stable_default_context.economic_context_ready === true,
1476
+ proof_context_ready: reusableDefault.stable_default_context && reusableDefault.stable_default_context.proof_context_ready === true
1477
+ },
1478
+ helper_only_summary_ids: [
1479
+ "review_extension_readiness",
1480
+ "review_extension_boundary"
1481
+ ],
1482
+ contract_ready: reusableDefault.default_followthrough && reusableDefault.default_followthrough.reusable_by_default === true,
1483
+ next_surface: reusableDefault.default_followthrough && reusableDefault.default_followthrough.run_surface
1484
+ ? reusableDefault.default_followthrough.run_surface
1485
+ : null
1486
+ };
1487
+ }
1488
+
1489
+ function summarizeReviewCompositionContractBoundary(input) {
1490
+ const contract = summarizeReviewCompositionContract(input);
1491
+ return {
1492
+ ok: contract.ok === true,
1493
+ handoff_kind: contract.handoff_kind || null,
1494
+ result_package_ref: contract.result_package_ref || null,
1495
+ composition_contract_ref: contract.composition_contract_ref || null,
1496
+ stable_boundary_ids: [
1497
+ "review_contract_summary",
1498
+ "proof_run"
1499
+ ],
1500
+ contract_ready: contract.contract_ready === true,
1501
+ next_surface: contract.next_surface || null
1502
+ };
1503
+ }
1504
+
1505
+ function summarizeReviewCompositionContractCarry(input) {
1506
+ const contract = summarizeReviewCompositionContract(input);
1507
+ return {
1508
+ ok: contract.ok === true,
1509
+ composition_contract_ref: contract.composition_contract_ref || null,
1510
+ stable_contract_carry: contract.stable_contract_context || {},
1511
+ public_contract_ids: Array.isArray(contract.public_contract_ids) ? contract.public_contract_ids : [],
1512
+ contract_ready: contract.contract_ready === true,
1513
+ next_surface: contract.next_surface || null
1514
+ };
1515
+ }
1516
+
1517
+ function summarizeReviewBridgeSummary(input) {
1518
+ const contract = summarizeReviewCompositionContract(input);
1519
+ return {
1520
+ ok: contract.ok === true,
1521
+ composition_contract_ref: contract.composition_contract_ref || null,
1522
+ adapter_bridge_ref: contract.composition_contract_ref
1523
+ ? `bridge.${contract.composition_contract_ref}`
1524
+ : null,
1525
+ stable_bridge_ids: [
1526
+ "review_bridge_summary",
1527
+ "proof_run"
1528
+ ],
1529
+ bridge_carry: contract.stable_contract_context || {},
1530
+ bridge_ready: contract.contract_ready === true,
1531
+ next_surface: contract.next_surface || null
1532
+ };
1533
+ }
1534
+
1535
+ function summarizeReviewBridgeBoundary(input) {
1536
+ const bridge = summarizeReviewBridgeSummary(input);
1537
+ return {
1538
+ ok: bridge.ok === true,
1539
+ adapter_bridge_ref: bridge.adapter_bridge_ref || null,
1540
+ stable_boundary_ids: [
1541
+ "review_bridge_summary",
1542
+ "proof_run"
1543
+ ],
1544
+ bridge_ready: bridge.bridge_ready === true,
1545
+ next_surface: bridge.next_surface || null
1546
+ };
1547
+ }
1548
+
1549
+ function summarizeReviewBridgeCarry(input) {
1550
+ const bridge = summarizeReviewBridgeSummary(input);
1551
+ return {
1552
+ ok: bridge.ok === true,
1553
+ adapter_bridge_ref: bridge.adapter_bridge_ref || null,
1554
+ stable_bridge_ids: Array.isArray(bridge.stable_bridge_ids) ? bridge.stable_bridge_ids : [],
1555
+ bridge_carry: bridge.bridge_carry || {},
1556
+ bridge_ready: bridge.bridge_ready === true,
1557
+ next_surface: bridge.next_surface || null
1558
+ };
1559
+ }
1560
+
1561
+ function summarizeReviewBridgeRun(input) {
1562
+ const bridge = summarizeReviewBridgeSummary(input);
1563
+ return {
1564
+ ok: bridge.ok === true,
1565
+ adapter_bridge_ref: bridge.adapter_bridge_ref || null,
1566
+ accepted_bridge_ids: Array.isArray(bridge.stable_bridge_ids) ? bridge.stable_bridge_ids : [],
1567
+ bridge_ready: bridge.bridge_ready === true,
1568
+ run_surface: bridge.next_surface || null,
1569
+ run_path_ids: [
1570
+ "proof_run"
1571
+ ]
1572
+ };
1573
+ }
1574
+
1458
1575
  function runDefaultProofLoop(loopRef, input) {
1459
1576
  const loop = getDefaultProofLoop(loopRef);
1460
1577
  if (!loop) {
@@ -1515,6 +1632,13 @@ module.exports = {
1515
1632
  summarizeReviewExtensionBoundary,
1516
1633
  summarizeReviewReusableDefaultContinuation,
1517
1634
  summarizeReviewReusableDefaultBoundary,
1635
+ summarizeReviewCompositionContract,
1636
+ summarizeReviewCompositionContractBoundary,
1637
+ summarizeReviewCompositionContractCarry,
1638
+ summarizeReviewBridgeSummary,
1639
+ summarizeReviewBridgeBoundary,
1640
+ summarizeReviewBridgeCarry,
1641
+ summarizeReviewBridgeRun,
1518
1642
  runInteractionResultPackageHandoff,
1519
1643
  runInteractionSpineProofHandoff,
1520
1644
  runTransactionProofHandoff,
package/server.js CHANGED
@@ -248,6 +248,83 @@ async function routeRequest(req, res) {
248
248
  return;
249
249
  }
250
250
 
251
+ if (req.method === 'POST' && url.pathname === '/v1/proof-center/result-package-handoff/review/contract-summary') {
252
+ try {
253
+ const body = await readJsonBody(req);
254
+ const result = proofSdk.summarizeReviewCompositionContract(body);
255
+ sendJson(res, 200, result);
256
+ } catch (error) {
257
+ sendJson(res, 400, { ok: false, reason: error.message });
258
+ }
259
+ return;
260
+ }
261
+
262
+ if (req.method === 'POST' && url.pathname === '/v1/proof-center/result-package-handoff/review/contract-boundary') {
263
+ try {
264
+ const body = await readJsonBody(req);
265
+ const result = proofSdk.summarizeReviewCompositionContractBoundary(body);
266
+ sendJson(res, 200, result);
267
+ } catch (error) {
268
+ sendJson(res, 400, { ok: false, reason: error.message });
269
+ }
270
+ return;
271
+ }
272
+
273
+ if (req.method === 'POST' && url.pathname === '/v1/proof-center/result-package-handoff/review/contract-carry') {
274
+ try {
275
+ const body = await readJsonBody(req);
276
+ const result = proofSdk.summarizeReviewCompositionContractCarry(body);
277
+ sendJson(res, 200, result);
278
+ } catch (error) {
279
+ sendJson(res, 400, { ok: false, reason: error.message });
280
+ }
281
+ return;
282
+ }
283
+
284
+ if (req.method === 'POST' && url.pathname === '/v1/proof-center/result-package-handoff/review/bridge-summary') {
285
+ try {
286
+ const body = await readJsonBody(req);
287
+ const result = proofSdk.summarizeReviewBridgeSummary(body);
288
+ sendJson(res, 200, result);
289
+ } catch (error) {
290
+ sendJson(res, 400, { ok: false, reason: error.message });
291
+ }
292
+ return;
293
+ }
294
+
295
+ if (req.method === 'POST' && url.pathname === '/v1/proof-center/result-package-handoff/review/bridge-boundary') {
296
+ try {
297
+ const body = await readJsonBody(req);
298
+ const result = proofSdk.summarizeReviewBridgeBoundary(body);
299
+ sendJson(res, 200, result);
300
+ } catch (error) {
301
+ sendJson(res, 400, { ok: false, reason: error.message });
302
+ }
303
+ return;
304
+ }
305
+
306
+ if (req.method === 'POST' && url.pathname === '/v1/proof-center/result-package-handoff/review/bridge-carry') {
307
+ try {
308
+ const body = await readJsonBody(req);
309
+ const result = proofSdk.summarizeReviewBridgeCarry(body);
310
+ sendJson(res, 200, result);
311
+ } catch (error) {
312
+ sendJson(res, 400, { ok: false, reason: error.message });
313
+ }
314
+ return;
315
+ }
316
+
317
+ if (req.method === 'POST' && url.pathname === '/v1/proof-center/result-package-handoff/review/bridge-run') {
318
+ try {
319
+ const body = await readJsonBody(req);
320
+ const result = proofSdk.summarizeReviewBridgeRun(body);
321
+ sendJson(res, 200, result);
322
+ } catch (error) {
323
+ sendJson(res, 400, { ok: false, reason: error.message });
324
+ }
325
+ return;
326
+ }
327
+
251
328
  if (req.method === 'POST' && url.pathname === '/v1/receipts/verify') {
252
329
  try {
253
330
  const body = await readJsonBody(req);