@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.63",
4
- "stampSha256": "fc832118a094bf1ed10fa233af7b1f2eed7dd6cc9eb3df2ef13610c0957dd9a9"
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.63",
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.63"
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": 86,
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.63",
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": "3346a3abd83920d38c37ba3a76e9853f5eecd9daac5d449c3a81ee89af291f2b",
13
- "api/v2/asyncapi.yaml": "573603322c45df47b803e26fc6eedc12c1d4c71a69f650e64da15728c9f4865e",
14
- "api/v2/openapi.yaml": "40a5c055d5e6f0395754c5fe550f3f1b9aa4ce0f6b272fe0cbef7da48499e93c",
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": "9e690f8e5dbf9aa7c82eef4bf7cf96c024f0f8626ad5bbaca3ff25ac63c7cab2",
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": "061b0986b66396273bb08ee7177746b51a66227cc6a535e3f57fa60c932c003d",
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": "efa92244efb4782514548a5c467a968454ca43aacd6339452cba1cc5bd265436",
233
+ "spec/v2/release.json": "610eb7bdba31c886df96a12b32bc9792e6b457083e611e5d772eb6750b658e63",
234
234
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624"
235
235
  },
236
- "corpusCommit": "443c27405e4bc132f8d436da5f08903291b824e0"
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