@clowder-ai/plugin-contract 0.1.0-beta.10 → 0.1.0-beta.11
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/dist/conformance/fixtures.d.ts +3 -1
- package/dist/conformance/fixtures.d.ts.map +1 -1
- package/dist/conformance/fixtures.js +2 -1
- package/dist/conformance/fixtures.js.map +1 -1
- package/dist/conformance/index.d.ts +2 -1
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +2 -1
- package/dist/conformance/index.js.map +1 -1
- package/dist/conformance/messaging-behavior-fixture.d.ts +12 -0
- package/dist/conformance/messaging-behavior-fixture.d.ts.map +1 -0
- package/dist/conformance/messaging-behavior-fixture.js +30 -0
- package/dist/conformance/messaging-behavior-fixture.js.map +1 -0
- package/dist/generated/contract.generated.d.ts +66 -4
- package/dist/generated/contract.generated.d.ts.map +1 -1
- package/dist/generated/contract.generated.js +6 -0
- package/dist/generated/contract.generated.js.map +1 -1
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/messaging-semantic.d.ts.map +1 -1
- package/dist/validation/messaging-semantic.js +49 -0
- package/dist/validation/messaging-semantic.js.map +1 -1
- package/dist/validation/messaging-wire.d.ts +38 -0
- package/dist/validation/messaging-wire.d.ts.map +1 -0
- package/dist/validation/messaging-wire.js +164 -0
- package/dist/validation/messaging-wire.js.map +1 -0
- package/dist/wire/disposition-fixtures.d.ts +8 -0
- package/dist/wire/disposition-fixtures.d.ts.map +1 -1
- package/dist/wire/disposition-fixtures.js +419 -0
- package/dist/wire/disposition-fixtures.js.map +1 -1
- package/dist/wire/index.d.ts +5 -3
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +9 -1
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/messaging-byte-bounds.d.ts +61 -0
- package/dist/wire/messaging-byte-bounds.d.ts.map +1 -0
- package/dist/wire/messaging-byte-bounds.js +459 -0
- package/dist/wire/messaging-byte-bounds.js.map +1 -0
- package/dist/wire/registry.d.ts +44 -33
- package/dist/wire/registry.d.ts.map +1 -1
- package/dist/wire/registry.js +32 -34
- package/dist/wire/registry.js.map +1 -1
- package/dist/wire/row-shapes.d.ts +64 -59
- package/dist/wire/row-shapes.d.ts.map +1 -1
- package/dist/wire/row-shapes.js +19 -3
- package/dist/wire/row-shapes.js.map +1 -1
- package/fixtures/messaging/valid/subscription-delivery.json +1 -1
- package/package.json +3 -2
- package/src/schemas/messaging.schema.json +209 -33
|
@@ -162,6 +162,47 @@ function grantsChangedNotificationFrame(effectiveGrants) {
|
|
|
162
162
|
},
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
|
+
function messagingRequestFrame(id, method, input) {
|
|
166
|
+
return JSON.stringify({
|
|
167
|
+
jsonrpc: '2.0',
|
|
168
|
+
id,
|
|
169
|
+
method,
|
|
170
|
+
params: { meta: { deadlineUnixMs: WIRE_UINT53_MAX }, input },
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
const M0C_DRAFT = {
|
|
174
|
+
address: { kind: 'thread_handle', handle: 'thread-handle-1' },
|
|
175
|
+
idempotencyKey: 'send-1',
|
|
176
|
+
payload: {
|
|
177
|
+
provenance: { epistemicStatus: 'inference' },
|
|
178
|
+
elements: [
|
|
179
|
+
{ elementId: 'element-1', kind: 'text', payload: { text: 'hello' } },
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
const M0C_ENVELOPE = {
|
|
184
|
+
messageId: 'message-1',
|
|
185
|
+
revision: 1,
|
|
186
|
+
threadId: 'thread-1',
|
|
187
|
+
actor: { kind: 'user', id: 'user-1' },
|
|
188
|
+
audience: { kind: 'public' },
|
|
189
|
+
occurredAt: '2026-08-18T03:00:00.000Z',
|
|
190
|
+
payload: {
|
|
191
|
+
provenance: {
|
|
192
|
+
origin: { kind: 'host' },
|
|
193
|
+
epistemicStatus: 'user_intent',
|
|
194
|
+
},
|
|
195
|
+
elements: [
|
|
196
|
+
{ elementId: 'element-1', kind: 'text', payload: { text: 'hello' } },
|
|
197
|
+
],
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
const M0C_PUBLISH_EVENT = {
|
|
201
|
+
eventId: 'event-1',
|
|
202
|
+
sequence: 1,
|
|
203
|
+
type: 'message.publish',
|
|
204
|
+
envelope: M0C_ENVELOPE,
|
|
205
|
+
};
|
|
165
206
|
/**
|
|
166
207
|
* 9 response-candidate sub-cases per §3.8-1:
|
|
167
208
|
* "your R9 correction #5's five required cases plus four controls"
|
|
@@ -270,6 +311,22 @@ export const DISPOSITION_FIXTURE_VECTORS = [
|
|
|
270
311
|
zeroSideEffects: true,
|
|
271
312
|
description: '[beta.8 H7 raw token] negative SessionBinding grantRevision is rejected at canonicality before correlation',
|
|
272
313
|
},
|
|
314
|
+
{
|
|
315
|
+
id: 'T-C-3',
|
|
316
|
+
rawFrame: messagingRequestFrame('read-fractional', 'messaging.read', {
|
|
317
|
+
subscriptionId: 'subscription-1',
|
|
318
|
+
limit: 1.5,
|
|
319
|
+
}),
|
|
320
|
+
rawFrameEncoding: 'utf8',
|
|
321
|
+
preState: { inFlightRequests: [] },
|
|
322
|
+
expectedClass: 'T-C',
|
|
323
|
+
expectedOutcome: 'close',
|
|
324
|
+
expectedErrorArm: null,
|
|
325
|
+
expectedErrorCode: null,
|
|
326
|
+
expectedResponseFrame: null,
|
|
327
|
+
zeroSideEffects: true,
|
|
328
|
+
description: '[beta.11 messaging] fractional read limit is rejected at canonicality before method validation',
|
|
329
|
+
},
|
|
273
330
|
// ═════════════════════════════════════════════════════════════════════════
|
|
274
331
|
// T-D: canonical idless NON-response-candidate, NOT a valid Request
|
|
275
332
|
// object (missing/non-string jsonrpc/method)
|
|
@@ -583,6 +640,7 @@ export const DISPOSITION_FIXTURE_VECTORS = [
|
|
|
583
640
|
expectedErrorArm: null,
|
|
584
641
|
expectedErrorCode: null,
|
|
585
642
|
expectedResponseFrame: null,
|
|
643
|
+
zeroSideEffects: true,
|
|
586
644
|
description: 'response-candidate: both result AND error present (additional coverage)',
|
|
587
645
|
},
|
|
588
646
|
// ── MUTUAL-EXCLUSIVITY PROOF PAIR ─────────────────────────────────────
|
|
@@ -624,6 +682,7 @@ export const DISPOSITION_FIXTURE_VECTORS = [
|
|
|
624
682
|
expectedErrorArm: null,
|
|
625
683
|
expectedErrorCode: null,
|
|
626
684
|
expectedResponseFrame: null,
|
|
685
|
+
zeroSideEffects: true,
|
|
627
686
|
description: 'response-candidate: error body is string not object (additional coverage)',
|
|
628
687
|
},
|
|
629
688
|
{
|
|
@@ -672,6 +731,7 @@ export const DISPOSITION_FIXTURE_VECTORS = [
|
|
|
672
731
|
expectedErrorArm: null,
|
|
673
732
|
expectedErrorCode: null,
|
|
674
733
|
expectedResponseFrame: null,
|
|
734
|
+
zeroSideEffects: true,
|
|
675
735
|
description: '[RC-5] row-9 ack with wrong deliveryId: byte-equality fails → T-H, never T-L',
|
|
676
736
|
},
|
|
677
737
|
// ── T-L: valid correlated response (settlement) ──────────────────────
|
|
@@ -1410,6 +1470,353 @@ export const DISPOSITION_FIXTURE_VECTORS = [
|
|
|
1410
1470
|
expectedResponseFrame: null,
|
|
1411
1471
|
description: '[beta.10 lifecycle] DEADLINE_EXPIRED legally settles a drain request',
|
|
1412
1472
|
},
|
|
1473
|
+
{
|
|
1474
|
+
id: 'T-M-14',
|
|
1475
|
+
rawFrame: messagingRequestFrame('send-1', 'messaging.send', M0C_DRAFT),
|
|
1476
|
+
rawFrameEncoding: 'utf8',
|
|
1477
|
+
preState: { inFlightRequests: [] },
|
|
1478
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1479
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1480
|
+
description: '[beta.11 messaging] legal send reaches Host dispatch',
|
|
1481
|
+
},
|
|
1482
|
+
{
|
|
1483
|
+
id: 'T-G-21',
|
|
1484
|
+
rawFrame: messagingRequestFrame('a', 'messaging.send', { ...M0C_DRAFT, authority: 'host' }),
|
|
1485
|
+
rawFrameEncoding: 'utf8',
|
|
1486
|
+
preState: { inFlightRequests: [] },
|
|
1487
|
+
expectedClass: 'T-G', expectedOutcome: 'respond', expectedErrorArm: 'InvalidParamsEnvelope',
|
|
1488
|
+
expectedErrorCode: INVALID_PARAMS_CODE, expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
|
|
1489
|
+
zeroSideEffects: true,
|
|
1490
|
+
description: '[beta.11 messaging] authority-bearing send rejects before dispatch',
|
|
1491
|
+
},
|
|
1492
|
+
{
|
|
1493
|
+
id: 'T-M-15',
|
|
1494
|
+
rawFrame: messagingRequestFrame('append-1', 'messaging.appendElements', {
|
|
1495
|
+
handle: { kind: 'message', token: 'message-handle-1' },
|
|
1496
|
+
operationId: 'append-1',
|
|
1497
|
+
baseRevision: 1,
|
|
1498
|
+
elements: [{ elementId: 'element-2', kind: 'text', payload: { text: 'more' } }],
|
|
1499
|
+
}),
|
|
1500
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1501
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1502
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1503
|
+
description: '[beta.11 messaging] legal append reaches Host dispatch',
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
id: 'T-G-22',
|
|
1507
|
+
rawFrame: messagingRequestFrame('a', 'messaging.appendElements', {
|
|
1508
|
+
handle: 'raw-handle', operationId: 'append-1', elements: [],
|
|
1509
|
+
}),
|
|
1510
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1511
|
+
expectedClass: 'T-G', expectedOutcome: 'respond', expectedErrorArm: 'InvalidParamsEnvelope',
|
|
1512
|
+
expectedErrorCode: INVALID_PARAMS_CODE, expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
|
|
1513
|
+
zeroSideEffects: true,
|
|
1514
|
+
description: '[beta.11 messaging] malformed append rejects before dispatch',
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
id: 'T-M-16',
|
|
1518
|
+
rawFrame: messagingRequestFrame('subscribe-1', 'messaging.subscribe', { handle: 'thread-handle-1' }),
|
|
1519
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1520
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1521
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1522
|
+
description: '[beta.11 messaging] legal subscribe reaches Host dispatch',
|
|
1523
|
+
},
|
|
1524
|
+
{
|
|
1525
|
+
id: 'T-G-23',
|
|
1526
|
+
rawFrame: messagingRequestFrame('a', 'messaging.subscribe', { handle: '' }),
|
|
1527
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1528
|
+
expectedClass: 'T-G', expectedOutcome: 'respond', expectedErrorArm: 'InvalidParamsEnvelope',
|
|
1529
|
+
expectedErrorCode: INVALID_PARAMS_CODE, expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
|
|
1530
|
+
zeroSideEffects: true,
|
|
1531
|
+
description: '[beta.11 messaging] empty subscribe handle rejects before dispatch',
|
|
1532
|
+
},
|
|
1533
|
+
{
|
|
1534
|
+
id: 'T-M-17',
|
|
1535
|
+
rawFrame: messagingRequestFrame('read-1', 'messaging.read', { subscriptionId: 'subscription-1', limit: 2 }),
|
|
1536
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1537
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1538
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1539
|
+
description: '[beta.11 messaging] legal read reaches Host dispatch',
|
|
1540
|
+
},
|
|
1541
|
+
{
|
|
1542
|
+
id: 'T-G-24',
|
|
1543
|
+
rawFrame: messagingRequestFrame('a', 'messaging.read', { subscriptionId: 'subscription-1', limit: 33 }),
|
|
1544
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1545
|
+
expectedClass: 'T-G', expectedOutcome: 'respond', expectedErrorArm: 'InvalidParamsEnvelope',
|
|
1546
|
+
expectedErrorCode: INVALID_PARAMS_CODE, expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
|
|
1547
|
+
zeroSideEffects: true,
|
|
1548
|
+
description: '[beta.11 messaging] read limit N+1 rejects before dispatch',
|
|
1549
|
+
},
|
|
1550
|
+
{
|
|
1551
|
+
id: 'T-M-18',
|
|
1552
|
+
rawFrame: messagingRequestFrame('ack-1', 'messaging.ack', { subscriptionId: 'subscription-1', ackToken: 'ack-1' }),
|
|
1553
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1554
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1555
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1556
|
+
description: '[beta.11 messaging] legal acknowledgement reaches Host dispatch',
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
id: 'T-G-25',
|
|
1560
|
+
rawFrame: messagingRequestFrame('a', 'messaging.ack', { subscriptionId: 'subscription-1', ackToken: '' }),
|
|
1561
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1562
|
+
expectedClass: 'T-G', expectedOutcome: 'respond', expectedErrorArm: 'InvalidParamsEnvelope',
|
|
1563
|
+
expectedErrorCode: INVALID_PARAMS_CODE, expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
|
|
1564
|
+
zeroSideEffects: true,
|
|
1565
|
+
description: '[beta.11 messaging] empty acknowledgement token rejects before dispatch',
|
|
1566
|
+
},
|
|
1567
|
+
{
|
|
1568
|
+
id: 'T-M-19',
|
|
1569
|
+
rawFrame: messagingRequestFrame('snapshot-1', 'messaging.snapshot', { subscriptionId: 'subscription-1', maxItems: 2 }),
|
|
1570
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1571
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1572
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1573
|
+
description: '[beta.11 messaging] legal snapshot page reaches Host dispatch',
|
|
1574
|
+
},
|
|
1575
|
+
{
|
|
1576
|
+
id: 'T-G-26',
|
|
1577
|
+
rawFrame: messagingRequestFrame('a', 'messaging.snapshot', { subscriptionId: 'subscription-1', maxItems: 0 }),
|
|
1578
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1579
|
+
expectedClass: 'T-G', expectedOutcome: 'respond', expectedErrorArm: 'InvalidParamsEnvelope',
|
|
1580
|
+
expectedErrorCode: INVALID_PARAMS_CODE, expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
|
|
1581
|
+
zeroSideEffects: true,
|
|
1582
|
+
description: '[beta.11 messaging] zero snapshot maxItems rejects before dispatch',
|
|
1583
|
+
},
|
|
1584
|
+
{
|
|
1585
|
+
id: 'T-M-20',
|
|
1586
|
+
rawFrame: messagingRequestFrame('deliver-1', 'host.messaging.deliver', {
|
|
1587
|
+
deliveryId: 'delivery-1',
|
|
1588
|
+
threadHandle: { kind: 'thread_handle', handle: 'thread-handle-1' },
|
|
1589
|
+
envelope: M0C_ENVELOPE,
|
|
1590
|
+
}),
|
|
1591
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1592
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1593
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1594
|
+
description: '[beta.11 messaging] legal Host delivery reaches plugin dispatch',
|
|
1595
|
+
},
|
|
1596
|
+
{
|
|
1597
|
+
id: 'T-M-21',
|
|
1598
|
+
rawFrame: messagingRequestFrame('send-exponent', 'messaging.send', {
|
|
1599
|
+
address: { kind: 'thread_handle', handle: 'thread-handle-1' },
|
|
1600
|
+
idempotencyKey: 'send-exp',
|
|
1601
|
+
payload: {
|
|
1602
|
+
provenance: { epistemicStatus: 'inference' },
|
|
1603
|
+
elements: [
|
|
1604
|
+
{ elementId: 'element-1', kind: 'rich_block', payload: { data: 1e+21 } },
|
|
1605
|
+
],
|
|
1606
|
+
},
|
|
1607
|
+
}),
|
|
1608
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1609
|
+
expectedClass: 'T-M', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1610
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1611
|
+
description: '[beta.11 messaging] V8-canonical exponent in open payload is legal at T-C',
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
id: 'T-G-27',
|
|
1615
|
+
rawFrame: messagingRequestFrame('a', 'host.messaging.deliver', {
|
|
1616
|
+
deliveryId: 'delivery-1',
|
|
1617
|
+
threadHandle: { kind: 'thread_handle', handle: 'thread-handle-1' },
|
|
1618
|
+
envelope: { ...M0C_ENVELOPE, occurredAt: '2026-08-18T03:00:00Z' },
|
|
1619
|
+
}),
|
|
1620
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [] },
|
|
1621
|
+
expectedClass: 'T-G', expectedOutcome: 'respond', expectedErrorArm: 'InvalidParamsEnvelope',
|
|
1622
|
+
expectedErrorCode: INVALID_PARAMS_CODE, expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
|
|
1623
|
+
zeroSideEffects: true,
|
|
1624
|
+
description: '[beta.11 messaging] non-canonical stored timestamp rejects before callback dispatch',
|
|
1625
|
+
},
|
|
1626
|
+
{
|
|
1627
|
+
id: 'T-C-4',
|
|
1628
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'read-publish-rev', result: {
|
|
1629
|
+
events: [{ ...M0C_PUBLISH_EVENT, envelope: { ...M0C_ENVELOPE, revision: 1.5 } }],
|
|
1630
|
+
ackToken: 'ack-1', stale: false,
|
|
1631
|
+
} }),
|
|
1632
|
+
rawFrameEncoding: 'utf8',
|
|
1633
|
+
preState: { inFlightRequests: [{ id: 'read-publish-rev', method: 'messaging.read', requestSnapshot: { readLimit: 2 } }] },
|
|
1634
|
+
expectedClass: 'T-C', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1635
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1636
|
+
description: '[beta.11 messaging] fractional publish envelope revision in read response is rejected at canonicality',
|
|
1637
|
+
},
|
|
1638
|
+
{
|
|
1639
|
+
id: 'T-C-5',
|
|
1640
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'read-append-rev', result: {
|
|
1641
|
+
events: [{
|
|
1642
|
+
eventId: 'event-append-1', sequence: 1, type: 'message.elements.append',
|
|
1643
|
+
messageId: 'message-1', threadId: 'thread-1', operationId: 'op-1',
|
|
1644
|
+
revision: 1.5, elements: [],
|
|
1645
|
+
}],
|
|
1646
|
+
ackToken: 'ack-1', stale: false,
|
|
1647
|
+
} }),
|
|
1648
|
+
rawFrameEncoding: 'utf8',
|
|
1649
|
+
preState: { inFlightRequests: [{ id: 'read-append-rev', method: 'messaging.read', requestSnapshot: { readLimit: 2 } }] },
|
|
1650
|
+
expectedClass: 'T-C', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1651
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1652
|
+
description: '[beta.11 messaging] fractional append event revision in read response is rejected at canonicality',
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
id: 'T-C-6',
|
|
1656
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'read-append-baserev', result: {
|
|
1657
|
+
events: [{
|
|
1658
|
+
eventId: 'event-append-2', sequence: 1, type: 'message.elements.append',
|
|
1659
|
+
messageId: 'message-1', threadId: 'thread-1', operationId: 'op-1',
|
|
1660
|
+
baseRevision: 1.5, revision: 2, elements: [],
|
|
1661
|
+
}],
|
|
1662
|
+
ackToken: 'ack-1', stale: false,
|
|
1663
|
+
} }),
|
|
1664
|
+
rawFrameEncoding: 'utf8',
|
|
1665
|
+
preState: { inFlightRequests: [{ id: 'read-append-baserev', method: 'messaging.read', requestSnapshot: { readLimit: 2 } }] },
|
|
1666
|
+
expectedClass: 'T-C', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1667
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1668
|
+
description: '[beta.11 messaging] fractional append event baseRevision in read response is rejected at canonicality',
|
|
1669
|
+
},
|
|
1670
|
+
{
|
|
1671
|
+
id: 'T-L-11',
|
|
1672
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'send-result', result: {
|
|
1673
|
+
messageId: 'message-1', threadId: 'thread-1', revision: 1,
|
|
1674
|
+
messageHandle: { kind: 'message', token: 'message-handle-1' },
|
|
1675
|
+
} }),
|
|
1676
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'send-result', method: 'messaging.send' }] },
|
|
1677
|
+
expectedClass: 'T-L', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1678
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1679
|
+
description: '[beta.11 messaging] closed send receipt settles the request',
|
|
1680
|
+
},
|
|
1681
|
+
{
|
|
1682
|
+
id: 'T-H-14',
|
|
1683
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'send-legacy', result: {
|
|
1684
|
+
messageId: 'message-1', threadId: 'thread-1', revision: 1,
|
|
1685
|
+
handle: { kind: 'message', token: 'message-handle-1' },
|
|
1686
|
+
} }),
|
|
1687
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'send-legacy', method: 'messaging.send' }] },
|
|
1688
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1689
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1690
|
+
description: '[beta.11 messaging] legacy send receipt closes without settlement',
|
|
1691
|
+
},
|
|
1692
|
+
{
|
|
1693
|
+
id: 'T-L-12',
|
|
1694
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'append-result', result: {
|
|
1695
|
+
messageId: 'message-1', revision: 2, appliedElementIds: ['element-2'],
|
|
1696
|
+
} }),
|
|
1697
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'append-result', method: 'messaging.appendElements', requestSnapshot: { appendElementIds: ['element-2'] } }] },
|
|
1698
|
+
expectedClass: 'T-L', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1699
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1700
|
+
description: '[beta.11 messaging] closed append receipt settles the request',
|
|
1701
|
+
},
|
|
1702
|
+
{
|
|
1703
|
+
id: 'T-H-15',
|
|
1704
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'append-empty', result: {
|
|
1705
|
+
messageId: 'message-1', revision: 2, appliedElementIds: [],
|
|
1706
|
+
} }),
|
|
1707
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'append-empty', method: 'messaging.appendElements', requestSnapshot: { appendElementIds: ['element-2'] } }] },
|
|
1708
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1709
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1710
|
+
description: '[beta.11 messaging] empty append receipt closes without settlement',
|
|
1711
|
+
},
|
|
1712
|
+
{
|
|
1713
|
+
id: 'T-L-13',
|
|
1714
|
+
rawFrame: '{"jsonrpc":"2.0","id":"subscribe-result","result":{"subscriptionId":"subscription-1"}}',
|
|
1715
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'subscribe-result', method: 'messaging.subscribe' }] },
|
|
1716
|
+
expectedClass: 'T-L', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1717
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1718
|
+
description: '[beta.11 messaging] closed subscription receipt settles the request',
|
|
1719
|
+
},
|
|
1720
|
+
{
|
|
1721
|
+
id: 'T-H-16',
|
|
1722
|
+
rawFrame: '{"jsonrpc":"2.0","id":"subscribe-open","result":{"subscriptionId":"subscription-1","extra":true}}',
|
|
1723
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'subscribe-open', method: 'messaging.subscribe' }] },
|
|
1724
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1725
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1726
|
+
description: '[beta.11 messaging] open subscription receipt closes without settlement',
|
|
1727
|
+
},
|
|
1728
|
+
{
|
|
1729
|
+
id: 'T-L-14',
|
|
1730
|
+
rawFrame: '{"jsonrpc":"2.0","id":"read-result","result":{"events":[],"ackToken":null,"stale":false}}',
|
|
1731
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'read-result', method: 'messaging.read', requestSnapshot: { readLimit: 2 } }] },
|
|
1732
|
+
expectedClass: 'T-L', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1733
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1734
|
+
description: '[beta.11 messaging] empty read page settles the request',
|
|
1735
|
+
},
|
|
1736
|
+
{
|
|
1737
|
+
id: 'T-H-17',
|
|
1738
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'read-over-limit', result: {
|
|
1739
|
+
events: [M0C_PUBLISH_EVENT, { ...M0C_PUBLISH_EVENT, eventId: 'event-2', sequence: 2 }],
|
|
1740
|
+
ackToken: 'ack-2', stale: false,
|
|
1741
|
+
} }),
|
|
1742
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'read-over-limit', method: 'messaging.read', requestSnapshot: { readLimit: 1 } }] },
|
|
1743
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1744
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1745
|
+
description: '[beta.11 messaging] read page beyond the request limit closes without cursor progress',
|
|
1746
|
+
},
|
|
1747
|
+
{
|
|
1748
|
+
id: 'T-L-15', rawFrame: '{"jsonrpc":"2.0","id":"ack-result","result":null}',
|
|
1749
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'ack-result', method: 'messaging.ack' }] },
|
|
1750
|
+
expectedClass: 'T-L', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1751
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1752
|
+
description: '[beta.11 messaging] null acknowledgement settles the request',
|
|
1753
|
+
},
|
|
1754
|
+
{
|
|
1755
|
+
id: 'T-H-18', rawFrame: '{"jsonrpc":"2.0","id":"ack-open","result":{}}',
|
|
1756
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'ack-open', method: 'messaging.ack' }] },
|
|
1757
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1758
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1759
|
+
description: '[beta.11 messaging] non-null acknowledgement closes without cursor progress',
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
id: 'T-L-16',
|
|
1763
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'snapshot-result', result: {
|
|
1764
|
+
items: [], nextPageToken: null, snapshotAckToken: 'snapshot-ack-1',
|
|
1765
|
+
} }),
|
|
1766
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'snapshot-result', method: 'messaging.snapshot', requestSnapshot: { snapshotMaxItems: 2 } }] },
|
|
1767
|
+
expectedClass: 'T-L', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1768
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1769
|
+
description: '[beta.11 messaging] final snapshot page settles the traversal request',
|
|
1770
|
+
},
|
|
1771
|
+
{
|
|
1772
|
+
id: 'T-H-19',
|
|
1773
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'snapshot-over-limit', result: {
|
|
1774
|
+
items: [M0C_ENVELOPE, { ...M0C_ENVELOPE, messageId: 'message-2' }],
|
|
1775
|
+
nextPageToken: null, snapshotAckToken: 'snapshot-ack-2',
|
|
1776
|
+
} }),
|
|
1777
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'snapshot-over-limit', method: 'messaging.snapshot', requestSnapshot: { snapshotMaxItems: 1 } }] },
|
|
1778
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1779
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1780
|
+
description: '[beta.11 messaging] snapshot page beyond request maxItems closes without progress',
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
id: 'T-L-17',
|
|
1784
|
+
rawFrame: '{"jsonrpc":"2.0","id":"deliver-result","result":{"deliveryId":"delivery-1"}}',
|
|
1785
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'deliver-result', method: 'host.messaging.deliver', requestSnapshot: { deliveryId: 'delivery-1' } }] },
|
|
1786
|
+
expectedClass: 'T-L', expectedOutcome: 'accept', expectedErrorArm: null,
|
|
1787
|
+
expectedErrorCode: null, expectedResponseFrame: null,
|
|
1788
|
+
description: '[beta.11 messaging] byte-equal delivery acknowledgement settles the callback',
|
|
1789
|
+
},
|
|
1790
|
+
{
|
|
1791
|
+
id: 'T-H-20',
|
|
1792
|
+
rawFrame: '{"jsonrpc":"2.0","id":"deliver-mismatch","result":{"deliveryId":"wrong-delivery"}}',
|
|
1793
|
+
rawFrameEncoding: 'utf8', preState: { inFlightRequests: [{ id: 'deliver-mismatch', method: 'host.messaging.deliver', requestSnapshot: { deliveryId: 'delivery-1' } }] },
|
|
1794
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1795
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1796
|
+
description: '[beta.11 messaging] mismatched delivery acknowledgement closes without settlement',
|
|
1797
|
+
},
|
|
1798
|
+
{
|
|
1799
|
+
id: 'T-H-21',
|
|
1800
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'append-provenance', result: {
|
|
1801
|
+
messageId: 'message-1', revision: 2, appliedElementIds: ['wrong-element'],
|
|
1802
|
+
} }),
|
|
1803
|
+
rawFrameEncoding: 'utf8',
|
|
1804
|
+
preState: { inFlightRequests: [{ id: 'append-provenance', method: 'messaging.appendElements', requestSnapshot: { appendElementIds: ['element-2'] } }] },
|
|
1805
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1806
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1807
|
+
description: '[beta.11 messaging] append receipt with foreign element IDs closes without settlement',
|
|
1808
|
+
},
|
|
1809
|
+
{
|
|
1810
|
+
id: 'T-H-22',
|
|
1811
|
+
rawFrame: JSON.stringify({ jsonrpc: '2.0', id: 'append-no-snapshot', result: {
|
|
1812
|
+
messageId: 'message-1', revision: 2, appliedElementIds: ['element-2'],
|
|
1813
|
+
} }),
|
|
1814
|
+
rawFrameEncoding: 'utf8',
|
|
1815
|
+
preState: { inFlightRequests: [{ id: 'append-no-snapshot', method: 'messaging.appendElements' }] },
|
|
1816
|
+
expectedClass: 'T-H', expectedOutcome: 'close', expectedErrorArm: null,
|
|
1817
|
+
expectedErrorCode: null, expectedResponseFrame: null, zeroSideEffects: true,
|
|
1818
|
+
description: '[beta.11 messaging] append receipt without provenance snapshot closes without settlement',
|
|
1819
|
+
},
|
|
1413
1820
|
];
|
|
1414
1821
|
/** Complete beta.8 handshake safety surface exported for downstream runners. */
|
|
1415
1822
|
export const BETA8_HANDSHAKE_VECTOR_IDS = [
|
|
@@ -1459,4 +1866,16 @@ export const BETA10_LIFECYCLE_VECTOR_IDS = [
|
|
|
1459
1866
|
'T-L-9',
|
|
1460
1867
|
'T-L-10',
|
|
1461
1868
|
];
|
|
1869
|
+
/** Complete beta.11 M0-C messaging safety surface for rows 3 through 9. */
|
|
1870
|
+
export const BETA11_MESSAGING_VECTOR_IDS = [
|
|
1871
|
+
'T-C-3',
|
|
1872
|
+
'T-H-2', 'T-H-5', 'T-H-9', 'T-L-4',
|
|
1873
|
+
'T-M-14', 'T-G-21', 'T-M-15', 'T-G-22', 'T-M-16', 'T-G-23',
|
|
1874
|
+
'T-M-17', 'T-G-24', 'T-M-18', 'T-G-25', 'T-M-19', 'T-G-26',
|
|
1875
|
+
'T-M-20', 'T-M-21', 'T-G-27',
|
|
1876
|
+
'T-C-4', 'T-C-5', 'T-C-6',
|
|
1877
|
+
'T-L-11', 'T-H-14', 'T-L-12', 'T-H-15', 'T-L-13', 'T-H-16',
|
|
1878
|
+
'T-L-14', 'T-H-17', 'T-L-15', 'T-H-18', 'T-L-16', 'T-H-19',
|
|
1879
|
+
'T-L-17', 'T-H-20', 'T-H-21', 'T-H-22',
|
|
1880
|
+
];
|
|
1462
1881
|
//# sourceMappingURL=disposition-fixtures.js.map
|