@openwop/spec-artifacts 2.39.3 → 2.39.5

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/CORPUS-STAMP.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "_comment": "Provenance of @openwop/spec-artifacts (RFC 0168 §D.2). files: SHA-256 per file; the conformance suite compares the installed peer against dist/spec-artifacts.lock.json at start.",
3
3
  "package": "@openwop/spec-artifacts",
4
- "version": "2.39.3",
5
- "corpusTag": "v2.39.3",
4
+ "version": "2.39.5",
5
+ "corpusTag": "v2.39.5",
6
6
  "files": {
7
7
  "api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
8
8
  "api/asyncapi.yaml": "d5ecb9ee6114582be3b1f662c84bfac9ae96dae7bacb853e461168f70a8e1c7d",
9
9
  "api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
10
10
  "api/openapi.yaml": "6366b5514be71098e9ea41fc81ff52bc39db1a547b353c0b344cc2a2bf5370aa",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "e51c61c5d0fe876b5851e6583a08a61e0563d44985654299db98dbcc5d7ff6ce",
13
- "api/v2/asyncapi.yaml": "150a48f15f5c3b984aff61055304f30299a75f5b9561ff1b4c788c4a40b64325",
14
- "api/v2/openapi.yaml": "c3969b2fbfde19dfd9a42af4a67da8d34cf3135ad8314fe7211173a37d58ed96",
12
+ "api/seams-v2.yaml": "ed925b14e1e3e6f82ec0d0c844c035ae1a3b0dbcf10b3e53b96106327298f5cb",
13
+ "api/v2/asyncapi.yaml": "a3ba4c688bd4ee33400ef23718eac3d03bc333df2b3d74644adc6f0b2b3a5b2e",
14
+ "api/v2/openapi.yaml": "e4dd5dafff70be8c64de8344c3ae5dd5525515a069fef6f421a226813a305344",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
17
17
  "schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
@@ -204,13 +204,13 @@
204
204
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
205
205
  "spec/v1/alias-detectors.json": "2401fcb1c18cdd688c018b3d716ae6bca85c5e356220ee2b793bd9d81872412d",
206
206
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
207
- "spec/v1/core-standard-manifest.json": "796de9d8793ff2243fee9c5ffe3b9adc49b0f2e663147b965043de92594352e9",
207
+ "spec/v1/core-standard-manifest.json": "a2f4f866565b5da642b36384a235bf57a293366b7f9faeb0e7f62c3132337932",
208
208
  "spec/v1/deprecations.json": "2d03f4729810280147ea08c630ea65434f2dc5370567d0aac41c3595f8337d40",
209
209
  "spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
210
210
  "spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
211
211
  "spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
212
212
  "spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
213
- "spec/v1/gaps.json": "76b986a5d12be1c5dc9368bc79c6d8aa99a5e916b3cca3fc3eb6a84577f1f32a",
213
+ "spec/v1/gaps.json": "9424f94441ba5c4d1a8027e1f59be832f46af1a67ff0ca140adca9bb501ee993",
214
214
  "spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
215
215
  "spec/v1/migrations.json": "8839497d6a4830b53fa7867014a8336f0d725ef2346352e54fb580b7947897af",
216
216
  "spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
@@ -292,9 +292,9 @@
292
292
  "spec/v2/path-manifest.json": "ae9b56d03a701061fd48ad0b73cb0373493f6a4547da92763b422295b5e19535",
293
293
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
294
294
  "spec/v2/profiles.json": "0636f19fceae625390003a347e70ef4797d84766b5c24ce8a02cea52aadebca4",
295
- "spec/v2/release.json": "a8988f480ec268554cdc9cb0a6019172c89aa09cd588f81bfd6166ab5c65a260",
295
+ "spec/v2/release.json": "c3d35fbfae242c3fa3a504edb08fbdbc7ee9dd003250ea7225a0f6641dc614b9",
296
296
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
297
- "spec/v2/surface-baseline.json": "7a67a1a935db83145b1fffad3828e09c38f89170d360d2a793ae0634c3164c11"
297
+ "spec/v2/surface-baseline.json": "4273f2b75cfde4c620c995b5a4c334cfc15d936dfa7f5b6fa0aa4bf257e8b8b5"
298
298
  },
299
- "corpusCommit": "c62b05884b9b83f4016890582e8606e3bc74ad6a"
299
+ "corpusCommit": "718fae2de800b73f48a59237cfb843578b0433f1"
300
300
  }
package/api/seams-v2.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP conformance seams profile (openwop-conformance-seams-v2)
4
- version: 2.39.3
4
+ version: 2.39.5
5
5
  description: 'GENERATED by scripts/derive-v2-api.py. RFC 0168 §C: the seams are a versioned conformance profile with their
6
6
  own document and path space (/conformance/seams/…), validated against the canonical v2 schemas with no tolerance path,
7
7
  forbidden from the capability namespace (a host advertises the profile, never a testSeams flag). This document carries
@@ -747,6 +747,55 @@ paths:
747
747
  $ref: '#/components/responses/ValidationError'
748
748
  '401':
749
749
  $ref: '#/components/responses/Unauthenticated'
750
+ /conformance/seams/sample/test/idempotency/hold:
751
+ post:
752
+ tags:
753
+ - Seams
754
+ operationId: armIdempotencyHold
755
+ summary: Hold the caller's next same-key create in flight — RFC 0213 §B witness
756
+ description: 'Arms a single-use hold: the caller tenant''s next real `POST /runs` carrying `key` as its Idempotency-Key
757
+ keeps its Layer-1 claim in flight for `holdMs` after claiming, then completes normally. The seam MUST NOT answer a
758
+ create or emit a 409: the refusal a concurrent same-key create receives while the claim is held comes from the host''s
759
+ production in-flight branch (idempotency.md §Concurrency). Keyed by (tenant, key); single-use; an unarmed key is never
760
+ delayed.'
761
+ requestBody:
762
+ required: true
763
+ content:
764
+ application/json:
765
+ schema:
766
+ type: object
767
+ additionalProperties: false
768
+ required:
769
+ - key
770
+ - holdMs
771
+ properties:
772
+ key:
773
+ type: string
774
+ pattern: ^[A-Za-z0-9._~-]{22,128}$
775
+ holdMs:
776
+ type: integer
777
+ minimum: 1
778
+ maximum: 10000
779
+ responses:
780
+ '201':
781
+ description: The hold is armed.
782
+ content:
783
+ application/json:
784
+ schema:
785
+ type: object
786
+ additionalProperties: false
787
+ required:
788
+ - key
789
+ - holdMs
790
+ properties:
791
+ key:
792
+ type: string
793
+ holdMs:
794
+ type: integer
795
+ '400':
796
+ $ref: '#/components/responses/ValidationError'
797
+ '401':
798
+ $ref: '#/components/responses/Unauthenticated'
750
799
  /conformance/seams/sample/webhooks/receive:
751
800
  post:
752
801
  tags:
@@ -980,6 +1029,104 @@ paths:
980
1029
  $ref: '#/components/responses/Unauthenticated'
981
1030
  '404':
982
1031
  $ref: '#/components/responses/NotFound'
1032
+ /conformance/seams/sample/auth/credential/mint:
1033
+ post:
1034
+ tags:
1035
+ - Seams
1036
+ operationId: mintLaneCredential
1037
+ summary: Mint a fresh credential on an advertised lane for the caller's tenant — RFC 0170 §B.3 witness
1038
+ description: 'Issues a new credential on `lane` (an advertised `auth.lanes[].lane` whose `revocation` is `next-request`;
1039
+ absent ⇒ `api-key`) for the AUTHENTICATED caller''s tenant, through the host''s PRODUCTION issuance path, so the credential
1040
+ it returns authenticates on the canonical API exactly as an ordinary one does. The suite uses it only to hold a credential
1041
+ it can then revoke: the revocation, and the refusal on the next request (`401 credential_revoked`), are production
1042
+ behaviour the seam does not simulate. A host that has not wired the seam answers `404`, and the scenario records the
1043
+ requirement unobserved.'
1044
+ requestBody:
1045
+ required: true
1046
+ content:
1047
+ application/json:
1048
+ schema:
1049
+ type: object
1050
+ additionalProperties: false
1051
+ properties:
1052
+ lane:
1053
+ type: string
1054
+ minLength: 1
1055
+ description: An advertised `auth.lanes[].lane`; absent ⇒ `api-key`.
1056
+ responses:
1057
+ '201':
1058
+ description: The minted credential.
1059
+ content:
1060
+ application/json:
1061
+ schema:
1062
+ type: object
1063
+ additionalProperties: false
1064
+ required:
1065
+ - lane
1066
+ - credential
1067
+ properties:
1068
+ lane:
1069
+ type: string
1070
+ credential:
1071
+ type: string
1072
+ minLength: 1
1073
+ description: 'The bearer credential, presented as `Authorization: Bearer <credential>`.'
1074
+ subjectId:
1075
+ type: string
1076
+ description: The Subject the credential authenticates as, when the host names one.
1077
+ '400':
1078
+ $ref: '#/components/responses/ValidationError'
1079
+ '401':
1080
+ $ref: '#/components/responses/Unauthenticated'
1081
+ '404':
1082
+ $ref: '#/components/responses/NotFound'
1083
+ /conformance/seams/sample/auth/credential/revoke:
1084
+ post:
1085
+ tags:
1086
+ - Seams
1087
+ operationId: revokeLaneCredential
1088
+ summary: Revoke a credential the mint seam issued — RFC 0170 §B.3 witness
1089
+ description: Revokes `credential` through the host's PRODUCTION revocation path. On a `next-request` lane the very next
1090
+ request presenting it MUST be refused `401 credential_revoked` (identity.md §2.2); the suite observes that on the
1091
+ canonical API, not through this seam. `404` when no active credential matches.
1092
+ requestBody:
1093
+ required: true
1094
+ content:
1095
+ application/json:
1096
+ schema:
1097
+ type: object
1098
+ additionalProperties: false
1099
+ required:
1100
+ - credential
1101
+ properties:
1102
+ lane:
1103
+ type: string
1104
+ minLength: 1
1105
+ credential:
1106
+ type: string
1107
+ minLength: 1
1108
+ responses:
1109
+ '200':
1110
+ description: The credential is revoked.
1111
+ content:
1112
+ application/json:
1113
+ schema:
1114
+ type: object
1115
+ additionalProperties: false
1116
+ required:
1117
+ - revoked
1118
+ properties:
1119
+ revoked:
1120
+ type: boolean
1121
+ const: true
1122
+ lane:
1123
+ type: string
1124
+ '400':
1125
+ $ref: '#/components/responses/ValidationError'
1126
+ '401':
1127
+ $ref: '#/components/responses/Unauthenticated'
1128
+ '404':
1129
+ $ref: '#/components/responses/NotFound'
983
1130
  components:
984
1131
  securitySchemes:
985
1132
  ApiKeyAuth:
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.39.3
4
+ version: 2.39.5
5
5
  description: GENERATED by scripts/derive-v2-api.py (RFC 0171 §E.1, RFC 0172 §C.2). One run-events channel whose address
6
6
  is the OpenAPI path key; the server pathname is empty (bare origin). streamMode is a pattern over the closed set and its
7
7
  comma-separated combinations (`values` never combines). hostEvents has a real address (RFC 0171 §E.1) — the documented
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 API
4
- version: 2.39.3
4
+ version: 2.39.5
5
5
  summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
6
6
  description: GENERATED by scripts/derive-v2-api.py from api/openapi.yaml and the RFC 0167 children (v2 charter Phase 3,
7
7
  P3-C). Bare origin, unversioned path keys, negotiation by `OpenWOP-Version` + `protocolVersions[]` (RFC 0172 §A). No seam
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.39.3",
3
+ "version": "2.39.5",
4
4
  "description": "The OpenWOP machine-readable contract: api/ (OpenAPI, AsyncAPI, the seams profile), schemas/ (v1 and v2 JSON Schemas), the spec/v1 and spec/v2 registries (errors, event codemap, declaration, deprecations, migrations, gaps) and CORPUS-STAMP.json — published from the openwop/openwop corpus tag; the peer dependency @openwop/openwop-conformance digest-checks at start (RFC 0168 §D.2).",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -4,7 +4,7 @@
4
4
  "provenance": {
5
5
  "suite": {
6
6
  "package": "@openwop/openwop-conformance",
7
- "version": "2.39.3"
7
+ "version": "2.39.5"
8
8
  },
9
9
  "note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
10
10
  },
@@ -420,5 +420,5 @@
420
420
  "$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
421
421
  }
422
422
  ],
423
- "digest": "bdb0ff4748706400587222d7dfa578ccd8334ea0f0b23fe3ab2e356180ca4cc7"
423
+ "digest": "239df141b52c9785cad5ec46ef856acdff1d66dd9f55dcf273e18feaa487747b"
424
424
  }
package/spec/v1/gaps.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "./gaps.schema.json",
3
3
  "version": 1,
4
- "updated": "2026-09-24",
4
+ "updated": "2026-09-26",
5
5
  "witnessClasses": [
6
6
  "witnessable-unaided",
7
7
  "witnessable-gated",
@@ -12668,8 +12668,8 @@
12668
12668
  "surface": "No `SECURITY/threat-model-*.md` covers availability or noisy-neighbour abuse. `webhook-delivery-isolation` has no threat model to cite, and `secret-leakage` does not fit a delay.",
12669
12669
  "witness": "unclassified",
12670
12670
  "requirementId": null,
12671
- "disposition": "transferred",
12672
- "target": "SECURITY/invariants.yaml",
12671
+ "disposition": "closed",
12672
+ "target": null,
12673
12673
  "sources": [
12674
12674
  {
12675
12675
  "file": "RFCS/registers/0215-webhook-delivery-isolation.gaps.md",
@@ -12719,8 +12719,8 @@
12719
12719
  "surface": "The floor of 8 is chosen to exceed the one measured claim batch (openwop-app, 5), not derived from prior art. Hosted webhook services' published delivery designs were not surveyed.",
12720
12720
  "witness": "unclassified",
12721
12721
  "requirementId": null,
12722
- "disposition": "transferred",
12723
- "target": "rfc-0215",
12722
+ "disposition": "closed",
12723
+ "target": null,
12724
12724
  "sources": [
12725
12725
  {
12726
12726
  "file": "RFCS/registers/0215-webhook-delivery-isolation.gaps.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$comment": "RFC 0172 §D.1 — the one release identity the v2 artifacts derive from. `version` is the next corpus tag `v<version>` (the publish workflow's coordinated-release tag pattern `v*`; RFC 0172's `openwop/v2.<minor>.<patch>` spelling is amended to this at its flip). api/v2/*.yaml info.version, the suite's 2.x version and @openwop/spec-artifacts read it. Bumped by the release PR that cuts the tag, never by hand elsewhere.",
3
- "version": "2.39.3",
4
- "corpusTag": "v2.39.3",
5
- "updated": "2026-09-25"
3
+ "version": "2.39.5",
4
+ "corpusTag": "v2.39.5",
5
+ "updated": "2026-09-26"
6
6
  }
@@ -4,7 +4,7 @@
4
4
  "schemas/v2/**/*.json",
5
5
  "spec/v2/path-manifest.json"
6
6
  ],
7
- "release": "2.39.3",
7
+ "release": "2.39.5",
8
8
  "kinds": {
9
9
  "union": [
10
10
  "channel",