@openwop/openwop-conformance 1.131.0 → 1.132.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.132.0",
|
|
4
|
+
"corpusCommit": "1f702f91558437558816d0e6af251926942d123f"
|
|
5
5
|
}
|
|
@@ -31,24 +31,29 @@
|
|
|
31
31
|
* (soft-skips without the advert, HARD-FAILS under `OPENWOP_REQUIRE_BEHAVIOR=true`)
|
|
32
32
|
* and records its RFC 0148 §A disposition. The three sub-features are
|
|
33
33
|
* INDEPENDENTLY optional: a host that wires the base seams but not this
|
|
34
|
-
* extension is `blocked` here (named as such via `
|
|
34
|
+
* extension is `blocked` here (named as such via `softSkip`) and keeps its
|
|
35
35
|
* `compensation-behavior` witness — the base and the extension are different
|
|
36
36
|
* claims and are recorded separately.
|
|
37
37
|
*
|
|
38
|
-
* Mode
|
|
39
|
-
*
|
|
40
|
-
* `
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
38
|
+
* Mode does NOT change that (S24, corrected 2026-08-16 after the first host to
|
|
39
|
+
* wire §21 read the contract back to us): the recovery extension has NO advert
|
|
40
|
+
* flag — `capabilities.compensation` is closed over `supported` /
|
|
41
|
+
* `profileVersion` / `orderingModels` / `manualIntervention` — so a host cannot
|
|
42
|
+
* claim or disclaim it, and `seamAbsent` (whose contract is "an ADVERTISED
|
|
43
|
+
* capability whose observation seam is absent", strict-failing) is the wrong
|
|
44
|
+
* tool for it. An absent extension is `softSkip('blocked', …)` in both modes,
|
|
45
|
+
* exactly as §21 says; the ledger still refuses to certify the three §G
|
|
46
|
+
* invariants, so nothing weakens. The BASE seams (`unwind` / `replay`) are a
|
|
47
|
+
* different matter: `compensation.supported` promises them, and a 404 there
|
|
48
|
+
* stays `seamAbsent` (strict-fails) — that is `compensation-behavior`'s wall,
|
|
49
|
+
* not this file's.
|
|
45
50
|
*/
|
|
46
51
|
|
|
47
52
|
import { describe, it, expect } from 'vitest';
|
|
48
53
|
import { driver } from '../lib/driver.js';
|
|
49
54
|
import { behaviorGate } from '../lib/behavior-gate.js';
|
|
50
55
|
import { capabilityFamily } from '../lib/discovery-capabilities.js';
|
|
51
|
-
import { seamAbsent } from '../lib/soft-skip.js';
|
|
56
|
+
import { seamAbsent, softSkip } from '../lib/soft-skip.js';
|
|
52
57
|
import { readErrorCode, readRetriable } from '../lib/error-envelope.js';
|
|
53
58
|
|
|
54
59
|
const PROFILE = 'openwop-compensation';
|
|
@@ -93,9 +98,14 @@ async function post(path: string, body: Record<string, unknown>): Promise<{ stat
|
|
|
93
98
|
return { status: r.status, json: r.json };
|
|
94
99
|
}
|
|
95
100
|
|
|
96
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* The recovery extension is optional and has no advert flag, so its absence is
|
|
103
|
+
* `blocked` in BOTH modes — `softSkip`, never `seamAbsent` (S24). The three §G
|
|
104
|
+
* invariants stay uncertified either way; strict mode is not entitled to fail
|
|
105
|
+
* a host for a sub-seam it was never asked to claim.
|
|
106
|
+
*/
|
|
97
107
|
function extensionAbsent(what: string): undefined {
|
|
98
|
-
return
|
|
108
|
+
return softSkip('blocked', `the §21 recovery extension is not wired: ${what} (host-sample-test-seams.md §21 "Recovery extension") — retry-stability / operator authority / recorded-facts are unobservable`);
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
describe('RFC 0151 §C — inverse-action identity is retry-stable (capability-gated behavior)', () => {
|