@clowder-ai/plugin-contract 0.1.0-beta.2 → 0.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/conformance/index.d.ts +1 -0
  2. package/dist/conformance/index.d.ts.map +1 -1
  3. package/dist/conformance/index.js +1 -0
  4. package/dist/conformance/index.js.map +1 -1
  5. package/dist/conformance/stdio-harness/child-process-harness.d.ts +59 -0
  6. package/dist/conformance/stdio-harness/child-process-harness.d.ts.map +1 -0
  7. package/dist/conformance/stdio-harness/child-process-harness.js +279 -0
  8. package/dist/conformance/stdio-harness/child-process-harness.js.map +1 -0
  9. package/dist/conformance/stdio-harness/dual-transport-oracle.d.ts +26 -0
  10. package/dist/conformance/stdio-harness/dual-transport-oracle.d.ts.map +1 -0
  11. package/dist/conformance/stdio-harness/dual-transport-oracle.js +32 -0
  12. package/dist/conformance/stdio-harness/dual-transport-oracle.js.map +1 -0
  13. package/dist/conformance/stdio-harness/harness-process-spawn.d.ts +27 -0
  14. package/dist/conformance/stdio-harness/harness-process-spawn.d.ts.map +1 -0
  15. package/dist/conformance/stdio-harness/harness-process-spawn.js +43 -0
  16. package/dist/conformance/stdio-harness/harness-process-spawn.js.map +1 -0
  17. package/dist/conformance/stdio-harness/index.d.ts +5 -0
  18. package/dist/conformance/stdio-harness/index.d.ts.map +1 -0
  19. package/dist/conformance/stdio-harness/index.js +4 -0
  20. package/dist/conformance/stdio-harness/index.js.map +1 -0
  21. package/dist/conformance/stdio-harness/ndjson-frame.d.ts +26 -0
  22. package/dist/conformance/stdio-harness/ndjson-frame.d.ts.map +1 -0
  23. package/dist/conformance/stdio-harness/ndjson-frame.js +119 -0
  24. package/dist/conformance/stdio-harness/ndjson-frame.js.map +1 -0
  25. package/dist/conformance/stdio-harness/node-process-tree-runtime.d.ts +15 -0
  26. package/dist/conformance/stdio-harness/node-process-tree-runtime.d.ts.map +1 -0
  27. package/dist/conformance/stdio-harness/node-process-tree-runtime.js +78 -0
  28. package/dist/conformance/stdio-harness/node-process-tree-runtime.js.map +1 -0
  29. package/dist/conformance/stdio-harness/process-tree-controller.d.ts +51 -0
  30. package/dist/conformance/stdio-harness/process-tree-controller.d.ts.map +1 -0
  31. package/dist/conformance/stdio-harness/process-tree-controller.js +162 -0
  32. package/dist/conformance/stdio-harness/process-tree-controller.js.map +1 -0
  33. package/dist/conformance/stdio-harness/windows-sentinel.d.ts +15 -0
  34. package/dist/conformance/stdio-harness/windows-sentinel.d.ts.map +1 -0
  35. package/dist/conformance/stdio-harness/windows-sentinel.js +160 -0
  36. package/dist/conformance/stdio-harness/windows-sentinel.js.map +1 -0
  37. package/dist/conformance/stdio-harness/wire-shape.d.ts +18 -0
  38. package/dist/conformance/stdio-harness/wire-shape.d.ts.map +1 -0
  39. package/dist/conformance/stdio-harness/wire-shape.js +2 -0
  40. package/dist/conformance/stdio-harness/wire-shape.js.map +1 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +3 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/wire/constants.d.ts +36 -0
  46. package/dist/wire/constants.d.ts.map +1 -0
  47. package/dist/wire/constants.js +36 -0
  48. package/dist/wire/constants.js.map +1 -0
  49. package/dist/wire/disposition-fixtures.d.ts +99 -0
  50. package/dist/wire/disposition-fixtures.d.ts.map +1 -0
  51. package/dist/wire/disposition-fixtures.js +623 -0
  52. package/dist/wire/disposition-fixtures.js.map +1 -0
  53. package/dist/wire/disposition.d.ts +100 -0
  54. package/dist/wire/disposition.d.ts.map +1 -0
  55. package/dist/wire/disposition.js +205 -0
  56. package/dist/wire/disposition.js.map +1 -0
  57. package/dist/wire/envelope.d.ts +253 -0
  58. package/dist/wire/envelope.d.ts.map +1 -0
  59. package/dist/wire/envelope.js +19 -0
  60. package/dist/wire/envelope.js.map +1 -0
  61. package/dist/wire/errors.d.ts +222 -0
  62. package/dist/wire/errors.d.ts.map +1 -0
  63. package/dist/wire/errors.js +153 -0
  64. package/dist/wire/errors.js.map +1 -0
  65. package/dist/wire/grants.d.ts +57 -0
  66. package/dist/wire/grants.d.ts.map +1 -0
  67. package/dist/wire/grants.js +59 -0
  68. package/dist/wire/grants.js.map +1 -0
  69. package/dist/wire/handshake.d.ts +100 -0
  70. package/dist/wire/handshake.d.ts.map +1 -0
  71. package/dist/wire/handshake.js +70 -0
  72. package/dist/wire/handshake.js.map +1 -0
  73. package/dist/wire/index.d.ts +26 -0
  74. package/dist/wire/index.d.ts.map +1 -0
  75. package/dist/wire/index.js +45 -0
  76. package/dist/wire/index.js.map +1 -0
  77. package/dist/wire/registry.d.ts +90 -0
  78. package/dist/wire/registry.d.ts.map +1 -0
  79. package/dist/wire/registry.js +232 -0
  80. package/dist/wire/registry.js.map +1 -0
  81. package/dist/wire/request-id.d.ts +34 -0
  82. package/dist/wire/request-id.d.ts.map +1 -0
  83. package/dist/wire/request-id.js +40 -0
  84. package/dist/wire/request-id.js.map +1 -0
  85. package/dist/wire/row-shapes.d.ts +212 -0
  86. package/dist/wire/row-shapes.d.ts.map +1 -0
  87. package/dist/wire/row-shapes.js +59 -0
  88. package/dist/wire/row-shapes.js.map +1 -0
  89. package/dist/wire/wire-uint53.d.ts +26 -0
  90. package/dist/wire/wire-uint53.d.ts.map +1 -0
  91. package/dist/wire/wire-uint53.js +32 -0
  92. package/dist/wire/wire-uint53.js.map +1 -0
  93. package/package.json +3 -3
@@ -0,0 +1,623 @@
1
+ /**
2
+ * Disposition conformance fixture vectors — machine-readable test data
3
+ * for the pre-dispatch disposition table (T-A through T-L).
4
+ *
5
+ * Mechanized VERBATIM from §3.8-1 of the #1165 frozen plan (rev11,
6
+ * SHA 7e26e5af). Each vector carries:
7
+ * - A raw frame (the input to a pre-dispatch classifier)
8
+ * - Machine-readable pre-state with correlation records + cross-frame oracle
9
+ * - The expected unique T-class assignment
10
+ * - For respond classes: a type-checked closed-arm error envelope
11
+ * - For close/accept classes: null response markers
12
+ *
13
+ * These are DATA — they do not classify. A future classifier
14
+ * implementation would be tested against these vectors.
15
+ *
16
+ * Coverage per §3.8-1 (frozen enumerations, not arbitrary counts):
17
+ * - 9 response-candidate sub-cases (RESPONSE_CANDIDATE_CASES)
18
+ * "your R9 correction #5's five required cases plus four controls"
19
+ * - 7 notification-partition sub-cases (NOTIFICATION_PARTITION_CASES)
20
+ * "your correction #4's five, the idless-envelope fixture,
21
+ * and the R8 row-10 value-failure fixture"
22
+ * - All 12 T-classes have ≥1 vector
23
+ * - Pre-state mutual-exclusivity proof pairs:
24
+ * ping nonce (T-H-3 / T-L-2), row-9 deliveryId (T-H-9 / T-L-4)
25
+ *
26
+ * Response frames are DERIVED from type-checked ClosedWireErrorResponse
27
+ * objects, not hand-written strings.
28
+ *
29
+ * Partition records carry {vectorId, expectedClass} per case (FC-70-4).
30
+ * Tests verify both existence AND class correctness per key.
31
+ */
32
+ import { PARSE_ERROR_CODE, PARSE_ERROR_MESSAGE, INVALID_REQUEST_CODE, INVALID_REQUEST_MESSAGE, METHOD_NOT_FOUND_CODE, METHOD_NOT_FOUND_MESSAGE, INVALID_PARAMS_CODE, INVALID_PARAMS_MESSAGE, } from './errors.js';
33
+ // ---------------------------------------------------------------------------
34
+ // Closed error arm names — the 11 concrete envelope types from envelope.ts
35
+ // ---------------------------------------------------------------------------
36
+ export const CLOSED_ERROR_ARM_NAMES = [
37
+ 'ParseErrorEnvelope',
38
+ 'InvalidRequestNullIdEnvelope',
39
+ 'InvalidRequestValidIdEnvelope',
40
+ 'MethodNotFoundEnvelope',
41
+ 'InvalidParamsEnvelope',
42
+ 'InternalErrorEnvelope',
43
+ 'HandshakeRejectedEnvelope',
44
+ 'DeliveryRejectedEnvelope',
45
+ 'DomainErrorEnvelope',
46
+ 'DeadlineExpiredEnvelope',
47
+ 'SnapshotUnavailableEnvelope',
48
+ ];
49
+ // ---------------------------------------------------------------------------
50
+ // Type-checked response envelopes
51
+ // ---------------------------------------------------------------------------
52
+ const RESPONSE_PARSE_ERROR = {
53
+ jsonrpc: '2.0',
54
+ id: null,
55
+ error: { code: PARSE_ERROR_CODE, message: PARSE_ERROR_MESSAGE },
56
+ };
57
+ const RESPONSE_INVALID_REQUEST_NULL = {
58
+ jsonrpc: '2.0',
59
+ id: null,
60
+ error: { code: INVALID_REQUEST_CODE, message: INVALID_REQUEST_MESSAGE },
61
+ };
62
+ const RESPONSE_INVALID_REQUEST_A = {
63
+ jsonrpc: '2.0',
64
+ id: 'a',
65
+ error: { code: INVALID_REQUEST_CODE, message: INVALID_REQUEST_MESSAGE },
66
+ };
67
+ const RESPONSE_METHOD_NOT_FOUND_A = {
68
+ jsonrpc: '2.0',
69
+ id: 'a',
70
+ error: { code: METHOD_NOT_FOUND_CODE, message: METHOD_NOT_FOUND_MESSAGE },
71
+ };
72
+ const RESPONSE_INVALID_PARAMS_A = {
73
+ jsonrpc: '2.0',
74
+ id: 'a',
75
+ error: { code: INVALID_PARAMS_CODE, message: INVALID_PARAMS_MESSAGE },
76
+ };
77
+ /**
78
+ * 9 response-candidate sub-cases per §3.8-1:
79
+ * "your R9 correction #5's five required cases plus four controls"
80
+ *
81
+ * A "response candidate" enters the response lane: no method + at least
82
+ * one of result/error. Controls prove the boundary: frames with method
83
+ * that exit to T-F/T-K/T-D despite carrying result/error.
84
+ */
85
+ export const RESPONSE_CANDIDATE_CASES = {
86
+ /** §3.8-1 RC required #1: missing-id success shape → T-H close */
87
+ 'rc-1-missing-id-success': { vectorId: 'T-H-7', expectedClass: 'T-H' },
88
+ /** §3.8-1 RC required #2: missing-id error shape → T-H close */
89
+ 'rc-2-missing-id-error': { vectorId: 'T-H-8', expectedClass: 'T-H' },
90
+ /** §3.8-1 RC required #3: invalid/malformed-id → T-H close */
91
+ 'rc-3-invalid-id': { vectorId: 'T-H-6', expectedClass: 'T-H' },
92
+ /** §3.8-1 RC required #4: schema-valid correlated WireSuccessResponse → T-L */
93
+ 'rc-4-settled-valid': { vectorId: 'T-L-1', expectedClass: 'T-L' },
94
+ /** §3.8-1 RC required #5: row-9 ack wrong deliveryId → T-H, never T-L */
95
+ 'rc-5-row9-wrong-deliveryid': { vectorId: 'T-H-9', expectedClass: 'T-H' },
96
+ /** §3.8-1 RC control #6: method-bearing Request + extra result → T-F */
97
+ 'rc-6-request-extra-result': { vectorId: 'T-F-4', expectedClass: 'T-F' },
98
+ /** §3.8-1 RC control #7: idless Notification + extra error → T-K */
99
+ 'rc-7-notification-extra-error': { vectorId: 'T-K-4', expectedClass: 'T-K' },
100
+ /** §3.8-1 RC control #8: structurally-invalid method:0+result → T-D */
101
+ 'rc-8-invalid-method-result': { vectorId: 'T-D-3', expectedClass: 'T-D' },
102
+ /** §3.8-1 RC control #9: idless {"jsonrpc":"1.0","method":"x"} → T-D */
103
+ 'rc-9-idless-version-control': { vectorId: 'T-D-5', expectedClass: 'T-D' },
104
+ };
105
+ /**
106
+ * 7 notification-partition sub-cases per §3.8-1:
107
+ * "your correction #4's five, the idless-envelope fixture,
108
+ * and the R8 row-10 value-failure fixture"
109
+ */
110
+ export const NOTIFICATION_PARTITION_CASES = {
111
+ /** §3.8-1 NT #1: legal row-10 notification → T-J accept */
112
+ 'nt-1-legal-row10': { vectorId: 'T-J-1', expectedClass: 'T-J' },
113
+ /** §3.8-1 NT #2: request-only method without id → T-K close */
114
+ 'nt-2-request-method': { vectorId: 'T-K-1', expectedClass: 'T-K' },
115
+ /** §3.8-1 NT #3: unknown method without id → T-K close */
116
+ 'nt-3-unknown-method': { vectorId: 'T-K-3', expectedClass: 'T-K' },
117
+ /** §3.8-1 NT #4: structurally valid notification, invalid params → T-K */
118
+ 'nt-4-invalid-params': { vectorId: 'T-K-6', expectedClass: 'T-K' },
119
+ /** §3.8-1 NT #5: idless notification extra/missing envelope member → T-K */
120
+ 'nt-5-envelope-violation': { vectorId: 'T-K-5', expectedClass: 'T-K' },
121
+ /** §3.8-1 NT #6: row-10 deadlineUnixMs:0 value failure (H7/H8) → T-K */
122
+ 'nt-6-value-failure': { vectorId: 'T-K-7', expectedClass: 'T-K' },
123
+ /** §3.8-1 NT #7: structurally invalid idless object → T-D respond */
124
+ 'nt-7-structurally-invalid': { vectorId: 'T-D-1', expectedClass: 'T-D' },
125
+ };
126
+ // ---------------------------------------------------------------------------
127
+ // The fixture vectors (35 total)
128
+ // ---------------------------------------------------------------------------
129
+ export const DISPOSITION_FIXTURE_VECTORS = [
130
+ // ═════════════════════════════════════════════════════════════════════════
131
+ // PRE-STRUCTURAL (T-A, T-B, T-C)
132
+ // ═════════════════════════════════════════════════════════════════════════
133
+ {
134
+ id: 'T-A-1',
135
+ rawFrame: 'ff',
136
+ rawFrameEncoding: 'hex',
137
+ preState: { inFlightRequests: [] },
138
+ expectedClass: 'T-A',
139
+ expectedOutcome: 'close',
140
+ expectedErrorArm: null,
141
+ expectedErrorCode: null,
142
+ expectedResponseFrame: null,
143
+ description: 'transport/framing failure: invalid UTF-8 byte 0xFF',
144
+ },
145
+ {
146
+ id: 'T-B-1',
147
+ rawFrame: '{invalid json',
148
+ rawFrameEncoding: 'utf8',
149
+ preState: { inFlightRequests: [] },
150
+ expectedClass: 'T-B',
151
+ expectedOutcome: 'respond',
152
+ expectedErrorArm: 'ParseErrorEnvelope',
153
+ expectedErrorCode: -32700,
154
+ expectedResponseFrame: JSON.stringify(RESPONSE_PARSE_ERROR),
155
+ description: 'JSON parse error: malformed JSON input',
156
+ },
157
+ {
158
+ id: 'T-C-1',
159
+ rawFrame: '{ "jsonrpc":"2.0" }',
160
+ rawFrameEncoding: 'utf8',
161
+ preState: { inFlightRequests: [] },
162
+ expectedClass: 'T-C',
163
+ expectedOutcome: 'close',
164
+ expectedErrorArm: null,
165
+ expectedErrorCode: null,
166
+ expectedResponseFrame: null,
167
+ description: 'frame-canonicality failure: whitespace in compact JSON',
168
+ },
169
+ // ═════════════════════════════════════════════════════════════════════════
170
+ // T-D: canonical idless NON-response-candidate, NOT a valid Request
171
+ // object (missing/non-string jsonrpc/method)
172
+ //
173
+ // §3.8-1: "not a valid JSON-RPC Request object at all"
174
+ // Frozen vectors: NT-7 (T-D-1), RC-8 (T-D-3), RC-9 (T-D-5)
175
+ // Additional: T-D-2 (wrong jsonrpc version variant)
176
+ // ═════════════════════════════════════════════════════════════════════════
177
+ {
178
+ id: 'T-D-1',
179
+ rawFrame: '{"jsonrpc":"2.0","method":0}',
180
+ rawFrameEncoding: 'utf8',
181
+ preState: { inFlightRequests: [] },
182
+ expectedClass: 'T-D',
183
+ expectedOutcome: 'respond',
184
+ expectedErrorArm: 'InvalidRequestNullIdEnvelope',
185
+ expectedErrorCode: -32600,
186
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_REQUEST_NULL),
187
+ description: '[NT-7] structurally invalid: method is number, not string',
188
+ },
189
+ {
190
+ id: 'T-D-2',
191
+ rawFrame: '{"jsonrpc":"1.0","method":"broker.hello","params":{"meta":{"deadlineUnixMs":1},"input":{}}}',
192
+ rawFrameEncoding: 'utf8',
193
+ preState: { inFlightRequests: [] },
194
+ expectedClass: 'T-D',
195
+ expectedOutcome: 'respond',
196
+ expectedErrorArm: 'InvalidRequestNullIdEnvelope',
197
+ expectedErrorCode: -32600,
198
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_REQUEST_NULL),
199
+ description: 'structurally invalid: wrong jsonrpc version "1.0" (additional NT-7 variant)',
200
+ },
201
+ {
202
+ id: 'T-D-3',
203
+ rawFrame: '{"jsonrpc":"2.0","method":0,"result":null}',
204
+ rawFrameEncoding: 'utf8',
205
+ preState: { inFlightRequests: [] },
206
+ expectedClass: 'T-D',
207
+ expectedOutcome: 'respond',
208
+ expectedErrorArm: 'InvalidRequestNullIdEnvelope',
209
+ expectedErrorCode: -32600,
210
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_REQUEST_NULL),
211
+ description: '[RC-8] response-candidate boundary: method:0+result, method routes to T-D',
212
+ },
213
+ {
214
+ id: 'T-D-5',
215
+ rawFrame: '{"jsonrpc":"1.0","method":"x"}',
216
+ rawFrameEncoding: 'utf8',
217
+ preState: { inFlightRequests: [] },
218
+ expectedClass: 'T-D',
219
+ expectedOutcome: 'respond',
220
+ expectedErrorArm: 'InvalidRequestNullIdEnvelope',
221
+ expectedErrorCode: -32600,
222
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_REQUEST_NULL),
223
+ description: '[RC-9] response-candidate control: idless {"jsonrpc":"1.0","method":"x"} → T-D (not a response candidate)',
224
+ },
225
+ // ═════════════════════════════════════════════════════════════════════════
226
+ // T-E: profile-invalid id on request/notification path
227
+ // ═════════════════════════════════════════════════════════════════════════
228
+ {
229
+ id: 'T-E-1',
230
+ rawFrame: '{"jsonrpc":"2.0","id":"","method":"broker.hello","params":{"meta":{"deadlineUnixMs":1},"input":{}}}',
231
+ rawFrameEncoding: 'utf8',
232
+ preState: { inFlightRequests: [] },
233
+ expectedClass: 'T-E',
234
+ expectedOutcome: 'close',
235
+ expectedErrorArm: null,
236
+ expectedErrorCode: null,
237
+ expectedResponseFrame: null,
238
+ description: 'profile-invalid id on request: empty string violates min length 1',
239
+ },
240
+ // ═════════════════════════════════════════════════════════════════════════
241
+ // T-F: envelope violation (valid id, structural problem)
242
+ // Frozen: RC-6 (T-F-4). Additional: T-F-1, T-F-2, T-F-3.
243
+ // ═════════════════════════════════════════════════════════════════════════
244
+ {
245
+ id: 'T-F-1',
246
+ rawFrame: '{"jsonrpc":"2.0","id":"a","method":"broker.hello"}',
247
+ rawFrameEncoding: 'utf8',
248
+ preState: { inFlightRequests: [] },
249
+ expectedClass: 'T-F',
250
+ expectedOutcome: 'respond',
251
+ expectedErrorArm: 'InvalidRequestValidIdEnvelope',
252
+ expectedErrorCode: -32600,
253
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_REQUEST_A),
254
+ description: 'envelope violation: missing required params field',
255
+ },
256
+ {
257
+ id: 'T-F-2',
258
+ rawFrame: '{"jsonrpc":"2.0","id":"a","method":"unknown.method","params":{"meta":{"deadlineUnixMs":1},"input":{}}}',
259
+ rawFrameEncoding: 'utf8',
260
+ preState: { inFlightRequests: [] },
261
+ expectedClass: 'T-F',
262
+ expectedOutcome: 'respond',
263
+ expectedErrorArm: 'MethodNotFoundEnvelope',
264
+ expectedErrorCode: -32601,
265
+ expectedResponseFrame: JSON.stringify(RESPONSE_METHOD_NOT_FOUND_A),
266
+ description: 'envelope violation: unknown method not in 12-row registry',
267
+ },
268
+ {
269
+ id: 'T-F-3',
270
+ rawFrame: '{"jsonrpc":"2.0","id":"a","method":"broker.hello","params":[]}',
271
+ rawFrameEncoding: 'utf8',
272
+ preState: { inFlightRequests: [] },
273
+ expectedClass: 'T-F',
274
+ expectedOutcome: 'respond',
275
+ expectedErrorArm: 'InvalidParamsEnvelope',
276
+ expectedErrorCode: -32602,
277
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
278
+ description: 'envelope violation: params is array, must be object',
279
+ },
280
+ {
281
+ id: 'T-F-4',
282
+ rawFrame: '{"jsonrpc":"2.0","id":"a","method":"broker.hello","params":{"meta":{"deadlineUnixMs":1},"input":{}},"result":null}',
283
+ rawFrameEncoding: 'utf8',
284
+ preState: { inFlightRequests: [] },
285
+ expectedClass: 'T-F',
286
+ expectedOutcome: 'respond',
287
+ expectedErrorArm: 'InvalidRequestValidIdEnvelope',
288
+ expectedErrorCode: -32600,
289
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_REQUEST_A),
290
+ description: '[RC-6] response-candidate control: Request with extra result member → T-F',
291
+ },
292
+ // ═════════════════════════════════════════════════════════════════════════
293
+ // T-G: value violation (valid envelope, bad params values)
294
+ // ═════════════════════════════════════════════════════════════════════════
295
+ {
296
+ id: 'T-G-1',
297
+ rawFrame: '{"jsonrpc":"2.0","id":"a","method":"host.lifecycle.ping","params":{"meta":{"deadlineUnixMs":1},"input":{"nonce":""}}}',
298
+ rawFrameEncoding: 'utf8',
299
+ preState: { inFlightRequests: [] },
300
+ expectedClass: 'T-G',
301
+ expectedOutcome: 'respond',
302
+ expectedErrorArm: 'InvalidParamsEnvelope',
303
+ expectedErrorCode: -32602,
304
+ expectedResponseFrame: JSON.stringify(RESPONSE_INVALID_PARAMS_A),
305
+ description: 'value violation: nonce empty string violates minLength 1',
306
+ },
307
+ // ═════════════════════════════════════════════════════════════════════════
308
+ // T-I: in-flight id collision
309
+ // ═════════════════════════════════════════════════════════════════════════
310
+ {
311
+ id: 'T-I-1',
312
+ rawFrame: '{"jsonrpc":"2.0","id":"dup","method":"broker.hello","params":{"meta":{"deadlineUnixMs":1},"input":{}}}',
313
+ rawFrameEncoding: 'utf8',
314
+ preState: { inFlightRequests: [{ id: 'dup', method: 'broker.hello' }] },
315
+ expectedClass: 'T-I',
316
+ expectedOutcome: 'close',
317
+ expectedErrorArm: null,
318
+ expectedErrorCode: null,
319
+ expectedResponseFrame: null,
320
+ description: 'in-flight id collision: id "dup" already in preState',
321
+ },
322
+ // ═════════════════════════════════════════════════════════════════════════
323
+ // NOTIFICATION PARTITION — frozen 7 cases + additional coverage
324
+ //
325
+ // §3.8-1: "once a canonical object is classified as a Notification,
326
+ // no JSON-RPC Response is emitted for any downstream method/params/
327
+ // profile rejection."
328
+ //
329
+ // Frozen cases: T-J-1 (NT-1), T-K-1 (NT-2), T-K-3 (NT-3),
330
+ // T-K-6 (NT-4), T-K-5 (NT-5), T-K-7 (NT-6), T-D-1 (NT-7).
331
+ // Additional: T-J-2, T-K-2.
332
+ // ═════════════════════════════════════════════════════════════════════════
333
+ {
334
+ id: 'T-J-1',
335
+ rawFrame: '{"jsonrpc":"2.0","method":"host.grants.changed","params":{"meta":{"deadlineUnixMs":1},"input":{"grantRevision":0,"effectiveGrants":[]}}}',
336
+ rawFrameEncoding: 'utf8',
337
+ preState: { inFlightRequests: [] },
338
+ expectedClass: 'T-J',
339
+ expectedOutcome: 'accept',
340
+ expectedErrorArm: null,
341
+ expectedErrorCode: null,
342
+ expectedResponseFrame: null,
343
+ description: '[NT-1] legal row-10 grants.changed notification, empty grants',
344
+ },
345
+ {
346
+ id: 'T-J-2',
347
+ rawFrame: '{"jsonrpc":"2.0","method":"host.grants.changed","params":{"meta":{"deadlineUnixMs":1},"input":{"grantRevision":1,"effectiveGrants":["message.event.subscribe"]}}}',
348
+ rawFrameEncoding: 'utf8',
349
+ preState: { inFlightRequests: [] },
350
+ expectedClass: 'T-J',
351
+ expectedOutcome: 'accept',
352
+ expectedErrorArm: null,
353
+ expectedErrorCode: null,
354
+ expectedResponseFrame: null,
355
+ description: 'legal row-10 grants.changed, non-empty grants (additional NT-1 variant)',
356
+ },
357
+ {
358
+ id: 'T-K-1',
359
+ rawFrame: '{"jsonrpc":"2.0","method":"host.lifecycle.ping","params":{"meta":{"deadlineUnixMs":1},"input":{"nonce":"x"}}}',
360
+ rawFrameEncoding: 'utf8',
361
+ preState: { inFlightRequests: [] },
362
+ expectedClass: 'T-K',
363
+ expectedOutcome: 'close',
364
+ expectedErrorArm: null,
365
+ expectedErrorCode: null,
366
+ expectedResponseFrame: null,
367
+ description: '[NT-2] request-only method (ping, row 11) as notification → v0 violation',
368
+ },
369
+ {
370
+ id: 'T-K-2',
371
+ rawFrame: '{"jsonrpc":"2.0","method":"broker.hello","params":{"meta":{"deadlineUnixMs":1},"input":{}}}',
372
+ rawFrameEncoding: 'utf8',
373
+ preState: { inFlightRequests: [] },
374
+ expectedClass: 'T-K',
375
+ expectedOutcome: 'close',
376
+ expectedErrorArm: null,
377
+ expectedErrorCode: null,
378
+ expectedResponseFrame: null,
379
+ description: 'request-only method (hello, row 1) as notification (additional NT-2 variant)',
380
+ },
381
+ {
382
+ id: 'T-K-3',
383
+ rawFrame: '{"jsonrpc":"2.0","method":"unknown.rpc","params":{"meta":{"deadlineUnixMs":1},"input":{}}}',
384
+ rawFrameEncoding: 'utf8',
385
+ preState: { inFlightRequests: [] },
386
+ expectedClass: 'T-K',
387
+ expectedOutcome: 'close',
388
+ expectedErrorArm: null,
389
+ expectedErrorCode: null,
390
+ expectedResponseFrame: null,
391
+ description: '[NT-3] unknown method as notification → v0 violation',
392
+ },
393
+ {
394
+ id: 'T-K-4',
395
+ rawFrame: '{"jsonrpc":"2.0","method":"host.grants.changed","params":{"meta":{"deadlineUnixMs":1},"input":{"grantRevision":0,"effectiveGrants":[]}},"error":{"code":-32600,"message":"Invalid Request"}}',
396
+ rawFrameEncoding: 'utf8',
397
+ preState: { inFlightRequests: [] },
398
+ expectedClass: 'T-K',
399
+ expectedOutcome: 'close',
400
+ expectedErrorArm: null,
401
+ expectedErrorCode: null,
402
+ expectedResponseFrame: null,
403
+ description: '[RC-7 / NT-5 variant] Notification with extra error member → T-K close',
404
+ },
405
+ {
406
+ id: 'T-K-5',
407
+ rawFrame: '{"jsonrpc":"2.0","method":"host.grants.changed"}',
408
+ rawFrameEncoding: 'utf8',
409
+ preState: { inFlightRequests: [] },
410
+ expectedClass: 'T-K',
411
+ expectedOutcome: 'close',
412
+ expectedErrorArm: null,
413
+ expectedErrorCode: null,
414
+ expectedResponseFrame: null,
415
+ description: '[NT-5] Notification missing params → idless envelope violation → T-K close',
416
+ },
417
+ {
418
+ id: 'T-K-6',
419
+ rawFrame: '{"jsonrpc":"2.0","method":"host.grants.changed","params":{"meta":{"deadlineUnixMs":1},"input":{"grantRevision":"not-a-number","effectiveGrants":[]}}}',
420
+ rawFrameEncoding: 'utf8',
421
+ preState: { inFlightRequests: [] },
422
+ expectedClass: 'T-K',
423
+ expectedOutcome: 'close',
424
+ expectedErrorArm: null,
425
+ expectedErrorCode: null,
426
+ expectedResponseFrame: null,
427
+ description: '[NT-4] structurally valid Notification, invocation-level invalid params (grantRevision wrong type)',
428
+ },
429
+ {
430
+ id: 'T-K-7',
431
+ rawFrame: '{"jsonrpc":"2.0","method":"host.grants.changed","params":{"meta":{"deadlineUnixMs":0},"input":{"grantRevision":0,"effectiveGrants":[]}}}',
432
+ rawFrameEncoding: 'utf8',
433
+ preState: { inFlightRequests: [] },
434
+ expectedClass: 'T-K',
435
+ expectedOutcome: 'close',
436
+ expectedErrorArm: null,
437
+ expectedErrorCode: null,
438
+ expectedResponseFrame: null,
439
+ description: '[NT-6] row-10 notification with deadlineUnixMs:0 → value failure (H7), T-K close',
440
+ },
441
+ // ═════════════════════════════════════════════════════════════════════════
442
+ // RESPONSE-CANDIDATE PARTITION — frozen 9 cases + additional coverage
443
+ //
444
+ // §3.8-1: "an object with no method and at least one of result/error
445
+ // is a response candidate and enters the response lane BEFORE any
446
+ // Request/Notification or ID-profile routing"
447
+ //
448
+ // Frozen cases: T-H-7 (RC-1), T-H-8 (RC-2), T-H-6 (RC-3),
449
+ // T-L-1 (RC-4), T-H-9 (RC-5), T-F-4 (RC-6), T-K-4 (RC-7),
450
+ // T-D-3 (RC-8), T-D-5 (RC-9).
451
+ // Additional coverage: T-H-1..T-H-5, T-L-2..T-L-4 (proof pairs + extras)
452
+ // ═════════════════════════════════════════════════════════════════════════
453
+ // ── T-H: response-candidate validation/correlation failure ────────────
454
+ {
455
+ id: 'T-H-1',
456
+ rawFrame: '{"jsonrpc":"2.0","id":"phantom","result":null}',
457
+ rawFrameEncoding: 'utf8',
458
+ preState: { inFlightRequests: [] },
459
+ expectedClass: 'T-H',
460
+ expectedOutcome: 'close',
461
+ expectedErrorArm: null,
462
+ expectedErrorCode: null,
463
+ expectedResponseFrame: null,
464
+ description: 'response-candidate: phantom id, uncorrelated (additional coverage)',
465
+ },
466
+ {
467
+ id: 'T-H-2',
468
+ rawFrame: '{"jsonrpc":"2.0","id":"x","result":null,"error":{"code":-32603,"message":"Internal error"}}',
469
+ rawFrameEncoding: 'utf8',
470
+ preState: { inFlightRequests: [{ id: 'x', method: 'messaging.subscribe' }] },
471
+ expectedClass: 'T-H',
472
+ expectedOutcome: 'close',
473
+ expectedErrorArm: null,
474
+ expectedErrorCode: null,
475
+ expectedResponseFrame: null,
476
+ description: 'response-candidate: both result AND error present (additional coverage)',
477
+ },
478
+ // ── MUTUAL-EXCLUSIVITY PROOF PAIR ─────────────────────────────────────
479
+ // T-H-3 and T-L-2 share IDENTICAL rawFrame with schema-valid ping
480
+ // result. Only preState differs. FC-70-3 fix: rawFrame now has valid
481
+ // PingResult {nonce:"x"} instead of null.
482
+ {
483
+ id: 'T-H-3',
484
+ rawFrame: '{"jsonrpc":"2.0","id":"corr-test","result":{"nonce":"x"}}',
485
+ rawFrameEncoding: 'utf8',
486
+ preState: { inFlightRequests: [] },
487
+ expectedClass: 'T-H',
488
+ expectedOutcome: 'close',
489
+ expectedErrorArm: null,
490
+ expectedErrorCode: null,
491
+ expectedResponseFrame: null,
492
+ description: 'proof pair: "corr-test" NOT in-flight → T-H (see T-L-2)',
493
+ },
494
+ {
495
+ id: 'T-H-4',
496
+ rawFrame: '{"jsonrpc":"2.0","id":"lost-req","error":{"code":-32602,"message":"Invalid params"}}',
497
+ rawFrameEncoding: 'utf8',
498
+ preState: { inFlightRequests: [] },
499
+ expectedClass: 'T-H',
500
+ expectedOutcome: 'close',
501
+ expectedErrorArm: null,
502
+ expectedErrorCode: null,
503
+ expectedResponseFrame: null,
504
+ description: 'response-candidate: uncorrelated error (additional coverage)',
505
+ },
506
+ {
507
+ id: 'T-H-5',
508
+ rawFrame: '{"jsonrpc":"2.0","id":"r1","error":"not an object"}',
509
+ rawFrameEncoding: 'utf8',
510
+ preState: { inFlightRequests: [{ id: 'r1', method: 'messaging.subscribe' }] },
511
+ expectedClass: 'T-H',
512
+ expectedOutcome: 'close',
513
+ expectedErrorArm: null,
514
+ expectedErrorCode: null,
515
+ expectedResponseFrame: null,
516
+ description: 'response-candidate: error body is string not object (additional coverage)',
517
+ },
518
+ {
519
+ id: 'T-H-6',
520
+ rawFrame: '{"jsonrpc":"2.0","id":42,"result":null}',
521
+ rawFrameEncoding: 'utf8',
522
+ preState: { inFlightRequests: [] },
523
+ expectedClass: 'T-H',
524
+ expectedOutcome: 'close',
525
+ expectedErrorArm: null,
526
+ expectedErrorCode: null,
527
+ expectedResponseFrame: null,
528
+ description: '[RC-3] invalid/malformed-id response candidate: numeric id → T-H',
529
+ },
530
+ {
531
+ id: 'T-H-7',
532
+ rawFrame: '{"jsonrpc":"2.0","result":null}',
533
+ rawFrameEncoding: 'utf8',
534
+ preState: { inFlightRequests: [] },
535
+ expectedClass: 'T-H',
536
+ expectedOutcome: 'close',
537
+ expectedErrorArm: null,
538
+ expectedErrorCode: null,
539
+ expectedResponseFrame: null,
540
+ description: '[RC-1] missing-id success shape: result present, no id → T-H',
541
+ },
542
+ {
543
+ id: 'T-H-8',
544
+ rawFrame: '{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params"}}',
545
+ rawFrameEncoding: 'utf8',
546
+ preState: { inFlightRequests: [] },
547
+ expectedClass: 'T-H',
548
+ expectedOutcome: 'close',
549
+ expectedErrorArm: null,
550
+ expectedErrorCode: null,
551
+ expectedResponseFrame: null,
552
+ description: '[RC-2] missing-id error shape: error present, no id → T-H',
553
+ },
554
+ {
555
+ id: 'T-H-9',
556
+ rawFrame: '{"jsonrpc":"2.0","id":"del-1","result":{"deliveryId":"wrong-id"}}',
557
+ rawFrameEncoding: 'utf8',
558
+ preState: { inFlightRequests: [{ id: 'del-1', method: 'host.messaging.deliver', requestSnapshot: { deliveryId: 'correct-id' } }] },
559
+ expectedClass: 'T-H',
560
+ expectedOutcome: 'close',
561
+ expectedErrorArm: null,
562
+ expectedErrorCode: null,
563
+ expectedResponseFrame: null,
564
+ description: '[RC-5] row-9 ack with wrong deliveryId: byte-equality fails → T-H, never T-L',
565
+ },
566
+ // ── T-L: valid correlated response (settlement) ──────────────────────
567
+ {
568
+ id: 'T-L-1',
569
+ rawFrame: '{"jsonrpc":"2.0","id":"req-1","result":{"nonce":"x"}}',
570
+ rawFrameEncoding: 'utf8',
571
+ preState: { inFlightRequests: [{ id: 'req-1', method: 'host.lifecycle.ping', requestSnapshot: { nonce: 'x' } }] },
572
+ expectedClass: 'T-L',
573
+ expectedOutcome: 'accept',
574
+ expectedErrorArm: null,
575
+ expectedErrorCode: null,
576
+ expectedResponseFrame: null,
577
+ description: '[RC-4] schema-valid correlated WireSuccessResponse: ping nonce echoed byte-equal',
578
+ },
579
+ // ── PAIR with T-H-3 ──────────────────────────────────────────────────
580
+ {
581
+ id: 'T-L-2',
582
+ rawFrame: '{"jsonrpc":"2.0","id":"corr-test","result":{"nonce":"x"}}',
583
+ rawFrameEncoding: 'utf8',
584
+ preState: { inFlightRequests: [{ id: 'corr-test', method: 'host.lifecycle.ping', requestSnapshot: { nonce: 'x' } }] },
585
+ expectedClass: 'T-L',
586
+ expectedOutcome: 'accept',
587
+ expectedErrorArm: null,
588
+ expectedErrorCode: null,
589
+ expectedResponseFrame: null,
590
+ description: 'proof pair: "corr-test" IS in-flight (ping), nonce matches → T-L (see T-H-3)',
591
+ },
592
+ {
593
+ id: 'T-L-3',
594
+ rawFrame: '{"jsonrpc":"2.0","id":"req-err","error":{"code":-32602,"message":"Invalid params"}}',
595
+ rawFrameEncoding: 'utf8',
596
+ preState: { inFlightRequests: [{ id: 'req-err', method: 'host.lifecycle.ping' }] },
597
+ expectedClass: 'T-L',
598
+ expectedOutcome: 'accept',
599
+ expectedErrorArm: null,
600
+ expectedErrorCode: null,
601
+ expectedResponseFrame: null,
602
+ description: 'correlated error settlement: valid WireErrorResponse (additional coverage)',
603
+ },
604
+ // ── ROW-9 DELIVERYID EXCLUSIVE PAIR (R47) ────────────────────────────
605
+ // T-H-9 and T-L-4 share the same method/preState structure for
606
+ // host.messaging.deliver. Only the result.deliveryId differs:
607
+ // T-H-9: result.deliveryId="wrong-id" ≠ snapshot.deliveryId="correct-id" → T-H
608
+ // T-L-4: result.deliveryId="correct-id" = snapshot.deliveryId="correct-id" → T-L
609
+ // This locks the byte-equality oracle's success AND failure sides.
610
+ {
611
+ id: 'T-L-4',
612
+ rawFrame: '{"jsonrpc":"2.0","id":"del-1","result":{"deliveryId":"correct-id"}}',
613
+ rawFrameEncoding: 'utf8',
614
+ preState: { inFlightRequests: [{ id: 'del-1', method: 'host.messaging.deliver', requestSnapshot: { deliveryId: 'correct-id' } }] },
615
+ expectedClass: 'T-L',
616
+ expectedOutcome: 'accept',
617
+ expectedErrorArm: null,
618
+ expectedErrorCode: null,
619
+ expectedResponseFrame: null,
620
+ description: '[R47 pair] row-9 ack with correct deliveryId: byte-equality passes → T-L (see T-H-9)',
621
+ },
622
+ ];
623
+ //# sourceMappingURL=disposition-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposition-fixtures.js","sourceRoot":"","sources":["../../src/wire/disposition-fixtures.ts"],"names":[],"mappings":"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"}