@openwop/spec-artifacts 2.0.0-rc.8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CORPUS-STAMP.json +41 -38
- package/api/seams-v2.yaml +1 -1
- package/api/v2/asyncapi.yaml +1 -1
- package/api/v2/openapi.yaml +17 -19
- package/package.json +18 -5
- package/schemas/capabilities.schema.json +40 -1
- package/schemas/run-snapshot.schema.json +103 -33
- package/schemas/v2/agent-deployment-transition.schema.json +5 -6
- package/schemas/v2/agent-deployment.schema.json +8 -9
- package/schemas/v2/agent-eval-suite.schema.json +11 -12
- package/schemas/v2/artifact-type-pack-manifest.schema.json +22 -18
- package/schemas/v2/capabilities.schema.json +39 -0
- package/schemas/v2/certification-bundle.schema.json +1 -1
- package/schemas/v2/chat-card-pack-manifest.schema.json +19 -15
- package/schemas/v2/debug-bundle.schema.json +6 -6
- package/schemas/v2/effect-ledger-projection.schema.json +4 -3
- package/schemas/v2/effect-seam-manifest.schema.json +30 -7
- package/schemas/v2/error-envelope.schema.json +185 -138
- package/schemas/v2/eval-summary.schema.json +17 -10
- package/schemas/v2/goal.schema.json +5 -5
- package/schemas/v2/ids.schema.json +120 -22
- package/schemas/v2/node-pack-manifest.schema.json +27 -31
- package/schemas/v2/proposal.schema.json +7 -8
- package/schemas/v2/run-event-payloads.schema.json +258 -245
- package/schemas/v2/run-event.schema.json +2 -126
- package/schemas/v2/run-options.schema.json +1 -1
- package/schemas/v2/run-snapshot.schema.json +34 -13
- package/schemas/v2/webhook-delivery.schema.json +26 -0
- package/schemas/v2/workflow-chain-pack-manifest.schema.json +41 -45
- package/schemas/v2/workflow-definition.schema.json +31 -36
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/deprecations.json +79 -67
- package/spec/v1/deprecations.schema.json +23 -7
- package/spec/v1/extensions.json +3 -2
- package/spec/v2/declaration.json +63 -32
- package/spec/v2/errors.json +421 -360
- package/spec/v2/id-field-bindings.json +105 -0
- package/spec/v2/profiles.json +31 -7
- package/spec/v2/release.json +4 -4
- package/spec/v2/retention-floors.json +35 -0
package/spec/v2/declaration.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://openwop.dev/spec/v2/declaration.schema.json",
|
|
3
|
-
"$comment": "RFC 0169
|
|
3
|
+
"$comment": "RFC 0169 \u00a7B \u2014 the one declaration file. Hand-reviewed source (generated FROM nothing, checked AGAINST everything by scripts/check-declaration.mjs). schemas/v2/capabilities.schema.json, spec/v2/profiles.json and spec/v2/peer-dependency-aliases.json are generated from it. Seeded 2026-09-03 (Phase 3, P3-A) from the v1 registries this file retires: every v1 root key is listed with an anchor (core | ext | deleted) so no slot is reserved-but-undefined (\u00a7B.3). Values marked planned:* are minted by the suite in P3-E (RFC 0178 precedent). adoption is re-derived from INTEROP-MATRIX bundle evidence at each RC (generator --check).",
|
|
4
4
|
"version": "2.0",
|
|
5
5
|
"updated": "2026-09-03",
|
|
6
6
|
"witnessClasses": [
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"key": "supportedTransports",
|
|
63
63
|
"kind": "metadata",
|
|
64
64
|
"schema": "metadata/supportedTransports",
|
|
65
|
-
"note": "deleted: RFC 0175
|
|
65
|
+
"note": "deleted: RFC 0175 \u00a7B.1",
|
|
66
66
|
"disposition": "deleted"
|
|
67
67
|
},
|
|
68
68
|
{
|
|
@@ -121,6 +121,13 @@
|
|
|
121
121
|
"note": null,
|
|
122
122
|
"disposition": "kept"
|
|
123
123
|
},
|
|
124
|
+
{
|
|
125
|
+
"key": "signingKeys",
|
|
126
|
+
"kind": "metadata",
|
|
127
|
+
"schema": "metadata/signingKeys",
|
|
128
|
+
"note": "host bundle-signing public keys (RFC 0168 \u00a7E.2); v2-only \u2014 the surface the RFC named when it disposed of \"a signature nobody can check\"",
|
|
129
|
+
"disposition": "kept"
|
|
130
|
+
},
|
|
124
131
|
{
|
|
125
132
|
"key": "discovery",
|
|
126
133
|
"kind": "metadata",
|
|
@@ -132,7 +139,7 @@
|
|
|
132
139
|
"key": "preferredVersion",
|
|
133
140
|
"kind": "metadata",
|
|
134
141
|
"schema": "metadata/preferredVersion",
|
|
135
|
-
"note": "root preferredVersion (RFC 0172
|
|
142
|
+
"note": "root preferredVersion (RFC 0172 \u00a7A.1; v1.x additive RFC 0179)",
|
|
136
143
|
"disposition": "kept"
|
|
137
144
|
}
|
|
138
145
|
],
|
|
@@ -140,7 +147,7 @@
|
|
|
140
147
|
{
|
|
141
148
|
"key": "contractProvenance",
|
|
142
149
|
"anchor": "deleted",
|
|
143
|
-
"reason": "RFC 0169
|
|
150
|
+
"reason": "RFC 0169 \u00a7A.5 (unfalsifiable self-declaration)"
|
|
144
151
|
},
|
|
145
152
|
{
|
|
146
153
|
"key": "supportedEnvelopes",
|
|
@@ -284,7 +291,7 @@
|
|
|
284
291
|
{
|
|
285
292
|
"key": "grpc",
|
|
286
293
|
"anchor": "deleted",
|
|
287
|
-
"reason": "RFC 0175
|
|
294
|
+
"reason": "RFC 0175 \u00a7A.1 (spec/v2/ext/grpc-transport/, not advertisable)"
|
|
288
295
|
},
|
|
289
296
|
{
|
|
290
297
|
"key": "nodePackRuntimes",
|
|
@@ -584,7 +591,7 @@
|
|
|
584
591
|
"floorScenarios": [],
|
|
585
592
|
"requirementIds": [],
|
|
586
593
|
"owningRfc": "0037",
|
|
587
|
-
"note": "RFC 0002
|
|
594
|
+
"note": "RFC 0002\u20130008 surface; core anchor, facets carry the RFC 0092 requirement vocabulary"
|
|
588
595
|
},
|
|
589
596
|
{
|
|
590
597
|
"key": "modelCapabilities",
|
|
@@ -652,7 +659,7 @@
|
|
|
652
659
|
"floorScenarios": [],
|
|
653
660
|
"requirementIds": [],
|
|
654
661
|
"owningRfc": null,
|
|
655
|
-
"note": "imageGeneration/videoGeneration are declared facets (RFC 0169
|
|
662
|
+
"note": "imageGeneration/videoGeneration are declared facets (RFC 0169 \u00a7B.3 with RFC 0177 \u00a7B.1: facet paths are not identifiers; peerDependenciesMeta.aiProviders.facets[])",
|
|
656
663
|
"facetsFrom": "spec/v2/facets/aiProviders.schema.json"
|
|
657
664
|
},
|
|
658
665
|
{
|
|
@@ -690,7 +697,7 @@
|
|
|
690
697
|
"floorScenarios": [],
|
|
691
698
|
"requirementIds": [],
|
|
692
699
|
"owningRfc": "0002",
|
|
693
|
-
"note": "RFC 0002
|
|
700
|
+
"note": "RFC 0002\u20130008 surface; core anchor, facets carry the RFC 0092 requirement vocabulary"
|
|
694
701
|
},
|
|
695
702
|
{
|
|
696
703
|
"key": "memory",
|
|
@@ -717,7 +724,7 @@
|
|
|
717
724
|
"floorScenarios": [],
|
|
718
725
|
"requirementIds": [],
|
|
719
726
|
"owningRfc": "0004",
|
|
720
|
-
"note": "RFC 0002
|
|
727
|
+
"note": "RFC 0002\u20130008 surface; core anchor, facets carry the RFC 0092 requirement vocabulary"
|
|
721
728
|
},
|
|
722
729
|
{
|
|
723
730
|
"key": "conversationPrimitive",
|
|
@@ -1401,7 +1408,7 @@
|
|
|
1401
1408
|
"requirementIds": [],
|
|
1402
1409
|
"owningRfc": "0035",
|
|
1403
1410
|
"disposition": "externally-gated",
|
|
1404
|
-
"reason": "RFC 0169
|
|
1411
|
+
"reason": "RFC 0169 \u00a7C.4 / RFC 0035 non-steward tripwire; status experimental with until = the review date, never stable",
|
|
1405
1412
|
"facetsFrom": "spec/v2/facets/sandbox.schema.json"
|
|
1406
1413
|
},
|
|
1407
1414
|
{
|
|
@@ -1423,7 +1430,7 @@
|
|
|
1423
1430
|
"floorScenarios": [],
|
|
1424
1431
|
"requirementIds": [],
|
|
1425
1432
|
"owningRfc": "0151",
|
|
1426
|
-
"reason": "RFC 0173
|
|
1433
|
+
"reason": "RFC 0173 \u00a7B core obligation with a declared witness; ext/ only by \u00a7D.1 at the cut"
|
|
1427
1434
|
},
|
|
1428
1435
|
{
|
|
1429
1436
|
"key": "idempotency",
|
|
@@ -1599,7 +1606,7 @@
|
|
|
1599
1606
|
"floorScenarios": [],
|
|
1600
1607
|
"requirementIds": [],
|
|
1601
1608
|
"owningRfc": "0115",
|
|
1602
|
-
"reason": "RFC 0169
|
|
1609
|
+
"reason": "RFC 0169 \u00a7C.5 (claims-check; ext/ unless a behavioral witness lands)"
|
|
1603
1610
|
},
|
|
1604
1611
|
{
|
|
1605
1612
|
"key": "a2uiSurface",
|
|
@@ -1618,7 +1625,7 @@
|
|
|
1618
1625
|
"floorScenarios": [],
|
|
1619
1626
|
"requirementIds": [],
|
|
1620
1627
|
"owningRfc": "0114",
|
|
1621
|
-
"reason": "RFC 0169
|
|
1628
|
+
"reason": "RFC 0169 \u00a7C.5 (deltaTransport claims-check; ext/ unless a behavioral witness lands)"
|
|
1622
1629
|
},
|
|
1623
1630
|
{
|
|
1624
1631
|
"key": "brand",
|
|
@@ -1635,7 +1642,7 @@
|
|
|
1635
1642
|
"floorScenarios": [],
|
|
1636
1643
|
"requirementIds": [],
|
|
1637
1644
|
"owningRfc": "0144",
|
|
1638
|
-
"reason": "RFC 0169
|
|
1645
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1639
1646
|
},
|
|
1640
1647
|
{
|
|
1641
1648
|
"key": "canvas",
|
|
@@ -1652,7 +1659,7 @@
|
|
|
1652
1659
|
"floorScenarios": [],
|
|
1653
1660
|
"requirementIds": [],
|
|
1654
1661
|
"owningRfc": "0144",
|
|
1655
|
-
"reason": "RFC 0169
|
|
1662
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1656
1663
|
},
|
|
1657
1664
|
{
|
|
1658
1665
|
"key": "chat",
|
|
@@ -1669,7 +1676,7 @@
|
|
|
1669
1676
|
"floorScenarios": [],
|
|
1670
1677
|
"requirementIds": [],
|
|
1671
1678
|
"owningRfc": "0144",
|
|
1672
|
-
"reason": "RFC 0169
|
|
1679
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1673
1680
|
},
|
|
1674
1681
|
{
|
|
1675
1682
|
"key": "coordination",
|
|
@@ -1686,7 +1693,7 @@
|
|
|
1686
1693
|
"floorScenarios": [],
|
|
1687
1694
|
"requirementIds": [],
|
|
1688
1695
|
"owningRfc": "0144",
|
|
1689
|
-
"reason": "RFC 0169
|
|
1696
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1690
1697
|
},
|
|
1691
1698
|
{
|
|
1692
1699
|
"key": "dataIntegration",
|
|
@@ -1703,7 +1710,7 @@
|
|
|
1703
1710
|
"floorScenarios": [],
|
|
1704
1711
|
"requirementIds": [],
|
|
1705
1712
|
"owningRfc": "0144",
|
|
1706
|
-
"reason": "RFC 0169
|
|
1713
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1707
1714
|
},
|
|
1708
1715
|
{
|
|
1709
1716
|
"key": "entities",
|
|
@@ -1720,7 +1727,7 @@
|
|
|
1720
1727
|
"floorScenarios": [],
|
|
1721
1728
|
"requirementIds": [],
|
|
1722
1729
|
"owningRfc": "0144",
|
|
1723
|
-
"reason": "RFC 0169
|
|
1730
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1724
1731
|
},
|
|
1725
1732
|
{
|
|
1726
1733
|
"key": "kanban",
|
|
@@ -1737,7 +1744,7 @@
|
|
|
1737
1744
|
"floorScenarios": [],
|
|
1738
1745
|
"requirementIds": [],
|
|
1739
1746
|
"owningRfc": "0144",
|
|
1740
|
-
"reason": "RFC 0169
|
|
1747
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1741
1748
|
},
|
|
1742
1749
|
{
|
|
1743
1750
|
"key": "knowledge",
|
|
@@ -1754,7 +1761,7 @@
|
|
|
1754
1761
|
"floorScenarios": [],
|
|
1755
1762
|
"requirementIds": [],
|
|
1756
1763
|
"owningRfc": "0144",
|
|
1757
|
-
"reason": "RFC 0169
|
|
1764
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1758
1765
|
},
|
|
1759
1766
|
{
|
|
1760
1767
|
"key": "launchStudio",
|
|
@@ -1771,7 +1778,7 @@
|
|
|
1771
1778
|
"floorScenarios": [],
|
|
1772
1779
|
"requirementIds": [],
|
|
1773
1780
|
"owningRfc": "0144",
|
|
1774
|
-
"reason": "RFC 0169
|
|
1781
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1775
1782
|
},
|
|
1776
1783
|
{
|
|
1777
1784
|
"key": "messaging",
|
|
@@ -1788,7 +1795,7 @@
|
|
|
1788
1795
|
"floorScenarios": [],
|
|
1789
1796
|
"requirementIds": [],
|
|
1790
1797
|
"owningRfc": "0144",
|
|
1791
|
-
"reason": "RFC 0169
|
|
1798
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1792
1799
|
},
|
|
1793
1800
|
{
|
|
1794
1801
|
"key": "webResearch",
|
|
@@ -1805,7 +1812,7 @@
|
|
|
1805
1812
|
"floorScenarios": [],
|
|
1806
1813
|
"requirementIds": [],
|
|
1807
1814
|
"owningRfc": "0144",
|
|
1808
|
-
"reason": "RFC 0169
|
|
1815
|
+
"reason": "RFC 0169 \u00a7B.3 (RFC 0144 extension class; prose-only \u00a7host.* section in v1; served under extensions.openwop-app.* by the one host that has it)"
|
|
1809
1816
|
}
|
|
1810
1817
|
],
|
|
1811
1818
|
"profiles": [
|
|
@@ -1819,9 +1826,11 @@
|
|
|
1819
1826
|
]
|
|
1820
1827
|
},
|
|
1821
1828
|
"floorScenarios": [
|
|
1822
|
-
"
|
|
1829
|
+
"v2-capabilities-root-closed",
|
|
1830
|
+
"v2-preferred-version-default",
|
|
1831
|
+
"v2-version-header-honored"
|
|
1823
1832
|
],
|
|
1824
|
-
"note": "discovery only; the alias openwop-core is deleted (row C2.3)"
|
|
1833
|
+
"note": "discovery only; the alias openwop-core is deleted (row C2.3). Floor minted rc.45: the closed root, the preferredVersion default, and the header honoured-or-refused \u2014 each unaided. v2-well-known-one-resource is deliberately absent: it is inapplicable by design for a host advertising one major, which every host becomes at v1 end-of-support, and a floor that expires is not a floor."
|
|
1825
1834
|
},
|
|
1826
1835
|
{
|
|
1827
1836
|
"id": "openwop-core-standard",
|
|
@@ -1834,23 +1843,45 @@
|
|
|
1834
1843
|
"eventLog"
|
|
1835
1844
|
]
|
|
1836
1845
|
},
|
|
1837
|
-
"floorScenarios": [
|
|
1846
|
+
"floorScenarios": [
|
|
1847
|
+
"v2-interrupt-token-scheme",
|
|
1848
|
+
"v2-effect-seam-manifest",
|
|
1849
|
+
"v2-webhook-durable-delivery",
|
|
1850
|
+
"v2-idempotency-key-grammar",
|
|
1851
|
+
"v2-era-key",
|
|
1852
|
+
"v2-era-stamp-universal",
|
|
1853
|
+
"v2-event-type-closed",
|
|
1854
|
+
"v2-poll-cursor-v2",
|
|
1855
|
+
"v2-run-cancel",
|
|
1856
|
+
"v2-run-bulk-cancel",
|
|
1857
|
+
"v2-run-pause-resume",
|
|
1858
|
+
"v2-run-options-limits",
|
|
1859
|
+
"v2-sse-last-event-id"
|
|
1860
|
+
],
|
|
1838
1861
|
"requirementIds": [],
|
|
1839
|
-
"note": "seeded from spec/v1/core-standard-manifest.json at P3-B; the
|
|
1862
|
+
"note": "rc.59: five unaided run-surface witnesses joined the floor \u2014 v2-run-cancel (runs.md \u00a7Cancel: 409 run_terminal on a terminal run), v2-run-bulk-cancel (\u00a7Cancel: per-entry envelopes, id_tenant_mismatch / not_found, details.maxRunIds), v2-run-pause-resume (\u00a7Pause and resume: 409 run_terminal / run_state_conflict, the literal drainPolicy echo, the immediate cut), v2-run-options-limits (capabilities.md limits metadata honoured on create), v2-sse-last-event-id (events.md \u00a7SSE frames: Last-Event-ID resumes at the next sequence, never re-emits the resumption point). cancelRun, bulkCancelRuns and pauseRun are core operations by the runs.md surface table (only ancestry, annotations and eval-summary are 404-when-unadvertised), so a host that omits one is blocked, not inapplicable, and the floor refuses it \u2014 the prose's outcome. Their optional legs (values mode, the conformance-delay / conformance-cancellable fixtures) record inapplicable with the reason and the file row stays a witnessed pass. Measured before the change: the reference host passes all five (rc.58, 179 / 0 / 0 / 42); neither production host satisfies this predicate, so no existing claim moves. seeded from spec/v1/core-standard-manifest.json at P3-B; floor minted rc.45, one or more unaided witnesses per predicate family: interrupt (token scheme), replay (the effect-seam manifest \u2014 its seam-driven no-re-fire leg lives in v2-effect-seam-no-refire on the seams floor), webhooks (durable delivery), idempotency (Layer-1 key grammar), eventLog (era key, era stamp, closed event type, poll cursor). Deliberately absent: v2-pinned-run-disposition (seam-gated and opt-in), v2-v1-signed-webhook-accepted (a coexistence scenario, driven through the seam; the cut gate is its home), v2-effect-identity-business-key (retry leg seam-driven), v2-approver-enforced (conditional on the refKinds facet)."
|
|
1840
1863
|
},
|
|
1841
1864
|
{
|
|
1842
1865
|
"id": "openwop-conformance-seams-v2",
|
|
1843
1866
|
"predicate": {
|
|
1844
|
-
"families": []
|
|
1867
|
+
"families": [],
|
|
1868
|
+
"metadata": [
|
|
1869
|
+
"conformance"
|
|
1870
|
+
]
|
|
1845
1871
|
},
|
|
1846
|
-
"floorScenarios": [
|
|
1847
|
-
|
|
1872
|
+
"floorScenarios": [
|
|
1873
|
+
"v2-fork-a-v1-run",
|
|
1874
|
+
"v2-effect-identity-business-key",
|
|
1875
|
+
"v2-v1-signed-webhook-accepted",
|
|
1876
|
+
"v2-effect-seam-no-refire"
|
|
1877
|
+
],
|
|
1878
|
+
"note": "RFC 0168 \u00a7C.1 \u2014 the seams profile; its own api/seams-v2.yaml; forbidden from the capability namespace. Floor minted rc.45: the four scenarios driven through a seam. rc.62 CLAIM FIX: the predicate now requires `conformance` at the discovery root. Until rc.62 the predicate was EMPTY, and `claimedProfilesForV2` treats an empty predicate as vacuously satisfied, so this profile was CLAIMED BY EVERY v2 HOST \u2014 including two production hosts that never advertised it and carried it at `certified: false`. A profile claimed by a host that never advertised it is a claim the host did not make. The predicate is deliberately NECESSARY, not sufficient: it tests that a `conformance` block exists, while the exact advert (`conformance.seamsProfile === openwop-conformance-seams-v2`) is tested per scenario by `seamsProfileAdvertised`. The two compose honestly \u2014 no conformance block means NOT CLAIMED; a block naming some other profile means claimed, every floor row `inapplicable`, witnessCount 0, and therefore not certified and not blocked. This profile is the instrument, not a capability predicate: each floor file is ALSO gated on the family it witnesses (fork-a-v1-run and effect-seam-no-refire on replay, effect-identity-business-key on idempotency, v1-signed-webhook-accepted on webhooks), records `inapplicable` when that family is absent, and the profile certifies only on a witnessed pass \u2014 a seams host advertising none of those families witnesses nothing through the seam and certifies nothing."
|
|
1848
1879
|
}
|
|
1849
1880
|
],
|
|
1850
1881
|
"aliases": {
|
|
1851
1882
|
"host.webSearch": {
|
|
1852
1883
|
"family": "webResearch",
|
|
1853
|
-
"note": "two spellings of one
|
|
1884
|
+
"note": "two spellings of one \u00a7host.* section in published manifests (1 use); the section is webResearch"
|
|
1854
1885
|
},
|
|
1855
1886
|
"host.campaignMessaging": {
|
|
1856
1887
|
"family": "messaging",
|