@openwop/openwop-conformance 2.0.0-rc.63 → 2.0.0-rc.65
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "@openwop/spec-artifacts",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
4
|
-
"stampSha256": "
|
|
3
|
+
"version": "2.0.0-rc.65",
|
|
4
|
+
"stampSha256": "df7de02dfb0a4ea7b6d121c0fdd7e1537fa6fef59a48ac87feb460a4762c3962"
|
|
5
5
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/openwop-conformance",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.65",
|
|
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.0.0-rc.
|
|
59
|
+
"@openwop/spec-artifacts": "2.0.0-rc.65"
|
|
60
60
|
}
|
|
61
61
|
}
|
package/requirements.json
CHANGED
|
@@ -28363,7 +28363,7 @@
|
|
|
28363
28363
|
{
|
|
28364
28364
|
"id": "openwop.it.v2-run-fork-prefix.a-replay-fork-inherits-exactly-0-fromseq-the-event-at-fromseq-is-re-executed-nev",
|
|
28365
28365
|
"file": "v2-run-fork-prefix.test.ts",
|
|
28366
|
-
"line":
|
|
28366
|
+
"line": 106,
|
|
28367
28367
|
"title": "a replay fork inherits exactly [0, fromSeq): the event at fromSeq is re-executed, never carried over",
|
|
28368
28368
|
"explicitId": null,
|
|
28369
28369
|
"citations": [
|
|
@@ -1,7 +1,7 @@
|
|
|
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.0.0-rc.
|
|
4
|
+
"version": "2.0.0-rc.65",
|
|
5
5
|
"corpusTag": null,
|
|
6
6
|
"files": {
|
|
7
7
|
"api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
"api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
|
|
10
10
|
"api/openapi.yaml": "39081c59fb696159806b0f2f9a42e7e9ff830d622fcf2ad4159b21357580a955",
|
|
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": "214004f52409bf229f3dd445ca4fe1004b0cb9d9a0f7b4ca4d8cd53550c85c87",
|
|
13
|
+
"api/v2/asyncapi.yaml": "a911a2256bc38dc990785091554b6250aa819e976950c8a4b1a85a67fb37a5d4",
|
|
14
|
+
"api/v2/openapi.yaml": "2e755cc01a3a203d8efe53b439a2595dc4b31d8641a8e3297f1e569d5e805f83",
|
|
15
15
|
"api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
|
|
16
16
|
"schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
|
|
17
17
|
"schemas/a2a-task-state.schema.json": "c9365918f993f943b4b619d42551eb066a1ed33a08d895d51b395432a5b1f1bc",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"schemas/v2/credential-reference.schema.json": "ea699ce30f58fb2c32d4279158b3f730f70be7b2dc8c3037693a76e66eb3e001",
|
|
132
132
|
"schemas/v2/debug-bundle.schema.json": "0bfa4b1d91fefbc12c95670dba9d5eacb72b879bb9a5c074e821ca9ed0fee6fd",
|
|
133
133
|
"schemas/v2/dispatch-config.schema.json": "4a7db312e6b4a14cf5b1ad2b71367878c77b6321cc456f5b3644dd6434e94cbd",
|
|
134
|
-
"schemas/v2/effect-ledger-projection.schema.json": "
|
|
134
|
+
"schemas/v2/effect-ledger-projection.schema.json": "928340b243c60aaf04c1b40adb09be8a90340d44f57be1dfff837be10f104822",
|
|
135
135
|
"schemas/v2/effect-seam-manifest.schema.json": "197ef9944ab027a50d1b9352f317cbbc12c8ad955fdb14650fb90477052ffef0",
|
|
136
136
|
"schemas/v2/envelopes/clarification.request.schema.json": "9e39d7b09f0b3ce7902d6aa19ca0eb52867b634efc78a881469c4d44fb3333e7",
|
|
137
137
|
"schemas/v2/envelopes/error.schema.json": "6a11fa3b9d61736fcb5675e6ac9825919aa609dceba13ef5615993d54647802b",
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
"schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
|
|
200
200
|
"spec/v1/alias-detectors.json": "fee4594ef49953953ffcd0b3813300067d16b3e65ebff2aac722034ac9b3f545",
|
|
201
201
|
"spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
|
|
202
|
-
"spec/v1/core-standard-manifest.json": "
|
|
202
|
+
"spec/v1/core-standard-manifest.json": "5faeef7cdad116f238a3a4e6f39f3ca3d65468178d86116fc076428259e5156e",
|
|
203
203
|
"spec/v1/deprecations.json": "1d5acb69a9b8ccb57275a95605f74aef1d920685f8407c9d382a46b59dc803bb",
|
|
204
204
|
"spec/v1/deprecations.schema.json": "18c87e78bedc210431f795ae44c5b5d202f2f3317850d5cf86867d4f1fa1cdfb",
|
|
205
205
|
"spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
|
|
@@ -230,8 +230,8 @@
|
|
|
230
230
|
"spec/v2/path-manifest.json": "034152e09b1458c66810d4050e20a273b2b9b8fe2d92b66e8b819477de58a1be",
|
|
231
231
|
"spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
|
|
232
232
|
"spec/v2/profiles.json": "0636f19fceae625390003a347e70ef4797d84766b5c24ce8a02cea52aadebca4",
|
|
233
|
-
"spec/v2/release.json": "
|
|
233
|
+
"spec/v2/release.json": "610eb7bdba31c886df96a12b32bc9792e6b457083e611e5d772eb6750b658e63",
|
|
234
234
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624"
|
|
235
235
|
},
|
|
236
|
-
"corpusCommit": "
|
|
236
|
+
"corpusCommit": "1dae086621b5b74d108338492f58212f89d65534"
|
|
237
237
|
}
|
|
@@ -73,6 +73,22 @@ describe('RFC 0173 §C.2 — effect-seam-no-refire (gated on replay, seam-driven
|
|
|
73
73
|
const b = r.json as { effects?: unknown } | null;
|
|
74
74
|
return Array.isArray(b?.effects) ? (b.effects as unknown[]).length : 0;
|
|
75
75
|
};
|
|
76
|
+
// The suppression witness is a COMPARISON, and a comparison against an
|
|
77
|
+
// empty source measures nothing. Until rc.64 this leg asserted only
|
|
78
|
+
// `fork <= parent`, so a host whose ledger recorded no attempt for the
|
|
79
|
+
// fired seam read 0 on both sides and PASSED — certifying suppression it
|
|
80
|
+
// had not observed. A tier-1 host found it the honest way: it was building
|
|
81
|
+
// an escapes-only ledger, worked out that both reads would be empty, and
|
|
82
|
+
// refused to ship the projection that would have gone green.
|
|
83
|
+
//
|
|
84
|
+
// `blocked`, not `inapplicable`: this host advertises the seams profile,
|
|
85
|
+
// mounts the seam, and the seam reported firing — the obligation is taken
|
|
86
|
+
// on and the declared witness (RFC 0173 §C.2) produced nothing, so the
|
|
87
|
+
// suite could not measure it. `inapplicable` is for an obligation the host
|
|
88
|
+
// never took on (lib/seams.ts).
|
|
89
|
+
if (countOf(parentEffects) === 0) {
|
|
90
|
+
return softSkip('blocked', `the fired run's effect ledger is empty at GET /runs/{runId}/effects, so a fork that also reads empty would compare 0 against 0 and witness nothing — suppression is observable only against a source attempt the host recorded (RFC 0173 §C.2). A host whose ledger records escapes only, or nothing for this seam, cannot witness this obligation.`);
|
|
91
|
+
}
|
|
76
92
|
const forked = await driver.post(`/runs/${encodeURIComponent(parentId)}:fork`, { mode: 'replay' });
|
|
77
93
|
const forkBody = forked.json as { runId?: unknown } | null;
|
|
78
94
|
if (forked.status !== 201 || typeof forkBody?.runId !== 'string') {
|
|
@@ -32,6 +32,26 @@
|
|
|
32
32
|
* re-executed. Length is therefore not the discriminator and this file does not
|
|
33
33
|
* assert on it; the event at the boundary is.
|
|
34
34
|
*
|
|
35
|
+
* Floor membership: RULED OUT (rc.65), and the reasoning generalises. Rule 10
|
|
36
|
+
* admits this file mechanically — it gates only on `replay`, which IS in the
|
|
37
|
+
* core-standard predicate, and carries no seam token. But rule 10's stated
|
|
38
|
+
* intent is that a floor file be "witnessable by an honest holder of the
|
|
39
|
+
* predicate", and this file is not: it is a SINGLE `it` gated entirely on
|
|
40
|
+
* `isFixtureAdvertised(conformance-multi-node)`, and no spec text makes that
|
|
41
|
+
* fixture mandatory. An honest `replay` holder without it records the whole
|
|
42
|
+
* file `inapplicable` and contributes zero witness. Contrast the eleven of
|
|
43
|
+
* thirteen current core-standard members with no fixture gate at all, and the
|
|
44
|
+
* two that have one (`v2-run-cancel`, `v2-run-pause-resume`) gating only SOME
|
|
45
|
+
* legs of a multi-`it` file, so the file still witnesses — the rc.59
|
|
46
|
+
* `partial-witness:` pattern.
|
|
47
|
+
*
|
|
48
|
+
* The test for any future floor candidate, then: CAN THE FILE STILL WITNESS
|
|
49
|
+
* FOR A PREDICATE HOLDER THAT ADVERTISES NO OPTIONAL FIXTURE? If the answer is
|
|
50
|
+
* no because it is single-leg and fixture-gated, it is a valid scenario and not
|
|
51
|
+
* a floor member. That is a statement about the floor's promise, not about this
|
|
52
|
+
* file's worth: the boundary it checks is real and a tier-1 host shipped the
|
|
53
|
+
* bug it catches.
|
|
54
|
+
*
|
|
35
55
|
* What this file deliberately does NOT assert: the CONTENT of the re-executed
|
|
36
56
|
* tail, determinism across two forks, timing, and effect re-fire suppression.
|
|
37
57
|
* Those are `replay.md` §Replay determinism and the seams floor's, witnessed in
|