@fuaran-ui/conformance 0.3.0 → 0.5.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.
@@ -1 +1 @@
1
- {"id":"len-460-g","kind":{"$type":"DataGrid","columns":[{"kind":{"$type":"Text"},"label":"Channel"}],"source":{"$type":"Static","value":"<opaque>"}}}
1
+ {"id":"len-460-g","kind":{"$type":"DataGrid","columns":[{"kind":{"$type":"Text"},"label":"Channel"}],"source":{"$type":"Static","value":[]}}}
@@ -0,0 +1 @@
1
+ {"id":"len-rows-opq","kind":{"$type":"DataGrid","columns":[{"field":"dept","kind":{"$type":"Text"},"label":"Dept"}],"rowKeyField":"dept","source":{"$type":"State","defaultValue":[],"key":"rows"}}}
@@ -0,0 +1 @@
1
+ {"id":"len-rows-opq","kind":{"$type":"DataGrid","columns":[{"field":"dept","kind":{"$type":"Text"},"label":"Dept"}],"rowKeyField":"dept","source":{"$type":"State","defaultValue":"<opaque>","key":"rows"}}}
@@ -1 +1 @@
1
- {"id":"len-dg","kind":{"$type":"DataGrid","columns":[{"field":"name","kind":{"$type":"Text"},"label":"Name"}],"source":{"$type":"Static","value":"<opaque>"}}}
1
+ {"id":"len-dg","kind":{"$type":"DataGrid","columns":[{"field":"name","kind":{"$type":"Text"},"label":"Name"}],"source":{"$type":"Static","value":[{"name":"A"}]}}}
@@ -0,0 +1 @@
1
+ {"id":"shipments","kind":{"$type":"DataGrid","columns":[{"field":"status","kind":{"$type":"TonedPill","field":"status","map":{"Delayed":"Warning"}},"label":"Status"}],"rowKeyField":"status","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"status":{"validity":[true],"values":["Delayed"]}},"schema":[{"name":"status","type":"string"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"shipments","kind":{"$type":"DataGrid","columns":[{"field":"status","kind":{"$type":"Pill","field":"status","map":{"Delayed":"Warning"}},"label":"Status"}],"rowKeyField":"status","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"status":{"validity":[true],"values":["Delayed"]}},"schema":[{"name":"status","type":"string"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"shipments","kind":{"$type":"DataGrid","columns":[{"field":"status","kind":{"$type":"TonedPill","field":"status","map":{"Cancelled":"Critical","On time":"Success"}},"label":"Status"}],"rowKeyField":"status","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"status":{"validity":[true],"values":["Delayed"]}},"schema":[{"name":"status","type":"string"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"shipments","kind":{"$type":"DataGrid","columns":[{"field":"status","kind":{"$type":"TonedPill","default":"Neutral","field":"status","map":{"Cancelled":"Danger","On time":"Positive"}},"label":"Status"}],"rowKeyField":"status","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"status":{"validity":[true],"values":["Delayed"]}},"schema":[{"name":"status","type":"string"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"shipments","kind":{"$type":"DataGrid","columns":[{"field":"status","kind":{"$type":"TonedPill","field":"status","map":{"Delayed":"Warning"}},"label":"Status"}],"rowKeyField":"status","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"status":{"validity":[true],"values":["Delayed"]}},"schema":[{"name":"status","type":"string"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"shipments","kind":{"$type":"DataGrid","columns":[{"field":"status","kind":{"$type":"TonedPill","field":"status","toneMap":{"Delayed":"Warning"}},"label":"Status"}],"rowKeyField":"status","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"status":{"validity":[true],"values":["Delayed"]}},"schema":[{"name":"status","type":"string"}]}}}}
@@ -464,6 +464,14 @@
464
464
  "expectedFile": "lenient/lenient-596-form-explicit-auto-state.expected.json",
465
465
  "description": "Phase 596 — a form field's explicit auto-shape value (State(field id, placeholder)) normalises to the omitted-value canonical form"
466
466
  },
467
+ {
468
+ "id": "lenient-665-rows-opaque-sentinel",
469
+ "kind": "lenient-accept",
470
+ "decoder": "node",
471
+ "inputFile": "lenient/lenient-665-rows-opaque-sentinel.json",
472
+ "expectedFile": "lenient/lenient-665-rows-opaque-sentinel.expected.json",
473
+ "description": "fuaran#665 read-compat: the legacy \"<opaque>\" rows sentinel decodes to the empty typed feed and re-encodes as []"
474
+ },
467
475
  {
468
476
  "id": "lenient-alias-call-url",
469
477
  "kind": "lenient-accept",
@@ -728,6 +736,30 @@
728
736
  "expectedFile": "lenient/lenient-shape-static-envelope-plain-scalars.expected.json",
729
737
  "description": "Static-envelope unwrap GENERALISED to every plain-scalar position (2026-07-18 — the 0.1.6 pilot found `emphasis` wrapped after `indeterminate` was fixed site-locally; the confusion is generic). A well-formed envelope at a plain-scalar position has exactly one reading; the encoder still emits bare scalars."
730
738
  },
739
+ {
740
+ "id": "lenient-tonedpill-pill-tag",
741
+ "kind": "lenient-accept",
742
+ "decoder": "node",
743
+ "inputFile": "lenient/lenient-tonedpill-pill-tag.json",
744
+ "expectedFile": "lenient/lenient-tonedpill-pill-tag.expected.json",
745
+ "description": "Phase 750 — a `Pill` cell carrying `field` + `map` normalises to `TonedPill`; before this the declarative fields were silently DROPPED into a closure pill (the author's intent lost with no error)"
746
+ },
747
+ {
748
+ "id": "lenient-tonedpill-tone-aliases",
749
+ "kind": "lenient-accept",
750
+ "decoder": "node",
751
+ "inputFile": "lenient/lenient-tonedpill-tone-aliases.json",
752
+ "expectedFile": "lenient/lenient-tonedpill-tone-aliases.expected.json",
753
+ "description": "Phase 750 — the Phase 460 tone aliases apply inside a TonedPill `map` (Danger→Critical, Positive→Success) and in its `default` (Neutral→Default, which then omits)"
754
+ },
755
+ {
756
+ "id": "lenient-tonedpill-tonemap-alias",
757
+ "kind": "lenient-accept",
758
+ "decoder": "node",
759
+ "inputFile": "lenient/lenient-tonedpill-tonemap-alias.json",
760
+ "expectedFile": "lenient/lenient-tonedpill-tonemap-alias.expected.json",
761
+ "description": "Phase 750 — `toneMap` (and `tones`) alias the canonical `map` on a TonedPill cell, the `header`/`title`→`label` field-alias device"
762
+ },
731
763
  {
732
764
  "id": "lenient-transform-bare-columns",
733
765
  "kind": "lenient-accept",
@@ -904,6 +936,14 @@
904
936
  "expectedFile": "nodes/chart-1.json",
905
937
  "description": "Visualisation/Chart"
906
938
  },
939
+ {
940
+ "id": "chart-state-rows",
941
+ "kind": "node-round-trip",
942
+ "decoder": "node",
943
+ "inputFile": "nodes/chart-state-rows.json",
944
+ "expectedFile": "nodes/chart-state-rows.json",
945
+ "description": "Visualisation/Chart (Phase 663/665 — chart on the editable grid's state key)"
946
+ },
907
947
  {
908
948
  "id": "code-1",
909
949
  "kind": "node-round-trip",
@@ -1192,6 +1232,14 @@
1192
1232
  "expectedFile": "nodes/grid-1.json",
1193
1233
  "description": "Visualisation/Grid"
1194
1234
  },
1235
+ {
1236
+ "id": "grid-editable-state",
1237
+ "kind": "node-round-trip",
1238
+ "decoder": "node",
1239
+ "inputFile": "nodes/grid-editable-state.json",
1240
+ "expectedFile": "nodes/grid-editable-state.json",
1241
+ "description": "Visualisation/Grid (Phase 663/665 — editable State-sourced grid, typed rows on the wire)"
1242
+ },
1195
1243
  {
1196
1244
  "id": "grid-field-named",
1197
1245
  "kind": "node-round-trip",
@@ -1200,6 +1248,14 @@
1200
1248
  "expectedFile": "nodes/grid-field-named.json",
1201
1249
  "description": "Visualisation/Grid (Phase 425 — field-named columns + RowKeyField, closure-free)"
1202
1250
  },
1251
+ {
1252
+ "id": "grid-toned-pill",
1253
+ "kind": "node-round-trip",
1254
+ "decoder": "node",
1255
+ "inputFile": "nodes/grid-toned-pill.json",
1256
+ "expectedFile": "nodes/grid-toned-pill.json",
1257
+ "description": "Visualisation/Grid (Phase 750 — TonedPill: value-conditional cell tone declared as a value→tone map)"
1258
+ },
1203
1259
  {
1204
1260
  "id": "grid-transform",
1205
1261
  "kind": "node-round-trip",
@@ -1939,6 +1995,15 @@
1939
1995
  "expectedPath": "$.path",
1940
1996
  "description": "UpdateProp missing path"
1941
1997
  },
1998
+ {
1999
+ "id": "reject-tonedpill-unknown-tone",
2000
+ "kind": "reject",
2001
+ "decoder": "node",
2002
+ "inputFile": "reject/reject-tonedpill-unknown-tone.json",
2003
+ "expectedErrorCode": "UNKNOWN_DU_CASE",
2004
+ "expectedPath": "$.kind.columns[0].kind.map.Delayed",
2005
+ "description": "TonedPill tone-map value outside ToneVariant — the message names the seven legal tones (Phase 750)"
2006
+ },
1942
2007
  {
1943
2008
  "id": "reject-unknown-binding",
1944
2009
  "kind": "reject",
@@ -1 +1 @@
1
- {"id":"chart-1","kind":{"$type":"Chart","kind":"Line","source":{"$type":"Static","value":"<opaque>"},"stacked":true,"title":"Channel mix","xField":"month","yFields":["revenue","cost"]}}
1
+ {"id":"chart-1","kind":{"$type":"Chart","kind":"Line","source":{"$type":"Static","value":[{"cost":420,"month":"Jan","revenue":980},{"cost":390,"month":"Feb","revenue":1105}]},"stacked":true,"title":"Channel mix","xField":"month","yFields":["revenue","cost"]}}
@@ -0,0 +1 @@
1
+ {"id":"chart-state-rows","kind":{"$type":"Chart","kind":"Bar","source":{"$type":"State","defaultValue":[{"month":"Jan","revenue":980},{"month":"Feb","revenue":1105}],"key":"planRows"},"stacked":false,"xField":"month","yFields":["revenue"]}}
@@ -1 +1 @@
1
- {"id":"grid-1","kind":{"$type":"DataGrid","columns":[{"kind":{"$type":"Text"},"label":"Channel","value":"<closure>"}],"rowKey":"<closure>","source":{"$type":"Static","value":"<opaque>"}}}
1
+ {"id":"grid-1","kind":{"$type":"DataGrid","columns":[{"kind":{"$type":"Text"},"label":"Channel","value":"<closure>"}],"rowKey":"<closure>","source":{"$type":"Static","value":[{"channel":"Direct","revenue":1200},{"channel":"Referral","revenue":830}]}}}
@@ -0,0 +1 @@
1
+ {"id":"grid-editable-state","kind":{"$type":"DataGrid","columns":[{"field":"month","kind":{"$type":"Text"},"label":"Month"},{"field":"revenue","kind":{"$type":"Numeric"},"label":"Revenue"}],"editable":true,"rowKeyField":"month","source":{"$type":"State","defaultValue":[{"month":"Jan","revenue":980},{"month":"Feb","revenue":1105}],"key":"planRows"}}}
@@ -0,0 +1 @@
1
+ {"id":"grid-toned-pill","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Shipment"},{"field":"carrier","kind":{"$type":"TonedPill","field":"carrier","map":{"Meridian":"Info"}},"label":"Carrier"},{"field":"status","kind":{"$type":"TonedPill","default":"Subdued","field":"status","map":{"Cancelled":"Critical","Delayed":"Warning","On time":"Success"}},"label":"Status"}],"rowKeyField":"id","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"carrier":{"validity":[true,true,true],"values":["Northwind","Meridian","Northwind"]},"id":{"validity":[true,true,true],"values":["SHP-1001","SHP-1002","SHP-1003"]},"status":{"validity":[true,true,true],"values":["On time","Delayed","Cancelled"]}},"schema":[{"name":"id","type":"string"},{"name":"carrier","type":"string"},{"name":"status","type":"string"}]}}}}
@@ -1 +1 @@
1
- {"id":"table-1","kind":{"$type":"DataGrid","columns":[],"source":{"$type":"Static","value":"<opaque>"},"staticRows":{"headers":["Term","Definition"],"rows":[["MVU","Model-View-Update"],["DSL","Domain-specific language"]]}}}
1
+ {"id":"table-1","kind":{"$type":"DataGrid","columns":[],"source":{"$type":"Static","value":[]},"staticRows":{"headers":["Term","Definition"],"rows":[["MVU","Model-View-Update"],["DSL","Domain-specific language"]]}}}
@@ -0,0 +1 @@
1
+ {"id":"g1","kind":{"$type":"DataGrid","columns":[{"field":"status","kind":{"$type":"TonedPill","field":"status","map":{"Delayed":"Urgent"}},"label":"Status"}],"rowKeyField":"status","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"status":{"validity":[true],"values":["Delayed"]}},"schema":[{"name":"status","type":"string"}]}}}}
@@ -1496,6 +1496,31 @@
1496
1496
  "toneFn"
1497
1497
  ]
1498
1498
  },
1499
+ {
1500
+ "type": "object",
1501
+ "properties": {
1502
+ "$type": {
1503
+ "const": "TonedPill"
1504
+ },
1505
+ "default": {
1506
+ "$ref": "#/$defs/ToneVariant"
1507
+ },
1508
+ "field": {
1509
+ "type": "string"
1510
+ },
1511
+ "map": {
1512
+ "type": "object",
1513
+ "additionalProperties": {
1514
+ "$ref": "#/$defs/ToneVariant"
1515
+ }
1516
+ }
1517
+ },
1518
+ "required": [
1519
+ "$type",
1520
+ "field",
1521
+ "map"
1522
+ ]
1523
+ },
1499
1524
  {
1500
1525
  "type": "object",
1501
1526
  "properties": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuaran-ui/conformance",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Third-party certification kit for the Fuaran UI wire format — runs any candidate implementation (via a small decode/encode adapter) over the bundled canonical fixture corpus and emits a per-leg pass/fail conformance report naming the corpus version. See CONFORMANCE.md for the certification procedure.",
5
5
  "keywords": [
6
6
  "fuaran",
@@ -43,8 +43,8 @@
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^22.10.2",
46
- "@fuaran-ui/ops": "0.3.0",
47
- "@fuaran-ui/schema": "0.3.0"
46
+ "@fuaran-ui/ops": "0.5.0",
47
+ "@fuaran-ui/schema": "0.5.0"
48
48
  },
49
49
  "publishConfig": {
50
50
  "access": "public"