@openwop/openwop-conformance 2.45.15 → 2.45.16

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.
Files changed (47) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +2 -2
  3. package/dist/spec-artifacts.lock.json +2 -2
  4. package/package.json +2 -2
  5. package/requirements.json +1281 -4
  6. package/scenario-majors.json +101 -2
  7. package/schemas/CORPUS-STAMP.json +13 -13
  8. package/src/lib/artifact-schema-url-witness.ts +83 -0
  9. package/src/lib/dispatch-witness.ts +212 -0
  10. package/src/lib/family-advert-witness.ts +204 -5
  11. package/src/lib/fixture-run-observer.ts +97 -0
  12. package/src/lib/provider-usage-witness.ts +63 -0
  13. package/src/lib/run-graph-double.ts +144 -0
  14. package/src/lib/subworkflow-witness.ts +192 -0
  15. package/src/scenarios/v2-agent-runtime-advertisement.test.ts +51 -0
  16. package/src/scenarios/v2-ai-envelope-advertisement.test.ts +43 -0
  17. package/src/scenarios/v2-artifact-created-static.test.ts +92 -0
  18. package/src/scenarios/v2-artifact-type-schema-url.test.ts +44 -0
  19. package/src/scenarios/v2-artifact-types-advertisement.test.ts +64 -0
  20. package/src/scenarios/v2-authorization-advertisement.test.ts +66 -0
  21. package/src/scenarios/v2-channel-presence-advertisement.test.ts +41 -0
  22. package/src/scenarios/v2-conversation-turn-model-provenance-advertisement.test.ts +41 -0
  23. package/src/scenarios/v2-conversation-turn-model-provenance.test.ts +110 -0
  24. package/src/scenarios/v2-credentials-advertisement.test.ts +66 -0
  25. package/src/scenarios/v2-data-residency-admission.test.ts +98 -0
  26. package/src/scenarios/v2-data-residency-advertisement.test.ts +52 -0
  27. package/src/scenarios/v2-dead-letter-advertisement.test.ts +54 -0
  28. package/src/scenarios/v2-dispatch-input-mapping.test.ts +70 -0
  29. package/src/scenarios/v2-dispatch-loop.test.ts +80 -0
  30. package/src/scenarios/v2-envelope-contracts-advertisement.test.ts +40 -0
  31. package/src/scenarios/v2-export-bundle-static.test.ts +108 -0
  32. package/src/scenarios/v2-multi-party-conversation-advertisement.test.ts +52 -0
  33. package/src/scenarios/v2-node-pack-runtimes-advertisement.test.ts +52 -0
  34. package/src/scenarios/v2-nondeterminism-policy-advertisement.test.ts +41 -0
  35. package/src/scenarios/v2-portability-advertisement.test.ts +63 -0
  36. package/src/scenarios/v2-prompt-library-advertisement.test.ts +40 -0
  37. package/src/scenarios/v2-provider-usage-advertisement.test.ts +61 -0
  38. package/src/scenarios/v2-provider-usage-emission.test.ts +50 -0
  39. package/src/scenarios/v2-provider-usage-payload-static.test.ts +92 -0
  40. package/src/scenarios/v2-purpose-propagation-advertisement.test.ts +52 -0
  41. package/src/scenarios/v2-scheduling-advertisement.test.ts +55 -0
  42. package/src/scenarios/v2-self-hosted-runner-advertisement.test.ts +52 -0
  43. package/src/scenarios/v2-self-hosted-runner-frames-static.test.ts +121 -0
  44. package/src/scenarios/v2-sub-workflow-advertisement.test.ts +53 -0
  45. package/src/scenarios/v2-subworkflow-input-mapping.test.ts +74 -0
  46. package/src/scenarios/v2-subworkflow-linkage.test.ts +76 -0
  47. package/src/scenarios/v2-ui-plugins-advertisement.test.ts +85 -0
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": 690,
6
- "tests": 2652,
7
- "withStableId": 2652,
5
+ "files": 724,
6
+ "tests": 2745,
7
+ "withStableId": 2745,
8
8
  "interpolatedTitles": 0,
9
- "explicitIds": 2529
9
+ "explicitIds": 2611
10
10
  },
11
11
  "records": [
12
12
  {
@@ -28252,6 +28252,48 @@
28252
28252
  }
28253
28253
  ]
28254
28254
  },
28255
+ {
28256
+ "id": "openwop.it.v2-agent-runtime-advertisement.the-agentruntime-record-validates-against-its-capabilities-schema-seat",
28257
+ "file": "v2-agent-runtime-advertisement.test.ts",
28258
+ "line": 34,
28259
+ "title": "the agentRuntime record validates against its capabilities-schema seat",
28260
+ "explicitId": "openwop.requirement.agent-runtime.advert-record-schema",
28261
+ "citations": [
28262
+ {
28263
+ "section": null,
28264
+ "requirement": null,
28265
+ "interpolated": true
28266
+ }
28267
+ ]
28268
+ },
28269
+ {
28270
+ "id": "openwop.it.v2-agent-runtime-advertisement.advertising-agentruntime-also-advertises-agents-manifestruntime",
28271
+ "file": "v2-agent-runtime-advertisement.test.ts",
28272
+ "line": 43,
28273
+ "title": "advertising agentRuntime also advertises agents.manifestRuntime",
28274
+ "explicitId": "openwop.requirement.agent-runtime.implies-manifest-runtime",
28275
+ "citations": [
28276
+ {
28277
+ "section": null,
28278
+ "requirement": null,
28279
+ "interpolated": true
28280
+ }
28281
+ ]
28282
+ },
28283
+ {
28284
+ "id": "openwop.it.v2-ai-envelope-advertisement.the-aienvelope-record-validates-against-its-capabilities-schema-seat",
28285
+ "file": "v2-ai-envelope-advertisement.test.ts",
28286
+ "line": 35,
28287
+ "title": "the aiEnvelope record validates against its capabilities-schema seat",
28288
+ "explicitId": "openwop.requirement.ai-envelope.advert-record-schema",
28289
+ "citations": [
28290
+ {
28291
+ "section": null,
28292
+ "requirement": null,
28293
+ "interpolated": true
28294
+ }
28295
+ ]
28296
+ },
28255
28297
  {
28256
28298
  "id": "openwop.it.v2-ai-envelope-shape-static.ai-envelope-schema-json-compiles-under-ajv-2020",
28257
28299
  "file": "v2-ai-envelope-shape-static.test.ts",
@@ -28734,6 +28776,165 @@
28734
28776
  }
28735
28777
  ]
28736
28778
  },
28779
+ {
28780
+ "id": "openwop.it.v2-artifact-created-static.artifact-created-is-a-registered-v2-run-event-type",
28781
+ "file": "v2-artifact-created-static.test.ts",
28782
+ "line": 51,
28783
+ "title": "artifact.created is a registered v2 run-event type",
28784
+ "explicitId": "openwop.requirement.artifact-types.created-event-type-registered",
28785
+ "citations": [
28786
+ {
28787
+ "section": "artifact-type-packs.md §Registration",
28788
+ "requirement": null,
28789
+ "interpolated": true
28790
+ }
28791
+ ]
28792
+ },
28793
+ {
28794
+ "id": "openwop.it.v2-artifact-created-static.accepts-a-well-formed-payload-with-either-provenance-or-none",
28795
+ "file": "v2-artifact-created-static.test.ts",
28796
+ "line": 56,
28797
+ "title": "accepts a well-formed payload, with either provenance or none",
28798
+ "explicitId": "openwop.requirement.artifact-types.created-registration-source-enum",
28799
+ "citations": [
28800
+ {
28801
+ "section": "artifact-type-packs.md §Registration",
28802
+ "requirement": null,
28803
+ "interpolated": true
28804
+ }
28805
+ ]
28806
+ },
28807
+ {
28808
+ "id": "openwop.it.v2-artifact-created-static.rejects-a-payload-without-s",
28809
+ "file": "v2-artifact-created-static.test.ts",
28810
+ "line": 64,
28811
+ "title": "rejects a payload without %s",
28812
+ "explicitId": "openwop.requirement.artifact-types.created-requires-artifact-type",
28813
+ "citations": [
28814
+ {
28815
+ "section": "artifact-type-packs.md §Registration",
28816
+ "requirement": null,
28817
+ "interpolated": true
28818
+ }
28819
+ ]
28820
+ },
28821
+ {
28822
+ "id": "openwop.it.v2-artifact-created-static.rejects-a-registrationsource-outside-pack-host",
28823
+ "file": "v2-artifact-created-static.test.ts",
28824
+ "line": 70,
28825
+ "title": "rejects a registrationSource outside pack | host",
28826
+ "explicitId": "openwop.requirement.artifact-types.created-registration-source-enum",
28827
+ "citations": [
28828
+ {
28829
+ "section": "artifact-type-packs.md §Registration",
28830
+ "requirement": "registrationSource MUST be pack or host"
28831
+ }
28832
+ ]
28833
+ },
28834
+ {
28835
+ "id": "openwop.it.v2-artifact-created-static.the-discovery-per-type-registrationsource-carries-the-same-vocabulary-as-the-eve",
28836
+ "file": "v2-artifact-created-static.test.ts",
28837
+ "line": 74,
28838
+ "title": "the discovery per-type registrationSource carries the same vocabulary as the event",
28839
+ "explicitId": "openwop.requirement.artifact-types.created-registration-source-enum",
28840
+ "citations": [
28841
+ {
28842
+ "section": "artifact-type-packs.md §Registration",
28843
+ "requirement": "artifact.created.registrationSource MUST be the pack | host enum"
28844
+ },
28845
+ {
28846
+ "section": "capabilities.schema.json §artifactTypes.types",
28847
+ "requirement": "the advertised per-type registrationSource MUST use the vocabulary artifact.created carries"
28848
+ }
28849
+ ]
28850
+ },
28851
+ {
28852
+ "id": "openwop.it.v2-artifact-created-static.rejects-a-non-boolean-registered",
28853
+ "file": "v2-artifact-created-static.test.ts",
28854
+ "line": 83,
28855
+ "title": "rejects a non-boolean registered",
28856
+ "explicitId": "openwop.requirement.artifact-types.created-registered-boolean",
28857
+ "citations": [
28858
+ {
28859
+ "section": "artifact-type-packs.md §Registration",
28860
+ "requirement": "registered MUST be a boolean"
28861
+ }
28862
+ ]
28863
+ },
28864
+ {
28865
+ "id": "openwop.it.v2-artifact-created-static.rejects-an-unknown-key-and-carries-a-vendor-key-under-the-rfc-0185-hatch",
28866
+ "file": "v2-artifact-created-static.test.ts",
28867
+ "line": 87,
28868
+ "title": "rejects an unknown key, and carries a vendor key under the RFC 0185 hatch",
28869
+ "explicitId": "openwop.requirement.artifact-types.created-payload-closed",
28870
+ "citations": [
28871
+ {
28872
+ "section": "artifact-type-packs.md §Registration",
28873
+ "requirement": "an unknown key on artifact.created MUST be rejected"
28874
+ },
28875
+ {
28876
+ "section": "run-event-payloads.schema.json §artifactCreated (RFC 0185)",
28877
+ "requirement": null,
28878
+ "interpolated": true
28879
+ }
28880
+ ]
28881
+ },
28882
+ {
28883
+ "id": "openwop.it.v2-artifact-type-schema-url.every-host-registered-type-with-an-advertised-schemaversion-has-its-schema-serve",
28884
+ "file": "v2-artifact-type-schema-url.test.ts",
28885
+ "line": 34,
28886
+ "title": "every host-registered type with an advertised schemaVersion has its schema served at {HostBase}/schemas/artifacts/{id}.schema.json",
28887
+ "explicitId": "openwop.requirement.artifact-types.host-registered-schema-served",
28888
+ "citations": [
28889
+ {
28890
+ "section": null,
28891
+ "requirement": null,
28892
+ "interpolated": true
28893
+ }
28894
+ ]
28895
+ },
28896
+ {
28897
+ "id": "openwop.it.v2-artifact-types-advertisement.the-artifacttypes-record-validates-against-its-capabilities-schema-seat",
28898
+ "file": "v2-artifact-types-advertisement.test.ts",
28899
+ "line": 41,
28900
+ "title": "the artifactTypes record validates against its capabilities-schema seat",
28901
+ "explicitId": "openwop.requirement.artifact-types.advert-record-schema",
28902
+ "citations": [
28903
+ {
28904
+ "section": null,
28905
+ "requirement": null,
28906
+ "interpolated": true
28907
+ }
28908
+ ]
28909
+ },
28910
+ {
28911
+ "id": "openwop.it.v2-artifact-types-advertisement.artifacttypes-store-render-and-export-are-well-formed",
28912
+ "file": "v2-artifact-types-advertisement.test.ts",
28913
+ "line": 49,
28914
+ "title": "artifactTypes.store, render and export are well-formed",
28915
+ "explicitId": "openwop.requirement.artifact-types.global-facets-shape",
28916
+ "citations": [
28917
+ {
28918
+ "section": null,
28919
+ "requirement": null,
28920
+ "interpolated": true
28921
+ }
28922
+ ]
28923
+ },
28924
+ {
28925
+ "id": "openwop.it.v2-artifact-types-advertisement.every-artifacttypes-types-entry-validates-against-its-seat",
28926
+ "file": "v2-artifact-types-advertisement.test.ts",
28927
+ "line": 57,
28928
+ "title": "every artifactTypes.types entry validates against its seat",
28929
+ "explicitId": "openwop.requirement.artifact-types.per-type-entry-shape",
28930
+ "citations": [
28931
+ {
28932
+ "section": null,
28933
+ "requirement": null,
28934
+ "interpolated": true
28935
+ }
28936
+ ]
28937
+ },
28737
28938
  {
28738
28939
  "id": "openwop.it.v2-assurance-downgrade-audited.an-identity-below-the-lane-floor-is-refused-with-sender-constraint-missing",
28739
28940
  "file": "v2-assurance-downgrade-audited.test.ts",
@@ -28839,6 +29040,48 @@
28839
29040
  }
28840
29041
  ]
28841
29042
  },
29043
+ {
29044
+ "id": "openwop.it.v2-authorization-advertisement.the-authorization-record-validates-against-its-capabilities-schema-seat",
29045
+ "file": "v2-authorization-advertisement.test.ts",
29046
+ "line": 40,
29047
+ "title": "the authorization record validates against its capabilities-schema seat",
29048
+ "explicitId": "openwop.requirement.authorization.advert-record-schema",
29049
+ "citations": [
29050
+ {
29051
+ "section": null,
29052
+ "requirement": null,
29053
+ "interpolated": true
29054
+ }
29055
+ ]
29056
+ },
29057
+ {
29058
+ "id": "openwop.it.v2-authorization-advertisement.authorization-failclosed-is-true-when-present",
29059
+ "file": "v2-authorization-advertisement.test.ts",
29060
+ "line": 49,
29061
+ "title": "authorization.failClosed is true when present",
29062
+ "explicitId": "openwop.requirement.authorization.fail-closed-true",
29063
+ "citations": [
29064
+ {
29065
+ "section": null,
29066
+ "requirement": null,
29067
+ "interpolated": true
29068
+ }
29069
+ ]
29070
+ },
29071
+ {
29072
+ "id": "openwop.it.v2-authorization-advertisement.every-authorization-roles-entry-has-a-non-empty-role-and-a-scopes-list",
29073
+ "file": "v2-authorization-advertisement.test.ts",
29074
+ "line": 58,
29075
+ "title": "every authorization.roles entry has a non-empty role and a scopes list",
29076
+ "explicitId": "openwop.requirement.authorization.roles-shape",
29077
+ "citations": [
29078
+ {
29079
+ "section": null,
29080
+ "requirement": null,
29081
+ "interpolated": true
29082
+ }
29083
+ ]
29084
+ },
28842
29085
  {
28843
29086
  "id": "openwop.it.v2-bound-id-kinds.subscriptionid-post-webhooks-mints-a-bound-webhookid-the-projected-segment-is-ac",
28844
29087
  "file": "v2-bound-id-kinds.test.ts",
@@ -29339,6 +29582,20 @@
29339
29582
  }
29340
29583
  ]
29341
29584
  },
29585
+ {
29586
+ "id": "openwop.it.v2-channel-presence-advertisement.the-channelpresence-record-validates-against-its-capabilities-schema-seat",
29587
+ "file": "v2-channel-presence-advertisement.test.ts",
29588
+ "line": 33,
29589
+ "title": "the channelPresence record validates against its capabilities-schema seat",
29590
+ "explicitId": "openwop.requirement.channel-presence.advert-record-schema",
29591
+ "citations": [
29592
+ {
29593
+ "section": null,
29594
+ "requirement": null,
29595
+ "interpolated": true
29596
+ }
29597
+ ]
29598
+ },
29342
29599
  {
29343
29600
  "id": "openwop.it.v2-client-version-header.a-client-at-the-floor-is-not-below-it-equal-on-major-minor-the-patch-never-decid",
29344
29601
  "file": "v2-client-version-header.test.ts",
@@ -29613,6 +29870,48 @@
29613
29870
  }
29614
29871
  ]
29615
29872
  },
29873
+ {
29874
+ "id": "openwop.it.v2-conversation-turn-model-provenance-advertisement.the-conversationturnmodelprovenance-record-validates-against-its-capabilities-sc",
29875
+ "file": "v2-conversation-turn-model-provenance-advertisement.test.ts",
29876
+ "line": 33,
29877
+ "title": "the conversationTurnModelProvenance record validates against its capabilities-schema seat",
29878
+ "explicitId": "openwop.requirement.conversation-turn-model-provenance.advert-record-schema",
29879
+ "citations": [
29880
+ {
29881
+ "section": null,
29882
+ "requirement": null,
29883
+ "interpolated": true
29884
+ }
29885
+ ]
29886
+ },
29887
+ {
29888
+ "id": "openwop.it.v2-conversation-turn-model-provenance.a-host-that-stamps-agent-model-on-a-turn-advertises-conversationturnmodelprovena",
29889
+ "file": "v2-conversation-turn-model-provenance.test.ts",
29890
+ "line": 90,
29891
+ "title": "a host that stamps agent.model on a turn advertises conversationTurnModelProvenance",
29892
+ "explicitId": "openwop.requirement.conversation-turn-model-provenance.stamp-requires-advert",
29893
+ "citations": [
29894
+ {
29895
+ "section": "conversation.md §conversationTurnModelProvenance",
29896
+ "requirement": null,
29897
+ "interpolated": true
29898
+ }
29899
+ ]
29900
+ },
29901
+ {
29902
+ "id": "openwop.it.v2-conversation-turn-model-provenance.every-agent-model-stamp-carries-provider-and-model-identifiers-only",
29903
+ "file": "v2-conversation-turn-model-provenance.test.ts",
29904
+ "line": 99,
29905
+ "title": "every agent.model stamp carries provider and model identifiers only",
29906
+ "explicitId": "openwop.requirement.conversation-turn-model-provenance.stamp-closed",
29907
+ "citations": [
29908
+ {
29909
+ "section": "conversation.md §conversationTurnModelProvenance",
29910
+ "requirement": null,
29911
+ "interpolated": true
29912
+ }
29913
+ ]
29914
+ },
29616
29915
  {
29617
29916
  "id": "openwop.it.v2-conversation-turn-parts.every-conversation-exchanged-turn-carrying-parts-validates-against-the-v2-turn-d",
29618
29917
  "file": "v2-conversation-turn-parts.test.ts",
@@ -29903,6 +30202,186 @@
29903
30202
  }
29904
30203
  ]
29905
30204
  },
30205
+ {
30206
+ "id": "openwop.it.v2-credentials-advertisement.the-credentials-record-validates-against-its-capabilities-schema-seat",
30207
+ "file": "v2-credentials-advertisement.test.ts",
30208
+ "line": 40,
30209
+ "title": "the credentials record validates against its capabilities-schema seat",
30210
+ "explicitId": "openwop.requirement.credentials.advert-record-schema",
30211
+ "citations": [
30212
+ {
30213
+ "section": null,
30214
+ "requirement": null,
30215
+ "interpolated": true
30216
+ }
30217
+ ]
30218
+ },
30219
+ {
30220
+ "id": "openwop.it.v2-credentials-advertisement.credentials-scopes-is-a-subset-of-user-workspace-tenant",
30221
+ "file": "v2-credentials-advertisement.test.ts",
30222
+ "line": 49,
30223
+ "title": "credentials.scopes is a subset of user, workspace, tenant",
30224
+ "explicitId": "openwop.requirement.credentials.scopes-subset",
30225
+ "citations": [
30226
+ {
30227
+ "section": null,
30228
+ "requirement": null,
30229
+ "interpolated": true
30230
+ }
30231
+ ]
30232
+ },
30233
+ {
30234
+ "id": "openwop.it.v2-credentials-advertisement.credentials-rotation-is-none-or-two-key-overlap",
30235
+ "file": "v2-credentials-advertisement.test.ts",
30236
+ "line": 58,
30237
+ "title": "credentials.rotation is none or two-key-overlap",
30238
+ "explicitId": "openwop.requirement.credentials.rotation-value",
30239
+ "citations": [
30240
+ {
30241
+ "section": null,
30242
+ "requirement": null,
30243
+ "interpolated": true
30244
+ }
30245
+ ]
30246
+ },
30247
+ {
30248
+ "id": "openwop.it.v2-data-residency-admission.a-region-outside-dataresidency-regions-answers-422-residency-unavailable-and-cre",
30249
+ "file": "v2-data-residency-admission.test.ts",
30250
+ "line": 66,
30251
+ "title": "a region outside dataResidency.regions answers 422 residency_unavailable and creates no run",
30252
+ "explicitId": "openwop.requirement.data-residency.reject-unadvertised-region",
30253
+ "citations": [
30254
+ {
30255
+ "section": "spec/v2/core/runs.md §dataResidency",
30256
+ "requirement": null,
30257
+ "interpolated": true
30258
+ },
30259
+ {
30260
+ "section": "spec/v2/core/runs.md §dataResidency",
30261
+ "requirement": "the refusal MUST carry the registered code residency_unavailable"
30262
+ },
30263
+ {
30264
+ "section": "spec/v2/core/runs.md §dataResidency",
30265
+ "requirement": null,
30266
+ "interpolated": true
30267
+ }
30268
+ ]
30269
+ },
30270
+ {
30271
+ "id": "openwop.it.v2-data-residency-admission.a-region-inside-dataresidency-regions-is-accepted",
30272
+ "file": "v2-data-residency-admission.test.ts",
30273
+ "line": 82,
30274
+ "title": "a region inside dataResidency.regions is accepted",
30275
+ "explicitId": "openwop.requirement.data-residency.accept-advertised-region",
30276
+ "citations": [
30277
+ {
30278
+ "section": "spec/v2/core/runs.md §dataResidency",
30279
+ "requirement": null,
30280
+ "interpolated": true
30281
+ },
30282
+ {
30283
+ "section": "spec/v2/core/runs.md §dataResidency",
30284
+ "requirement": null,
30285
+ "interpolated": true
30286
+ }
30287
+ ]
30288
+ },
30289
+ {
30290
+ "id": "openwop.it.v2-data-residency-advertisement.the-dataresidency-record-validates-against-its-capabilities-schema-seat",
30291
+ "file": "v2-data-residency-advertisement.test.ts",
30292
+ "line": 35,
30293
+ "title": "the dataResidency record validates against its capabilities-schema seat",
30294
+ "explicitId": "openwop.requirement.data-residency.advert-record-schema",
30295
+ "citations": [
30296
+ {
30297
+ "section": null,
30298
+ "requirement": null,
30299
+ "interpolated": true
30300
+ }
30301
+ ]
30302
+ },
30303
+ {
30304
+ "id": "openwop.it.v2-data-residency-advertisement.dataresidency-regions-holds-unique-non-empty-region-codes",
30305
+ "file": "v2-data-residency-advertisement.test.ts",
30306
+ "line": 44,
30307
+ "title": "dataResidency.regions holds unique non-empty region codes",
30308
+ "explicitId": "openwop.requirement.data-residency.regions-shape",
30309
+ "citations": [
30310
+ {
30311
+ "section": null,
30312
+ "requirement": null,
30313
+ "interpolated": true
30314
+ }
30315
+ ]
30316
+ },
30317
+ {
30318
+ "id": "openwop.it.v2-dead-letter-advertisement.the-deadletter-record-validates-against-its-capabilities-schema-seat",
30319
+ "file": "v2-dead-letter-advertisement.test.ts",
30320
+ "line": 37,
30321
+ "title": "the deadLetter record validates against its capabilities-schema seat",
30322
+ "explicitId": "openwop.requirement.dead-letter.advert-record-schema",
30323
+ "citations": [
30324
+ {
30325
+ "section": null,
30326
+ "requirement": null,
30327
+ "interpolated": true
30328
+ }
30329
+ ]
30330
+ },
30331
+ {
30332
+ "id": "openwop.it.v2-dead-letter-advertisement.deadletter-retentiondays-is-an-integer-of-at-least-1",
30333
+ "file": "v2-dead-letter-advertisement.test.ts",
30334
+ "line": 46,
30335
+ "title": "deadLetter.retentionDays is an integer of at least 1",
30336
+ "explicitId": "openwop.requirement.dead-letter.retention-days",
30337
+ "citations": [
30338
+ {
30339
+ "section": null,
30340
+ "requirement": null,
30341
+ "interpolated": true
30342
+ }
30343
+ ]
30344
+ },
30345
+ {
30346
+ "id": "openwop.it.v2-dispatch-input-mapping.inputmapping-projects-the-parent-variable-into-the-dispatched-child-inputs",
30347
+ "file": "v2-dispatch-input-mapping.test.ts",
30348
+ "line": 59,
30349
+ "title": "inputMapping projects the parent variable into the dispatched child inputs",
30350
+ "explicitId": null,
30351
+ "citations": []
30352
+ },
30353
+ {
30354
+ "id": "openwop.it.v2-dispatch-input-mapping.an-unset-parent-variable-projects-to-undefined-the-child-input-is-absent-never-n",
30355
+ "file": "v2-dispatch-input-mapping.test.ts",
30356
+ "line": 65,
30357
+ "title": "an unset parent variable projects to undefined: the child input is absent, never null",
30358
+ "explicitId": null,
30359
+ "citations": []
30360
+ },
30361
+ {
30362
+ "id": "openwop.it.v2-dispatch-loop.each-turn-records-its-decision-and-terminate-completes-the-run",
30363
+ "file": "v2-dispatch-loop.test.ts",
30364
+ "line": 63,
30365
+ "title": "each turn records its decision and terminate completes the run",
30366
+ "explicitId": null,
30367
+ "citations": []
30368
+ },
30369
+ {
30370
+ "id": "openwop.it.v2-dispatch-loop.every-recorded-decision-is-well-formed-and-the-deciding-agent-never-changes",
30371
+ "file": "v2-dispatch-loop.test.ts",
30372
+ "line": 69,
30373
+ "title": "every recorded decision is well-formed and the deciding agent never changes",
30374
+ "explicitId": null,
30375
+ "citations": []
30376
+ },
30377
+ {
30378
+ "id": "openwop.it.v2-dispatch-loop.at-executionmodel-version-5-iteration-is-1-based-and-increments-by-exactly-1-per",
30379
+ "file": "v2-dispatch-loop.test.ts",
30380
+ "line": 75,
30381
+ "title": "at executionModel.version >= 5, iteration is 1-based and increments by exactly 1 per turn",
30382
+ "explicitId": null,
30383
+ "citations": []
30384
+ },
29906
30385
  {
29907
30386
  "id": "openwop.it.v2-dual-stack-negotiation.a-run-created-through-v1-runs-with-no-header-is-readable-through-runs-under-open",
29908
30387
  "file": "v2-dual-stack-negotiation.test.ts",
@@ -30283,6 +30762,20 @@
30283
30762
  }
30284
30763
  ]
30285
30764
  },
30765
+ {
30766
+ "id": "openwop.it.v2-envelope-contracts-advertisement.the-envelopecontracts-record-validates-against-its-capabilities-schema-seat",
30767
+ "file": "v2-envelope-contracts-advertisement.test.ts",
30768
+ "line": 32,
30769
+ "title": "the envelopeContracts record validates against its capabilities-schema seat",
30770
+ "explicitId": "openwop.requirement.envelope-contracts.advert-record-schema",
30771
+ "citations": [
30772
+ {
30773
+ "section": null,
30774
+ "requirement": null,
30775
+ "interpolated": true
30776
+ }
30777
+ ]
30778
+ },
30286
30779
  {
30287
30780
  "id": "openwop.requirement.envelopes.reasoning-declared-optional-string",
30288
30781
  "file": "v2-envelope-reasoning-shape.test.ts",
@@ -30754,6 +31247,144 @@
30754
31247
  }
30755
31248
  ]
30756
31249
  },
31250
+ {
31251
+ "id": "openwop.it.v2-export-bundle-static.accepts-a-conforming-bundle-at-bundleversion-2",
31252
+ "file": "v2-export-bundle-static.test.ts",
31253
+ "line": 53,
31254
+ "title": "accepts a conforming bundle at bundleVersion \"2\"",
31255
+ "explicitId": "openwop.requirement.portability.bundle-version-2",
31256
+ "citations": [
31257
+ {
31258
+ "section": "portability.md §The export bundle",
31259
+ "requirement": null,
31260
+ "interpolated": true
31261
+ }
31262
+ ]
31263
+ },
31264
+ {
31265
+ "id": "openwop.it.v2-export-bundle-static.rejects-the-v1-bundleversion-1-and-a-missing-bundleversion",
31266
+ "file": "v2-export-bundle-static.test.ts",
31267
+ "line": 58,
31268
+ "title": "rejects the v1 bundleVersion \"1\" and a missing bundleVersion",
31269
+ "explicitId": "openwop.requirement.portability.bundle-version-2",
31270
+ "citations": [
31271
+ {
31272
+ "section": "portability.md §The export bundle",
31273
+ "requirement": "a v2 bundle MUST carry bundleVersion \"2\"; \"1\" MUST be rejected"
31274
+ },
31275
+ {
31276
+ "section": "portability.md §The export bundle",
31277
+ "requirement": "a bundle without bundleVersion MUST be rejected"
31278
+ }
31279
+ ]
31280
+ },
31281
+ {
31282
+ "id": "openwop.it.v2-export-bundle-static.rejects-an-unknown-item-kind-and-an-item-without-ref",
31283
+ "file": "v2-export-bundle-static.test.ts",
31284
+ "line": 64,
31285
+ "title": "rejects an unknown item kind and an item without ref",
31286
+ "explicitId": "openwop.requirement.portability.bundle-item-shape",
31287
+ "citations": [
31288
+ {
31289
+ "section": "portability.md §The export bundle",
31290
+ "requirement": "an unknown item kind MUST be rejected"
31291
+ },
31292
+ {
31293
+ "section": "portability.md §The export bundle",
31294
+ "requirement": "an item without a ref MUST be rejected"
31295
+ }
31296
+ ]
31297
+ },
31298
+ {
31299
+ "id": "openwop.it.v2-export-bundle-static.admits-no-s-field-at-the-bundle-root-or-under-source",
31300
+ "file": "v2-export-bundle-static.test.ts",
31301
+ "line": 69,
31302
+ "title": "admits no %s field at the bundle root or under source",
31303
+ "explicitId": "openwop.requirement.portability.bundle-no-credential-field",
31304
+ "citations": [
31305
+ {
31306
+ "section": "portability.md §The export bundle",
31307
+ "requirement": null,
31308
+ "interpolated": true
31309
+ },
31310
+ {
31311
+ "section": "portability.md §The export bundle",
31312
+ "requirement": null,
31313
+ "interpolated": true
31314
+ }
31315
+ ]
31316
+ },
31317
+ {
31318
+ "id": "openwop.it.v2-export-bundle-static.import-applied-is-a-registered-v2-run-event-type",
31319
+ "file": "v2-export-bundle-static.test.ts",
31320
+ "line": 79,
31321
+ "title": "import.applied is a registered v2 run-event type",
31322
+ "explicitId": "openwop.requirement.portability.import-applied-content-free",
31323
+ "citations": [
31324
+ {
31325
+ "section": null,
31326
+ "requirement": null,
31327
+ "interpolated": true
31328
+ }
31329
+ ]
31330
+ },
31331
+ {
31332
+ "id": "openwop.it.v2-export-bundle-static.a-counts-and-refs-payload-validates-one-carrying-item-payloads-does-not",
31333
+ "file": "v2-export-bundle-static.test.ts",
31334
+ "line": 84,
31335
+ "title": "a counts-and-refs payload validates; one carrying item payloads does not",
31336
+ "explicitId": "openwop.requirement.portability.import-applied-content-free",
31337
+ "citations": [
31338
+ {
31339
+ "section": null,
31340
+ "requirement": null,
31341
+ "interpolated": true
31342
+ },
31343
+ {
31344
+ "section": null,
31345
+ "requirement": "import.applied MUST NOT carry item payloads",
31346
+ "interpolated": true
31347
+ },
31348
+ {
31349
+ "section": null,
31350
+ "requirement": "import.applied counts MUST be the four outcome tallies only",
31351
+ "interpolated": true
31352
+ }
31353
+ ]
31354
+ },
31355
+ {
31356
+ "id": "openwop.it.v2-export-bundle-static.import-true-with-dryrun-true-validates-import-false-needs-no-dryrun",
31357
+ "file": "v2-export-bundle-static.test.ts",
31358
+ "line": 97,
31359
+ "title": "import: true with dryRun: true validates; import: false needs no dryRun",
31360
+ "explicitId": "openwop.requirement.portability.import-dry-run-schema-rule",
31361
+ "citations": [
31362
+ {
31363
+ "section": null,
31364
+ "requirement": null,
31365
+ "interpolated": true
31366
+ }
31367
+ ]
31368
+ },
31369
+ {
31370
+ "id": "openwop.it.v2-export-bundle-static.import-true-without-dryrun-or-with-dryrun-false-is-rejected",
31371
+ "file": "v2-export-bundle-static.test.ts",
31372
+ "line": 104,
31373
+ "title": "import: true without dryRun, or with dryRun: false, is rejected",
31374
+ "explicitId": "openwop.requirement.portability.import-dry-run-schema-rule",
31375
+ "citations": [
31376
+ {
31377
+ "section": null,
31378
+ "requirement": "import: true without dryRun MUST be rejected",
31379
+ "interpolated": true
31380
+ },
31381
+ {
31382
+ "section": null,
31383
+ "requirement": "import: true with dryRun: false MUST be rejected",
31384
+ "interpolated": true
31385
+ }
31386
+ ]
31387
+ },
30757
31388
  {
30758
31389
  "id": "openwop.it.v2-ext-family-claims.brand",
30759
31390
  "file": "v2-ext-family-claims.test.ts",
@@ -33270,6 +33901,34 @@
33270
33901
  }
33271
33902
  ]
33272
33903
  },
33904
+ {
33905
+ "id": "openwop.it.v2-multi-party-conversation-advertisement.the-multipartyconversation-record-validates-against-its-capabilities-schema-seat",
33906
+ "file": "v2-multi-party-conversation-advertisement.test.ts",
33907
+ "line": 35,
33908
+ "title": "the multiPartyConversation record validates against its capabilities-schema seat",
33909
+ "explicitId": "openwop.requirement.multi-party-conversation.advert-record-schema",
33910
+ "citations": [
33911
+ {
33912
+ "section": null,
33913
+ "requirement": null,
33914
+ "interpolated": true
33915
+ }
33916
+ ]
33917
+ },
33918
+ {
33919
+ "id": "openwop.it.v2-multi-party-conversation-advertisement.multipartyconversation-maxparticipants-is-an-integer-of-at-least-2",
33920
+ "file": "v2-multi-party-conversation-advertisement.test.ts",
33921
+ "line": 44,
33922
+ "title": "multiPartyConversation.maxParticipants is an integer of at least 2",
33923
+ "explicitId": "openwop.requirement.multi-party-conversation.max-participants",
33924
+ "citations": [
33925
+ {
33926
+ "section": null,
33927
+ "requirement": null,
33928
+ "interpolated": true
33929
+ }
33930
+ ]
33931
+ },
33273
33932
  {
33274
33933
  "id": "openwop.it.v2-negotiation-authenticated.an-unauthenticated-a2a-exchange-cannot-lower-the-version-below-preferredversion",
33275
33934
  "file": "v2-negotiation-authenticated.test.ts",
@@ -33329,6 +33988,48 @@
33329
33988
  }
33330
33989
  ]
33331
33990
  },
33991
+ {
33992
+ "id": "openwop.it.v2-node-pack-runtimes-advertisement.the-nodepackruntimes-record-validates-against-its-capabilities-schema-seat",
33993
+ "file": "v2-node-pack-runtimes-advertisement.test.ts",
33994
+ "line": 35,
33995
+ "title": "the nodePackRuntimes record validates against its capabilities-schema seat",
33996
+ "explicitId": "openwop.requirement.node-pack-runtimes.advert-record-schema",
33997
+ "citations": [
33998
+ {
33999
+ "section": null,
34000
+ "requirement": null,
34001
+ "interpolated": true
34002
+ }
34003
+ ]
34004
+ },
34005
+ {
34006
+ "id": "openwop.it.v2-node-pack-runtimes-advertisement.nodepackruntimes-wasm-lists-abi-versions-and-a-memory-cap-in-range",
34007
+ "file": "v2-node-pack-runtimes-advertisement.test.ts",
34008
+ "line": 44,
34009
+ "title": "nodePackRuntimes.wasm lists ABI versions and a memory cap in range",
34010
+ "explicitId": "openwop.requirement.node-pack-runtimes.wasm-facet-shape",
34011
+ "citations": [
34012
+ {
34013
+ "section": null,
34014
+ "requirement": null,
34015
+ "interpolated": true
34016
+ }
34017
+ ]
34018
+ },
34019
+ {
34020
+ "id": "openwop.it.v2-nondeterminism-policy-advertisement.the-nondeterminismpolicy-record-validates-against-its-capabilities-schema-seat",
34021
+ "file": "v2-nondeterminism-policy-advertisement.test.ts",
34022
+ "line": 33,
34023
+ "title": "the nondeterminismPolicy record validates against its capabilities-schema seat",
34024
+ "explicitId": "openwop.requirement.nondeterminism-policy.advert-record-schema",
34025
+ "citations": [
34026
+ {
34027
+ "section": null,
34028
+ "requirement": null,
34029
+ "interpolated": true
34030
+ }
34031
+ ]
34032
+ },
33332
34033
  {
33333
34034
  "id": "openwop.it.v2-oauth-client-pkce-state-iss.sends-pkce-s256-and-the-verifier-at-the-token-endpoint-hashes-to-the-challenge",
33334
34035
  "file": "v2-oauth-client-pkce-state-iss.test.ts",
@@ -34126,6 +34827,48 @@
34126
34827
  }
34127
34828
  ]
34128
34829
  },
34830
+ {
34831
+ "id": "openwop.it.v2-portability-advertisement.the-portability-record-validates-against-its-capabilities-schema-seat",
34832
+ "file": "v2-portability-advertisement.test.ts",
34833
+ "line": 40,
34834
+ "title": "the portability record validates against its capabilities-schema seat",
34835
+ "explicitId": "openwop.requirement.portability.advert-record-schema",
34836
+ "citations": [
34837
+ {
34838
+ "section": null,
34839
+ "requirement": null,
34840
+ "interpolated": true
34841
+ }
34842
+ ]
34843
+ },
34844
+ {
34845
+ "id": "openwop.it.v2-portability-advertisement.a-host-advertising-portability-import-advertises-dryrun-true",
34846
+ "file": "v2-portability-advertisement.test.ts",
34847
+ "line": 48,
34848
+ "title": "a host advertising portability.import advertises dryRun: true",
34849
+ "explicitId": "openwop.requirement.portability.import-requires-dry-run",
34850
+ "citations": [
34851
+ {
34852
+ "section": null,
34853
+ "requirement": null,
34854
+ "interpolated": true
34855
+ }
34856
+ ]
34857
+ },
34858
+ {
34859
+ "id": "openwop.it.v2-portability-advertisement.portability-kinds-lists-unique-export-bundle-item-kinds",
34860
+ "file": "v2-portability-advertisement.test.ts",
34861
+ "line": 56,
34862
+ "title": "portability.kinds lists unique export-bundle item kinds",
34863
+ "explicitId": "openwop.requirement.portability.kinds-shape",
34864
+ "citations": [
34865
+ {
34866
+ "section": null,
34867
+ "requirement": null,
34868
+ "interpolated": true
34869
+ }
34870
+ ]
34871
+ },
34129
34872
  {
34130
34873
  "id": "openwop.it.v2-preferred-version-default.preferredversion-is-a-member-of-protocolversions",
34131
34874
  "file": "v2-preferred-version-default.test.ts",
@@ -34326,6 +35069,20 @@
34326
35069
  }
34327
35070
  ]
34328
35071
  },
35072
+ {
35073
+ "id": "openwop.it.v2-prompt-library-advertisement.the-promptlibrary-record-validates-against-its-capabilities-schema-seat",
35074
+ "file": "v2-prompt-library-advertisement.test.ts",
35075
+ "line": 32,
35076
+ "title": "the promptLibrary record validates against its capabilities-schema seat",
35077
+ "explicitId": "openwop.requirement.prompt-library.advert-record-schema",
35078
+ "citations": [
35079
+ {
35080
+ "section": null,
35081
+ "requirement": null,
35082
+ "interpolated": true
35083
+ }
35084
+ ]
35085
+ },
34329
35086
  {
34330
35087
  "id": "openwop.it.v2-prompt-list-and-fetch.get-prompts-answers-items-whose-every-entry-validates",
34331
35088
  "file": "v2-prompt-list-and-fetch.test.ts",
@@ -34925,6 +35682,174 @@
34925
35682
  }
34926
35683
  ]
34927
35684
  },
35685
+ {
35686
+ "id": "openwop.it.v2-provider-usage-advertisement.the-providerusage-record-validates-against-its-capabilities-schema-seat",
35687
+ "file": "v2-provider-usage-advertisement.test.ts",
35688
+ "line": 38,
35689
+ "title": "the providerUsage record validates against its capabilities-schema seat",
35690
+ "explicitId": "openwop.requirement.provider-usage.advert-record-schema",
35691
+ "citations": [
35692
+ {
35693
+ "section": null,
35694
+ "requirement": null,
35695
+ "interpolated": true
35696
+ }
35697
+ ]
35698
+ },
35699
+ {
35700
+ "id": "openwop.it.v2-provider-usage-advertisement.providerusage-costestimates-is-one-boolean",
35701
+ "file": "v2-provider-usage-advertisement.test.ts",
35702
+ "line": 46,
35703
+ "title": "providerUsage.costEstimates is one boolean",
35704
+ "explicitId": "openwop.requirement.provider-usage.cost-estimates-boolean",
35705
+ "citations": [
35706
+ {
35707
+ "section": null,
35708
+ "requirement": null,
35709
+ "interpolated": true
35710
+ }
35711
+ ]
35712
+ },
35713
+ {
35714
+ "id": "openwop.it.v2-provider-usage-advertisement.providerusage-currency-is-an-iso-4217-code",
35715
+ "file": "v2-provider-usage-advertisement.test.ts",
35716
+ "line": 54,
35717
+ "title": "providerUsage.currency is an ISO 4217 code",
35718
+ "explicitId": "openwop.requirement.provider-usage.currency-iso-4217",
35719
+ "citations": [
35720
+ {
35721
+ "section": null,
35722
+ "requirement": null,
35723
+ "interpolated": true
35724
+ }
35725
+ ]
35726
+ },
35727
+ {
35728
+ "id": "openwop.it.v2-provider-usage-emission.a-live-model-run-carries-provider-usage-each-before-its-node-completed-and-each",
35729
+ "file": "v2-provider-usage-emission.test.ts",
35730
+ "line": 38,
35731
+ "title": "a live-model run carries provider.usage, each before its node.completed and each payload valid",
35732
+ "explicitId": "openwop.requirement.provider-usage.emitted-before-node-completed",
35733
+ "citations": [
35734
+ {
35735
+ "section": null,
35736
+ "requirement": null,
35737
+ "interpolated": true
35738
+ }
35739
+ ]
35740
+ },
35741
+ {
35742
+ "id": "openwop.it.v2-provider-usage-payload-static.provider-usage-is-a-registered-v2-run-event-type",
35743
+ "file": "v2-provider-usage-payload-static.test.ts",
35744
+ "line": 52,
35745
+ "title": "provider.usage is a registered v2 run-event type",
35746
+ "explicitId": "openwop.requirement.provider-usage.event-type-registered",
35747
+ "citations": [
35748
+ {
35749
+ "section": "events.md §providerUsage",
35750
+ "requirement": null,
35751
+ "interpolated": true
35752
+ }
35753
+ ]
35754
+ },
35755
+ {
35756
+ "id": "openwop.it.v2-provider-usage-payload-static.accepts-a-minimal-and-a-full-payload",
35757
+ "file": "v2-provider-usage-payload-static.test.ts",
35758
+ "line": 57,
35759
+ "title": "accepts a minimal and a full payload",
35760
+ "explicitId": "openwop.requirement.provider-usage.payload-well-formed-accepted",
35761
+ "citations": [
35762
+ {
35763
+ "section": "events.md §providerUsage",
35764
+ "requirement": null,
35765
+ "interpolated": true
35766
+ }
35767
+ ]
35768
+ },
35769
+ {
35770
+ "id": "openwop.it.v2-provider-usage-payload-static.rejects-a-payload-without-s",
35771
+ "file": "v2-provider-usage-payload-static.test.ts",
35772
+ "line": 64,
35773
+ "title": "rejects a payload without %s",
35774
+ "explicitId": "openwop.requirement.provider-usage.payload-required-fields",
35775
+ "citations": [
35776
+ {
35777
+ "section": "events.md §providerUsage",
35778
+ "requirement": null,
35779
+ "interpolated": true
35780
+ }
35781
+ ]
35782
+ },
35783
+ {
35784
+ "id": "openwop.it.v2-provider-usage-payload-static.rejects-s",
35785
+ "file": "v2-provider-usage-payload-static.test.ts",
35786
+ "line": 68,
35787
+ "title": "rejects %s",
35788
+ "explicitId": "openwop.requirement.provider-usage.payload-token-counts",
35789
+ "citations": [
35790
+ {
35791
+ "section": "events.md §providerUsage",
35792
+ "requirement": null,
35793
+ "interpolated": true
35794
+ }
35795
+ ]
35796
+ },
35797
+ {
35798
+ "id": "openwop.it.v2-provider-usage-payload-static.rejects-s~2",
35799
+ "file": "v2-provider-usage-payload-static.test.ts",
35800
+ "line": 76,
35801
+ "title": "rejects %s",
35802
+ "explicitId": "openwop.requirement.provider-usage.payload-cost-and-currency",
35803
+ "citations": [
35804
+ {
35805
+ "section": "events.md §providerUsage",
35806
+ "requirement": null,
35807
+ "interpolated": true
35808
+ }
35809
+ ]
35810
+ },
35811
+ {
35812
+ "id": "openwop.it.v2-provider-usage-payload-static.rejects-a-payload-carrying-s",
35813
+ "file": "v2-provider-usage-payload-static.test.ts",
35814
+ "line": 84,
35815
+ "title": "rejects a payload carrying %s",
35816
+ "explicitId": "openwop.requirement.provider-usage.payload-no-credential-or-content",
35817
+ "citations": [
35818
+ {
35819
+ "section": "events.md §providerUsage",
35820
+ "requirement": null,
35821
+ "interpolated": true
35822
+ }
35823
+ ]
35824
+ },
35825
+ {
35826
+ "id": "openwop.it.v2-purpose-propagation-advertisement.the-purposepropagation-record-validates-against-its-capabilities-schema-seat",
35827
+ "file": "v2-purpose-propagation-advertisement.test.ts",
35828
+ "line": 35,
35829
+ "title": "the purposePropagation record validates against its capabilities-schema seat",
35830
+ "explicitId": "openwop.requirement.purpose-propagation.advert-record-schema",
35831
+ "citations": [
35832
+ {
35833
+ "section": null,
35834
+ "requirement": null,
35835
+ "interpolated": true
35836
+ }
35837
+ ]
35838
+ },
35839
+ {
35840
+ "id": "openwop.it.v2-purpose-propagation-advertisement.purposepropagation-propagatesonward-is-a-boolean",
35841
+ "file": "v2-purpose-propagation-advertisement.test.ts",
35842
+ "line": 44,
35843
+ "title": "purposePropagation.propagatesOnward is a boolean",
35844
+ "explicitId": "openwop.requirement.purpose-propagation.propagates-onward-boolean",
35845
+ "citations": [
35846
+ {
35847
+ "section": null,
35848
+ "requirement": null,
35849
+ "interpolated": true
35850
+ }
35851
+ ]
35852
+ },
34928
35853
  {
34929
35854
  "id": "openwop.it.v2-queue-cross-tenant-isolation.a-message-tenant-a-publishes-on-topic-t-is-never-consumed-by-tenant-b-on-t-and-a",
34930
35855
  "file": "v2-queue-cross-tenant-isolation.test.ts",
@@ -35839,6 +36764,34 @@
35839
36764
  }
35840
36765
  ]
35841
36766
  },
36767
+ {
36768
+ "id": "openwop.it.v2-scheduling-advertisement.the-scheduling-record-validates-against-its-capabilities-schema-seat",
36769
+ "file": "v2-scheduling-advertisement.test.ts",
36770
+ "line": 38,
36771
+ "title": "the scheduling record validates against its capabilities-schema seat",
36772
+ "explicitId": "openwop.requirement.scheduling.advert-record-schema",
36773
+ "citations": [
36774
+ {
36775
+ "section": null,
36776
+ "requirement": null,
36777
+ "interpolated": true
36778
+ }
36779
+ ]
36780
+ },
36781
+ {
36782
+ "id": "openwop.it.v2-scheduling-advertisement.scheduling-cron-delayed-and-calendar-are-booleans",
36783
+ "file": "v2-scheduling-advertisement.test.ts",
36784
+ "line": 47,
36785
+ "title": "scheduling.cron, delayed and calendar are booleans",
36786
+ "explicitId": "openwop.requirement.scheduling.forms-boolean",
36787
+ "citations": [
36788
+ {
36789
+ "section": null,
36790
+ "requirement": null,
36791
+ "interpolated": true
36792
+ }
36793
+ ]
36794
+ },
35842
36795
  {
35843
36796
  "id": "openwop.it.v2-secret-canary-absent.a-secret-resolved-from-the-host-s-store-appears-on-no-readable-surface-of-the-ru",
35844
36797
  "file": "v2-secret-canary-absent.test.ts",
@@ -35988,6 +36941,144 @@
35988
36941
  }
35989
36942
  ]
35990
36943
  },
36944
+ {
36945
+ "id": "openwop.it.v2-self-hosted-runner-advertisement.the-selfhostedrunner-record-validates-against-its-capabilities-schema-seat",
36946
+ "file": "v2-self-hosted-runner-advertisement.test.ts",
36947
+ "line": 37,
36948
+ "title": "the selfHostedRunner record validates against its capabilities-schema seat",
36949
+ "explicitId": "openwop.requirement.self-hosted-runner.advert-record-schema",
36950
+ "citations": [
36951
+ {
36952
+ "section": null,
36953
+ "requirement": null,
36954
+ "interpolated": true
36955
+ }
36956
+ ]
36957
+ },
36958
+ {
36959
+ "id": "openwop.it.v2-self-hosted-runner-advertisement.selfhostedrunner-dispatchkinds-lists-model-tool-or-both",
36960
+ "file": "v2-self-hosted-runner-advertisement.test.ts",
36961
+ "line": 45,
36962
+ "title": "selfHostedRunner.dispatchKinds lists model, tool or both",
36963
+ "explicitId": "openwop.requirement.self-hosted-runner.dispatch-kinds",
36964
+ "citations": [
36965
+ {
36966
+ "section": null,
36967
+ "requirement": null,
36968
+ "interpolated": true
36969
+ }
36970
+ ]
36971
+ },
36972
+ {
36973
+ "id": "openwop.requirement.self-hosted-runner.frame-schemas-compile",
36974
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
36975
+ "line": 56,
36976
+ "title": null,
36977
+ "explicitId": "openwop.requirement.self-hosted-runner.frame-schemas-compile",
36978
+ "citations": [
36979
+ {
36980
+ "section": "execution.md §selfHostedRunner",
36981
+ "requirement": null,
36982
+ "interpolated": true
36983
+ }
36984
+ ]
36985
+ },
36986
+ {
36987
+ "id": "openwop.it.v2-self-hosted-runner-frames-static.accepts-a-model-frame-and-a-tool-frame",
36988
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
36989
+ "line": 65,
36990
+ "title": "accepts a model frame and a tool frame",
36991
+ "explicitId": "openwop.requirement.self-hosted-runner.dispatch-frame-shape",
36992
+ "citations": [
36993
+ {
36994
+ "section": "execution.md §selfHostedRunner",
36995
+ "requirement": null,
36996
+ "interpolated": true
36997
+ }
36998
+ ]
36999
+ },
37000
+ {
37001
+ "id": "openwop.it.v2-self-hosted-runner-frames-static.rejects-s",
37002
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
37003
+ "line": 72,
37004
+ "title": "rejects %s",
37005
+ "explicitId": "openwop.requirement.self-hosted-runner.dispatch-frame-shape",
37006
+ "citations": [
37007
+ {
37008
+ "section": "execution.md §selfHostedRunner",
37009
+ "requirement": null,
37010
+ "interpolated": true
37011
+ }
37012
+ ]
37013
+ },
37014
+ {
37015
+ "id": "openwop.it.v2-self-hosted-runner-frames-static.accepts-a-result-frame",
37016
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
37017
+ "line": 89,
37018
+ "title": "accepts a result frame",
37019
+ "explicitId": "openwop.requirement.self-hosted-runner.result-frame-shape",
37020
+ "citations": [
37021
+ {
37022
+ "section": "execution.md §selfHostedRunner",
37023
+ "requirement": null,
37024
+ "interpolated": true
37025
+ }
37026
+ ]
37027
+ },
37028
+ {
37029
+ "id": "openwop.it.v2-self-hosted-runner-frames-static.rejects-a-result-frame-without-output",
37030
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
37031
+ "line": 94,
37032
+ "title": "rejects a result frame without output",
37033
+ "explicitId": "openwop.requirement.self-hosted-runner.result-frame-shape",
37034
+ "citations": [
37035
+ {
37036
+ "section": "execution.md §selfHostedRunner",
37037
+ "requirement": "a result frame without output MUST be rejected"
37038
+ }
37039
+ ]
37040
+ },
37041
+ {
37042
+ "id": "openwop.it.v2-self-hosted-runner-frames-static.a-s-with-an-extra-credential-named-field-is-rejected",
37043
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
37044
+ "line": 100,
37045
+ "title": "a %s with an extra credential-named field is rejected",
37046
+ "explicitId": "openwop.requirement.self-hosted-runner.frames-closed",
37047
+ "citations": [
37048
+ {
37049
+ "section": "execution.md §selfHostedRunner",
37050
+ "requirement": null,
37051
+ "interpolated": true
37052
+ }
37053
+ ]
37054
+ },
37055
+ {
37056
+ "id": "openwop.it.v2-self-hosted-runner-frames-static.accepts-a-registration",
37057
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
37058
+ "line": 113,
37059
+ "title": "accepts a registration",
37060
+ "explicitId": "openwop.requirement.self-hosted-runner.registration-shape",
37061
+ "citations": [
37062
+ {
37063
+ "section": "execution.md §selfHostedRunner",
37064
+ "requirement": null,
37065
+ "interpolated": true
37066
+ }
37067
+ ]
37068
+ },
37069
+ {
37070
+ "id": "openwop.it.v2-self-hosted-runner-frames-static.rejects-a-registration-without-subject",
37071
+ "file": "v2-self-hosted-runner-frames-static.test.ts",
37072
+ "line": 118,
37073
+ "title": "rejects a registration without subject",
37074
+ "explicitId": "openwop.requirement.self-hosted-runner.registration-shape",
37075
+ "citations": [
37076
+ {
37077
+ "section": "execution.md §selfHostedRunner",
37078
+ "requirement": "a registration without its owning subject MUST be rejected"
37079
+ }
37080
+ ]
37081
+ },
35991
37082
  {
35992
37083
  "id": "openwop.it.v2-sse-last-event-id-cursor.a-last-event-id-past-the-log-is-an-exclusive-cursor-a-terminal-run-answers-200-w",
35993
37084
  "file": "v2-sse-last-event-id-cursor.test.ts",
@@ -36459,6 +37550,34 @@
36459
37550
  }
36460
37551
  ]
36461
37552
  },
37553
+ {
37554
+ "id": "openwop.it.v2-sub-workflow-advertisement.the-subworkflow-record-validates-against-its-capabilities-schema-seat",
37555
+ "file": "v2-sub-workflow-advertisement.test.ts",
37556
+ "line": 36,
37557
+ "title": "the subWorkflow record validates against its capabilities-schema seat",
37558
+ "explicitId": "openwop.requirement.sub-workflow.advert-record-schema",
37559
+ "citations": [
37560
+ {
37561
+ "section": null,
37562
+ "requirement": null,
37563
+ "interpolated": true
37564
+ }
37565
+ ]
37566
+ },
37567
+ {
37568
+ "id": "openwop.it.v2-sub-workflow-advertisement.subworkflow-inputmapping-is-one-boolean",
37569
+ "file": "v2-sub-workflow-advertisement.test.ts",
37570
+ "line": 45,
37571
+ "title": "subWorkflow.inputMapping is one boolean",
37572
+ "explicitId": "openwop.requirement.sub-workflow.input-mapping-boolean",
37573
+ "citations": [
37574
+ {
37575
+ "section": null,
37576
+ "requirement": null,
37577
+ "interpolated": true
37578
+ }
37579
+ ]
37580
+ },
36462
37581
  {
36463
37582
  "id": "openwop.it.v2-subject-link-record.the-link-formed-across-scim-and-saml-is-a-closed-subjectlink-record",
36464
37583
  "file": "v2-subject-link-record.test.ts",
@@ -36503,6 +37622,54 @@
36503
37622
  }
36504
37623
  ]
36505
37624
  },
37625
+ {
37626
+ "id": "openwop.it.v2-subworkflow-input-mapping.inputmapping-seeds-the-child-variable-bag-at-creation",
37627
+ "file": "v2-subworkflow-input-mapping.test.ts",
37628
+ "line": 57,
37629
+ "title": "inputMapping seeds the child variable bag at creation",
37630
+ "explicitId": null,
37631
+ "citations": []
37632
+ },
37633
+ {
37634
+ "id": "openwop.it.v2-subworkflow-input-mapping.the-mapped-parent-value-lands-after-and-over-the-child-defaultvalue",
37635
+ "file": "v2-subworkflow-input-mapping.test.ts",
37636
+ "line": 63,
37637
+ "title": "the mapped parent value lands after and over the child defaultValue",
37638
+ "explicitId": null,
37639
+ "citations": []
37640
+ },
37641
+ {
37642
+ "id": "openwop.it.v2-subworkflow-input-mapping.an-unset-parent-variable-arrives-undefined-never-an-error-or-null",
37643
+ "file": "v2-subworkflow-input-mapping.test.ts",
37644
+ "line": 69,
37645
+ "title": "an unset parent variable arrives undefined, never an error or null",
37646
+ "explicitId": null,
37647
+ "citations": []
37648
+ },
37649
+ {
37650
+ "id": "openwop.it.v2-subworkflow-linkage.node-completed-for-the-core-subworkflow-node-carries-outputs-childrunid-and-outp",
37651
+ "file": "v2-subworkflow-linkage.test.ts",
37652
+ "line": 59,
37653
+ "title": "node.completed for the core.subWorkflow node carries outputs.childRunId and outputs.childStatus",
37654
+ "explicitId": null,
37655
+ "citations": []
37656
+ },
37657
+ {
37658
+ "id": "openwop.it.v2-subworkflow-linkage.outputmapping-copies-the-child-variable-into-the-parent-after-the-child-complete",
37659
+ "file": "v2-subworkflow-linkage.test.ts",
37660
+ "line": 65,
37661
+ "title": "outputMapping copies the child variable into the parent after the child completes",
37662
+ "explicitId": null,
37663
+ "citations": []
37664
+ },
37665
+ {
37666
+ "id": "openwop.it.v2-subworkflow-linkage.getrunancestry-names-the-parent-run-with-cause-core-subworkflow",
37667
+ "file": "v2-subworkflow-linkage.test.ts",
37668
+ "line": 71,
37669
+ "title": "getRunAncestry names the parent run with cause core.subWorkflow",
37670
+ "explicitId": null,
37671
+ "citations": []
37672
+ },
36506
37673
  {
36507
37674
  "id": "openwop.it.v2-table-schema-enforcement.a-well-typed-insert-completes-positive-control",
36508
37675
  "file": "v2-table-schema-enforcement.test.ts",
@@ -36865,6 +38032,76 @@
36865
38032
  }
36866
38033
  ]
36867
38034
  },
38035
+ {
38036
+ "id": "openwop.it.v2-ui-plugins-advertisement.the-uiplugins-record-validates-against-its-capabilities-schema-seat",
38037
+ "file": "v2-ui-plugins-advertisement.test.ts",
38038
+ "line": 41,
38039
+ "title": "the uiPlugins record validates against its capabilities-schema seat",
38040
+ "explicitId": "openwop.requirement.ui-plugins.advert-record-schema",
38041
+ "citations": [
38042
+ {
38043
+ "section": null,
38044
+ "requirement": null,
38045
+ "interpolated": true
38046
+ }
38047
+ ]
38048
+ },
38049
+ {
38050
+ "id": "openwop.it.v2-ui-plugins-advertisement.uiplugins-isolation-is-a-closed-mechanism-or-an-x-host-value",
38051
+ "file": "v2-ui-plugins-advertisement.test.ts",
38052
+ "line": 50,
38053
+ "title": "uiPlugins.isolation is a closed mechanism or an x-host value",
38054
+ "explicitId": "openwop.requirement.ui-plugins.isolation-model",
38055
+ "citations": [
38056
+ {
38057
+ "section": null,
38058
+ "requirement": null,
38059
+ "interpolated": true
38060
+ }
38061
+ ]
38062
+ },
38063
+ {
38064
+ "id": "openwop.it.v2-ui-plugins-advertisement.uiplugins-surfaces-are-unique-members-of-the-closed-surface-set",
38065
+ "file": "v2-ui-plugins-advertisement.test.ts",
38066
+ "line": 59,
38067
+ "title": "uiPlugins.surfaces are unique members of the closed surface set",
38068
+ "explicitId": "openwop.requirement.ui-plugins.surfaces-closed",
38069
+ "citations": [
38070
+ {
38071
+ "section": null,
38072
+ "requirement": null,
38073
+ "interpolated": true
38074
+ }
38075
+ ]
38076
+ },
38077
+ {
38078
+ "id": "openwop.it.v2-ui-plugins-advertisement.uiplugins-hostapi-are-unique-members-of-the-ui-plugin-1-method-set",
38079
+ "file": "v2-ui-plugins-advertisement.test.ts",
38080
+ "line": 68,
38081
+ "title": "uiPlugins.hostApi are unique members of the ui-plugin/1 method set",
38082
+ "explicitId": "openwop.requirement.ui-plugins.host-api-closed",
38083
+ "citations": [
38084
+ {
38085
+ "section": null,
38086
+ "requirement": null,
38087
+ "interpolated": true
38088
+ }
38089
+ ]
38090
+ },
38091
+ {
38092
+ "id": "openwop.it.v2-ui-plugins-advertisement.uiplugins-maxentrybytes-is-a-positive-integer",
38093
+ "file": "v2-ui-plugins-advertisement.test.ts",
38094
+ "line": 77,
38095
+ "title": "uiPlugins.maxEntryBytes is a positive integer",
38096
+ "explicitId": "openwop.requirement.ui-plugins.max-entry-bytes",
38097
+ "citations": [
38098
+ {
38099
+ "section": null,
38100
+ "requirement": null,
38101
+ "interpolated": true
38102
+ }
38103
+ ]
38104
+ },
36868
38105
  {
36869
38106
  "id": "openwop.it.v2-unadvertised-operation-not-found.get-prompts-answers-404-not-found-when-prompts-endpointssupported-is-not-adverti",
36870
38107
  "file": "v2-unadvertised-operation-not-found.test.ts",
@@ -45368,6 +46605,46 @@
45368
46605
  }
45369
46606
  ]
45370
46607
  },
46608
+ {
46609
+ "id": "openwop.it.v2-conversation-payload-mirrors.conversationopened-seats-every-field-conversationopenedpayload-carries",
46610
+ "file": "v2-conversation-payload-mirrors.test.ts",
46611
+ "line": 44,
46612
+ "title": "conversationOpened seats every field ConversationOpenedPayload carries",
46613
+ "explicitId": "openwop.requirement.conversation.payload-mirrors-agree",
46614
+ "citations": [
46615
+ {
46616
+ "section": "conversation.md",
46617
+ "requirement": null,
46618
+ "interpolated": true
46619
+ }
46620
+ ]
46621
+ },
46622
+ {
46623
+ "id": "openwop.it.v2-conversation-payload-mirrors.the-inlined-conversationturn-carries-every-field-of-conversation-turn-schema-jso",
46624
+ "file": "v2-conversation-payload-mirrors.test.ts",
46625
+ "line": 51,
46626
+ "title": "the inlined ConversationTurn carries every field of conversation-turn.schema.json",
46627
+ "explicitId": "openwop.requirement.conversation.payload-mirrors-agree",
46628
+ "citations": [
46629
+ {
46630
+ "section": "conversation.md",
46631
+ "requirement": "the ConversationTurn mirror MUST carry the same top-level fields as conversation-turn.schema.json"
46632
+ }
46633
+ ]
46634
+ },
46635
+ {
46636
+ "id": "openwop.it.v2-conversation-payload-mirrors.the-inlined-conversationturn-agent-carries-every-field-of-the-source-agent",
46637
+ "file": "v2-conversation-payload-mirrors.test.ts",
46638
+ "line": 56,
46639
+ "title": "the inlined ConversationTurn.agent carries every field of the source agent",
46640
+ "explicitId": "openwop.requirement.conversation.payload-mirrors-agree",
46641
+ "citations": [
46642
+ {
46643
+ "section": "conversation.md",
46644
+ "requirement": "ConversationTurn.agent MUST carry the same fields as conversation-turn.schema.json agent (incl. `model`)"
46645
+ }
46646
+ ]
46647
+ },
45371
46648
  {
45372
46649
  "id": "openwop.it.v2-corpus-tag-pinned.every-vendoring-consumer-in-the-cross-repo-inventory-records-a-published-corpus",
45373
46650
  "file": "v2-corpus-tag-pinned.test.ts",