@openwop/openwop-conformance 1.101.0 → 1.102.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_comment": "Provenance of this vendored schemas/ copy. See conformance/README.md \u00a7\"Resolving the contract\". Compare against the stamp in your installed @openwop/openwop-conformance to detect a stale hand-copied contract.",
|
|
3
|
-
"suiteVersion": "1.
|
|
4
|
-
"corpusCommit": "
|
|
3
|
+
"suiteVersion": "1.102.0",
|
|
4
|
+
"corpusCommit": "6fa46a846fa43fd14b8499fb38d8230a9bbb6eb3"
|
|
5
5
|
}
|
|
@@ -122,11 +122,54 @@ describe.skipIf(SKIP_TIMEOUT)('run-execution-bounds: run-duration breach (RFC 00
|
|
|
122
122
|
'run-event-payloads.schema.json §capBreached.kind',
|
|
123
123
|
'cap.breached payload MUST carry kind="run-duration"',
|
|
124
124
|
)).toBe('run-duration');
|
|
125
|
+
// Three distinct failure modes, asserted separately and WITH THE VALUES.
|
|
126
|
+
//
|
|
127
|
+
// The previous form ANDed all three into one boolean over a message that
|
|
128
|
+
// named none of them, so a failure said only "MUST be strictly greater" —
|
|
129
|
+
// you could not tell whether `observed` was missing, equal, or smaller. A
|
|
130
|
+
// tier-1 host hit this intermittently and had to reason out the mechanism
|
|
131
|
+
// from first principles, because the assertion about observed values did
|
|
132
|
+
// not report the observed values.
|
|
125
133
|
expect(
|
|
126
|
-
typeof payload?.observed
|
|
134
|
+
typeof payload?.observed,
|
|
127
135
|
driver.describe(
|
|
128
136
|
'run-event-payloads.schema.json §capBreached.observed',
|
|
129
|
-
|
|
137
|
+
`cap.breached MUST carry a numeric \`observed\`; got ${JSON.stringify(payload?.observed)}`,
|
|
138
|
+
),
|
|
139
|
+
).toBe('number');
|
|
140
|
+
expect(
|
|
141
|
+
typeof payload?.limit,
|
|
142
|
+
driver.describe(
|
|
143
|
+
'run-event-payloads.schema.json §capBreached.limit',
|
|
144
|
+
`cap.breached MUST carry a numeric \`limit\`; got ${JSON.stringify(payload?.limit)}`,
|
|
145
|
+
),
|
|
146
|
+
).toBe('number');
|
|
147
|
+
|
|
148
|
+
// `capabilities.md` §"Engine-enforced limits": *"Always strictly greater
|
|
149
|
+
// than limit."* This is satisfiable and it constrains the host's comparison:
|
|
150
|
+
// breach when elapsed EXCEEDS the deadline, not when it reaches it. A host
|
|
151
|
+
// testing `elapsed >= limit` emits `observed === limit` exactly when the
|
|
152
|
+
// clock lands on the boundary — which is rare, machine-dependent, and
|
|
153
|
+
// therefore reads as flake rather than as the deterministic defect it is.
|
|
154
|
+
//
|
|
155
|
+
// That asymmetry is why the diagnosis belongs in the message: system load
|
|
156
|
+
// makes elapsed LARGER, so it makes this assertion easier to satisfy, not
|
|
157
|
+
// harder. An `observed === limit` failure is not a loaded box — it is a
|
|
158
|
+
// `>=` comparison in the host.
|
|
159
|
+
const { observed = NaN, limit = NaN } = payload ?? {};
|
|
160
|
+
expect(
|
|
161
|
+
observed > limit,
|
|
162
|
+
driver.describe(
|
|
163
|
+
'run-event-payloads.schema.json §capBreached.observed',
|
|
164
|
+
`observed (elapsedMs) MUST be strictly greater than limit (resolved timeout). ` +
|
|
165
|
+
`Got observed=${observed}, limit=${limit}` +
|
|
166
|
+
(observed === limit
|
|
167
|
+
? '. They are EQUAL, which means the host breached at `elapsed >= limit` rather than ' +
|
|
168
|
+
'`elapsed > limit`. The limit is not breached until it has been passed. This is ' +
|
|
169
|
+
'deterministic in the host and only surfaces when the clock lands exactly on the ' +
|
|
170
|
+
'boundary, so it presents as an intermittent failure — load makes elapsed larger and ' +
|
|
171
|
+
'therefore makes this assertion PASS more often, not less.'
|
|
172
|
+
: '.'),
|
|
130
173
|
),
|
|
131
174
|
).toBe(true);
|
|
132
175
|
});
|