@openwop/openwop-conformance 2.45.1 → 2.45.2
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# `@openwop/openwop-conformance` Changelog
|
|
2
2
|
|
|
3
|
+
## [2.45.2] — 2026-09-30 — a run-failure code must be registered or a vendor code (no longer advisory)
|
|
4
|
+
|
|
5
|
+
- **`errors.event-code-registered` is required** (#1698). The leg in `v2-error-registry` shipped ADVISORY in 2.43.1: an unregistered, non-vendor code on `run.failed`, `node.failed` or the snapshot's `error` recorded a partial witness naming the codes, while hosts remapped. That branch is removed, so such a code now fails the row, which names each `where=code`.
|
|
6
|
+
- **Evidence.** All three hosts' latest certified bundles record it as a clean `executed-pass` (2 assertions, no partial-witness detail), each verified under the key its host serves:
|
|
7
|
+
- the v2 reference host at 2.44.6 (witness `188a23d56886`);
|
|
8
|
+
- MyndHyve at 2.44.3 (`58da9407e616`);
|
|
9
|
+
- openwop-app at 2.44.5 (build `ab77c3aa`, `cb16716e1be6`).
|
|
10
|
+
- **Negative control.** A stub host whose failed run carries `totally_unregistered_code` passed the advisory leg and now fails it. A vendor code (`example.conformance_failure`) still passes.
|
|
11
|
+
- **Ids.** The title drops "(advisory in 2.43.1)". The per-`it` id is unchanged, since the slug is capped before those words.
|
|
12
|
+
|
|
3
13
|
## [2.45.1] — 2026-09-29 — the run-list legs stop walking once they find their runs, and no scenario skips every test at describe level
|
|
4
14
|
|
|
5
15
|
- **No scenario file skips every test at describe level any more, and the guard is a hard rule** (patch; no requirement added or removed; the gates are identical, and only their placement moves).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/openwop-conformance",
|
|
3
|
-
"version": "2.45.
|
|
3
|
+
"version": "2.45.2",
|
|
4
4
|
"description": "Production-ready black-box conformance suite for OpenWOP v1.0 compliant servers.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -56,6 +56,6 @@
|
|
|
56
56
|
"@openwop/spec-artifacts": "file:../spec-artifacts"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@openwop/spec-artifacts": "2.45.
|
|
59
|
+
"@openwop/spec-artifacts": "2.45.2"
|
|
60
60
|
}
|
|
61
61
|
}
|
package/requirements.json
CHANGED
|
@@ -29780,7 +29780,7 @@
|
|
|
29780
29780
|
{
|
|
29781
29781
|
"id": "openwop.it.v2-error-registry.an-error-response-is-the-closed-envelope-with-a-registered-code-at-its-registere",
|
|
29782
29782
|
"file": "v2-error-registry.test.ts",
|
|
29783
|
-
"line":
|
|
29783
|
+
"line": 75,
|
|
29784
29784
|
"title": "an error response is the closed envelope with a registered code at its registered status",
|
|
29785
29785
|
"explicitId": "openwop.requirement.0171.error-registry.envelope",
|
|
29786
29786
|
"citations": [
|
|
@@ -29799,7 +29799,7 @@
|
|
|
29799
29799
|
{
|
|
29800
29800
|
"id": "openwop.it.v2-error-registry.retry-timing-is-never-spelled-inside-details",
|
|
29801
29801
|
"file": "v2-error-registry.test.ts",
|
|
29802
|
-
"line":
|
|
29802
|
+
"line": 87,
|
|
29803
29803
|
"title": "retry timing is never spelled inside details",
|
|
29804
29804
|
"explicitId": "openwop.requirement.0171.error-registry.no-retry-details",
|
|
29805
29805
|
"citations": [
|
|
@@ -29812,7 +29812,7 @@
|
|
|
29812
29812
|
{
|
|
29813
29813
|
"id": "openwop.it.v2-error-registry.a-429-rate-limited-response-carries-retry-after",
|
|
29814
29814
|
"file": "v2-error-registry.test.ts",
|
|
29815
|
-
"line":
|
|
29815
|
+
"line": 95,
|
|
29816
29816
|
"title": "a 429 rate_limited response carries Retry-After",
|
|
29817
29817
|
"explicitId": "openwop.requirement.0171.error-registry.retry-after",
|
|
29818
29818
|
"citations": [
|
|
@@ -29829,8 +29829,8 @@
|
|
|
29829
29829
|
{
|
|
29830
29830
|
"id": "openwop.it.v2-error-registry.an-error-code-on-run-failed-node-failed-and-the-snapshot-is-registered-or-a-vend",
|
|
29831
29831
|
"file": "v2-error-registry.test.ts",
|
|
29832
|
-
"line":
|
|
29833
|
-
"title": "an error code on run.failed, node.failed and the snapshot is registered or a vendor code
|
|
29832
|
+
"line": 113,
|
|
29833
|
+
"title": "an error code on run.failed, node.failed and the snapshot is registered or a vendor code",
|
|
29834
29834
|
"explicitId": "openwop.requirement.errors.event-code-registered",
|
|
29835
29835
|
"citations": [
|
|
29836
29836
|
{
|
|
@@ -29840,7 +29840,7 @@
|
|
|
29840
29840
|
},
|
|
29841
29841
|
{
|
|
29842
29842
|
"section": "spec/v2/core/errors.md §The registry",
|
|
29843
|
-
"requirement": "every error code on run.failed, node.failed and the snapshot MUST be registered or a vendor code"
|
|
29843
|
+
"requirement": "every error code on run.failed, node.failed and the snapshot MUST be registered or a vendor code (an org registered in spec/v2/declaration.json)"
|
|
29844
29844
|
}
|
|
29845
29845
|
]
|
|
29846
29846
|
},
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_comment": "Provenance of @openwop/spec-artifacts (RFC 0168 §D.2). files: SHA-256 per file; the conformance suite compares the installed peer against dist/spec-artifacts.lock.json at start.",
|
|
3
3
|
"package": "@openwop/spec-artifacts",
|
|
4
|
-
"version": "2.45.
|
|
5
|
-
"corpusTag": "v2.45.
|
|
4
|
+
"version": "2.45.2",
|
|
5
|
+
"corpusTag": "v2.45.2",
|
|
6
6
|
"files": {
|
|
7
7
|
"api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
|
|
8
8
|
"api/asyncapi.yaml": "d5ecb9ee6114582be3b1f662c84bfac9ae96dae7bacb853e461168f70a8e1c7d",
|
|
9
9
|
"api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
|
|
10
10
|
"api/openapi.yaml": "69464bc0e1e71ef3b543a73d4fa4f67202343d2603c80af8033f6c3619ef1b30",
|
|
11
11
|
"api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
|
|
12
|
-
"api/seams-v2.yaml": "
|
|
13
|
-
"api/v2/asyncapi.yaml": "
|
|
14
|
-
"api/v2/openapi.yaml": "
|
|
12
|
+
"api/seams-v2.yaml": "4eb20e64dbccf5e7ed1f3ffba7882f576bb1629f8523eaffae54d05809e1bc66",
|
|
13
|
+
"api/v2/asyncapi.yaml": "910690735bc6bca78f51801854fa3e3ed9eb9a56f65441d594401fb19e684ba3",
|
|
14
|
+
"api/v2/openapi.yaml": "b4fb04a206521719a1b13733914550d4d671e57c0c276122bedb88635fd8901c",
|
|
15
15
|
"api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
|
|
16
16
|
"schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
|
|
17
17
|
"schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
|
|
@@ -204,13 +204,13 @@
|
|
|
204
204
|
"schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
|
|
205
205
|
"spec/v1/alias-detectors.json": "0b2f28808ffe0b9d98a187775038c3406bb70919747a788a6e4f866e293ae6d3",
|
|
206
206
|
"spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
|
|
207
|
-
"spec/v1/core-standard-manifest.json": "
|
|
207
|
+
"spec/v1/core-standard-manifest.json": "c948680f15a882c4bd97fa41235879d4103d3d3887ed294028ba9dfbb1d5d1a9",
|
|
208
208
|
"spec/v1/deprecations.json": "a3293072ea951857395d05f0437264e88965f1e9019ff61c55bacfa9c1aaa17c",
|
|
209
209
|
"spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
|
|
210
210
|
"spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
|
|
211
211
|
"spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
|
|
212
212
|
"spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
|
|
213
|
-
"spec/v1/gaps.json": "
|
|
213
|
+
"spec/v1/gaps.json": "ac1fb9286c963aa19824292526a6f9726d9d2df5fe06695cc6afdfb33554edd2",
|
|
214
214
|
"spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
|
|
215
215
|
"spec/v1/migrations.json": "4c50760be70cb644d02427bcaf5749606700edf4513f423903cf3b1d12f5c300",
|
|
216
216
|
"spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
|
|
@@ -303,9 +303,9 @@
|
|
|
303
303
|
"spec/v2/path-manifest.json": "27c2307b84376b2f22bea4e2213fc7e33ef3bf8fd1d18039f7955edb00dc9c9a",
|
|
304
304
|
"spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
|
|
305
305
|
"spec/v2/profiles.json": "180beb9ef2d161766fa23b2987e7e829851e3d316273147cf6a4a3f324befd6b",
|
|
306
|
-
"spec/v2/release.json": "
|
|
306
|
+
"spec/v2/release.json": "f042a3f11bc9eaffcd054a6f4b94e78931d6289191d2c8dde2f169a63478e3f1",
|
|
307
307
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
|
|
308
|
-
"spec/v2/surface-baseline.json": "
|
|
308
|
+
"spec/v2/surface-baseline.json": "18c9f38e3b596465128ceeee10cbdd17395672da5fe321db03ab4eee67bd50a4"
|
|
309
309
|
},
|
|
310
|
-
"corpusCommit": "
|
|
310
|
+
"corpusCommit": "5bc14dd1ef9a0c6d8ab4bf220fbef47a74792212"
|
|
311
311
|
}
|
|
@@ -16,8 +16,11 @@
|
|
|
16
16
|
* `error` exactly as it binds an error response. The leg runs
|
|
17
17
|
* `conformance-failure` and checks every such code against the registry and the
|
|
18
18
|
* vendor pattern (first segment an org registered in `spec/v2/declaration.json`).
|
|
19
|
-
* ADVISORY
|
|
20
|
-
* the codes, not a failure, while hosts
|
|
19
|
+
* It shipped ADVISORY in suite 2.43.1: a violation was recorded as a partial
|
|
20
|
+
* witness naming the codes, not a failure, while hosts remapped (RFC 0171 gaps
|
|
21
|
+
* G6–G8). REQUIRED since 2.45.2 (openwop#1698): all three hosts' latest
|
|
22
|
+
* certified bundles record it `executed-pass` after their remaps to the RFC
|
|
23
|
+
* 0226 rows, so an unregistered, non-vendor code now fails the row.
|
|
21
24
|
*/
|
|
22
25
|
|
|
23
26
|
import { describe, it, expect } from 'vitest';
|
|
@@ -107,7 +110,7 @@ describe('v2 error-registry (RFC 0171 §B.1–§B.2)', () => {
|
|
|
107
110
|
}
|
|
108
111
|
});
|
|
109
112
|
|
|
110
|
-
it('an error code on run.failed, node.failed and the snapshot is registered or a vendor code
|
|
113
|
+
it('an error code on run.failed, node.failed and the snapshot is registered or a vendor code', async () => {
|
|
111
114
|
if (!(await discovery())) return softSkip('blocked', 'v2 discovery unreachable — /.well-known/openwop did not answer 200 with a JSON body under OpenWOP-Version: 2.0');
|
|
112
115
|
const accepted = codeAccepted();
|
|
113
116
|
if (accepted === null) return softSkip('inapplicable', 'spec/v2/errors.json or spec/v2/declaration.json is not present in this layout');
|
|
@@ -137,12 +140,6 @@ describe('v2 error-registry (RFC 0171 §B.1–§B.2)', () => {
|
|
|
137
140
|
const ID = 'openwop.requirement.errors.event-code-registered';
|
|
138
141
|
expect(seen.length, req(ID, 'spec/v2/core/errors.md §The registry', `a failed ${FAILURE_FIXTURE} run MUST carry an error code on run.failed, node.failed or the snapshot (status ${String(snap?.['status'])})`)).toBeGreaterThan(0);
|
|
139
142
|
const bad = seen.filter((s) => !accepted(s.code));
|
|
140
|
-
|
|
141
|
-
// partial-witness-ok: ADVISORY for suite 2.43.1 (openwop#1698). The codes were
|
|
142
|
-
// observed and checked above; a violation is recorded, not failed, for one
|
|
143
|
-
// suite patch while hosts remap. Per-host gap rows track them.
|
|
144
|
-
return softSkip('inapplicable', `ADVISORY (suite 2.43.1, openwop#1698): unregistered, non-vendor error codes: ${bad.map((b) => `${b.where}=${b.code}`).join(', ')}`);
|
|
145
|
-
}
|
|
146
|
-
expect(bad, req(ID, 'spec/v2/core/errors.md §The registry', 'every error code on run.failed, node.failed and the snapshot MUST be registered or a vendor code')).toEqual([]);
|
|
143
|
+
expect(bad.map((b) => `${b.where}=${b.code}`), req(ID, 'spec/v2/core/errors.md §The registry', 'every error code on run.failed, node.failed and the snapshot MUST be registered or a vendor code (an org registered in spec/v2/declaration.json)')).toEqual([]);
|
|
147
144
|
}, 45_000);
|
|
148
145
|
});
|