@openwop/spec-artifacts 2.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/CORPUS-STAMP.json +234 -0
  2. package/LICENSE +201 -0
  3. package/README.md +7 -0
  4. package/api/.redocly.lint-ignore.yaml +22 -0
  5. package/api/asyncapi.yaml +834 -0
  6. package/api/grpc/openwop.proto +251 -0
  7. package/api/openapi.yaml +2693 -0
  8. package/api/redocly.yaml +23 -0
  9. package/api/seams-v2.yaml +680 -0
  10. package/api/v2/asyncapi.yaml +528 -0
  11. package/api/v2/openapi.yaml +3139 -0
  12. package/api/v2/redocly.yaml +16 -0
  13. package/package.json +10 -0
  14. package/schemas/README.md +144 -0
  15. package/schemas/a2a-task-state.schema.json +78 -0
  16. package/schemas/a2ui-surface-delta-frame.schema.json +48 -0
  17. package/schemas/agent-deployment-transition.schema.json +49 -0
  18. package/schemas/agent-deployment.schema.json +54 -0
  19. package/schemas/agent-eval-suite.schema.json +140 -0
  20. package/schemas/agent-inventory-response.schema.json +115 -0
  21. package/schemas/agent-manifest.schema.json +156 -0
  22. package/schemas/agent-org-chart.schema.json +82 -0
  23. package/schemas/agent-ref.schema.json +63 -0
  24. package/schemas/agent-roster-entry.schema.json +81 -0
  25. package/schemas/agent-roster-response.schema.json +21 -0
  26. package/schemas/ai-envelope.schema.json +134 -0
  27. package/schemas/annotation-create.schema.json +37 -0
  28. package/schemas/annotation.schema.json +56 -0
  29. package/schemas/artifact-type-pack-manifest.schema.json +244 -0
  30. package/schemas/audit-verify-result.schema.json +90 -0
  31. package/schemas/budget-policy.schema.json +18 -0
  32. package/schemas/capabilities.schema.json +4160 -0
  33. package/schemas/certification-bundle-v2.schema.json +118 -0
  34. package/schemas/channel-presence-payload.schema.json +41 -0
  35. package/schemas/channel-written-payload.schema.json +55 -0
  36. package/schemas/chat-card-pack-manifest.schema.json +253 -0
  37. package/schemas/compact-tool-descriptor.schema.json +51 -0
  38. package/schemas/compensation-policy.schema.json +64 -0
  39. package/schemas/conformance-certification-bundle.schema.json +86 -0
  40. package/schemas/connection-pack-manifest.schema.json +353 -0
  41. package/schemas/conversation-event.schema.json +168 -0
  42. package/schemas/conversation-turn.schema.json +117 -0
  43. package/schemas/core-conformance-mock-agent-config.schema.json +152 -0
  44. package/schemas/credential-provenance.schema.json +18 -0
  45. package/schemas/credential-reference.schema.json +21 -0
  46. package/schemas/debug-bundle.schema.json +196 -0
  47. package/schemas/dispatch-config.schema.json +112 -0
  48. package/schemas/envelopes/clarification.request.schema.json +52 -0
  49. package/schemas/envelopes/error.schema.json +30 -0
  50. package/schemas/envelopes/media.audio.schema.json +38 -0
  51. package/schemas/envelopes/media.file.schema.json +37 -0
  52. package/schemas/envelopes/media.image.schema.json +33 -0
  53. package/schemas/envelopes/schema.request.schema.json +26 -0
  54. package/schemas/envelopes/schema.response.schema.json +22 -0
  55. package/schemas/envelopes/ui.a2ui-surface.schema.json +154 -0
  56. package/schemas/error-envelope.schema.json +25 -0
  57. package/schemas/eval-summary.schema.json +92 -0
  58. package/schemas/export-bundle.schema.json +66 -0
  59. package/schemas/form-content-pack-manifest.schema.json +243 -0
  60. package/schemas/frontend-plugin-manifest.schema.json +109 -0
  61. package/schemas/goal.schema.json +104 -0
  62. package/schemas/heartbeat-evaluated.schema.json +14 -0
  63. package/schemas/heartbeat-state-changed.schema.json +14 -0
  64. package/schemas/localized-content-language-settings.schema.json +26 -0
  65. package/schemas/localized-content-page-response.schema.json +60 -0
  66. package/schemas/localized-content-page.schema.json +62 -0
  67. package/schemas/localized-content-section.schema.json +51 -0
  68. package/schemas/memory-entry.schema.json +36 -0
  69. package/schemas/memory-list-options.schema.json +37 -0
  70. package/schemas/node-pack-manifest.schema.json +654 -0
  71. package/schemas/orchestrator-decision.schema.json +90 -0
  72. package/schemas/org-chart-responsibility-view.schema.json +26 -0
  73. package/schemas/pack-lockfile.schema.json +108 -0
  74. package/schemas/prompt-kind.schema.json +8 -0
  75. package/schemas/prompt-pack-manifest.schema.json +117 -0
  76. package/schemas/prompt-ref.schema.json +40 -0
  77. package/schemas/prompt-template.schema.json +149 -0
  78. package/schemas/proposal.schema.json +84 -0
  79. package/schemas/registry-version-manifest.schema.json +208 -0
  80. package/schemas/residency.schema.json +16 -0
  81. package/schemas/run-ancestry-response.schema.json +54 -0
  82. package/schemas/run-diff-response.schema.json +64 -0
  83. package/schemas/run-event-payloads.schema.json +4452 -0
  84. package/schemas/run-event.schema.json +211 -0
  85. package/schemas/run-options.schema.json +80 -0
  86. package/schemas/run-orchestrator-decided-event.schema.json +20 -0
  87. package/schemas/run-snapshot.schema.json +148 -0
  88. package/schemas/security-advisory.schema.json +109 -0
  89. package/schemas/self-hosted-runner-dispatch-frame.schema.json +79 -0
  90. package/schemas/self-hosted-runner-registration.schema.json +53 -0
  91. package/schemas/self-hosted-runner-result-frame.schema.json +38 -0
  92. package/schemas/subject.schema.json +56 -0
  93. package/schemas/suspend-request.schema.json +207 -0
  94. package/schemas/tool-descriptor.schema.json +63 -0
  95. package/schemas/trigger-event.schema.json +222 -0
  96. package/schemas/trigger-subscription-registration.schema.json +67 -0
  97. package/schemas/trigger-subscription.schema.json +26 -0
  98. package/schemas/ui-plugin-message.schema.json +90 -0
  99. package/schemas/v2/a2a-task-state.schema.json +102 -0
  100. package/schemas/v2/a2ui-surface-delta-frame.schema.json +62 -0
  101. package/schemas/v2/agent-deployment-transition.schema.json +67 -0
  102. package/schemas/v2/agent-deployment.schema.json +68 -0
  103. package/schemas/v2/agent-eval-suite.schema.json +214 -0
  104. package/schemas/v2/agent-inventory-response.schema.json +172 -0
  105. package/schemas/v2/agent-manifest.schema.json +218 -0
  106. package/schemas/v2/agent-org-chart.schema.json +149 -0
  107. package/schemas/v2/agent-ref.schema.json +67 -0
  108. package/schemas/v2/agent-roster-entry.schema.json +104 -0
  109. package/schemas/v2/agent-roster-response.schema.json +27 -0
  110. package/schemas/v2/ai-envelope.schema.json +167 -0
  111. package/schemas/v2/annotation-create.schema.json +109 -0
  112. package/schemas/v2/annotation.schema.json +142 -0
  113. package/schemas/v2/artifact-type-pack-manifest.schema.json +245 -0
  114. package/schemas/v2/audit-verify-result.schema.json +110 -0
  115. package/schemas/v2/budget-policy.schema.json +61 -0
  116. package/schemas/v2/capabilities.schema.json +7644 -0
  117. package/schemas/v2/certification-bundle.schema.json +401 -0
  118. package/schemas/v2/channel-presence-payload.schema.json +60 -0
  119. package/schemas/v2/channel-written-payload.schema.json +64 -0
  120. package/schemas/v2/chat-card-pack-manifest.schema.json +254 -0
  121. package/schemas/v2/compact-tool-descriptor.schema.json +108 -0
  122. package/schemas/v2/compensation-policy.schema.json +91 -0
  123. package/schemas/v2/compensation-projection.schema.json +95 -0
  124. package/schemas/v2/configurable.schema.json +110 -0
  125. package/schemas/v2/connection-pack-manifest.schema.json +354 -0
  126. package/schemas/v2/conversation-event.schema.json +281 -0
  127. package/schemas/v2/conversation-turn.schema.json +165 -0
  128. package/schemas/v2/credential-provenance.schema.json +62 -0
  129. package/schemas/v2/credential-reference.schema.json +28 -0
  130. package/schemas/v2/debug-bundle.schema.json +312 -0
  131. package/schemas/v2/dispatch-config.schema.json +147 -0
  132. package/schemas/v2/effect-ledger-projection.schema.json +71 -0
  133. package/schemas/v2/effect-seam-manifest.schema.json +98 -0
  134. package/schemas/v2/envelopes/clarification.request.schema.json +59 -0
  135. package/schemas/v2/envelopes/error.schema.json +35 -0
  136. package/schemas/v2/envelopes/media.audio.schema.json +41 -0
  137. package/schemas/v2/envelopes/media.file.schema.json +40 -0
  138. package/schemas/v2/envelopes/media.image.schema.json +36 -0
  139. package/schemas/v2/envelopes/schema.request.schema.json +29 -0
  140. package/schemas/v2/envelopes/schema.response.schema.json +26 -0
  141. package/schemas/v2/envelopes/ui.a2ui-surface.schema.json +292 -0
  142. package/schemas/v2/error-envelope.schema.json +229 -0
  143. package/schemas/v2/eval-summary.schema.json +166 -0
  144. package/schemas/v2/export-bundle.schema.json +94 -0
  145. package/schemas/v2/form-content-pack-manifest.schema.json +241 -0
  146. package/schemas/v2/frontend-plugin-manifest.schema.json +152 -0
  147. package/schemas/v2/goal.schema.json +188 -0
  148. package/schemas/v2/heartbeat-evaluated.schema.json +34 -0
  149. package/schemas/v2/heartbeat-state-changed.schema.json +31 -0
  150. package/schemas/v2/ids.schema.json +31 -0
  151. package/schemas/v2/localized-content-language-settings.schema.json +34 -0
  152. package/schemas/v2/localized-content-page-response.schema.json +94 -0
  153. package/schemas/v2/localized-content-page.schema.json +87 -0
  154. package/schemas/v2/localized-content-section.schema.json +63 -0
  155. package/schemas/v2/memory-entry.schema.json +45 -0
  156. package/schemas/v2/memory-list-options.schema.json +41 -0
  157. package/schemas/v2/node-pack-manifest.schema.json +657 -0
  158. package/schemas/v2/orchestrator-decision.schema.json +120 -0
  159. package/schemas/v2/org-chart-responsibility-view.schema.json +36 -0
  160. package/schemas/v2/pack-lockfile.schema.json +139 -0
  161. package/schemas/v2/prompt-kind.schema.json +14 -0
  162. package/schemas/v2/prompt-pack-manifest.schema.json +118 -0
  163. package/schemas/v2/prompt-ref.schema.json +42 -0
  164. package/schemas/v2/prompt-template.schema.json +209 -0
  165. package/schemas/v2/proposal.schema.json +145 -0
  166. package/schemas/v2/registry-version-manifest.schema.json +292 -0
  167. package/schemas/v2/residency.schema.json +19 -0
  168. package/schemas/v2/run-ancestry-response.schema.json +68 -0
  169. package/schemas/v2/run-diff-response.schema.json +80 -0
  170. package/schemas/v2/run-event-payloads.schema.json +4588 -0
  171. package/schemas/v2/run-event.schema.json +324 -0
  172. package/schemas/v2/run-options.schema.json +90 -0
  173. package/schemas/v2/run-orchestrator-decided-event.schema.json +22 -0
  174. package/schemas/v2/run-snapshot.schema.json +207 -0
  175. package/schemas/v2/security-advisory.schema.json +138 -0
  176. package/schemas/v2/self-hosted-runner-dispatch-frame.schema.json +119 -0
  177. package/schemas/v2/self-hosted-runner-registration.schema.json +74 -0
  178. package/schemas/v2/self-hosted-runner-result-frame.schema.json +47 -0
  179. package/schemas/v2/subject-link.schema.json +69 -0
  180. package/schemas/v2/subject.schema.json +597 -0
  181. package/schemas/v2/suspend-request.schema.json +370 -0
  182. package/schemas/v2/tool-descriptor.schema.json +150 -0
  183. package/schemas/v2/trigger-event.schema.json +508 -0
  184. package/schemas/v2/trigger-subscription-registration.schema.json +99 -0
  185. package/schemas/v2/trigger-subscription.schema.json +79 -0
  186. package/schemas/v2/ui-plugin-message.schema.json +149 -0
  187. package/schemas/v2/workflow-chain-pack-manifest.schema.json +610 -0
  188. package/schemas/v2/workflow-definition.schema.json +864 -0
  189. package/schemas/v2/workload-identity.schema.json +115 -0
  190. package/schemas/v2/workspace-file-create.schema.json +23 -0
  191. package/schemas/v2/workspace-file.schema.json +45 -0
  192. package/schemas/workflow-chain-pack-manifest.schema.json +615 -0
  193. package/schemas/workflow-definition.schema.json +850 -0
  194. package/schemas/workload-identity.schema.json +79 -0
  195. package/schemas/workspace-file-create.schema.json +20 -0
  196. package/schemas/workspace-file.schema.json +39 -0
  197. package/spec/v1/alias-detectors.json +283 -0
  198. package/spec/v1/capability-declaration-classes.json +176 -0
  199. package/spec/v1/core-standard-manifest.json +423 -0
  200. package/spec/v1/deprecations.json +854 -0
  201. package/spec/v1/deprecations.schema.json +187 -0
  202. package/spec/v1/event-codemap.json +1089 -0
  203. package/spec/v1/event-codemap.schema.json +41 -0
  204. package/spec/v1/extensions.json +1273 -0
  205. package/spec/v1/gaps.json +14581 -0
  206. package/spec/v1/gaps.schema.json +55 -0
  207. package/spec/v1/migrations.json +1822 -0
  208. package/spec/v1/migrations.schema.json +44 -0
  209. package/spec/v1/operation-path-manifest.json +462 -0
  210. package/spec/v1/spec-gaps.json +4823 -0
  211. package/spec/v2/declaration.json +1862 -0
  212. package/spec/v2/declaration.schema.json +305 -0
  213. package/spec/v2/errors.json +837 -0
  214. package/spec/v2/event-codemap.json +1099 -0
  215. package/spec/v2/event-codemap.schema.json +114 -0
  216. package/spec/v2/ext/provider-idempotency/registry.json +6 -0
  217. package/spec/v2/facets/a2a.schema.json +51 -0
  218. package/spec/v2/facets/aiProviders.schema.json +56 -0
  219. package/spec/v2/facets/auth.schema.json +91 -0
  220. package/spec/v2/facets/heartbeat.schema.json +20 -0
  221. package/spec/v2/facets/interrupt.schema.json +29 -0
  222. package/spec/v2/facets/mcp.schema.json +81 -0
  223. package/spec/v2/facets/replay.schema.json +34 -0
  224. package/spec/v2/facets/sandbox.schema.json +31 -0
  225. package/spec/v2/facets/webhooks.schema.json +18 -0
  226. package/spec/v2/path-manifest.json +279 -0
  227. package/spec/v2/peer-dependency-aliases.json +165 -0
  228. package/spec/v2/profiles.json +45 -0
  229. package/spec/v2/release.json +6 -0
@@ -0,0 +1,854 @@
1
+ {
2
+ "$schema": "./deprecations.schema.json",
3
+ "version": 1,
4
+ "updated": "2026-09-03",
5
+ "entries": [
6
+ {
7
+ "id": "openwop.deprecation.capabilities-wrapper",
8
+ "status": "deprecated",
9
+ "surface": "top-level `capabilities` wrapper object in /.well-known/openwop",
10
+ "kind": "discovery-shape",
11
+ "deprecatedIn": "RFC 0073 (v1.1)",
12
+ "authority": "RFC 0073 §Proposal; spec/v1/capabilities.md §Discovery document root (\"deprecated legacy shape, tolerated only by the schema's additionalProperties: true\")",
13
+ "removeIn": "2.0",
14
+ "replacement": "capability families at the document root",
15
+ "codemod": null,
16
+ "sources": [
17
+ {
18
+ "file": "spec/v1/capabilities.md",
19
+ "token": "A top-level `capabilities` wrapper object is a **deprecated legacy shape**"
20
+ },
21
+ {
22
+ "file": "RFCS/0073-capability-document-root-layout.md",
23
+ "token": "deprecated mirror"
24
+ }
25
+ ],
26
+ "removalTrigger": "v1-end-of-support",
27
+ "note": " RFC 0176 §C.2: absent from the v2 representation at the cut; removed from the v1 representation at v1 end-of-support."
28
+ },
29
+ {
30
+ "id": "openwop.deprecation.host-dotted-mirror",
31
+ "status": "deprecated",
32
+ "surface": "host-side `host.<family>` dotted mirror of root capability families",
33
+ "kind": "discovery-shape",
34
+ "deprecatedIn": "RFC 0073 (v1.1)",
35
+ "authority": "RFC 0073 §3 \"Reference host — canonical root + deprecated mirror\"; retirement gated on the v2 major (RFC 0073 UQ1/UQ2)",
36
+ "removeIn": "2.0",
37
+ "replacement": "one declaration file: document-root key ≡ pack peer-dependency identifier ≡ spec section anchor (v2 program C.2)",
38
+ "codemod": null,
39
+ "sources": [
40
+ {
41
+ "file": "RFCS/0073-capability-document-root-layout.md",
42
+ "token": "canonical root + deprecated mirror"
43
+ }
44
+ ],
45
+ "removalTrigger": "v1-end-of-support",
46
+ "note": " RFC 0176 §C.2: absent from the v2 representation at the cut; removed from the v1 representation at v1 end-of-support."
47
+ },
48
+ {
49
+ "id": "openwop.deprecation.profile-openwop-core-alias",
50
+ "status": "deprecated",
51
+ "surface": "profile id `openwop-core` (alias of `openwop-discovery-core`)",
52
+ "kind": "profile-id",
53
+ "deprecatedIn": "RFC 0155 §A (v1.2, 2026-08-16)",
54
+ "authority": "spec/v1/profiles.md §`openwop-discovery-core` (canonical) — alias `openwop-core` (deprecated); RFC 0155 §A: removal \"no earlier than v2\"",
55
+ "removeIn": "2.0",
56
+ "replacement": "openwop-discovery-core",
57
+ "codemod": null,
58
+ "sources": [
59
+ {
60
+ "file": "spec/v1/profiles.md",
61
+ "token": "alias `openwop-core` (deprecated)"
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ "id": "openwop.deprecation.channel-prefix-conventions",
67
+ "status": "deprecated",
68
+ "surface": "state-key prefix conventions as a back-compat layer over typed channels",
69
+ "kind": "prose-convention",
70
+ "deprecatedIn": "spec/v1/channels-and-reducers.md (v1.0; no RFC cited — the spec text says the conventions are \"a back-compat layer that the spec deprecates over time\")",
71
+ "authority": "spec/v1/channels-and-reducers.md §Why this exists",
72
+ "removeIn": "2.0",
73
+ "replacement": "typed channels with explicit reducers",
74
+ "codemod": null,
75
+ "note": "The only entry whose authority is spec prose without an RFC and without a date. The v2 C.4 child RFC states the removal normatively.",
76
+ "sources": [
77
+ {
78
+ "file": "spec/v1/channels-and-reducers.md",
79
+ "token": "the prefix conventions become a back-compat layer that the spec deprecates over time"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "id": "openwop.deprecation.a2a-bare-supported",
85
+ "status": "deprecated",
86
+ "surface": "capabilities.a2a `supported: true` without `protocolVersions[]`",
87
+ "kind": "discovery-field",
88
+ "deprecatedIn": "RFC 0152 §A",
89
+ "authority": "spec/v1/a2a-integration.md §Discovery: \"`supported: true` without `protocolVersions` is deprecated\"",
90
+ "removeIn": "2.0",
91
+ "replacement": "non-empty `protocolVersions[]` + `preferredVersion` (v2: a capability facet under the closed root, v2 program C.2)",
92
+ "codemod": null,
93
+ "sources": [
94
+ {
95
+ "file": "spec/v1/a2a-integration.md",
96
+ "token": "`supported: true` without `protocolVersions` is deprecate"
97
+ }
98
+ ]
99
+ },
100
+ {
101
+ "id": "openwop.deprecation.mcp-bare-supported",
102
+ "status": "deprecated",
103
+ "surface": "capabilities.mcp `supported: true` without `protocolVersions[]`",
104
+ "kind": "discovery-field",
105
+ "deprecatedIn": "RFC 0153 §A",
106
+ "authority": "spec/v1/mcp-integration.md §Discovery: \"Unqualified `supported: true` is deprecated and cannot substantiate a current-MCP claim\"",
107
+ "removeIn": "2.0",
108
+ "replacement": "non-empty `protocolVersions[]` (MCP date form) + `preferredVersion`",
109
+ "codemod": null,
110
+ "sources": [
111
+ {
112
+ "file": "spec/v1/mcp-integration.md",
113
+ "token": "Unqualified `supported: true` is deprecated"
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "id": "openwop.deprecation.config-output-artifact-type",
119
+ "status": "deprecated",
120
+ "surface": "workflow node `config.outputArtifactType` bag entry",
121
+ "kind": "schema-field",
122
+ "deprecatedIn": "schemas/workflow-definition.schema.json (first-class `artifactType` field)",
123
+ "authority": "schemas/workflow-definition.schema.json — `artifactType` description: \"replaces the deprecated config.outputArtifactType bag entry\"",
124
+ "removeIn": "2.0",
125
+ "replacement": "node.artifactType",
126
+ "codemod": null,
127
+ "sources": [
128
+ {
129
+ "file": "schemas/workflow-definition.schema.json",
130
+ "token": "replaces the deprecated config.outputArtifactType bag"
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ "id": "openwop.deprecation.config-chat-card",
136
+ "status": "deprecated",
137
+ "surface": "workflow node `config.chatCard` bag entry",
138
+ "kind": "schema-field",
139
+ "deprecatedIn": "schemas/workflow-definition.schema.json (first-class `chatCard` field)",
140
+ "authority": "schemas/workflow-definition.schema.json — `chatCard` description: \"replaces the deprecated config.chatCard bag entry\"",
141
+ "removeIn": "2.0",
142
+ "replacement": "node.chatCard",
143
+ "codemod": null,
144
+ "sources": [
145
+ {
146
+ "file": "schemas/workflow-definition.schema.json",
147
+ "token": "replaces the deprecated config.chatCard bag entry"
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "id": "openwop.deprecation.auth-subject-linking-flag",
153
+ "status": "deprecated",
154
+ "surface": "capabilities.auth.subjectLinking",
155
+ "kind": "discovery-field",
156
+ "deprecatedIn": "RFC 0164 (suite 1.151.0, 2026-09-02)",
157
+ "authority": "RFC 0164 §A.3: the flag is DERIVED (MUST be true whenever both `openwop-auth-saml` and `openwop-auth-scim` are advertised) and deprecated toward v2; the profile pair carries the obligation",
158
+ "removeIn": "2.0",
159
+ "replacement": "the profile pair itself; v2 Subject record with `keyClass` (v2 program C.3)",
160
+ "codemod": null,
161
+ "sources": [
162
+ {
163
+ "file": "schemas/capabilities.schema.json",
164
+ "token": "RFC 0164: DERIVED and DEPRECATED"
165
+ },
166
+ {
167
+ "file": "RFCS/0164-mandatory-subject-linking.md",
168
+ "token": "deprecated toward v2"
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ "id": "openwop.deprecation.certification-bundle-v1",
174
+ "status": "deprecated",
175
+ "surface": "certification bundle format v1 (schemas/conformance-certification-bundle.schema.json, `bundleVersion: \"1\"`)",
176
+ "kind": "artifact",
177
+ "deprecatedIn": "RFC 0148 (suite 1.114.0, 2026-08-12); `--certify` default flipped to v2 at suite 1.152.0",
178
+ "authority": "COMPATIBILITY.md §2 \"Measurement vs. claim\": v1 remains parseable but ceases to substantiate a new certification after the 90-day window that began 2026-08-12 (ends 2026-11-10)",
179
+ "removeIn": "2.0",
180
+ "replacement": "certification bundle v2 (schemas/certification-bundle-v2.schema.json); bundle v3 at v2.0 (v2 program C.1)",
181
+ "codemod": null,
182
+ "sources": [
183
+ {
184
+ "file": "schemas/conformance-certification-bundle.schema.json",
185
+ "token": "DEPRECATED (RFC 0148"
186
+ },
187
+ {
188
+ "file": "COMPATIBILITY.md",
189
+ "token": "ceases to substantiate a new certification after the 90-day migration window"
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ "id": "openwop.deprecation.capabilities-etag-header",
195
+ "status": "deprecated",
196
+ "surface": "`Capabilities-Etag` response header on GET /.well-known/openwop",
197
+ "kind": "header",
198
+ "deprecatedIn": "RFC 0165 §C.2 (suite 1.155.0, 2026-09-02)",
199
+ "authority": "RFC 0165 §C.2: hosts SHOULD send a standard ETag on /.well-known/openwop and honor If-None-Match; Capabilities-Etag keeps its semantics through v1.x and is removed at 2.0",
200
+ "removeIn": "2.0",
201
+ "replacement": "standard `ETag` / `If-None-Match` on the discovery document (dual-emitted through v1.x)",
202
+ "codemod": null,
203
+ "sources": [
204
+ {
205
+ "file": "spec/v1/capabilities-change-detection.md",
206
+ "token": "deprecated toward v2 (`spec/v1/deprecations.json`, `openwop.deprecation.capabilities-etag-header`)"
207
+ },
208
+ {
209
+ "file": "RFCS/0165-v2-preparation-wire-shapes.md",
210
+ "token": "§C.2 Discovery cache validator"
211
+ }
212
+ ],
213
+ "removalTrigger": "v1-end-of-support",
214
+ "note": " RFC 0176 §C.2: absent from the v2 representation at the cut; removed from the v1 representation at v1 end-of-support."
215
+ },
216
+ {
217
+ "id": "openwop.deprecation.contract-provenance",
218
+ "status": "proposed",
219
+ "surface": "capabilities `contractProvenance` root block ({ suiteVersion, corpusCommit })",
220
+ "kind": "discovery-field",
221
+ "deprecatedIn": null,
222
+ "authority": "v2 charter program C.2 (proposal only; RFC 0146 added the block and no RFC has deprecated it)",
223
+ "removeIn": "2.0",
224
+ "replacement": "`protocolVersions[]` for contract level; `host.build.{kind,id}` in certification bundle v3 for build identity",
225
+ "codemod": null,
226
+ "note": "Proposed because the block is an advisory self-declaration the wire cannot falsify (its own description says it is NOT an integrity check).",
227
+ "sources": [
228
+ {
229
+ "file": "spec/v1/capabilities.md",
230
+ "token": "contractProvenance"
231
+ }
232
+ ]
233
+ },
234
+ {
235
+ "id": "openwop.deprecation.webhook-x-header-family",
236
+ "status": "deprecated",
237
+ "surface": "the `X-openwop-*` webhook delivery header family (Webhook-Id, Event-Type, Timestamp, Signature, Signature-Algorithm)",
238
+ "kind": "header",
239
+ "deprecatedIn": "RFC 0165 §C.1 (suite 1.155.0, 2026-09-02)",
240
+ "authority": "RFC 0165 §C.1: hosts SHOULD dual-emit the `OpenWOP-*` family with identical values; subscribers SHOULD accept either; the `X-openwop-*` family MUST still be sent through v1.x and is removed at 2.0",
241
+ "removeIn": "2.0",
242
+ "replacement": "`OpenWOP-Webhook-Id`, `OpenWOP-Event-Type`, `OpenWOP-Timestamp`, `OpenWOP-Signature: sha256={hex}`, `OpenWOP-Signature-Algorithm`",
243
+ "codemod": null,
244
+ "note": "The un-prefixed `{hex}` signature value was corrected in place (INTEROP-MATRIX 2026-08-24), not deprecated. The SDKs' `openwop-Webhook-Signature: v1=` header appears in no spec file and is an SDK-versus-spec defect fixed in openwop-sdks alongside RFC 0165 (helpers verify OpenWOP-Signature, then X-openwop-Signature, then the legacy name).",
245
+ "sources": [
246
+ {
247
+ "file": "spec/v1/webhooks.md",
248
+ "token": "`openwop.deprecation.webhook-x-header-family`"
249
+ },
250
+ {
251
+ "file": "RFCS/0165-v2-preparation-wire-shapes.md",
252
+ "token": "§C.1 Webhook headers"
253
+ }
254
+ ]
255
+ },
256
+ {
257
+ "id": "openwop.deprecation.interrupt-token-409-410-overlap",
258
+ "status": "proposed",
259
+ "surface": "`409 interrupt_already_resolved` (interrupt.md) and `410 interrupt_gone` (interrupt-profiles.md) for an invalidated interrupt token",
260
+ "kind": "error-code",
261
+ "deprecatedIn": null,
262
+ "authority": "v2 charter program C.4 (error registry): one code per condition",
263
+ "removeIn": "2.0",
264
+ "replacement": "one registered code for \"token invalidated\", chosen by the C.4 child RFC",
265
+ "codemod": null,
266
+ "note": "Not a deprecation today: both codes are live and normative in different documents for overlapping conditions (a token invalidated by resolution or cancel). Recorded here so the overlap is not lost before the error registry decides it.",
267
+ "sources": [
268
+ {
269
+ "file": "spec/v1/interrupt.md",
270
+ "token": "interrupt_already_resolved"
271
+ },
272
+ {
273
+ "file": "spec/v1/interrupt-profiles.md",
274
+ "token": "MUST return `410"
275
+ }
276
+ ]
277
+ },
278
+ {
279
+ "id": "openwop.deprecation.engine-version-type-split",
280
+ "status": "proposed",
281
+ "surface": "`engineVersion` typed integer at the discovery root and string on run-event / run-snapshot / three event payloads",
282
+ "kind": "schema-field",
283
+ "deprecatedIn": null,
284
+ "authority": "RFC 0165 §A.4 (recorded; unification is a v2 C.5 item — changing either type is a COMPATIBILITY §2.2 break in v1.x)",
285
+ "removeIn": "2.0",
286
+ "replacement": "one integer `engineVersion` on every carrier (v2)",
287
+ "codemod": null,
288
+ "note": "In v1.x the per-event value is the decimal string rendering of the root integer (version-negotiation.md §\"Protocol version grammar\").",
289
+ "sources": [
290
+ {
291
+ "file": "spec/v1/version-negotiation.md",
292
+ "token": "The `engineVersion` axis is split"
293
+ },
294
+ {
295
+ "file": "schemas/capabilities.schema.json",
296
+ "token": "\"engineVersion\""
297
+ }
298
+ ]
299
+ },
300
+ {
301
+ "id": "openwop.deprecation.poll-cursor-since",
302
+ "status": "proposed",
303
+ "surface": "`since` query parameter on GET /v1/runs/{runId}/events/poll",
304
+ "kind": "discovery-field",
305
+ "deprecatedIn": null,
306
+ "authority": "v2 charter C.4 (RFC 0167 §E; version-negotiation.md names `lastSequence` authoritative and `since` back-compat for pre-v1.0 deployments)",
307
+ "removeIn": "2.0",
308
+ "replacement": "`lastSequence` in v1.x; the v2 C.4 child defines the cursor (RFC 0165 G7)",
309
+ "codemod": null,
310
+ "note": "Proposed: the prose tolerates `since` without an RFC or annotation, so there is nothing to cite as a v1.x deprecation; the v2 cut removes it with the cursor redefinition.",
311
+ "sources": [
312
+ {
313
+ "file": "spec/v1/version-negotiation.md",
314
+ "token": "hosts MAY also accept `since`"
315
+ }
316
+ ]
317
+ },
318
+ {
319
+ "id": "openwop.deprecation.custom-request-headers-x-family",
320
+ "status": "proposed",
321
+ "surface": "`X-Dedup`, `X-Force-Engine-Version`, `X-Pack-Sha`, `X-Pack-Signing-Method` request headers",
322
+ "kind": "header",
323
+ "deprecatedIn": null,
324
+ "authority": "v2 charter C.4 (RFC 0167 §E): `OpenWOP-*` for every non-standard header; RFC 0165 §C.1 covered only the webhook family",
325
+ "removeIn": "2.0",
326
+ "replacement": "`OpenWOP-Dedup`, `OpenWOP-Force-Engine-Version` (seam-only, moves to the seams profile), `OpenWOP-Pack-Sha`, `OpenWOP-Pack-Signing-Method`",
327
+ "codemod": null,
328
+ "note": "Proposed: the four surviving `X-` request headers on canonical or seam operations; renamed by the C.4 child under the one-header-scheme rule.",
329
+ "sources": [
330
+ {
331
+ "file": "spec/v1/rest-endpoints.md",
332
+ "token": "X-Dedup"
333
+ },
334
+ {
335
+ "file": "spec/v1/version-negotiation.md",
336
+ "token": "X-Force-Engine-Version"
337
+ },
338
+ {
339
+ "file": "api/openapi.yaml",
340
+ "token": "X-Pack-Sha"
341
+ }
342
+ ]
343
+ },
344
+ {
345
+ "id": "openwop.deprecation.replay-fork-boolean",
346
+ "status": "deprecated",
347
+ "surface": "capabilities `replay.fork` boolean",
348
+ "kind": "discovery-field",
349
+ "deprecatedIn": "capabilities.schema.json (`replay.modes[]` is authoritative; the boolean is a retained legacy spelling)",
350
+ "authority": "schemas/capabilities.schema.json `replay.fork` description: \"Legacy spelling retained for existing consumers; `modes` is authoritative.\"",
351
+ "removeIn": "2.0",
352
+ "replacement": "`replay.modes[]`",
353
+ "codemod": null,
354
+ "sources": [
355
+ {
356
+ "file": "schemas/capabilities.schema.json",
357
+ "token": "Legacy spelling retained"
358
+ },
359
+ {
360
+ "file": "spec/v1/capabilities.md",
361
+ "token": "modes"
362
+ }
363
+ ]
364
+ },
365
+ {
366
+ "id": "openwop.deprecation.debug-bundle-seq",
367
+ "status": "deprecated",
368
+ "surface": "debug bundle event `seq` field",
369
+ "kind": "schema-field",
370
+ "deprecatedIn": "debug-bundle.schema.json (`sequence` is canonical; `seq` is a legacy alias hosts that pre-date the rename emit)",
371
+ "authority": "schemas/debug-bundle.schema.json `seq` description: \"Legacy alias for `sequence`. Hosts that pre-date the rename emit `seq`. Clients accept either.\"",
372
+ "removeIn": "2.0",
373
+ "replacement": "`sequence`",
374
+ "codemod": null,
375
+ "sources": [
376
+ {
377
+ "file": "schemas/debug-bundle.schema.json",
378
+ "token": "Legacy alias for `sequence`"
379
+ }
380
+ ]
381
+ },
382
+ {
383
+ "id": "openwop.deprecation.credential-provider-key",
384
+ "status": "deprecated",
385
+ "surface": "node config `credentialProvider` key",
386
+ "kind": "schema-field",
387
+ "deprecatedIn": "node-packs.md (`provider` is canonical; `credentialProvider` is named as the legacy alias)",
388
+ "authority": "spec/v1/node-packs.md §Credential resolution (\"and the legacy alias `credentialProvider`\")",
389
+ "removeIn": "2.0",
390
+ "replacement": "`provider`",
391
+ "codemod": null,
392
+ "sources": [
393
+ {
394
+ "file": "spec/v1/node-packs.md",
395
+ "token": "credentialProvider"
396
+ }
397
+ ]
398
+ },
399
+ {
400
+ "id": "openwop.deprecation.manifest-public-key-ref",
401
+ "status": "deprecated",
402
+ "surface": "registry version manifest `signing.publicKeyRef`",
403
+ "kind": "schema-field",
404
+ "deprecatedIn": "registry-version-manifest.schema.json (`keyId` is canonical; `publicKeyRef` is its legacy alias, enforced by a oneOf)",
405
+ "authority": "schemas/registry-version-manifest.schema.json `signing` description: \"`publicKeyRef`: legacy alias of `keyId`\"",
406
+ "removeIn": "2.0",
407
+ "replacement": "`signing.keyId`",
408
+ "codemod": null,
409
+ "sources": [
410
+ {
411
+ "file": "schemas/registry-version-manifest.schema.json",
412
+ "token": "publicKeyRef"
413
+ }
414
+ ]
415
+ },
416
+ {
417
+ "id": "openwop.deprecation.legacy-interrupt-payloads",
418
+ "status": "deprecated",
419
+ "surface": "`approvalRequested` / `clarificationRequested` legacy event payload definitions and the free-text `feedback` field",
420
+ "kind": "schema-field",
421
+ "deprecatedIn": "run-event-payloads.schema.json + interrupt-profiles.md (the interrupt primitive `interrupt.requested {kind}` is canonical)",
422
+ "authority": "schemas/run-event-payloads.schema.json $defs approvalRequested / clarificationRequested descriptions; spec/v1/interrupt-profiles.md §Approval",
423
+ "removeIn": "2.0",
424
+ "replacement": "`interrupt.requested` with `kind: approval | clarification`; `refineFeedback`",
425
+ "codemod": null,
426
+ "sources": [
427
+ {
428
+ "file": "schemas/run-event-payloads.schema.json",
429
+ "token": "approvalRequested"
430
+ },
431
+ {
432
+ "file": "schemas/run-event-payloads.schema.json",
433
+ "token": "clarificationRequested"
434
+ }
435
+ ]
436
+ },
437
+ {
438
+ "id": "openwop.deprecation.a2a-0-3-legacy-profile",
439
+ "status": "deprecated",
440
+ "surface": "`a2a-0.3-legacy` A2A profile id",
441
+ "kind": "profile-id",
442
+ "deprecatedIn": "RFC 0152 §A (A2A 1.0.0 published 2026-03-12; legacy window ends 2027-03-12)",
443
+ "authority": "spec/v1/a2a-integration.md §Discovery (\"a host SHOULD NOT advertise `a2a-0.3-legacy`\" after 2027-03-12); RFC 0152 register G1/R1",
444
+ "removeIn": "2.0",
445
+ "replacement": "`a2a-1.0` only; the v2 C.8 child removes the legacy path",
446
+ "codemod": null,
447
+ "sources": [
448
+ {
449
+ "file": "spec/v1/a2a-integration.md",
450
+ "token": "a2a-0.3-legacy"
451
+ },
452
+ {
453
+ "file": "RFCS/0152-a2a-1-0-versioned-composition.md",
454
+ "token": "legacy"
455
+ }
456
+ ]
457
+ },
458
+ {
459
+ "id": "openwop.deprecation.mcp-2025-06-18-legacy-profile",
460
+ "status": "deprecated",
461
+ "surface": "`mcp-2025-06-18-legacy` MCP profile id",
462
+ "kind": "profile-id",
463
+ "deprecatedIn": "RFC 0153 §A (current profile accepted 2026-08-12; legacy window ends 2027-08-12)",
464
+ "authority": "spec/v1/mcp-integration.md §Discovery; RFC 0153 register G1/R1",
465
+ "removeIn": "2.0",
466
+ "replacement": "`mcp-2026-07-28` only; the v2 C.8 child removes the legacy path",
467
+ "codemod": null,
468
+ "sources": [
469
+ {
470
+ "file": "spec/v1/mcp-integration.md",
471
+ "token": "mcp-2025-06-18-legacy"
472
+ },
473
+ {
474
+ "file": "RFCS/0153-mcp-2026-07-28-versioned-composition.md",
475
+ "token": "legacy"
476
+ }
477
+ ]
478
+ },
479
+ {
480
+ "id": "openwop.deprecation.sdk-webhook-signature-header",
481
+ "status": "deprecated",
482
+ "surface": "`openwop-Webhook-Signature: v1=<hex>` header the pre-1.9.0 SDK helpers read (never in any spec file)",
483
+ "kind": "header",
484
+ "deprecatedIn": "RFC 0165 §C.3 (SDK-versus-spec defect; fixed in openwop-sdks TS 1.9.0 / Py 1.7.0 / Go v1.6.0)",
485
+ "authority": "RFC 0165 §C.3",
486
+ "removeIn": "2.0",
487
+ "replacement": "`X-openwop-Signature: sha256={hex}` in v1.x; `OpenWOP-Signature` in v2",
488
+ "codemod": null,
489
+ "sources": [
490
+ {
491
+ "file": "RFCS/0165-v2-preparation-wire-shapes.md",
492
+ "token": "openwop-Webhook-Signature"
493
+ }
494
+ ]
495
+ },
496
+ {
497
+ "id": "openwop.deprecation.undeclared-host-extension-families",
498
+ "status": "proposed",
499
+ "surface": "the 11 `§host.*` families RFC 0144 classed `extension` (brand, canvas, chat, coordination, dataIntegration, entities, kanban, knowledge, launchStudio, messaging, webResearch) — declared in neither the dotted nor the root spelling",
500
+ "kind": "discovery-shape",
501
+ "deprecatedIn": null,
502
+ "authority": "v2 charter C.2 (RFC 0167 §E): one declaration file; extensions live under one namespaced key; RFC 0144 §A classified them deliberately as extension namespaces",
503
+ "removeIn": "2.0",
504
+ "replacement": "the v2 extension namespace key (C.2 child); the prose sections move to spec/v2/ext/",
505
+ "codemod": null,
506
+ "note": "Proposed: RFC 0144 chose not to declare these; the v2 C.2 child gives them a home under the single extension key rather than the open root.",
507
+ "sources": [
508
+ {
509
+ "file": "spec/v1/capability-declaration-classes.json",
510
+ "token": "\"class\": \"extension\""
511
+ }
512
+ ]
513
+ },
514
+ {
515
+ "id": "openwop.deprecation.v1-path-prefix",
516
+ "status": "proposed",
517
+ "surface": "the `/v1/` path-key prefix on every versioned operation",
518
+ "kind": "path",
519
+ "deprecatedIn": null,
520
+ "authority": "RFC 0172 §A.2 (v2 operations are unversioned path keys on a bare origin; v1 keys retained through the overlap and removed with the v1 tree at Phase 5)",
521
+ "removeIn": "2.0",
522
+ "replacement": "unversioned path keys + `OpenWOP-Version` negotiation (RFC 0172 §A)",
523
+ "codemod": null,
524
+ "note": "Proposed: the prefix is the v1 wire surface itself and cannot be deprecated inside v1.x; the row exists so the removal has a date and the alias coverage gate sees the surface.",
525
+ "sources": [
526
+ {
527
+ "file": "spec/v1/rest-endpoints.md",
528
+ "token": "All paths under `/v1/` are versioned"
529
+ }
530
+ ]
531
+ },
532
+ {
533
+ "id": "openwop.deprecation.gap-local-alias",
534
+ "status": "proposed",
535
+ "surface": "the per-RFC `G<n>` local gap id as the register's ID column",
536
+ "kind": "prose-convention",
537
+ "deprecatedIn": null,
538
+ "authority": "RFC 0178 §B.2 (the `openwop.gap.<rfc>.<n>` id is canonical; `G<n>` is an alias until 2.1)",
539
+ "removeIn": "2.1",
540
+ "replacement": "`openwop.gap.<rfc>.<n>` in the ID column",
541
+ "codemod": null,
542
+ "note": "Proposed: the alias survives through 2.0 so v1 register citations keep resolving; removed at 2.1.",
543
+ "sources": [
544
+ {
545
+ "file": "spec/v1/gaps.schema.json",
546
+ "token": "\"local\""
547
+ }
548
+ ]
549
+ },
550
+ {
551
+ "id": "openwop.deprecation.manifest-deprecated-field",
552
+ "status": "proposed",
553
+ "surface": "registry version manifest `deprecated` boolean (an advisory version flag that collides with the JSON Schema `deprecated` annotation keyword)",
554
+ "kind": "schema-field",
555
+ "deprecatedIn": null,
556
+ "authority": "RFC 0178 §A.1 (renamed so the annotation keyword is unambiguous); the rename rides C.10's registry/v2 re-sign",
557
+ "removeIn": "2.0",
558
+ "replacement": "`versionDeprecated`",
559
+ "codemod": null,
560
+ "note": "Proposed: a wire field on signed, immutable manifests; the v2 manifest schema carries the new name and registry/v2 re-signs or overlays.",
561
+ "sources": [
562
+ {
563
+ "file": "schemas/registry-version-manifest.schema.json",
564
+ "token": "Advisory: this version is deprecated"
565
+ }
566
+ ]
567
+ },
568
+ {
569
+ "id": "openwop.deprecation.interrupt-token-unversioned",
570
+ "status": "proposed",
571
+ "surface": "the two-segment interrupt resume token `base64url(payload).hmac` with no scheme id, algorithm, or key id",
572
+ "kind": "artifact",
573
+ "deprecatedIn": null,
574
+ "authority": "RFC 0170 §E.1 (`ow2.<alg>.<kid>.<payload>.<mac>`); interrupt.md §Resume tokens' rotation rule references an algorithm-version discriminator the format does not contain",
575
+ "removeIn": "2.0",
576
+ "replacement": "`ow2.<alg>.<kid>.<payload>.<mac>`; issued v1 tokens resolvable under `kid: legacy` until their expiry",
577
+ "codemod": null,
578
+ "note": "Proposed: a v1.x deprecation would need a new format to point at, which is the v2 change itself; the row exists so the removal has a date.",
579
+ "sources": [
580
+ {
581
+ "file": "spec/v1/interrupt.md",
582
+ "token": "hmac_sha256(secret, payload)"
583
+ }
584
+ ]
585
+ },
586
+ {
587
+ "id": "openwop.deprecation.error-details-retry-after-spellings",
588
+ "status": "proposed",
589
+ "surface": "`details.retryAfter`, `details.retryAfterMs`, `details.retryAfterSeconds` on error envelopes (three body spellings beside the `Retry-After` header)",
590
+ "kind": "schema-field",
591
+ "deprecatedIn": null,
592
+ "authority": "RFC 0171 §B.2 (retry timing lives in `Retry-After` only)",
593
+ "removeIn": "2.0",
594
+ "replacement": "the `Retry-After` header",
595
+ "codemod": null,
596
+ "note": "Proposed: production-profile.md and scale-profiles.md MUST the body field equal the header; with the body field gone the header is the single source.",
597
+ "sources": [
598
+ {
599
+ "file": "spec/v1/rest-endpoints.md",
600
+ "token": "retryAfterMs"
601
+ },
602
+ {
603
+ "file": "spec/v1/production-profile.md",
604
+ "token": "retryAfter"
605
+ }
606
+ ]
607
+ },
608
+ {
609
+ "id": "openwop.deprecation.configurable-dotted-keys",
610
+ "status": "proposed",
611
+ "surface": "dotted reserved keys in `RunOptions.configurable` (`ai.provider`, `ai.model`, `ai.credentialRef`, `distillation.tokenBudget`) and the open map they live in",
612
+ "kind": "schema-field",
613
+ "deprecatedIn": null,
614
+ "authority": "RFC 0171 §D.1 (closed, nested, versioned `configurable`)",
615
+ "removeIn": "2.0",
616
+ "replacement": "`configurable.ai.*`, `configurable.distillation.*`; vendor keys under `configurable.extensions.<org>`",
617
+ "codemod": "openwop.codemod.configurable-v2",
618
+ "note": "Proposed: the reserved `ai.*` namespace is a string prefix inside an open map; the v2 object nests it.",
619
+ "sources": [
620
+ {
621
+ "file": "spec/v1/run-options.md",
622
+ "token": "ai.credentialRef"
623
+ }
624
+ ]
625
+ },
626
+ {
627
+ "id": "openwop.deprecation.security-opt-in-flags",
628
+ "status": "proposed",
629
+ "surface": "discovery flags that gate a security-load-bearing MUST: the fourteen `auth.*` gates, `replay.sideEffectSuppression`, `webhooks.durable`, `interrupt.approverRouting` (as a gate), `sandbox.supported` (as a gate)",
630
+ "kind": "discovery-field",
631
+ "deprecatedIn": null,
632
+ "authority": "RFC 0173 §A.1 (an obligation of the surface, never a discovery flag; RFC 0164 §22's ruling applied corpus-wide)",
633
+ "removeIn": "2.0",
634
+ "replacement": "the obligation binds when the surface is advertised; `auth.lanes[]`, `replay`, `webhooks`, `interrupt.refKinds[]`, `sandbox.isolationModel` stay as facets; relaxations are operator settings recorded in bundle v3 `host.relaxations[]`",
635
+ "codemod": null,
636
+ "note": "Proposed: each flag is a v1 advertisement an RFC minted; v2 removes the gating semantics with the flag.",
637
+ "sources": [
638
+ {
639
+ "file": "spec/v1/replay.md",
640
+ "token": "sideEffectSuppression"
641
+ },
642
+ {
643
+ "file": "spec/v1/webhooks.md",
644
+ "token": "webhooks.durable"
645
+ },
646
+ {
647
+ "file": "schemas/capabilities.schema.json",
648
+ "token": "approverRouting"
649
+ }
650
+ ]
651
+ },
652
+ {
653
+ "id": "openwop.deprecation.supported-transports-field",
654
+ "status": "proposed",
655
+ "surface": "`supportedTransports[]` at the discovery root (`rest | mcp | a2a | grpc`)",
656
+ "kind": "discovery-field",
657
+ "deprecatedIn": null,
658
+ "authority": "RFC 0175 §B.1 (REST is the wire; A2A and MCP are compositions with first-class facets; gRPC is demoted)",
659
+ "removeIn": "2.0",
660
+ "replacement": "none; `a2a.*` and `mcp.*` facets",
661
+ "codemod": "openwop.codemod.discovery-document-v2",
662
+ "note": "Proposed: nothing in the corpus reads the `mcp` or `a2a` members (profiles.md reads only `rest`).",
663
+ "sources": [
664
+ {
665
+ "file": "spec/v1/capabilities.md",
666
+ "token": "supportedTransports"
667
+ }
668
+ ]
669
+ },
670
+ {
671
+ "id": "openwop.deprecation.grpc-transport-core",
672
+ "status": "proposed",
673
+ "surface": "`capabilities.grpc` block and `grpc-transport.md` as a core Stable document with RFC 2119 MUSTs",
674
+ "kind": "discovery-field",
675
+ "deprecatedIn": null,
676
+ "authority": "RFC 0175 §A.1 (demoted to `spec/v2/ext/grpc-transport/`, `unwitnessable`, `adoption: none`; the door back into core is named)",
677
+ "removeIn": "2.0",
678
+ "replacement": "`spec/v2/ext/grpc-transport/` (documented, not advertised)",
679
+ "codemod": "openwop.codemod.discovery-document-v2",
680
+ "note": "Proposed: the suite ships no gRPC client, no host advertises the block, and the proto defers its own messages to a v1.x that never landed.",
681
+ "sources": [
682
+ {
683
+ "file": "spec/v1/grpc-transport.md",
684
+ "token": "REST + SSE remains the REQUIRED wire surface"
685
+ }
686
+ ]
687
+ },
688
+ {
689
+ "id": "openwop.deprecation.well-known-wop-alias",
690
+ "status": "proposed",
691
+ "surface": "`/.well-known/wop` served byte-identically with `/.well-known/openwop` (MyndHyve, the wop → openwop rebrand alias; the C.5 precedent)",
692
+ "kind": "path",
693
+ "deprecatedIn": null,
694
+ "authority": "RFC 0176 §C.3",
695
+ "removeIn": "2.0",
696
+ "removalTrigger": "v1-end-of-support",
697
+ "replacement": "`/.well-known/openwop` (one resource; RFC 0176 §C.1)",
698
+ "codemod": null,
699
+ "note": "Proposed: the alias exists in one host and was never registered; it is the model RFC 0172 cites for overlap publication.",
700
+ "sources": [
701
+ {
702
+ "file": "RFCS/0176-v2-persisted-data-and-coexistence.md",
703
+ "token": "/.well-known/wop"
704
+ }
705
+ ]
706
+ },
707
+ {
708
+ "id": "openwop.deprecation.engines-absent-ceiling",
709
+ "status": "proposed",
710
+ "surface": "`engines.openwop` ranges with no upper bound read as open (146 of 282 published versions)",
711
+ "kind": "schema-field",
712
+ "deprecatedIn": null,
713
+ "authority": "RFC 0177 §A.1 (absent ceiling ⇒ `<2.0.0`; `pack_engine_unsupported` at install on every publication path)",
714
+ "removeIn": "2.0",
715
+ "replacement": "an explicit `>=x.y.z <M.0.0` range; the v2 schema enforces the grammar",
716
+ "codemod": null,
717
+ "note": "Proposed: no codemod — the author declares compatibility; `openwop.codemod.pack-manifest-v2` refuses a manifest with no v2-satisfiable range.",
718
+ "sources": [
719
+ {
720
+ "file": "spec/v1/node-packs.md",
721
+ "token": "`engines.openwop`"
722
+ }
723
+ ]
724
+ },
725
+ {
726
+ "id": "openwop.deprecation.pack-peer-dependency-aliases",
727
+ "status": "proposed",
728
+ "surface": "peer-dependency identifiers that are not declaration-file keys: `host.*` dotted twins (`host.fs`/`fs`, `host.queueBus`/`queueBus`), `openwop.agents.memoryBackends`, facet paths (`aiProviders.imageGeneration`, `host.aiEnvelope.await`), the reserved-slot prose list",
729
+ "kind": "schema-field",
730
+ "deprecatedIn": null,
731
+ "authority": "RFC 0177 §B.1–§B.2 (identifier ≡ declaration-file key; `pack_peer_dependency_undefined` reads against the file; generated alias table)",
732
+ "removeIn": "2.0",
733
+ "removalTrigger": "v1-end-of-support",
734
+ "replacement": "`spec/v2/peer-dependency-aliases.json` through the overlap; `peerDependenciesMeta.<family>.facets[]` for facets",
735
+ "codemod": "openwop.codemod.pack-manifest-v2",
736
+ "note": "Proposed: the table is generated by `check-declaration.mjs` over the published manifests once the declaration file exists (RFC 0177 G2).",
737
+ "sources": [
738
+ {
739
+ "file": "spec/v1/host-capabilities.md",
740
+ "token": "pack_peer_dependency_undefined"
741
+ }
742
+ ]
743
+ },
744
+ {
745
+ "id": "openwop.deprecation.manifest-signing-method",
746
+ "status": "proposed",
747
+ "surface": "`signing.method: manual | ed25519 | sigstore` — two values the schema calls synonymous that the verifier treats as signatures over different bytes",
748
+ "kind": "schema-field",
749
+ "deprecatedIn": null,
750
+ "authority": "RFC 0177 §C.3 (one `signing.scheme: ed25519-canonical-json`)",
751
+ "removeIn": "2.0",
752
+ "replacement": "`signing.scheme`",
753
+ "codemod": "openwop.codemod.pack-manifest-v2",
754
+ "note": "Proposed: the codemod refuses `ed25519` and `sigstore` — those packs are re-signed in `registry/v2/`, never relabeled.",
755
+ "sources": [
756
+ {
757
+ "file": "schemas/registry-version-manifest.schema.json",
758
+ "token": "synonymous in practice"
759
+ }
760
+ ]
761
+ },
762
+ {
763
+ "id": "openwop.deprecation.connection-provider-version-precedence",
764
+ "status": "proposed",
765
+ "surface": "`connection-packs.md` clause 6: an installed pack takes precedence over a built-in of the same `provider.id` when its version is greater-than-or-equal",
766
+ "kind": "prose-convention",
767
+ "deprecatedIn": null,
768
+ "authority": "RFC 0177 §D.1 (RFC 0095 UQ4 decided: fail-closed `connection_provider_conflict`; qualified `<packName>#<id>` form)",
769
+ "removeIn": "2.0",
770
+ "replacement": "fail-closed conflict; the qualified form",
771
+ "codemod": null,
772
+ "note": "Proposed: silent precedence by version is the Axiom 2 failure UQ4 asked about.",
773
+ "sources": [
774
+ {
775
+ "file": "spec/v1/connection-packs.md",
776
+ "token": "greater-than-or-equal to the built-in's"
777
+ }
778
+ ]
779
+ },
780
+ {
781
+ "id": "openwop.deprecation.seam-operations-in-canonical-api",
782
+ "status": "proposed",
783
+ "surface": "the nine `/v1/host/sample/*`, `/v1/host/workspace/files*` and `/v1/packs-test/*` seam/test operations in `api/openapi.yaml` and `spec/v1/operation-path-manifest.json`, and the `testSeams` discovery-flag proposals",
784
+ "kind": "path",
785
+ "deprecatedIn": null,
786
+ "authority": "RFC 0168 §C (seams are the profile `openwop-conformance-seams-v2` with `api/seams-v2.yaml`; forbidden from the capability namespace)",
787
+ "removeIn": "2.0",
788
+ "replacement": "`api/seams-v2.yaml`; `profiles[]` membership",
789
+ "codemod": null,
790
+ "note": "Proposed: a generated document, not a persisted artifact.",
791
+ "sources": [
792
+ {
793
+ "file": "spec/v1/operation-path-manifest.json",
794
+ "token": "/v1/host/sample/a2a/tasks/{taskId}"
795
+ }
796
+ ]
797
+ },
798
+ {
799
+ "id": "openwop.deprecation.coherence-scenarios-in-host-bundle",
800
+ "status": "proposed",
801
+ "surface": "the 29 corpus-coherence scenarios reported `blocked` in every host bundle",
802
+ "kind": "artifact",
803
+ "deprecatedIn": null,
804
+ "authority": "RFC 0168 §D.1 (spec-repo CI; never in a bundle)",
805
+ "removeIn": "2.0",
806
+ "replacement": "`scripts/check-spec-coherence.mjs`",
807
+ "codemod": null,
808
+ "note": "Proposed: bundle v3's schema forbids the ids.",
809
+ "sources": [
810
+ {
811
+ "file": "conformance/src/lib/scenario-disposition.ts",
812
+ "token": "See lib/spec-coherence.ts for why not a new disposition value"
813
+ }
814
+ ]
815
+ },
816
+ {
817
+ "id": "openwop.deprecation.suite-vendored-corpus",
818
+ "status": "proposed",
819
+ "surface": "the published suite tarball's vendored `api/` and `schemas/` copies (and `src`, suite self-tests)",
820
+ "kind": "artifact",
821
+ "deprecatedIn": null,
822
+ "authority": "RFC 0168 §D.2 (`dist`, `fixtures`, `vectors` only; corpus as the digest-checked peer dependency `@openwop/spec-artifacts`)",
823
+ "removeIn": "2.0",
824
+ "replacement": "`@openwop/spec-artifacts`",
825
+ "codemod": null,
826
+ "note": "Proposed: the 1.138.1 mechanism — one source, no copy.",
827
+ "sources": [
828
+ {
829
+ "file": "conformance/README.md",
830
+ "token": "The vendored contract is digest-checked"
831
+ }
832
+ ]
833
+ },
834
+ {
835
+ "id": "openwop.deprecation.certification-bundle-v2-open-root",
836
+ "status": "proposed",
837
+ "surface": "certification bundle v2 (`bundleVersion: \"2\"`, root `additionalProperties: true`, `witnessSha256` absent, unsigned)",
838
+ "kind": "artifact",
839
+ "deprecatedIn": null,
840
+ "authority": "RFC 0168 §E (bundle v3: closed root, required witness/build/tier/count, Ed25519 attestation)",
841
+ "removeIn": "2.0",
842
+ "removalTrigger": "v1-end-of-support",
843
+ "replacement": "bundle v3 (`schemas/v2/certification-bundle.schema.json`)",
844
+ "codemod": null,
845
+ "note": "Proposed: never upgraded in place; a v2 bundle remains v2 evidence until v1 end-of-support.",
846
+ "sources": [
847
+ {
848
+ "file": "schemas/certification-bundle-v2.schema.json",
849
+ "token": "\"const\": \"2\""
850
+ }
851
+ ]
852
+ }
853
+ ]
854
+ }