@moltzap/protocol 2026.503.2 → 2026.503.4
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/test-fixtures/seed-data.d.ts.map +1 -1
- package/dist/test-fixtures/seed-data.js +52 -21
- package/dist/test-fixtures/seed-data.js.map +1 -1
- package/dist/testing/agent-registration.d.ts.map +1 -1
- package/dist/testing/agent-registration.js +48 -39
- package/dist/testing/agent-registration.js.map +1 -1
- package/dist/testing/arbitraries/frames.d.ts.map +1 -1
- package/dist/testing/arbitraries/frames.js +2 -1
- package/dist/testing/arbitraries/frames.js.map +1 -1
- package/dist/testing/arbitraries/from-typebox.d.ts.map +1 -1
- package/dist/testing/arbitraries/from-typebox.js +19 -10
- package/dist/testing/arbitraries/from-typebox.js.map +1 -1
- package/dist/testing/arbitraries/rpc.d.ts.map +1 -1
- package/dist/testing/arbitraries/rpc.js +12 -3
- package/dist/testing/arbitraries/rpc.js.map +1 -1
- package/dist/testing/captures.d.ts.map +1 -1
- package/dist/testing/captures.js +4 -3
- package/dist/testing/captures.js.map +1 -1
- package/dist/testing/codec.d.ts.map +1 -1
- package/dist/testing/codec.js +13 -5
- package/dist/testing/codec.js.map +1 -1
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts.map +1 -1
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js +7 -4
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js.map +1 -1
- package/dist/testing/conformance/_helpers.d.ts +6 -1
- package/dist/testing/conformance/_helpers.d.ts.map +1 -1
- package/dist/testing/conformance/_helpers.js +24 -0
- package/dist/testing/conformance/_helpers.js.map +1 -1
- package/dist/testing/conformance/adversity.d.ts.map +1 -1
- package/dist/testing/conformance/adversity.js +76 -66
- package/dist/testing/conformance/adversity.js.map +1 -1
- package/dist/testing/conformance/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/boundary.js +49 -39
- package/dist/testing/conformance/boundary.js.map +1 -1
- package/dist/testing/conformance/client/adversity.d.ts.map +1 -1
- package/dist/testing/conformance/client/adversity.js +20 -15
- package/dist/testing/conformance/client/adversity.js.map +1 -1
- package/dist/testing/conformance/client/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/client/boundary.js +7 -5
- package/dist/testing/conformance/client/boundary.js.map +1 -1
- package/dist/testing/conformance/client/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/client/delivery.js +26 -20
- package/dist/testing/conformance/client/delivery.js.map +1 -1
- package/dist/testing/conformance/client/rpc-semantics.d.ts.map +1 -1
- package/dist/testing/conformance/client/rpc-semantics.js +18 -15
- package/dist/testing/conformance/client/rpc-semantics.js.map +1 -1
- package/dist/testing/conformance/client/runner.d.ts +13 -8
- package/dist/testing/conformance/client/runner.d.ts.map +1 -1
- package/dist/testing/conformance/client/runner.js +17 -24
- package/dist/testing/conformance/client/runner.js.map +1 -1
- package/dist/testing/conformance/client/schema-conformance.d.ts.map +1 -1
- package/dist/testing/conformance/client/schema-conformance.js +11 -9
- package/dist/testing/conformance/client/schema-conformance.js.map +1 -1
- package/dist/testing/conformance/client/suite.d.ts.map +1 -1
- package/dist/testing/conformance/client/suite.js +2 -1
- package/dist/testing/conformance/client/suite.js.map +1 -1
- package/dist/testing/conformance/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/delivery.js +98 -124
- package/dist/testing/conformance/delivery.js.map +1 -1
- package/dist/testing/conformance/env.d.ts +9 -0
- package/dist/testing/conformance/env.d.ts.map +1 -1
- package/dist/testing/conformance/env.js +16 -3
- package/dist/testing/conformance/env.js.map +1 -1
- package/dist/testing/conformance/presence.d.ts.map +1 -1
- package/dist/testing/conformance/presence.js +4 -2
- package/dist/testing/conformance/presence.js.map +1 -1
- package/dist/testing/conformance/registry.d.ts +1 -1
- package/dist/testing/conformance/registry.d.ts.map +1 -1
- package/dist/testing/conformance/registry.js +1 -1
- package/dist/testing/conformance/registry.js.map +1 -1
- package/dist/testing/conformance/rpc-semantics.d.ts.map +1 -1
- package/dist/testing/conformance/rpc-semantics.js +139 -107
- package/dist/testing/conformance/rpc-semantics.js.map +1 -1
- package/dist/testing/conformance/runner.d.ts +2 -2
- package/dist/testing/conformance/runner.d.ts.map +1 -1
- package/dist/testing/conformance/runner.js +5 -10
- package/dist/testing/conformance/runner.js.map +1 -1
- package/dist/testing/conformance/schema-conformance.d.ts.map +1 -1
- package/dist/testing/conformance/schema-conformance.js +160 -120
- package/dist/testing/conformance/schema-conformance.js.map +1 -1
- package/dist/testing/conformance/suite.d.ts +1 -1
- package/dist/testing/conformance/suite.d.ts.map +1 -1
- package/dist/testing/conformance/suite.js +12 -9
- package/dist/testing/conformance/suite.js.map +1 -1
- package/dist/testing/models/dispatch.d.ts.map +1 -1
- package/dist/testing/models/dispatch.js +58 -50
- package/dist/testing/models/dispatch.js.map +1 -1
- package/dist/testing/models/state.d.ts +3 -3
- package/dist/testing/models/state.d.ts.map +1 -1
- package/dist/testing/models/state.js +14 -1
- package/dist/testing/models/state.js.map +1 -1
- package/dist/testing/test-client.d.ts +22 -3
- package/dist/testing/test-client.d.ts.map +1 -1
- package/dist/testing/test-client.js +51 -31
- package/dist/testing/test-client.js.map +1 -1
- package/dist/testing/test-server.d.ts.map +1 -1
- package/dist/testing/test-server.js +7 -11
- package/dist/testing/test-server.js.map +1 -1
- package/dist/testing/toxics/client.d.ts.map +1 -1
- package/dist/testing/toxics/client.js +39 -25
- package/dist/testing/toxics/client.js.map +1 -1
- package/dist/testing/toxics/profile.d.ts.map +1 -1
- package/dist/testing/toxics/profile.js +4 -1
- package/dist/testing/toxics/profile.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -9,19 +9,36 @@
|
|
|
9
9
|
* Principle 3: every property body is `Effect<void, PropertyFailure>`.
|
|
10
10
|
*/
|
|
11
11
|
import * as fc from "fast-check";
|
|
12
|
-
import { Effect } from "effect";
|
|
12
|
+
import { Effect, Either } from "effect";
|
|
13
13
|
import { arbitraryAnyCall, arbitraryConfidentCall, confidentOracleMethods, } from "../arbitraries/rpc.js";
|
|
14
14
|
import { applyCall, authorizationOutcome, isIdempotent, } from "../models/dispatch.js";
|
|
15
15
|
import { initialReferenceState } from "../models/state.js";
|
|
16
16
|
import { ErrorCodes } from "../../schema/errors.js";
|
|
17
|
+
import { AgentsList } from "../../schema/methods/auth.js";
|
|
18
|
+
import { AppsOnBeforeDispatch } from "../../schema/methods/apps.js";
|
|
19
|
+
import { ConversationsList } from "../../schema/methods/conversations.js";
|
|
17
20
|
import { canonicalJson, sortJsonArray } from "../canonicalize.js";
|
|
21
|
+
import { RpcResponseError } from "../errors.js";
|
|
18
22
|
import { makeTestClient } from "../test-client.js";
|
|
19
23
|
import { registerTestAgent } from "../agent-registration.js";
|
|
20
24
|
import { allRpcMethods } from "../arbitraries/rpc.js";
|
|
21
25
|
import { assertProperty, PropertyDeferred, PropertyInvariantViolation, PropertyUnavailable, registerProperty, } from "./registry.js";
|
|
26
|
+
import { eitherTag, leftOrNull } from "./_helpers.js";
|
|
22
27
|
const CATEGORY = "rpc-semantics";
|
|
23
28
|
const DEFAULT_TIMEOUT_MS = 3000;
|
|
24
29
|
const DEFAULT_CAPTURE_CAPACITY = 64;
|
|
30
|
+
const MODEL_EQUIVALENCE_PROPERTY = "model-equivalence";
|
|
31
|
+
const AUTHORITY_POSITIVE_PROPERTY = "authority-positive";
|
|
32
|
+
const AUTHORITY_NEGATIVE_PROPERTY = "authority-negative";
|
|
33
|
+
const REQUEST_ID_UNIQUENESS_PROPERTY = "request-id-uniqueness";
|
|
34
|
+
const CALLER_CONTROLLED_S2C_TIMEOUT_PROPERTY = "caller-controlled-s2c-timeout";
|
|
35
|
+
const IDEMPOTENCE_PROPERTY = "idempotence";
|
|
36
|
+
const MODEL_NUM_RUNS_FLOOR = 10;
|
|
37
|
+
const MODEL_RUNS_PER_CONFIDENT_METHOD = 2;
|
|
38
|
+
const RESPONSE_CAPTURE_CAPACITY_PER_REQUEST = 4;
|
|
39
|
+
const REQUEST_ID_UNIQUENESS_NUM_RUNS = 5;
|
|
40
|
+
const TIMEOUT_LOWER_MARGIN_MS = 20;
|
|
41
|
+
const TIMEOUT_UPPER_MULTIPLIER = 4;
|
|
25
42
|
/**
|
|
26
43
|
* Model-equivalence — conditional oracle over the model-derived
|
|
27
44
|
* confident set (architect #195 §4.1 + #197 §2).
|
|
@@ -56,10 +73,8 @@ const DEFAULT_CAPTURE_CAPACITY = 64;
|
|
|
56
73
|
*/
|
|
57
74
|
export function registerModelEquivalence(ctx) {
|
|
58
75
|
const K = confidentOracleMethods.length;
|
|
59
|
-
const numRunsFloor = Math.max(
|
|
60
|
-
registerProperty(ctx, CATEGORY,
|
|
61
|
-
// #ignore-sloppy-code-next-line[async-keyword]: fast-check asyncProperty contract requires Promise-returning callback
|
|
62
|
-
fc.asyncProperty(arbitraryConfidentCall(), async (call) => {
|
|
76
|
+
const numRunsFloor = Math.max(MODEL_NUM_RUNS_FLOOR, MODEL_RUNS_PER_CONFIDENT_METHOD * K);
|
|
77
|
+
registerProperty(ctx, CATEGORY, MODEL_EQUIVALENCE_PROPERTY, `when model predicts ok, server MUST return ok (K=${K} confident methods)`, assertProperty(CATEGORY, MODEL_EQUIVALENCE_PROPERTY, () => fc.assert(fc.asyncProperty(arbitraryConfidentCall(), (call) => {
|
|
63
78
|
const modelTag = applyCall(initialReferenceState, call).outcome._tag;
|
|
64
79
|
if (modelTag === "error") {
|
|
65
80
|
// Safety-net guard: `arbitraryConfidentCall` derived this
|
|
@@ -67,9 +82,13 @@ export function registerModelEquivalence(ctx) {
|
|
|
67
82
|
// disagrees, applyCall became param-sensitive for the
|
|
68
83
|
// kept method and the derivation must widen. Surface
|
|
69
84
|
// loudly instead of silent short-circuit.
|
|
70
|
-
|
|
85
|
+
return Effect.runPromise(Effect.fail(new PropertyInvariantViolation({
|
|
86
|
+
category: CATEGORY,
|
|
87
|
+
name: MODEL_EQUIVALENCE_PROPERTY,
|
|
88
|
+
reason: `arbitraryConfidentCall drew ${call.method} with params ${JSON.stringify(call.params)} → model _tag: "error" — param-invariance contract broken; widen derivation to fc.sample-based check per architect #197 §2.2`,
|
|
89
|
+
})));
|
|
71
90
|
}
|
|
72
|
-
|
|
91
|
+
return Effect.runPromise(Effect.scoped(Effect.gen(function* () {
|
|
73
92
|
const agent = yield* registerTestAgent({
|
|
74
93
|
baseUrl: ctx.realServer.baseUrl,
|
|
75
94
|
name: "me",
|
|
@@ -84,10 +103,11 @@ export function registerModelEquivalence(ctx) {
|
|
|
84
103
|
const outcome = yield* client
|
|
85
104
|
.sendRpc(call.method, call.params)
|
|
86
105
|
.pipe(Effect.either);
|
|
87
|
-
return outcome
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
106
|
+
return Either.match(outcome, {
|
|
107
|
+
onLeft: () => "error",
|
|
108
|
+
onRight: () => "ok",
|
|
109
|
+
});
|
|
110
|
+
})).pipe(Effect.map((serverTag) => serverTag === "ok")));
|
|
91
111
|
}), { seed: ctx.seed, numRuns: ctx.opts.numRuns ?? numRunsFloor })));
|
|
92
112
|
// Keep `arbitraryAnyCall` import alive — used by sibling properties.
|
|
93
113
|
void arbitraryAnyCall;
|
|
@@ -99,13 +119,13 @@ export function registerModelEquivalence(ctx) {
|
|
|
99
119
|
* newly-registered agent), asserts a Right outcome.
|
|
100
120
|
*/
|
|
101
121
|
export function registerAuthorityPositive(ctx) {
|
|
102
|
-
registerProperty(ctx, CATEGORY,
|
|
122
|
+
registerProperty(ctx, CATEGORY, AUTHORITY_POSITIVE_PROPERTY, "authorized agent → typed success on conversations/list", Effect.scoped(Effect.gen(function* () {
|
|
103
123
|
const agent = yield* registerTestAgent({
|
|
104
124
|
baseUrl: ctx.realServer.baseUrl,
|
|
105
125
|
name: "ap",
|
|
106
126
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
107
127
|
category: CATEGORY,
|
|
108
|
-
name:
|
|
128
|
+
name: AUTHORITY_POSITIVE_PROPERTY,
|
|
109
129
|
reason: `agent registration failed: ${e.body}`,
|
|
110
130
|
})));
|
|
111
131
|
const client = yield* makeTestClient({
|
|
@@ -116,17 +136,18 @@ export function registerAuthorityPositive(ctx) {
|
|
|
116
136
|
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
117
137
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
118
138
|
category: CATEGORY,
|
|
119
|
-
name:
|
|
139
|
+
name: AUTHORITY_POSITIVE_PROPERTY,
|
|
120
140
|
reason: `client acquire failed: ${String(e)}`,
|
|
121
141
|
})));
|
|
122
142
|
const outcome = yield* client
|
|
123
|
-
.sendRpc(
|
|
143
|
+
.sendRpc(ConversationsList.name, {})
|
|
124
144
|
.pipe(Effect.either);
|
|
125
|
-
|
|
145
|
+
const failure = leftOrNull(outcome);
|
|
146
|
+
if (failure !== null) {
|
|
126
147
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
127
148
|
category: CATEGORY,
|
|
128
|
-
name:
|
|
129
|
-
reason: `authorized conversations/list failed: ${
|
|
149
|
+
name: AUTHORITY_POSITIVE_PROPERTY,
|
|
150
|
+
reason: `authorized conversations/list failed: ${failure._tag}`,
|
|
130
151
|
}));
|
|
131
152
|
}
|
|
132
153
|
})));
|
|
@@ -138,7 +159,7 @@ export function registerAuthorityPositive(ctx) {
|
|
|
138
159
|
* with a typed error (not a success, not a crash).
|
|
139
160
|
*/
|
|
140
161
|
export function registerAuthorityNegative(ctx) {
|
|
141
|
-
registerProperty(ctx, CATEGORY,
|
|
162
|
+
registerProperty(ctx, CATEGORY, AUTHORITY_NEGATIVE_PROPERTY, "unauthenticated agent → typed denial on conversations/list", Effect.scoped(Effect.gen(function* () {
|
|
142
163
|
// We still need an agentKey to open the socket, but we skip
|
|
143
164
|
// `auth/connect` so the server sees an un-authed session.
|
|
144
165
|
const agent = yield* registerTestAgent({
|
|
@@ -146,7 +167,7 @@ export function registerAuthorityNegative(ctx) {
|
|
|
146
167
|
name: "an",
|
|
147
168
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
148
169
|
category: CATEGORY,
|
|
149
|
-
name:
|
|
170
|
+
name: AUTHORITY_NEGATIVE_PROPERTY,
|
|
150
171
|
reason: `agent registration failed: ${e.body}`,
|
|
151
172
|
})));
|
|
152
173
|
const client = yield* makeTestClient({
|
|
@@ -158,47 +179,48 @@ export function registerAuthorityNegative(ctx) {
|
|
|
158
179
|
autoConnect: false,
|
|
159
180
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
160
181
|
category: CATEGORY,
|
|
161
|
-
name:
|
|
182
|
+
name: AUTHORITY_NEGATIVE_PROPERTY,
|
|
162
183
|
reason: `client acquire failed: ${String(e)}`,
|
|
163
184
|
})));
|
|
164
185
|
const outcome = yield* client
|
|
165
|
-
.sendRpc(
|
|
186
|
+
.sendRpc(ConversationsList.name, {})
|
|
166
187
|
.pipe(Effect.either);
|
|
167
|
-
|
|
168
|
-
|
|
188
|
+
const error = yield* Either.match(outcome, {
|
|
189
|
+
onLeft: (failure) => Effect.succeed(failure),
|
|
190
|
+
onRight: () => Effect.fail(new PropertyInvariantViolation({
|
|
169
191
|
category: CATEGORY,
|
|
170
|
-
name:
|
|
192
|
+
name: AUTHORITY_NEGATIVE_PROPERTY,
|
|
171
193
|
reason: "pre-handshake conversations/list returned success — expected typed denial",
|
|
172
|
-
}))
|
|
173
|
-
}
|
|
194
|
+
})),
|
|
195
|
+
});
|
|
174
196
|
// Narrow the Left: must be a typed auth-shaped RpcResponseError
|
|
175
197
|
// (Unauthorized / Forbidden). A timeout or transport-close
|
|
176
198
|
// would also surface as `Left` but does NOT satisfy the
|
|
177
199
|
// property — it proves nothing about authorization.
|
|
178
|
-
if (
|
|
200
|
+
if (!(error instanceof RpcResponseError)) {
|
|
179
201
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
180
202
|
category: CATEGORY,
|
|
181
|
-
name:
|
|
182
|
-
reason: `expected RpcResponseError, got ${
|
|
203
|
+
name: AUTHORITY_NEGATIVE_PROPERTY,
|
|
204
|
+
reason: `expected RpcResponseError, got ${error._tag}`,
|
|
183
205
|
}));
|
|
184
206
|
}
|
|
185
|
-
const code =
|
|
207
|
+
const code = error.code;
|
|
186
208
|
const isAuthShaped = code === ErrorCodes.Unauthorized || code === ErrorCodes.Forbidden;
|
|
187
209
|
if (!isAuthShaped) {
|
|
188
210
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
189
211
|
category: CATEGORY,
|
|
190
|
-
name:
|
|
212
|
+
name: AUTHORITY_NEGATIVE_PROPERTY,
|
|
191
213
|
reason: `expected Unauthorized/Forbidden code (${ErrorCodes.Unauthorized} / ${ErrorCodes.Forbidden}), got ${code}`,
|
|
192
214
|
}));
|
|
193
215
|
}
|
|
194
216
|
// Oracle cross-check: the model also predicts deny for this
|
|
195
217
|
// unauthenticated caller. Keeps the model honest alongside the
|
|
196
218
|
// server.
|
|
197
|
-
const modelVerdict = authorizationOutcome(initialReferenceState, { method:
|
|
219
|
+
const modelVerdict = authorizationOutcome(initialReferenceState, { method: ConversationsList.name, params: {} }, "unknown-agent");
|
|
198
220
|
if (modelVerdict !== "deny-unauthenticated") {
|
|
199
221
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
200
222
|
category: CATEGORY,
|
|
201
|
-
name:
|
|
223
|
+
name: AUTHORITY_NEGATIVE_PROPERTY,
|
|
202
224
|
reason: `model oracle disagrees: expected deny-unauthenticated, got ${modelVerdict}`,
|
|
203
225
|
}));
|
|
204
226
|
}
|
|
@@ -209,48 +231,45 @@ export function registerAuthorityNegative(ctx) {
|
|
|
209
231
|
* every id in the captured response stream appears exactly once.
|
|
210
232
|
*/
|
|
211
233
|
export function registerRequestIdUniqueness(ctx) {
|
|
212
|
-
registerProperty(ctx, CATEGORY,
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
if (entry.kind === "outbound" &&
|
|
243
|
-
entry.frame.type === "request") {
|
|
244
|
-
outboundIds.add(entry.frame.id);
|
|
245
|
-
}
|
|
246
|
-
if (entry.kind === "inbound" &&
|
|
247
|
-
entry.frame.type === "response") {
|
|
248
|
-
inboundIds.add(entry.frame.id);
|
|
249
|
-
inboundCount += 1;
|
|
250
|
-
}
|
|
234
|
+
registerProperty(ctx, CATEGORY, REQUEST_ID_UNIQUENESS_PROPERTY, "every request-id appears in exactly one response", assertProperty(CATEGORY, REQUEST_ID_UNIQUENESS_PROPERTY, () => fc.assert(fc.asyncProperty(fc.integer({ min: 2, max: 6 }), (n) => Effect.runPromise(Effect.scoped(Effect.gen(function* () {
|
|
235
|
+
const agent = yield* registerTestAgent({
|
|
236
|
+
baseUrl: ctx.realServer.baseUrl,
|
|
237
|
+
name: "ru",
|
|
238
|
+
});
|
|
239
|
+
const client = yield* makeTestClient({
|
|
240
|
+
serverUrl: ctx.realServer.wsUrl,
|
|
241
|
+
agentKey: agent.apiKey,
|
|
242
|
+
agentId: agent.agentId,
|
|
243
|
+
defaultTimeoutMs: DEFAULT_TIMEOUT_MS,
|
|
244
|
+
captureCapacity: n * RESPONSE_CAPTURE_CAPACITY_PER_REQUEST,
|
|
245
|
+
});
|
|
246
|
+
// Snapshot the capture boundary after handshake so we
|
|
247
|
+
// only tally response ids for the N RPCs below — not
|
|
248
|
+
// the auto-connect reply.
|
|
249
|
+
const handshakeEnd = (yield* client.snapshot).length;
|
|
250
|
+
yield* Effect.forEach(Array.from({ length: n }, (_, i) => i), () => client
|
|
251
|
+
.sendRpc(ConversationsList.name, {})
|
|
252
|
+
.pipe(Effect.either), { concurrency: n });
|
|
253
|
+
const snap = (yield* client.snapshot).slice(handshakeEnd);
|
|
254
|
+
const outboundIds = new Set();
|
|
255
|
+
const inboundIds = new Set();
|
|
256
|
+
let inboundCount = 0;
|
|
257
|
+
for (const entry of snap) {
|
|
258
|
+
if (entry.frame?.type !== "request" &&
|
|
259
|
+
entry.frame?.type !== "response")
|
|
260
|
+
continue;
|
|
261
|
+
if (entry.kind === "outbound" &&
|
|
262
|
+
entry.frame.type === "request") {
|
|
263
|
+
outboundIds.add(entry.frame.id);
|
|
251
264
|
}
|
|
252
|
-
|
|
253
|
-
|
|
265
|
+
if (entry.kind === "inbound" &&
|
|
266
|
+
entry.frame.type === "response") {
|
|
267
|
+
inboundIds.add(entry.frame.id);
|
|
268
|
+
inboundCount += 1;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return { outboundIds, inboundIds, inboundCount };
|
|
272
|
+
})).pipe(Effect.map((counts) => {
|
|
254
273
|
// Architect §4.2 set-equality predicate. Conjunction:
|
|
255
274
|
// - outboundIds.size === n (driver produced n frames)
|
|
256
275
|
// - inboundIds.size === outboundIds.size (cardinality match)
|
|
@@ -269,7 +288,10 @@ export function registerRequestIdUniqueness(ctx) {
|
|
|
269
288
|
return false;
|
|
270
289
|
}
|
|
271
290
|
return true;
|
|
272
|
-
}), {
|
|
291
|
+
})))), {
|
|
292
|
+
seed: ctx.seed,
|
|
293
|
+
numRuns: ctx.opts.numRuns ?? REQUEST_ID_UNIQUENESS_NUM_RUNS,
|
|
294
|
+
})));
|
|
273
295
|
}
|
|
274
296
|
/**
|
|
275
297
|
* Spurious s2c responses do not crash or poison the server. Architect
|
|
@@ -307,13 +329,13 @@ export function registerSpuriousS2cFrameHandling(ctx) {
|
|
|
307
329
|
* scheduling noise).
|
|
308
330
|
*/
|
|
309
331
|
export function registerCallerControlledS2cTimeout(ctx) {
|
|
310
|
-
registerProperty(ctx, CATEGORY,
|
|
332
|
+
registerProperty(ctx, CATEGORY, CALLER_CONTROLLED_S2C_TIMEOUT_PROPERTY, "awaitServerRequest(_, _, timeoutMs) fires within the caller's window", Effect.scoped(Effect.gen(function* () {
|
|
311
333
|
const agent = yield* registerTestAgent({
|
|
312
334
|
baseUrl: ctx.realServer.baseUrl,
|
|
313
335
|
name: "ct",
|
|
314
336
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
315
337
|
category: CATEGORY,
|
|
316
|
-
name:
|
|
338
|
+
name: CALLER_CONTROLLED_S2C_TIMEOUT_PROPERTY,
|
|
317
339
|
reason: `register agent: ${e.body}`,
|
|
318
340
|
})));
|
|
319
341
|
const client = yield* makeTestClient({
|
|
@@ -324,7 +346,7 @@ export function registerCallerControlledS2cTimeout(ctx) {
|
|
|
324
346
|
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
325
347
|
}).pipe(Effect.mapError((e) => new PropertyInvariantViolation({
|
|
326
348
|
category: CATEGORY,
|
|
327
|
-
name:
|
|
349
|
+
name: CALLER_CONTROLLED_S2C_TIMEOUT_PROPERTY,
|
|
328
350
|
reason: `client acquire: ${String(e)}`,
|
|
329
351
|
})));
|
|
330
352
|
// 250ms (rather than the architect plan's example 100ms) hardens
|
|
@@ -332,25 +354,26 @@ export function registerCallerControlledS2cTimeout(ctx) {
|
|
|
332
354
|
// 200–500ms on a 100ms timer, while a 250ms timer with the same
|
|
333
355
|
// 4× upper bound stays well clear of the flake band.
|
|
334
356
|
const timeoutMs = 250;
|
|
335
|
-
const lowerBoundMs = timeoutMs -
|
|
336
|
-
const upperBoundMs = timeoutMs *
|
|
357
|
+
const lowerBoundMs = timeoutMs - TIMEOUT_LOWER_MARGIN_MS;
|
|
358
|
+
const upperBoundMs = timeoutMs * TIMEOUT_UPPER_MULTIPLIER;
|
|
337
359
|
const before = Date.now();
|
|
338
360
|
const outcome = yield* client
|
|
339
|
-
.awaitServerRequest(
|
|
361
|
+
.awaitServerRequest(AppsOnBeforeDispatch.name, undefined, timeoutMs)
|
|
340
362
|
.pipe(Effect.either);
|
|
341
363
|
const elapsed = Date.now() - before;
|
|
342
|
-
|
|
343
|
-
|
|
364
|
+
const timeoutError = yield* Either.match(outcome, {
|
|
365
|
+
onLeft: (error) => Effect.succeed(error),
|
|
366
|
+
onRight: () => Effect.fail(new PropertyInvariantViolation({
|
|
344
367
|
category: CATEGORY,
|
|
345
|
-
name:
|
|
368
|
+
name: CALLER_CONTROLLED_S2C_TIMEOUT_PROPERTY,
|
|
346
369
|
reason: `expected Left (timeout); got Right (s2c request fired)`,
|
|
347
|
-
}))
|
|
348
|
-
}
|
|
349
|
-
if (!/Timeout/i.test(
|
|
370
|
+
})),
|
|
371
|
+
});
|
|
372
|
+
if (!/Timeout/i.test(timeoutError.message)) {
|
|
350
373
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
351
374
|
category: CATEGORY,
|
|
352
|
-
name:
|
|
353
|
-
reason: `expected timeout error; got ${
|
|
375
|
+
name: CALLER_CONTROLLED_S2C_TIMEOUT_PROPERTY,
|
|
376
|
+
reason: `expected timeout error; got ${timeoutError.message}`,
|
|
354
377
|
}));
|
|
355
378
|
}
|
|
356
379
|
// Window is the caller's. Floor rejects "timed out before the
|
|
@@ -361,7 +384,7 @@ export function registerCallerControlledS2cTimeout(ctx) {
|
|
|
361
384
|
if (elapsed < lowerBoundMs || elapsed > upperBoundMs) {
|
|
362
385
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
363
386
|
category: CATEGORY,
|
|
364
|
-
name:
|
|
387
|
+
name: CALLER_CONTROLLED_S2C_TIMEOUT_PROPERTY,
|
|
365
388
|
reason: `timeout fired at ${elapsed}ms; caller asked for ${timeoutMs}ms (window: ${lowerBoundMs}–${upperBoundMs}ms)`,
|
|
366
389
|
}));
|
|
367
390
|
}
|
|
@@ -380,16 +403,16 @@ export function registerCallerControlledS2cTimeout(ctx) {
|
|
|
380
403
|
* — spec B5 says "identical results", not "identical outcome kinds".
|
|
381
404
|
*/
|
|
382
405
|
export function registerIdempotence(ctx) {
|
|
383
|
-
registerProperty(ctx, CATEGORY,
|
|
406
|
+
registerProperty(ctx, CATEGORY, IDEMPOTENCE_PROPERTY, "isIdempotent methods: two sends yield identical response bodies", Effect.gen(function* () {
|
|
384
407
|
const emptyParamIdempotents = [
|
|
385
|
-
|
|
386
|
-
|
|
408
|
+
AgentsList.name,
|
|
409
|
+
ConversationsList.name,
|
|
387
410
|
];
|
|
388
411
|
for (const method of emptyParamIdempotents) {
|
|
389
412
|
if (!isIdempotent(method)) {
|
|
390
413
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
391
414
|
category: CATEGORY,
|
|
392
|
-
name:
|
|
415
|
+
name: IDEMPOTENCE_PROPERTY,
|
|
393
416
|
reason: `isIdempotent(${method}) is false — oracle disagreement`,
|
|
394
417
|
}));
|
|
395
418
|
}
|
|
@@ -411,43 +434,52 @@ export function registerIdempotence(ctx) {
|
|
|
411
434
|
})).pipe(Effect.catchTags({
|
|
412
435
|
TestingAgentRegistrationError: (e) => Effect.fail(new PropertyUnavailable({
|
|
413
436
|
category: CATEGORY,
|
|
414
|
-
name:
|
|
437
|
+
name: IDEMPOTENCE_PROPERTY,
|
|
415
438
|
reason: `register: ${e.body}`,
|
|
416
439
|
})),
|
|
417
440
|
TestingTransportIoError: (e) => Effect.fail(new PropertyUnavailable({
|
|
418
441
|
category: CATEGORY,
|
|
419
|
-
name:
|
|
442
|
+
name: IDEMPOTENCE_PROPERTY,
|
|
420
443
|
reason: `transport io: ${String(e.cause)}`,
|
|
421
444
|
})),
|
|
422
445
|
TestingTransportClosedError: (e) => Effect.fail(new PropertyUnavailable({
|
|
423
446
|
category: CATEGORY,
|
|
424
|
-
name:
|
|
447
|
+
name: IDEMPOTENCE_PROPERTY,
|
|
425
448
|
reason: `transport closed: ${e.reason}`,
|
|
426
449
|
})),
|
|
427
450
|
TestingRpcResponseError: (e) => Effect.fail(new PropertyUnavailable({
|
|
428
451
|
category: CATEGORY,
|
|
429
|
-
name:
|
|
452
|
+
name: IDEMPOTENCE_PROPERTY,
|
|
430
453
|
reason: `rpc response error: ${e.message}`,
|
|
431
454
|
})),
|
|
432
455
|
}));
|
|
433
|
-
|
|
456
|
+
const aTag = eitherTag(pair.a);
|
|
457
|
+
const bTag = eitherTag(pair.b);
|
|
458
|
+
if (aTag !== bTag) {
|
|
434
459
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
435
460
|
category: CATEGORY,
|
|
436
|
-
name:
|
|
437
|
-
reason: `${method}: replay outcome-tag mismatch ${
|
|
461
|
+
name: IDEMPOTENCE_PROPERTY,
|
|
462
|
+
reason: `${method}: replay outcome-tag mismatch ${aTag} → ${bTag}`,
|
|
438
463
|
}));
|
|
439
464
|
}
|
|
440
|
-
|
|
465
|
+
const successPair = Either.match(pair.a, {
|
|
466
|
+
onLeft: () => null,
|
|
467
|
+
onRight: (a) => Either.match(pair.b, {
|
|
468
|
+
onLeft: () => null,
|
|
469
|
+
onRight: (b) => ({ a, b }),
|
|
470
|
+
}),
|
|
471
|
+
});
|
|
472
|
+
if (successPair !== null) {
|
|
441
473
|
// Canonical-projection comparison per architect #197 §3.3.
|
|
442
474
|
// Direct JSON.stringify on wire-derived values is byte-
|
|
443
475
|
// equality, not semantic equality; a conforming server may
|
|
444
476
|
// return the list in a different row order across replays.
|
|
445
|
-
const aCanon = canonIdempotenceResult(method,
|
|
446
|
-
const bCanon = canonIdempotenceResult(method,
|
|
477
|
+
const aCanon = canonIdempotenceResult(method, successPair.a);
|
|
478
|
+
const bCanon = canonIdempotenceResult(method, successPair.b);
|
|
447
479
|
if (aCanon !== bCanon) {
|
|
448
480
|
return yield* Effect.fail(new PropertyInvariantViolation({
|
|
449
481
|
category: CATEGORY,
|
|
450
|
-
name:
|
|
482
|
+
name: IDEMPOTENCE_PROPERTY,
|
|
451
483
|
reason: `${method}: replay bodies diverge under canonical projection`,
|
|
452
484
|
}));
|
|
453
485
|
}
|
|
@@ -472,7 +504,7 @@ export function registerIdempotence(ctx) {
|
|
|
472
504
|
* fails the property.
|
|
473
505
|
*/
|
|
474
506
|
function canonIdempotenceResult(method, result) {
|
|
475
|
-
if (method ===
|
|
507
|
+
if (method === AgentsList.name) {
|
|
476
508
|
const r = result;
|
|
477
509
|
return canonicalJson({
|
|
478
510
|
...r,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-semantics.js","sourceRoot":"","sources":["../../../src/testing/conformance/rpc-semantics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpc-semantics.js","sourceRoot":"","sources":["../../../src/testing/conformance/rpc-semantics.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,12 @@ export interface RealServerHandle {
|
|
|
25
25
|
readonly wsUrl: string;
|
|
26
26
|
readonly baseUrl: string;
|
|
27
27
|
/** Teardown hook; the runner's Scope calls this on release. */
|
|
28
|
-
readonly close:
|
|
28
|
+
readonly close: Effect.Effect<void>;
|
|
29
29
|
}
|
|
30
30
|
export interface ConformanceRunOptions {
|
|
31
31
|
readonly tiers: ReadonlyArray<"A" | "B" | "C" | "D" | "E">;
|
|
32
32
|
/** Supplier for the real server; invoked once per run. */
|
|
33
|
-
readonly realServer:
|
|
33
|
+
readonly realServer: Effect.Effect<RealServerHandle, RealServerAcquireError>;
|
|
34
34
|
/** If provided, replay this exact fast-check seed (AC10 reproducibility). */
|
|
35
35
|
readonly replaySeed?: number;
|
|
36
36
|
/** Number of runs per property; fast-check default is 100. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/testing/conformance/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/testing/conformance/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAA0B,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpE,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAYzE;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3D,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;IAC7E,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,qBAAqB,GAC1B,MAAM,CAAC,MAAM,CACd,qBAAqB,EACrB,iBAAiB,GAAG,sBAAsB,EAC1C,KAAK,CAAC,KAAK,CACZ,CA8BA;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,qBAAqB,GACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAMrB"}
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
* - pin fast-check seeds and export them on failure (AC10);
|
|
13
13
|
* - tear everything down in reverse order.
|
|
14
14
|
*/
|
|
15
|
-
import { Effect, Ref, Scope } from "effect";
|
|
15
|
+
import { Config, ConfigProvider, Effect, Ref, Scope } from "effect";
|
|
16
16
|
import { makeToxiproxyClient } from "../toxics/client.js";
|
|
17
17
|
import { RealServerAcquireError, ToxicControlError } from "../errors.js";
|
|
18
18
|
import { conformanceNumRunsFromEnv } from "./env.js";
|
|
19
|
+
const REPLAY_SEED_MASK = 0x7fffffff;
|
|
20
|
+
const loadFastCheckSeed = Config.integer("FC_SEED").pipe(Effect.withConfigProvider(ConfigProvider.fromEnv()), Effect.orElseSucceed(() => Date.now() & REPLAY_SEED_MASK));
|
|
19
21
|
/**
|
|
20
22
|
* Acquire the full context (real server + optional Toxiproxy) under one
|
|
21
23
|
* Scope; Vitest's `beforeAll`/`afterAll` tick the scope.
|
|
@@ -26,16 +28,9 @@ export function acquireRunContext(opts) {
|
|
|
26
28
|
...opts,
|
|
27
29
|
numRuns: opts.numRuns ?? conformanceNumRunsFromEnv(),
|
|
28
30
|
};
|
|
29
|
-
const seed = effectiveOpts.replaySeed ??
|
|
30
|
-
Number(process.env.FC_SEED ?? Date.now() & 0x7fffffff);
|
|
31
|
+
const seed = effectiveOpts.replaySeed ?? (yield* loadFastCheckSeed);
|
|
31
32
|
const artifacts = yield* Ref.make([]);
|
|
32
|
-
const realServer = yield* Effect.acquireRelease(Effect.
|
|
33
|
-
try: () => opts.realServer(),
|
|
34
|
-
catch: (cause) => new RealServerAcquireError({ cause }),
|
|
35
|
-
}), (handle) => Effect.tryPromise({
|
|
36
|
-
try: () => handle.close(),
|
|
37
|
-
catch: () => new Error("realServer.close() threw"),
|
|
38
|
-
}).pipe(Effect.orElseSucceed(() => undefined), Effect.asVoid));
|
|
33
|
+
const realServer = yield* Effect.acquireRelease(opts.realServer, (handle) => handle.close.pipe(Effect.orElseSucceed(() => undefined)));
|
|
39
34
|
let toxiproxy = null;
|
|
40
35
|
if (effectiveOpts.tiers.includes("D")) {
|
|
41
36
|
const url = effectiveOpts.toxiproxyUrl ?? "http://127.0.0.1:8474";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/testing/conformance/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/testing/conformance/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAwB,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC,MAAM,iBAAiB,GAAiC,MAAM,CAAC,OAAO,CACpE,SAAS,CACV,CAAC,IAAI,CACJ,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,EACnD,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAC1D,CAAC;AAsDF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA2B;IAM3B,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,aAAa,GAAG;YACpB,GAAG,IAAI;YACP,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,yBAAyB,EAAE;SACrD,CAAC;QACF,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAqC,EAAE,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAC1E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CACzD,CAAC;QAEF,IAAI,SAAS,GAA2B,IAAI,CAAC;QAC7C,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,aAAa,CAAC,YAAY,IAAI,uBAAuB,CAAC;YAClE,SAAS,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CACxB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,UAAU;YACV,SAAS;YACT,IAAI,EAAE,aAAa;YACnB,IAAI;YACJ,SAAS;SACsB,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,GAA0B;IAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACtB,OAAO,CAAC,GAAG,CACT,sBAAsB,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE,CACvG,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-conformance.d.ts","sourceRoot":"","sources":["../../../src/testing/conformance/schema-conformance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-conformance.d.ts","sourceRoot":"","sources":["../../../src/testing/conformance/schema-conformance.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAqBzD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CA+EN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CA4B5E;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAoC1E;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAiEN;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAmCN;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAqBN;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAqCN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAgFN;AA0FD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAqEvE"}
|