@openwop/openwop-conformance 2.40.0 → 2.40.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 +14 -0
- package/README.md +1 -1
- package/dist/cli.js +18 -2
- package/dist/lib/certification-bundle-v3.js +12 -4
- package/dist/spec-artifacts.lock.json +2 -2
- package/package.json +2 -2
- package/requirement-aliases.json +3 -1
- package/requirements.json +265 -65
- package/schemas/CORPUS-STAMP.json +15 -13
- package/src/cli.ts +20 -2
- package/src/lib/certification-bundle-v3.ts +15 -5
- package/src/lib/harness-issuer.ts +101 -0
- package/src/lib/v2-retired-members.ts +119 -0
- package/src/scenarios/v2-a2ui-v09-surface.test.ts +15 -0
- package/src/scenarios/v2-artifact-a2a-shape.test.ts +14 -0
- package/src/scenarios/v2-capability-maturity-bounded.test.ts +62 -1
- package/src/scenarios/v2-lane-exp-only-bound.test.ts +22 -19
- package/src/scenarios/v2-oidc-id-token-audience.test.ts +24 -23
package/requirements.json
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"$comment": "GENERATED by conformance/scripts/generate-requirement-registry.mjs — do not edit. One record per it()/test() in src/scenarios. Ids: openwop.it.<file-stem>.<title-slug>[~n] (src/lib/requirement-ids.ts). A record with id null has an interpolated title; its run-time row is keyed by the rendered title and maps here by file+line only. Renamed ids need a row in requirement-aliases.json.",
|
|
3
3
|
"generatedFrom": "src/scenarios/*.test.ts",
|
|
4
4
|
"counts": {
|
|
5
|
-
"files":
|
|
6
|
-
"tests":
|
|
7
|
-
"withStableId":
|
|
5
|
+
"files": 636,
|
|
6
|
+
"tests": 2437,
|
|
7
|
+
"withStableId": 2437,
|
|
8
8
|
"interpolatedTitles": 0,
|
|
9
|
-
"explicitIds":
|
|
9
|
+
"explicitIds": 2331
|
|
10
10
|
},
|
|
11
11
|
"records": [
|
|
12
12
|
{
|
|
@@ -26810,7 +26810,7 @@
|
|
|
26810
26810
|
"file": "v2-a2a-operation-map.test.ts",
|
|
26811
26811
|
"line": 275,
|
|
26812
26812
|
"title": "a host not advertising a2a.pushNotifications refuses all four push-config operations with PushNotificationNotSupportedError",
|
|
26813
|
-
"explicitId":
|
|
26813
|
+
"explicitId": "openwop.requirement.0214.a2a-push-unadvertised-refused",
|
|
26814
26814
|
"citations": [
|
|
26815
26815
|
{
|
|
26816
26816
|
"section": "spec/v2/core/interop.md §\"The operation mappings\" (RFC 0208)",
|
|
@@ -26823,7 +26823,7 @@
|
|
|
26823
26823
|
"interpolated": true
|
|
26824
26824
|
},
|
|
26825
26825
|
{
|
|
26826
|
-
"section":
|
|
26826
|
+
"section": "interop-map.json a2a.errors PushNotificationNotSupportedError (serverWhen: push config without a2a.pushNotifications) and the push-config operation rows; A2A v1.0.1 §3.3.4",
|
|
26827
26827
|
"requirement": null,
|
|
26828
26828
|
"interpolated": true
|
|
26829
26829
|
}
|
|
@@ -26834,7 +26834,7 @@
|
|
|
26834
26834
|
"file": "v2-a2a-operation-map.test.ts",
|
|
26835
26835
|
"line": 306,
|
|
26836
26836
|
"title": "RFC 0214 — CreateTaskPushNotificationConfig refuses a non-https or private destination",
|
|
26837
|
-
"explicitId":
|
|
26837
|
+
"explicitId": "openwop.requirement.0214.a2a-push-register-ssrf",
|
|
26838
26838
|
"citations": [
|
|
26839
26839
|
{
|
|
26840
26840
|
"section": "spec/v2/core/interop.md §\"The operation mappings\" (RFC 0208)",
|
|
@@ -26842,12 +26842,12 @@
|
|
|
26842
26842
|
"interpolated": true
|
|
26843
26843
|
},
|
|
26844
26844
|
{
|
|
26845
|
-
"section":
|
|
26845
|
+
"section": "interop-map.json a2a.operations CreateTaskPushNotificationConfig (\"the url MUST pass the webhooks.md egress guard\"); webhooks.md §Egress; RFC 0214 §B",
|
|
26846
26846
|
"requirement": null,
|
|
26847
26847
|
"interpolated": true
|
|
26848
26848
|
},
|
|
26849
26849
|
{
|
|
26850
|
-
"section":
|
|
26850
|
+
"section": "interop-map.json a2a.operations CreateTaskPushNotificationConfig (\"the url MUST pass the webhooks.md egress guard\"); webhooks.md §Egress; RFC 0214 §B",
|
|
26851
26851
|
"requirement": null,
|
|
26852
26852
|
"interpolated": true
|
|
26853
26853
|
}
|
|
@@ -26858,41 +26858,40 @@
|
|
|
26858
26858
|
"file": "v2-a2a-operation-map.test.ts",
|
|
26859
26859
|
"line": 324,
|
|
26860
26860
|
"title": "RFC 0214 §E — a push config of another tenant's task, of another task, or unknown, is answered identically",
|
|
26861
|
-
"explicitId":
|
|
26861
|
+
"explicitId": "openwop.requirement.0214.a2a-push-config-isolation",
|
|
26862
26862
|
"citations": [
|
|
26863
26863
|
{
|
|
26864
26864
|
"section": "spec/v2/core/interop.md §\"The operation mappings\" (RFC 0208)",
|
|
26865
26865
|
"requirement": "SendMessage MUST start two tasks with tenant-bound ids"
|
|
26866
26866
|
},
|
|
26867
26867
|
{
|
|
26868
|
-
"section":
|
|
26868
|
+
"section": "interop.md §\"A2A push delivery\" (RFC 0214 §E); interop.md §\"The operation mappings\" Isolation",
|
|
26869
26869
|
"requirement": null,
|
|
26870
26870
|
"interpolated": true
|
|
26871
26871
|
},
|
|
26872
26872
|
{
|
|
26873
|
-
"section":
|
|
26873
|
+
"section": "interop.md §\"A2A push delivery\" (RFC 0214 §E); interop.md §\"The operation mappings\" Isolation",
|
|
26874
26874
|
"requirement": null,
|
|
26875
26875
|
"interpolated": true
|
|
26876
26876
|
},
|
|
26877
26877
|
{
|
|
26878
|
-
"section":
|
|
26878
|
+
"section": "interop.md §\"A2A push delivery\" (RFC 0214 §E); interop.md §\"The operation mappings\" Isolation",
|
|
26879
26879
|
"requirement": null,
|
|
26880
26880
|
"interpolated": true
|
|
26881
26881
|
},
|
|
26882
26882
|
{
|
|
26883
|
-
"section":
|
|
26883
|
+
"section": "interop.md §\"A2A push delivery\" (RFC 0214 §E); interop.md §\"The operation mappings\" Isolation",
|
|
26884
26884
|
"requirement": null,
|
|
26885
26885
|
"interpolated": true
|
|
26886
26886
|
},
|
|
26887
26887
|
{
|
|
26888
|
-
"section":
|
|
26888
|
+
"section": "interop.md §\"A2A push delivery\" (RFC 0214 §E); interop.md §\"The operation mappings\" Isolation",
|
|
26889
26889
|
"requirement": null,
|
|
26890
26890
|
"interpolated": true
|
|
26891
26891
|
},
|
|
26892
26892
|
{
|
|
26893
|
-
"section":
|
|
26894
|
-
"requirement": "a delete naming another tenant's task MUST NOT delete the caller's config"
|
|
26895
|
-
"interpolated": true
|
|
26893
|
+
"section": "interop.md §\"A2A push delivery\" (RFC 0214 §E); interop.md §\"The operation mappings\" Isolation",
|
|
26894
|
+
"requirement": "a delete naming another tenant's task MUST NOT delete the caller's config"
|
|
26896
26895
|
},
|
|
26897
26896
|
{
|
|
26898
26897
|
"section": "A2A v1.0.1 §3.1.10 (\"MUST be idempotent\")",
|
|
@@ -26906,7 +26905,7 @@
|
|
|
26906
26905
|
"file": "v2-a2a-operation-map.test.ts",
|
|
26907
26906
|
"line": 368,
|
|
26908
26907
|
"title": "RFC 0214 §A — a push config's token and credentials are never returned, and never reach task, events or state",
|
|
26909
|
-
"explicitId":
|
|
26908
|
+
"explicitId": "openwop.requirement.0214.a2a-push-secrets-not-returned",
|
|
26910
26909
|
"citations": [
|
|
26911
26910
|
{
|
|
26912
26911
|
"section": "spec/v2/core/interop.md §\"The operation mappings\" (RFC 0208)",
|
|
@@ -26914,12 +26913,12 @@
|
|
|
26914
26913
|
"interpolated": true
|
|
26915
26914
|
},
|
|
26916
26915
|
{
|
|
26917
|
-
"section":
|
|
26916
|
+
"section": "interop-map.json a2a.operations push rows (\"secrets are never returned\"); security-defaults.md §\"Onward hops\" (RFC 0214 §A)",
|
|
26918
26917
|
"requirement": null,
|
|
26919
26918
|
"interpolated": true
|
|
26920
26919
|
},
|
|
26921
26920
|
{
|
|
26922
|
-
"section":
|
|
26921
|
+
"section": "interop-map.json a2a.operations push rows (\"secrets are never returned\"); security-defaults.md §\"Onward hops\" (RFC 0214 §A)",
|
|
26923
26922
|
"requirement": null,
|
|
26924
26923
|
"interpolated": true
|
|
26925
26924
|
}
|
|
@@ -27062,7 +27061,7 @@
|
|
|
27062
27061
|
"file": "v2-a2a-operation-map.test.ts",
|
|
27063
27062
|
"line": 509,
|
|
27064
27063
|
"title": "a run suspended on a credential interrupt projects to TASK_STATE_AUTH_REQUIRED, naming the provider and carrying connectUrl",
|
|
27065
|
-
"explicitId":
|
|
27064
|
+
"explicitId": "openwop.requirement.0199.a2a-auth-required",
|
|
27066
27065
|
"citations": [
|
|
27067
27066
|
{
|
|
27068
27067
|
"section": "runs.md createRun",
|
|
@@ -27218,7 +27217,7 @@
|
|
|
27218
27217
|
{
|
|
27219
27218
|
"id": "openwop.it.v2-a2ui-v09-surface.a-version-2-envelope-carrying-a-version-1-body-is-refused-the-positive-is-admitt",
|
|
27220
27219
|
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27221
|
-
"line":
|
|
27220
|
+
"line": 137,
|
|
27222
27221
|
"title": "a version-2 envelope carrying a version-1 body is refused; the positive is admitted; above the floor is refused; below it follows envelopeStrictness",
|
|
27223
27222
|
"explicitId": "openwop.requirement.0209.version-selects-branch",
|
|
27224
27223
|
"citations": [
|
|
@@ -27262,7 +27261,7 @@
|
|
|
27262
27261
|
{
|
|
27263
27262
|
"id": "openwop.it.v2-a2ui-v09-surface.no-first-createsurface-a-message-after-deletesurface-and-a-second-createsurface",
|
|
27264
27263
|
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27265
|
-
"line":
|
|
27264
|
+
"line": 163,
|
|
27266
27265
|
"title": "no first createSurface, a message after deleteSurface, and a second createSurface are each refused; the valid steps are admitted",
|
|
27267
27266
|
"explicitId": "openwop.requirement.0209.fold-guarded",
|
|
27268
27267
|
"citations": [
|
|
@@ -27276,7 +27275,7 @@
|
|
|
27276
27275
|
{
|
|
27277
27276
|
"id": "openwop.it.v2-a2ui-v09-surface.a-createsurface-catalogid-differing-from-the-payload-catalogid-is-refused",
|
|
27278
27277
|
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27279
|
-
"line":
|
|
27278
|
+
"line": 188,
|
|
27280
27279
|
"title": "a createSurface.catalogId differing from the payload catalogId is refused",
|
|
27281
27280
|
"explicitId": "openwop.requirement.0209.catalog-equality",
|
|
27282
27281
|
"citations": [
|
|
@@ -27294,7 +27293,7 @@
|
|
|
27294
27293
|
{
|
|
27295
27294
|
"id": "openwop.it.v2-a2ui-v09-surface.a-message-whose-surfaceid-differs-from-the-payload-surfaceid-is-refused",
|
|
27296
27295
|
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27297
|
-
"line":
|
|
27296
|
+
"line": 202,
|
|
27298
27297
|
"title": "a message whose surfaceId differs from the payload surfaceId is refused",
|
|
27299
27298
|
"explicitId": "openwop.it.v2-a2ui-v09-surface.surface-id-equality",
|
|
27300
27299
|
"citations": [
|
|
@@ -27312,7 +27311,7 @@
|
|
|
27312
27311
|
{
|
|
27313
27312
|
"id": "openwop.it.v2-a2ui-v09-surface.a-recorded-version-2-surface-is-returned-byte-equal-on-poll-and-carried-by-a-for",
|
|
27314
27313
|
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27315
|
-
"line":
|
|
27314
|
+
"line": 218,
|
|
27316
27315
|
"title": "a recorded version-2 surface is returned byte-equal on poll and carried by a fork at a later fromSeq",
|
|
27317
27316
|
"explicitId": "openwop.it.v2-a2ui-v09-surface.recorded-as-recorded",
|
|
27318
27317
|
"citations": [
|
|
@@ -27349,7 +27348,7 @@
|
|
|
27349
27348
|
{
|
|
27350
27349
|
"id": "openwop.it.v2-a2ui-v09-surface.a-version-1-surface-recorded-at-floor-1-is-returned-byte-equal-on-poll-and-carri",
|
|
27351
27350
|
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27352
|
-
"line":
|
|
27351
|
+
"line": 245,
|
|
27353
27352
|
"title": "a version-1 surface recorded at floor 1 is returned byte-equal on poll and carried by a fork",
|
|
27354
27353
|
"explicitId": "openwop.requirement.0209.legacy-readable",
|
|
27355
27354
|
"citations": [
|
|
@@ -27386,7 +27385,7 @@
|
|
|
27386
27385
|
{
|
|
27387
27386
|
"id": "openwop.it.v2-a2ui-v09-surface.one-untrusted-update-taints-a-trusted-surface-a-later-trusted-update-does-not-la",
|
|
27388
27387
|
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27389
|
-
"line":
|
|
27388
|
+
"line": 269,
|
|
27390
27389
|
"title": "one untrusted update taints a trusted surface, a later trusted update does not launder it, and the approval does not advance; an all-trusted surface does",
|
|
27391
27390
|
"explicitId": "openwop.requirement.0209.taint-sticky",
|
|
27392
27391
|
"citations": [
|
|
@@ -27397,6 +27396,19 @@
|
|
|
27397
27396
|
}
|
|
27398
27397
|
]
|
|
27399
27398
|
},
|
|
27399
|
+
{
|
|
27400
|
+
"id": "openwop.it.v2-a2ui-v09-surface.records-why-render-needs-root-has-no-server-side-witness-and-where-its-witness-l",
|
|
27401
|
+
"file": "v2-a2ui-v09-surface.test.ts",
|
|
27402
|
+
"line": 308,
|
|
27403
|
+
"title": "records why render-needs-root has no server-side witness, and where its witness lives",
|
|
27404
|
+
"explicitId": "openwop.requirement.0209.render-needs-root",
|
|
27405
|
+
"citations": [
|
|
27406
|
+
{
|
|
27407
|
+
"section": "RFC 0209 §C.9",
|
|
27408
|
+
"requirement": "a renderer does not render a surface before its root component exists"
|
|
27409
|
+
}
|
|
27410
|
+
]
|
|
27411
|
+
},
|
|
27400
27412
|
{
|
|
27401
27413
|
"id": "openwop.it.v2-advertised-fixtures-exist.a-sampled-advertised-fixture-is-actually-creatable-not-just-listed",
|
|
27402
27414
|
"file": "v2-advertised-fixtures-exist.test.ts",
|
|
@@ -27467,7 +27479,7 @@
|
|
|
27467
27479
|
{
|
|
27468
27480
|
"id": "openwop.it.v2-artifact-a2a-shape.a-getartifact-answered-as-application-a2a-json-validates-against-artifact-schema",
|
|
27469
27481
|
"file": "v2-artifact-a2a-shape.test.ts",
|
|
27470
|
-
"line":
|
|
27482
|
+
"line": 87,
|
|
27471
27483
|
"title": "a getArtifact answered as application/a2a+json validates against artifact.schema.json",
|
|
27472
27484
|
"explicitId": "openwop.requirement.0205.artifact-a2a-shape",
|
|
27473
27485
|
"citations": [
|
|
@@ -27491,7 +27503,7 @@
|
|
|
27491
27503
|
{
|
|
27492
27504
|
"id": "openwop.it.v2-artifact-a2a-shape.the-artifactid-of-an-application-a2a-json-body-equals-the-artifactid-path-segmen",
|
|
27493
27505
|
"file": "v2-artifact-a2a-shape.test.ts",
|
|
27494
|
-
"line":
|
|
27506
|
+
"line": 99,
|
|
27495
27507
|
"title": "the artifactId of an application/a2a+json body equals the {artifactId} path segment",
|
|
27496
27508
|
"explicitId": "openwop.requirement.0205.artifact-id-matches-path",
|
|
27497
27509
|
"citations": [
|
|
@@ -27508,7 +27520,7 @@
|
|
|
27508
27520
|
{
|
|
27509
27521
|
"id": "openwop.it.v2-artifact-a2a-shape.the-url-of-a-url-part-answers-no-2xx-to-a-second-tenant-or-to-no-credential",
|
|
27510
27522
|
"file": "v2-artifact-a2a-shape.test.ts",
|
|
27511
|
-
"line":
|
|
27523
|
+
"line": 110,
|
|
27512
27524
|
"title": "the url of a url Part answers no 2xx to a second tenant or to no credential",
|
|
27513
27525
|
"explicitId": "openwop.requirement.0205.artifact-url-part-scoped",
|
|
27514
27526
|
"citations": [
|
|
@@ -27524,6 +27536,19 @@
|
|
|
27524
27536
|
}
|
|
27525
27537
|
]
|
|
27526
27538
|
},
|
|
27539
|
+
{
|
|
27540
|
+
"id": "openwop.it.v2-artifact-a2a-shape.records-why-export-alias-equivalence-has-no-wire-witness",
|
|
27541
|
+
"file": "v2-artifact-a2a-shape.test.ts",
|
|
27542
|
+
"line": 132,
|
|
27543
|
+
"title": "records why export-alias-equivalence has no wire witness",
|
|
27544
|
+
"explicitId": "openwop.requirement.0205.export-alias-equivalence",
|
|
27545
|
+
"citations": [
|
|
27546
|
+
{
|
|
27547
|
+
"section": "RFC 0205 §C.11",
|
|
27548
|
+
"requirement": "an export alias and its media type name one format"
|
|
27549
|
+
}
|
|
27550
|
+
]
|
|
27551
|
+
},
|
|
27527
27552
|
{
|
|
27528
27553
|
"id": "openwop.it.v2-assurance-downgrade-audited.an-identity-below-the-lane-floor-is-refused-with-sender-constraint-missing",
|
|
27529
27554
|
"file": "v2-assurance-downgrade-audited.test.ts",
|
|
@@ -27912,7 +27937,7 @@
|
|
|
27912
27937
|
{
|
|
27913
27938
|
"id": "openwop.it.v2-capability-maturity-bounded.no-family-record-advertises-stable-above-its-corpus-declaration-row",
|
|
27914
27939
|
"file": "v2-capability-maturity-bounded.test.ts",
|
|
27915
|
-
"line":
|
|
27940
|
+
"line": 92,
|
|
27916
27941
|
"title": "no family record advertises `stable` above its corpus declaration row",
|
|
27917
27942
|
"explicitId": "openwop.requirement.0197.maturity-not-overstated",
|
|
27918
27943
|
"citations": [
|
|
@@ -27933,6 +27958,20 @@
|
|
|
27933
27958
|
}
|
|
27934
27959
|
]
|
|
27935
27960
|
},
|
|
27961
|
+
{
|
|
27962
|
+
"id": "openwop.it.v2-capability-maturity-bounded.no-run-emits-a-persisted-member-the-release-has-retired",
|
|
27963
|
+
"file": "v2-capability-maturity-bounded.test.ts",
|
|
27964
|
+
"line": 134,
|
|
27965
|
+
"title": "no run emits a persisted member the release has retired",
|
|
27966
|
+
"explicitId": "openwop.requirement.0197.retired-not-emitted",
|
|
27967
|
+
"citations": [
|
|
27968
|
+
{
|
|
27969
|
+
"section": "RFC 0197 §A.3",
|
|
27970
|
+
"requirement": null,
|
|
27971
|
+
"interpolated": true
|
|
27972
|
+
}
|
|
27973
|
+
]
|
|
27974
|
+
},
|
|
27936
27975
|
{
|
|
27937
27976
|
"id": "openwop.it.v2-capability-record-shape.every-family-record-carries-status-since-and-witness-from-the-wire-legal-sets",
|
|
27938
27977
|
"file": "v2-capability-record-shape.test.ts",
|
|
@@ -29617,7 +29656,7 @@
|
|
|
29617
29656
|
{
|
|
29618
29657
|
"id": "openwop.it.v2-lane-exp-only-bound.a-credential-inside-the-advertised-window-is-accepted-the-control-the-two-refusa",
|
|
29619
29658
|
"file": "v2-lane-exp-only-bound.test.ts",
|
|
29620
|
-
"line":
|
|
29659
|
+
"line": 152,
|
|
29621
29660
|
"title": "a credential inside the advertised window is accepted — the control the two refusals rest on",
|
|
29622
29661
|
"explicitId": "openwop.requirement.0210.exp-only-control-accepted",
|
|
29623
29662
|
"citations": [
|
|
@@ -29631,7 +29670,7 @@
|
|
|
29631
29670
|
{
|
|
29632
29671
|
"id": "openwop.it.v2-lane-exp-only-bound.a-credential-whose-total-lifetime-exceeds-the-window-is-refused-401-and-so-is-on",
|
|
29633
29672
|
"file": "v2-lane-exp-only-bound.test.ts",
|
|
29634
|
-
"line":
|
|
29673
|
+
"line": 167,
|
|
29635
29674
|
"title": "a credential whose TOTAL lifetime exceeds the window is refused 401, and so is one carrying no iat",
|
|
29636
29675
|
"explicitId": "openwop.requirement.0210.exp-only-lifetime-bound",
|
|
29637
29676
|
"citations": [
|
|
@@ -29650,7 +29689,7 @@
|
|
|
29650
29689
|
{
|
|
29651
29690
|
"id": "openwop.it.v2-lane-exp-only-bound.the-over-lifetime-refusal-names-credential-lifetime-exceeded-not-a-generic-unaut",
|
|
29652
29691
|
"file": "v2-lane-exp-only-bound.test.ts",
|
|
29653
|
-
"line":
|
|
29692
|
+
"line": 202,
|
|
29654
29693
|
"title": "the over-lifetime refusal names credential_lifetime_exceeded, not a generic unauthenticated",
|
|
29655
29694
|
"explicitId": "openwop.requirement.0210.credential-lifetime-code",
|
|
29656
29695
|
"citations": [
|
|
@@ -29664,7 +29703,7 @@
|
|
|
29664
29703
|
{
|
|
29665
29704
|
"id": "openwop.it.v2-lane-exp-only-bound.a-credential-whose-remaining-lifetime-exceeds-the-window-is-refused-though-its-t",
|
|
29666
29705
|
"file": "v2-lane-exp-only-bound.test.ts",
|
|
29667
|
-
"line":
|
|
29706
|
+
"line": 220,
|
|
29668
29707
|
"title": "a credential whose REMAINING lifetime exceeds the window is refused, though its total lifetime does not",
|
|
29669
29708
|
"explicitId": "openwop.requirement.0210.exp-only-remaining-bound",
|
|
29670
29709
|
"citations": [
|
|
@@ -30354,7 +30393,7 @@
|
|
|
30354
30393
|
"file": "v2-mcp-mount-map.test.ts",
|
|
30355
30394
|
"line": 287,
|
|
30356
30395
|
"title": "a credential interrupt is answered in URL mode (url = connectUrl), isError without URL support, and input_required again on an accept retry with no credential",
|
|
30357
|
-
"explicitId":
|
|
30396
|
+
"explicitId": "openwop.requirement.0199.mcp-url-mode",
|
|
30358
30397
|
"citations": [
|
|
30359
30398
|
{
|
|
30360
30399
|
"section": "interop-map.json mcp.mrtr InputRequiredResult (host as server)",
|
|
@@ -30392,7 +30431,7 @@
|
|
|
30392
30431
|
"file": "v2-mcp-mount-map.test.ts",
|
|
30393
30432
|
"line": 328,
|
|
30394
30433
|
"title": "form mode is never emitted for a nested schema or a sensitive (format password) field",
|
|
30395
|
-
"explicitId":
|
|
30434
|
+
"explicitId": "openwop.requirement.0199.form-mode-no-secret",
|
|
30396
30435
|
"citations": [
|
|
30397
30436
|
{
|
|
30398
30437
|
"section": "interop-map.json mcp.mrtr InputRequiredResult (host as server)",
|
|
@@ -31211,7 +31250,7 @@
|
|
|
31211
31250
|
{
|
|
31212
31251
|
"id": "openwop.it.v2-oidc-id-token-audience.a-same-audience-id-token-is-admissible-and-one-minted-for-another-relying-party",
|
|
31213
31252
|
"file": "v2-oidc-id-token-audience.test.ts",
|
|
31214
|
-
"line":
|
|
31253
|
+
"line": 68,
|
|
31215
31254
|
"title": "a same-audience ID token is admissible, and one minted for another relying party is audience_mismatch",
|
|
31216
31255
|
"explicitId": "openwop.requirement.0200.id-token-aud",
|
|
31217
31256
|
"citations": [
|
|
@@ -33379,7 +33418,7 @@
|
|
|
33379
33418
|
"file": "v2-webhook-endpoint-verification.test.ts",
|
|
33380
33419
|
"line": 64,
|
|
33381
33420
|
"title": "no-echo, wrong-echo and a redirect are refused and persist nothing; an echo is accepted",
|
|
33382
|
-
"explicitId":
|
|
33421
|
+
"explicitId": "openwop.requirement.0201.endpoint-verification",
|
|
33383
33422
|
"citations": [
|
|
33384
33423
|
{
|
|
33385
33424
|
"section": "RFC 0201 §D.14",
|
|
@@ -33447,7 +33486,7 @@
|
|
|
33447
33486
|
"file": "v2-webhook-message-id-stable.test.ts",
|
|
33448
33487
|
"line": 69,
|
|
33449
33488
|
"title": "every attempt of one delivery carries one webhook-id, and distinct deliveries carry distinct ids",
|
|
33450
|
-
"explicitId":
|
|
33489
|
+
"explicitId": "openwop.requirement.0201.message-id-stable",
|
|
33451
33490
|
"citations": [
|
|
33452
33491
|
{
|
|
33453
33492
|
"section": "RFC 0201 §C.10",
|
|
@@ -33480,7 +33519,7 @@
|
|
|
33480
33519
|
"file": "v2-webhook-secret-rotation.test.ts",
|
|
33481
33520
|
"line": 67,
|
|
33482
33521
|
"title": "a rotation dual-signs for overlapSeconds, keeps OpenWOP-Signature on the previous secret, and is tenant-checked",
|
|
33483
|
-
"explicitId":
|
|
33522
|
+
"explicitId": "openwop.requirement.0201.secret-rotation",
|
|
33484
33523
|
"citations": [
|
|
33485
33524
|
{
|
|
33486
33525
|
"section": "RFC 0201 §E.18 / identity.md §5",
|
|
@@ -33563,7 +33602,7 @@
|
|
|
33563
33602
|
"file": "v2-webhook-standard-webhooks-delivery.test.ts",
|
|
33564
33603
|
"line": 77,
|
|
33565
33604
|
"title": "a subscription that did not opt in is neither verified nor given webhook-* headers",
|
|
33566
|
-
"explicitId":
|
|
33605
|
+
"explicitId": "openwop.requirement.0201.opt-in-only",
|
|
33567
33606
|
"citations": [
|
|
33568
33607
|
{
|
|
33569
33608
|
"section": "RFC 0201 §B.8 / §D.15",
|
|
@@ -33597,7 +33636,7 @@
|
|
|
33597
33636
|
"file": "v2-webhook-standard-webhooks-delivery.test.ts",
|
|
33598
33637
|
"line": 110,
|
|
33599
33638
|
"title": "the opt-in is validated, its 201 echoes the applied list, and no response carries the secret",
|
|
33600
|
-
"explicitId":
|
|
33639
|
+
"explicitId": "openwop.requirement.0201.registration-validated",
|
|
33601
33640
|
"citations": [
|
|
33602
33641
|
{
|
|
33603
33642
|
"section": "RFC 0201 §B.5–§B.6",
|
|
@@ -33629,7 +33668,7 @@
|
|
|
33629
33668
|
"file": "v2-webhook-standard-webhooks-delivery.test.ts",
|
|
33630
33669
|
"line": 155,
|
|
33631
33670
|
"title": "an opted-in delivery is dual-signed and its Standard Webhooks signature covers the id",
|
|
33632
|
-
"explicitId":
|
|
33671
|
+
"explicitId": "openwop.requirement.0201.delivery-signed",
|
|
33633
33672
|
"citations": [
|
|
33634
33673
|
{
|
|
33635
33674
|
"section": "RFC 0201 §B",
|
|
@@ -36661,10 +36700,10 @@
|
|
|
36661
36700
|
]
|
|
36662
36701
|
},
|
|
36663
36702
|
{
|
|
36664
|
-
"id": "openwop.it.bundle-maturity-gate.the-committed-corpus-is-green-and-the-
|
|
36703
|
+
"id": "openwop.it.bundle-maturity-gate.the-committed-corpus-is-green-and-the-gate-states-when-c-7-binds",
|
|
36665
36704
|
"file": "bundle-maturity-gate.test.ts",
|
|
36666
|
-
"line":
|
|
36667
|
-
"title": "the committed corpus is green, and the
|
|
36705
|
+
"line": 85,
|
|
36706
|
+
"title": "the committed corpus is green, and the gate states when §C.7 binds",
|
|
36668
36707
|
"explicitId": "openwop.requirement.0197.bundle-maturity-bound",
|
|
36669
36708
|
"citations": [
|
|
36670
36709
|
{
|
|
@@ -36672,14 +36711,6 @@
|
|
|
36672
36711
|
"requirement": null,
|
|
36673
36712
|
"interpolated": true
|
|
36674
36713
|
},
|
|
36675
|
-
{
|
|
36676
|
-
"section": "spec/v2/core/capabilities.md §8 (RFC 0197 §C.7)",
|
|
36677
|
-
"requirement": "a \"reported\" disposition that printed nothing would be indistinguishable from a clean tree; the report MUST name the gap row that owes the re-cut"
|
|
36678
|
-
},
|
|
36679
|
-
{
|
|
36680
|
-
"section": "spec/v2/core/capabilities.md §8 (RFC 0197 §C.7)",
|
|
36681
|
-
"requirement": "the report MUST name the families by key, not just count them — a number nobody can act on is not a report"
|
|
36682
|
-
},
|
|
36683
36714
|
{
|
|
36684
36715
|
"section": "spec/v2/core/capabilities.md §8 (RFC 0197 §C.7)",
|
|
36685
36716
|
"requirement": "the gate MUST state which suite version makes §C.7 binding, so \"reported\" has a visible end date"
|
|
@@ -36687,10 +36718,10 @@
|
|
|
36687
36718
|
]
|
|
36688
36719
|
},
|
|
36689
36720
|
{
|
|
36690
|
-
"id": "openwop.it.bundle-maturity-gate.the-
|
|
36721
|
+
"id": "openwop.it.bundle-maturity-gate.the-superseded-myndhyve-bundle-re-labelled-onto-the-rfc-s-suite-fails-naming-eve",
|
|
36691
36722
|
"file": "bundle-maturity-gate.test.ts",
|
|
36692
|
-
"line":
|
|
36693
|
-
"title": "the
|
|
36723
|
+
"line": 93,
|
|
36724
|
+
"title": "the superseded MyndHyve bundle re-labelled onto the RFC’s suite FAILS, naming every overstated family",
|
|
36694
36725
|
"explicitId": "openwop.requirement.0197.bundle-maturity-bound",
|
|
36695
36726
|
"citations": [
|
|
36696
36727
|
{
|
|
@@ -36712,7 +36743,7 @@
|
|
|
36712
36743
|
{
|
|
36713
36744
|
"id": "openwop.it.bundle-maturity-gate.the-count-is-derived-promoting-one-family-in-the-declaration-drops-38-to-37",
|
|
36714
36745
|
"file": "bundle-maturity-gate.test.ts",
|
|
36715
|
-
"line":
|
|
36746
|
+
"line": 102,
|
|
36716
36747
|
"title": "the count is DERIVED — promoting one family in the declaration drops 38 to 37",
|
|
36717
36748
|
"explicitId": "openwop.requirement.0197.bundle-maturity-bound",
|
|
36718
36749
|
"citations": [
|
|
@@ -36730,7 +36761,7 @@
|
|
|
36730
36761
|
{
|
|
36731
36762
|
"id": "openwop.it.bundle-maturity-gate.a-bundle-whose-suite-is-below-the-rfc-s-is-reported-not-failed-even-with-the-sam",
|
|
36732
36763
|
"file": "bundle-maturity-gate.test.ts",
|
|
36733
|
-
"line":
|
|
36764
|
+
"line": 110,
|
|
36734
36765
|
"title": "a bundle whose suite is BELOW the RFC’s is reported, not failed, even with the same 38",
|
|
36735
36766
|
"explicitId": "openwop.requirement.0197.bundle-maturity-bound",
|
|
36736
36767
|
"citations": [
|
|
@@ -36746,6 +36777,14 @@
|
|
|
36746
36777
|
{
|
|
36747
36778
|
"section": "spec/v2/core/capabilities.md §8 (RFC 0197 §C.7)",
|
|
36748
36779
|
"requirement": "the reported row must cite COMPATIBILITY.md §2.3 — an old pass stays a measurement at the suite that measured it"
|
|
36780
|
+
},
|
|
36781
|
+
{
|
|
36782
|
+
"section": "spec/v2/core/capabilities.md §8 (RFC 0197 §C.7)",
|
|
36783
|
+
"requirement": "a \"reported\" disposition that printed nothing would be indistinguishable from a clean tree; the report MUST name the gap row that owes the re-cut"
|
|
36784
|
+
},
|
|
36785
|
+
{
|
|
36786
|
+
"section": "spec/v2/core/capabilities.md §8 (RFC 0197 §C.7)",
|
|
36787
|
+
"requirement": "the report MUST name the families by key, not just count them — a number nobody can act on is not a report"
|
|
36749
36788
|
}
|
|
36750
36789
|
]
|
|
36751
36790
|
},
|
|
@@ -41055,7 +41094,7 @@
|
|
|
41055
41094
|
{
|
|
41056
41095
|
"id": "openwop.it.v2-bundle-witness-preimage.every-committed-v3-bundle-re-derives-its-witnesssha256-from-the-prose-preimage",
|
|
41057
41096
|
"file": "v2-bundle-witness-preimage.test.ts",
|
|
41058
|
-
"line":
|
|
41097
|
+
"line": 69,
|
|
41059
41098
|
"title": "every committed v3 bundle re-derives its witnessSha256 from the prose preimage",
|
|
41060
41099
|
"explicitId": "openwop.it.v2-bundle-witness-preimage.every-committed-v3-bundle-re-derives-its-witnesssha256-from-the-prose-preimage",
|
|
41061
41100
|
"citations": [
|
|
@@ -41082,7 +41121,7 @@
|
|
|
41082
41121
|
{
|
|
41083
41122
|
"id": "openwop.it.v2-bundle-witness-preimage.the-row-comparator-is-code-unit-order-which-a-locale-collation-contradicts",
|
|
41084
41123
|
"file": "v2-bundle-witness-preimage.test.ts",
|
|
41085
|
-
"line":
|
|
41124
|
+
"line": 83,
|
|
41086
41125
|
"title": "the row comparator is code-unit order, which a locale collation contradicts",
|
|
41087
41126
|
"explicitId": "openwop.it.v2-bundle-witness-preimage.the-row-comparator-is-code-unit-order-which-a-locale-collation-contradicts",
|
|
41088
41127
|
"citations": [
|
|
@@ -41096,6 +41135,167 @@
|
|
|
41096
41135
|
}
|
|
41097
41136
|
]
|
|
41098
41137
|
},
|
|
41138
|
+
{
|
|
41139
|
+
"id": "openwop.it.v2-colocated-companion.a-3-the-anchor-list-is-closed-and-exact",
|
|
41140
|
+
"file": "v2-colocated-companion.test.ts",
|
|
41141
|
+
"line": 157,
|
|
41142
|
+
"title": "§A.3 the anchor list is closed and exact",
|
|
41143
|
+
"explicitId": "openwop.requirement.0216.anchor-list-closed",
|
|
41144
|
+
"citations": [
|
|
41145
|
+
{
|
|
41146
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41147
|
+
"requirement": "the base fixture list MUST pass the anchor gate, or every sabotage below proves nothing"
|
|
41148
|
+
},
|
|
41149
|
+
{
|
|
41150
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41151
|
+
"requirement": null,
|
|
41152
|
+
"interpolated": true
|
|
41153
|
+
},
|
|
41154
|
+
{
|
|
41155
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41156
|
+
"requirement": null,
|
|
41157
|
+
"interpolated": true
|
|
41158
|
+
}
|
|
41159
|
+
]
|
|
41160
|
+
},
|
|
41161
|
+
{
|
|
41162
|
+
"id": "openwop.it.v2-colocated-companion.b-7-the-marker-is-inside-the-signed-digest",
|
|
41163
|
+
"file": "v2-colocated-companion.test.ts",
|
|
41164
|
+
"line": 175,
|
|
41165
|
+
"title": "§B.7 the marker is inside the signed digest",
|
|
41166
|
+
"explicitId": "openwop.requirement.0216.deployment-in-preimage",
|
|
41167
|
+
"citations": [
|
|
41168
|
+
{
|
|
41169
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41170
|
+
"requirement": "host.deployment MUST enter the witnessSha256 preimage when present"
|
|
41171
|
+
},
|
|
41172
|
+
{
|
|
41173
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41174
|
+
"requirement": "a bundle without the marker MUST digest exactly as before RFC 0216"
|
|
41175
|
+
},
|
|
41176
|
+
{
|
|
41177
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41178
|
+
"requirement": "a signed companion that sheds host.deployment MUST fail verification with witness-digest"
|
|
41179
|
+
},
|
|
41180
|
+
{
|
|
41181
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41182
|
+
"requirement": "the unaltered companion MUST NOT be refused for its digest"
|
|
41183
|
+
}
|
|
41184
|
+
]
|
|
41185
|
+
},
|
|
41186
|
+
{
|
|
41187
|
+
"id": "openwop.it.v2-colocated-companion.c-9-a-companion-counts-only-for-listed-rows",
|
|
41188
|
+
"file": "v2-colocated-companion.test.ts",
|
|
41189
|
+
"line": 187,
|
|
41190
|
+
"title": "§C.9 a companion counts only for listed rows",
|
|
41191
|
+
"explicitId": "openwop.requirement.0216.companion-anchor-rows-only",
|
|
41192
|
+
"citations": [
|
|
41193
|
+
{
|
|
41194
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41195
|
+
"requirement": "the base companion MUST pair with the served-host bundle of the same image, key and configuration"
|
|
41196
|
+
},
|
|
41197
|
+
{
|
|
41198
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41199
|
+
"requirement": "a paired companion MUST witness its harness-trust-anchor rows"
|
|
41200
|
+
},
|
|
41201
|
+
{
|
|
41202
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41203
|
+
"requirement": "a paired companion MUST NOT witness a row off the anchor list, however it passed"
|
|
41204
|
+
},
|
|
41205
|
+
{
|
|
41206
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41207
|
+
"requirement": "an uncertified companion MUST witness nothing"
|
|
41208
|
+
}
|
|
41209
|
+
]
|
|
41210
|
+
},
|
|
41211
|
+
{
|
|
41212
|
+
"id": "openwop.it.v2-colocated-companion.c-9-a-b-the-same-host-and-the-same-image-digest",
|
|
41213
|
+
"file": "v2-colocated-companion.test.ts",
|
|
41214
|
+
"line": 197,
|
|
41215
|
+
"title": "§C.9(a)/(b) the same host and the same image digest",
|
|
41216
|
+
"explicitId": "openwop.requirement.0216.companion-same-image",
|
|
41217
|
+
"citations": [
|
|
41218
|
+
{
|
|
41219
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41220
|
+
"requirement": "the base MUST pair"
|
|
41221
|
+
},
|
|
41222
|
+
{
|
|
41223
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41224
|
+
"requirement": "a commit-kind build MUST NOT pair — a commit does not name the bytes that ran"
|
|
41225
|
+
},
|
|
41226
|
+
{
|
|
41227
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41228
|
+
"requirement": "image digests differing in one byte MUST NOT pair"
|
|
41229
|
+
},
|
|
41230
|
+
{
|
|
41231
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41232
|
+
"requirement": "a companion of another host MUST NOT pair"
|
|
41233
|
+
}
|
|
41234
|
+
]
|
|
41235
|
+
},
|
|
41236
|
+
{
|
|
41237
|
+
"id": "openwop.it.v2-colocated-companion.c-9-c-signed-under-a-key-the-served-bundle-publishes",
|
|
41238
|
+
"file": "v2-colocated-companion.test.ts",
|
|
41239
|
+
"line": 209,
|
|
41240
|
+
"title": "§C.9(c) signed under a key the served bundle publishes",
|
|
41241
|
+
"explicitId": "openwop.requirement.0216.companion-attributable",
|
|
41242
|
+
"citations": [
|
|
41243
|
+
{
|
|
41244
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41245
|
+
"requirement": "the base MUST pair"
|
|
41246
|
+
},
|
|
41247
|
+
{
|
|
41248
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41249
|
+
"requirement": "a companion whose attestation does not verify under the named published key MUST NOT pair"
|
|
41250
|
+
},
|
|
41251
|
+
{
|
|
41252
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41253
|
+
"requirement": "a companion signed under a key the served bundle does not publish MUST NOT pair"
|
|
41254
|
+
}
|
|
41255
|
+
]
|
|
41256
|
+
},
|
|
41257
|
+
{
|
|
41258
|
+
"id": "openwop.it.v2-colocated-companion.c-9-d-equivalent-discovery-origin-and-oidc-issuers-aside",
|
|
41259
|
+
"file": "v2-colocated-companion.test.ts",
|
|
41260
|
+
"line": 218,
|
|
41261
|
+
"title": "§C.9(d) equivalent discovery, origin and oidc issuers aside",
|
|
41262
|
+
"explicitId": "openwop.requirement.0216.companion-equivalent",
|
|
41263
|
+
"citations": [
|
|
41264
|
+
{
|
|
41265
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41266
|
+
"requirement": "a companion differing only in origin and oidc issuers MUST pair"
|
|
41267
|
+
},
|
|
41268
|
+
{
|
|
41269
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41270
|
+
"requirement": "a different revocationWindowSeconds MUST NOT pair — it is a different claim"
|
|
41271
|
+
},
|
|
41272
|
+
{
|
|
41273
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41274
|
+
"requirement": "a difference in a non-oidc lane MUST NOT pair"
|
|
41275
|
+
}
|
|
41276
|
+
]
|
|
41277
|
+
},
|
|
41278
|
+
{
|
|
41279
|
+
"id": "openwop.it.v2-colocated-companion.c-10-the-committed-unmarked-companion-witnesses-nothing",
|
|
41280
|
+
"file": "v2-colocated-companion.test.ts",
|
|
41281
|
+
"line": 227,
|
|
41282
|
+
"title": "§C.10 the committed unmarked companion witnesses nothing",
|
|
41283
|
+
"explicitId": "openwop.requirement.0216.legacy-companion",
|
|
41284
|
+
"citations": [
|
|
41285
|
+
{
|
|
41286
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41287
|
+
"requirement": "the committed 2026-09-25 companion MUST be recognised as a companion by its witnessSha256"
|
|
41288
|
+
},
|
|
41289
|
+
{
|
|
41290
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41291
|
+
"requirement": "the committed unmarked companion MUST witness nothing (commit-kind build, throwaway key)"
|
|
41292
|
+
},
|
|
41293
|
+
{
|
|
41294
|
+
"section": "RFC 0216 · spec/v2/core/conformance.md §\"Bundle v3\"",
|
|
41295
|
+
"requirement": "the legacy file carries no marker — it is caught by digest, not by a field it could drop"
|
|
41296
|
+
}
|
|
41297
|
+
]
|
|
41298
|
+
},
|
|
41099
41299
|
{
|
|
41100
41300
|
"id": "openwop.it.v2-corpus-tag-pinned.every-vendoring-consumer-in-the-cross-repo-inventory-records-a-published-corpus",
|
|
41101
41301
|
"file": "v2-corpus-tag-pinned.test.ts",
|
|
@@ -41482,7 +41682,7 @@
|
|
|
41482
41682
|
"file": "v2-lane-exp-only-schema.test.ts",
|
|
41483
41683
|
"line": 127,
|
|
41484
41684
|
"title": "the gate refuses an enum member with no §2.2 row, and a suite map the table does not license",
|
|
41485
|
-
"explicitId":
|
|
41685
|
+
"explicitId": "openwop.requirement.0210.lane-rule-surfaces-agree",
|
|
41486
41686
|
"citations": [
|
|
41487
41687
|
{
|
|
41488
41688
|
"section": "scripts/check-lane-revocation-rules.mjs",
|