@oods/component-contracts 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oods/component-contracts",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Component contracts for OODS Foundry: each component's identity, props, events, states, token roles and accessibility obligations, with shared formatting helpers.",
5
5
  "homepage": "https://oods-foundry.com/",
6
6
  "bugs": {
@@ -3,6 +3,78 @@
3
3
  "kind": "component-capability-additions",
4
4
  "decisionId": 2054,
5
5
  "rows": [
6
+ {
7
+ "id": "Combobox",
8
+ "proposedClassification": "native",
9
+ "reconciliationState": "proposed-awaiting-approval",
10
+ "surfaces": {
11
+ "contract": {
12
+ "state": "versioned-v1",
13
+ "evidence": [
14
+ "packages/component-contracts/src/contracts.ts#Combobox"
15
+ ]
16
+ },
17
+ "metadata": {
18
+ "state": "available",
19
+ "evidence": [
20
+ "packages/component-contracts/registry/component-intake.v1.json#Combobox"
21
+ ]
22
+ },
23
+ "html": {
24
+ "state": "mapped",
25
+ "evidence": [
26
+ "packages/mcp-server/src/render/component-map.ts#renderCombobox"
27
+ ]
28
+ },
29
+ "react": {
30
+ "state": "implemented-evidence-complete",
31
+ "evidence": [
32
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox"
33
+ ]
34
+ },
35
+ "vue": {
36
+ "state": "implemented-evidence-complete",
37
+ "evidence": [
38
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
39
+ ]
40
+ },
41
+ "generatedConsumer": {
42
+ "state": "unavailable",
43
+ "evidence": [
44
+ "artifacts/product-reality/sprint-193/m07/runtime/runtime-cells.v1.json"
45
+ ],
46
+ "reason": "No current runtime cell places this component; historical receipts do not establish current coverage."
47
+ },
48
+ "accessibility": {
49
+ "state": "verified",
50
+ "evidence": [
51
+ "artifacts/product-reality/sprint-223/m02/combobox/react-measured.json#Combobox",
52
+ "artifacts/product-reality/sprint-223/m02/combobox/vue-measured.json#Combobox",
53
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox",
54
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
55
+ ]
56
+ },
57
+ "theme": {
58
+ "state": "verified",
59
+ "evidence": [
60
+ "artifacts/product-reality/sprint-223/m02/combobox/react-theme/report.json#Combobox",
61
+ "artifacts/product-reality/sprint-223/m02/combobox/vue-theme/report.json#Combobox",
62
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox",
63
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
64
+ ]
65
+ },
66
+ "interaction": {
67
+ "state": "verified",
68
+ "evidence": [
69
+ "artifacts/product-reality/sprint-223/m02/combobox/react-measured.json#Combobox",
70
+ "artifacts/product-reality/sprint-223/m02/combobox/vue-measured.json#Combobox",
71
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox",
72
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
73
+ ]
74
+ }
75
+ },
76
+ "decisionId": 2527
77
+ },
6
78
  {
7
79
  "id": "Dialog",
8
80
  "proposedClassification": "native",
@@ -75,6 +147,78 @@
75
147
  },
76
148
  "decisionId": 2502
77
149
  },
150
+ {
151
+ "id": "SegmentedControl",
152
+ "proposedClassification": "native",
153
+ "reconciliationState": "proposed-awaiting-approval",
154
+ "surfaces": {
155
+ "contract": {
156
+ "state": "versioned-v1",
157
+ "evidence": [
158
+ "packages/component-contracts/src/contracts.ts#SegmentedControl"
159
+ ]
160
+ },
161
+ "metadata": {
162
+ "state": "available",
163
+ "evidence": [
164
+ "packages/component-contracts/registry/component-intake.v1.json#SegmentedControl"
165
+ ]
166
+ },
167
+ "html": {
168
+ "state": "mapped",
169
+ "evidence": [
170
+ "packages/mcp-server/src/render/component-map.ts#renderSegmentedControl"
171
+ ]
172
+ },
173
+ "react": {
174
+ "state": "implemented-evidence-complete",
175
+ "evidence": [
176
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl"
177
+ ]
178
+ },
179
+ "vue": {
180
+ "state": "implemented-evidence-complete",
181
+ "evidence": [
182
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
183
+ ]
184
+ },
185
+ "generatedConsumer": {
186
+ "state": "unavailable",
187
+ "evidence": [
188
+ "artifacts/product-reality/sprint-193/m07/runtime/runtime-cells.v1.json"
189
+ ],
190
+ "reason": "No current runtime cell places this component; historical receipts do not establish current coverage."
191
+ },
192
+ "accessibility": {
193
+ "state": "verified",
194
+ "evidence": [
195
+ "artifacts/product-reality/sprint-223/m02/segmented-control/react-measured.json#SegmentedControl",
196
+ "artifacts/product-reality/sprint-223/m02/segmented-control/vue-measured.json#SegmentedControl",
197
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl",
198
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
199
+ ]
200
+ },
201
+ "theme": {
202
+ "state": "verified",
203
+ "evidence": [
204
+ "artifacts/product-reality/sprint-223/m02/segmented-control/react-theme/report.json#SegmentedControl",
205
+ "artifacts/product-reality/sprint-223/m02/segmented-control/vue-theme/report.json#SegmentedControl",
206
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl",
207
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
208
+ ]
209
+ },
210
+ "interaction": {
211
+ "state": "verified",
212
+ "evidence": [
213
+ "artifacts/product-reality/sprint-223/m02/segmented-control/react-measured.json#SegmentedControl",
214
+ "artifacts/product-reality/sprint-223/m02/segmented-control/vue-measured.json#SegmentedControl",
215
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl",
216
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
217
+ ]
218
+ }
219
+ },
220
+ "decisionId": 2527
221
+ },
78
222
  {
79
223
  "id": "Switch",
80
224
  "proposedClassification": "native",
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": "1.0.0",
3
3
  "kind": "component-capability-ledger",
4
4
  "generatedAt": "2026-09-11T05:30:00Z",
5
- "controllingObligationDenominator": 112,
5
+ "controllingObligationDenominator": 114,
6
6
  "approvedRuntimeCensus": null,
7
7
  "source": "refresh_structured_data.py#project_measured_surfaces",
8
8
  "rows": [
@@ -2711,6 +2711,77 @@
2711
2711
  }
2712
2712
  }
2713
2713
  },
2714
+ {
2715
+ "id": "Combobox",
2716
+ "proposedClassification": "native",
2717
+ "reconciliationState": "proposed-awaiting-approval",
2718
+ "surfaces": {
2719
+ "contract": {
2720
+ "state": "versioned-v1",
2721
+ "evidence": [
2722
+ "packages/component-contracts/src/contracts.ts#Combobox"
2723
+ ]
2724
+ },
2725
+ "metadata": {
2726
+ "state": "available",
2727
+ "evidence": [
2728
+ "packages/component-contracts/registry/component-intake.v1.json#Combobox"
2729
+ ]
2730
+ },
2731
+ "html": {
2732
+ "state": "mapped",
2733
+ "evidence": [
2734
+ "packages/mcp-server/src/render/component-map.ts#renderCombobox"
2735
+ ]
2736
+ },
2737
+ "react": {
2738
+ "state": "implemented-evidence-complete",
2739
+ "evidence": [
2740
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox"
2741
+ ]
2742
+ },
2743
+ "vue": {
2744
+ "state": "implemented-evidence-complete",
2745
+ "evidence": [
2746
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
2747
+ ]
2748
+ },
2749
+ "generatedConsumer": {
2750
+ "state": "unavailable",
2751
+ "evidence": [
2752
+ "artifacts/product-reality/sprint-193/m07/runtime/runtime-cells.v1.json"
2753
+ ],
2754
+ "reason": "No current runtime cell places this component; historical receipts do not establish current coverage."
2755
+ },
2756
+ "accessibility": {
2757
+ "state": "verified",
2758
+ "evidence": [
2759
+ "artifacts/product-reality/sprint-223/m02/combobox/react-measured.json#Combobox",
2760
+ "artifacts/product-reality/sprint-223/m02/combobox/vue-measured.json#Combobox",
2761
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox",
2762
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
2763
+ ]
2764
+ },
2765
+ "theme": {
2766
+ "state": "verified",
2767
+ "evidence": [
2768
+ "artifacts/product-reality/sprint-223/m02/combobox/react-theme/report.json#Combobox",
2769
+ "artifacts/product-reality/sprint-223/m02/combobox/vue-theme/report.json#Combobox",
2770
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox",
2771
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
2772
+ ]
2773
+ },
2774
+ "interaction": {
2775
+ "state": "verified",
2776
+ "evidence": [
2777
+ "artifacts/product-reality/sprint-223/m02/combobox/react-measured.json#Combobox",
2778
+ "artifacts/product-reality/sprint-223/m02/combobox/vue-measured.json#Combobox",
2779
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox",
2780
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox"
2781
+ ]
2782
+ }
2783
+ }
2784
+ },
2714
2785
  {
2715
2786
  "id": "CommunicationDetailPanel",
2716
2787
  "proposedClassification": "recipe",
@@ -5762,6 +5833,77 @@
5762
5833
  }
5763
5834
  }
5764
5835
  },
5836
+ {
5837
+ "id": "SegmentedControl",
5838
+ "proposedClassification": "native",
5839
+ "reconciliationState": "proposed-awaiting-approval",
5840
+ "surfaces": {
5841
+ "contract": {
5842
+ "state": "versioned-v1",
5843
+ "evidence": [
5844
+ "packages/component-contracts/src/contracts.ts#SegmentedControl"
5845
+ ]
5846
+ },
5847
+ "metadata": {
5848
+ "state": "available",
5849
+ "evidence": [
5850
+ "packages/component-contracts/registry/component-intake.v1.json#SegmentedControl"
5851
+ ]
5852
+ },
5853
+ "html": {
5854
+ "state": "mapped",
5855
+ "evidence": [
5856
+ "packages/mcp-server/src/render/component-map.ts#renderSegmentedControl"
5857
+ ]
5858
+ },
5859
+ "react": {
5860
+ "state": "implemented-evidence-complete",
5861
+ "evidence": [
5862
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl"
5863
+ ]
5864
+ },
5865
+ "vue": {
5866
+ "state": "implemented-evidence-complete",
5867
+ "evidence": [
5868
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
5869
+ ]
5870
+ },
5871
+ "generatedConsumer": {
5872
+ "state": "unavailable",
5873
+ "evidence": [
5874
+ "artifacts/product-reality/sprint-193/m07/runtime/runtime-cells.v1.json"
5875
+ ],
5876
+ "reason": "No current runtime cell places this component; historical receipts do not establish current coverage."
5877
+ },
5878
+ "accessibility": {
5879
+ "state": "verified",
5880
+ "evidence": [
5881
+ "artifacts/product-reality/sprint-223/m02/segmented-control/react-measured.json#SegmentedControl",
5882
+ "artifacts/product-reality/sprint-223/m02/segmented-control/vue-measured.json#SegmentedControl",
5883
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl",
5884
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
5885
+ ]
5886
+ },
5887
+ "theme": {
5888
+ "state": "verified",
5889
+ "evidence": [
5890
+ "artifacts/product-reality/sprint-223/m02/segmented-control/react-theme/report.json#SegmentedControl",
5891
+ "artifacts/product-reality/sprint-223/m02/segmented-control/vue-theme/report.json#SegmentedControl",
5892
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl",
5893
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
5894
+ ]
5895
+ },
5896
+ "interaction": {
5897
+ "state": "verified",
5898
+ "evidence": [
5899
+ "artifacts/product-reality/sprint-223/m02/segmented-control/react-measured.json#SegmentedControl",
5900
+ "artifacts/product-reality/sprint-223/m02/segmented-control/vue-measured.json#SegmentedControl",
5901
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl",
5902
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl"
5903
+ ]
5904
+ }
5905
+ }
5906
+ },
5765
5907
  {
5766
5908
  "id": "Select",
5767
5909
  "proposedClassification": "native",
@@ -3,7 +3,7 @@
3
3
  "kind": "component-intake",
4
4
  "baselineCommit": "ae560bc22969c1fd81336730be4330c9115fc316",
5
5
  "planningCommit": "8ce349076e7e3ba3f0b2f3f667d4fbb5c6a4b63b",
6
- "controllingObligationDenominator": 112,
6
+ "controllingObligationDenominator": 114,
7
7
  "countRule": "Derived from the unique, deterministically sorted rows array; never from an independent counter.",
8
8
  "rows": [
9
9
  {
@@ -934,6 +934,38 @@
934
934
  "traits/visual/Colorized.trait.yaml"
935
935
  ]
936
936
  },
937
+ {
938
+ "id": "Combobox",
939
+ "displayName": "Combobox",
940
+ "baselineMetadata": {
941
+ "categories": [
942
+ "primitive"
943
+ ],
944
+ "tags": [
945
+ "autocomplete",
946
+ "combobox",
947
+ "field",
948
+ "filter",
949
+ "form",
950
+ "input",
951
+ "interactive",
952
+ "primitive",
953
+ "select"
954
+ ],
955
+ "contexts": [
956
+ "form"
957
+ ],
958
+ "regions": [
959
+ "form",
960
+ "main"
961
+ ]
962
+ },
963
+ "intakeEvidence": [
964
+ "packages/component-contracts/src/contracts.ts#Combobox",
965
+ "packages/mcp-server/src/render/component-map.ts#renderCombobox"
966
+ ],
967
+ "addedBy": "s223-m02; decision #2527 ruling 11"
968
+ },
937
969
  {
938
970
  "id": "CommunicationDetailPanel",
939
971
  "displayName": "CommunicationDetailPanel",
@@ -1919,6 +1951,37 @@
1919
1951
  "traits/behavioral/Searchable.trait.yaml"
1920
1952
  ]
1921
1953
  },
1954
+ {
1955
+ "id": "SegmentedControl",
1956
+ "displayName": "SegmentedControl",
1957
+ "baselineMetadata": {
1958
+ "categories": [
1959
+ "primitive"
1960
+ ],
1961
+ "tags": [
1962
+ "choice",
1963
+ "field",
1964
+ "form",
1965
+ "input",
1966
+ "interactive",
1967
+ "primitive",
1968
+ "radio",
1969
+ "segmented-control"
1970
+ ],
1971
+ "contexts": [
1972
+ "form"
1973
+ ],
1974
+ "regions": [
1975
+ "form",
1976
+ "main"
1977
+ ]
1978
+ },
1979
+ "intakeEvidence": [
1980
+ "packages/component-contracts/src/contracts.ts#SegmentedControl",
1981
+ "packages/mcp-server/src/render/component-map.ts#renderSegmentedControl"
1982
+ ],
1983
+ "addedBy": "s223-m02; decision #2527 ruling 10"
1984
+ },
1922
1985
  {
1923
1986
  "id": "Select",
1924
1987
  "displayName": "Select",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "decisionId": 2502,
3
+ "decisionId": 2527,
4
4
  "disposition": "retain-all-obligations",
5
- "controllingObligationDenominator": 112,
5
+ "controllingObligationDenominator": 114,
6
6
  "approvedRuntimeCensus": null,
7
7
  "classificationStatus": "proposed-awaiting-approval"
8
8
  }
@@ -4,9 +4,9 @@
4
4
  "baselineCommit": "a5638cf819bdadb86e2336c4aabe9b2184699c13",
5
5
  "planningCommit": "8ce349076e7e3ba3f0b2f3f667d4fbb5c6a4b63b",
6
6
  "status": "proposed-awaiting-approval",
7
- "controllingObligationDenominator": 112,
7
+ "controllingObligationDenominator": 114,
8
8
  "approvedRuntimeCensus": null,
9
- "proposedRuntimeCensus": 112,
9
+ "proposedRuntimeCensus": 114,
10
10
  "rows": [
11
11
  {
12
12
  "id": "AddressCollectionPanel",
@@ -646,6 +646,25 @@
646
646
  "implementationStatus": "implemented-evidence-complete",
647
647
  "compatibilityNote": "Retain the named public ID and existing HTML discovery contract. Governed framework implementation and measurements are linked; classification remains a proposal."
648
648
  },
649
+ {
650
+ "id": "Combobox",
651
+ "proposedClassification": "native",
652
+ "approvalState": "pending-approval",
653
+ "evidence": [
654
+ "packages/mcp-server/src/render/component-map.ts#renderCombobox",
655
+ "packages/components-react/evidence/react-readiness.v1.json#Combobox",
656
+ "packages/components-vue/evidence/vue-readiness.v1.json#Combobox",
657
+ "packages/component-contracts/src/contracts.ts#Combobox"
658
+ ],
659
+ "implementationStatus": "implemented-evidence-complete",
660
+ "proposedResolution": {
661
+ "surface": "react+vue+html",
662
+ "implementation": "Combobox",
663
+ "source": "packages/component-contracts/src/contracts.ts",
664
+ "publicIdRetained": true
665
+ },
666
+ "compatibilityNote": "New public identity added by decision #2527 (ruling 11). Governed framework implementation and measurements are linked; classification remains a proposal."
667
+ },
649
668
  {
650
669
  "id": "CommunicationDetailPanel",
651
670
  "proposedClassification": "recipe",
@@ -1359,6 +1378,25 @@
1359
1378
  "implementationStatus": "implemented-evidence-complete",
1360
1379
  "compatibilityNote": "Retain the named public ID and existing HTML discovery contract. Governed framework implementation and measurements are linked; classification remains a proposal."
1361
1380
  },
1381
+ {
1382
+ "id": "SegmentedControl",
1383
+ "proposedClassification": "native",
1384
+ "approvalState": "pending-approval",
1385
+ "evidence": [
1386
+ "packages/mcp-server/src/render/component-map.ts#renderSegmentedControl",
1387
+ "packages/components-react/evidence/react-readiness.v1.json#SegmentedControl",
1388
+ "packages/components-vue/evidence/vue-readiness.v1.json#SegmentedControl",
1389
+ "packages/component-contracts/src/contracts.ts#SegmentedControl"
1390
+ ],
1391
+ "implementationStatus": "implemented-evidence-complete",
1392
+ "proposedResolution": {
1393
+ "surface": "react+vue+html",
1394
+ "implementation": "SegmentedControl",
1395
+ "source": "packages/component-contracts/src/contracts.ts",
1396
+ "publicIdRetained": true
1397
+ },
1398
+ "compatibilityNote": "New public identity added by decision #2527 (ruling 10). Governed framework implementation and measurements are linked; classification remains a proposal."
1399
+ },
1362
1400
  {
1363
1401
  "id": "Select",
1364
1402
  "proposedClassification": "native",