@openwop/openwop-conformance 1.105.0 → 1.106.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.106.0",
|
|
4
|
+
"corpusCommit": "328f41b272bce308f9d6c3c09209b69b1f0b118e"
|
|
5
5
|
}
|
|
@@ -14,10 +14,15 @@
|
|
|
14
14
|
* 200 {"maxTokens":null}
|
|
15
15
|
*
|
|
16
16
|
* The registration path logged *"test seam ENABLED — NEVER enable in
|
|
17
|
-
* production"* while doing exactly that
|
|
18
|
-
* performed no tenant resolution at all — staging keyed on `nodeId`, which is
|
|
17
|
+
* production"* while doing exactly that. Staging is keyed on `nodeId`, which is
|
|
19
18
|
* not a secret: node ids ship inside chain packs.
|
|
20
19
|
*
|
|
20
|
+
* (An earlier account of this — including the first version of this docblock —
|
|
21
|
+
* said the staging route performed *no tenant resolution at all*. The reporter
|
|
22
|
+
* retracted that within the hour: auth **runs and succeeds**, minting an
|
|
23
|
+
* anonymous session. The corrected mechanism is what makes the weak prose
|
|
24
|
+
* clause interesting, so it is recorded rather than quietly swapped.)
|
|
25
|
+
*
|
|
21
26
|
* **Why this matters beyond the seam.** A staged mock program makes a replay
|
|
22
27
|
* diverge on purpose, so an unauthenticated caller could switch off the
|
|
23
28
|
* byte-equivalence `replay.md` §C.2 requires — and any host advertising
|
|
@@ -30,6 +35,16 @@
|
|
|
30
35
|
* enabled answers `404` and passes correctly, which is the honest outcome
|
|
31
36
|
* rather than a skip.
|
|
32
37
|
*
|
|
38
|
+
* **Why this leg asserts the observable property, not the mechanism.** The prose clause
|
|
39
|
+
* originally required an enabled seam to apply *"the same authentication and tenant
|
|
40
|
+
* resolution as the canonical surface"* — which RFC 0132 makes trivially satisfiable, since
|
|
41
|
+
* the canonical surface legitimately admits anonymous actors. The reporting host's auth
|
|
42
|
+
* **ran and succeeded**, minting `tenantId: "anon:<sid>"`, so the seam applied exactly the
|
|
43
|
+
* canonical treatment and the hole survived the rule. This leg reds it either way, because
|
|
44
|
+
* a `200` to a credential-less caller is the thing that matters. **The prose and this leg
|
|
45
|
+
* disagreed for twenty minutes and the leg was right** — the clause now requires a
|
|
46
|
+
* non-anonymous principal.
|
|
47
|
+
*
|
|
33
48
|
* Requires a base URL; issues NO credentials by design.
|
|
34
49
|
*/
|
|
35
50
|
|
|
@@ -89,9 +104,10 @@ describe('test-seam-unauthenticated: an enabled seam still authenticates', () =>
|
|
|
89
104
|
answered,
|
|
90
105
|
driver.describe(
|
|
91
106
|
'host-sample-test-seams.md §"Production safety (normative)"',
|
|
92
|
-
'An ENABLED seam MUST
|
|
93
|
-
'
|
|
94
|
-
'
|
|
107
|
+
'An ENABLED seam MUST require an authenticated, NON-ANONYMOUS principal. A host that mints ' +
|
|
108
|
+
'an anonymous identity for credential-less callers MUST NOT treat it as satisfying that. ' +
|
|
109
|
+
'The env-gate governs whether a seam EXISTS; it does not govern who may call it. A seam ' +
|
|
110
|
+
'answering a credential-less request with 200 is an open control surface on a public ' +
|
|
95
111
|
'origin — and staging keys such as `nodeId` are not secrets, they ship inside chain ' +
|
|
96
112
|
'packs.\n ' + answered.join('\n '),
|
|
97
113
|
),
|