@fuaran-ui/conformance 0.2.0 → 0.4.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 (32) hide show
  1. package/corpus/lenient/lenient-daterange-bare-array.expected.json +1 -0
  2. package/corpus/lenient/lenient-daterange-bare-array.json +1 -0
  3. package/corpus/lenient/lenient-daterange-static-envelope.expected.json +1 -0
  4. package/corpus/lenient/lenient-daterange-static-envelope.json +1 -0
  5. package/corpus/lenient/lenient-filterable-static-dashboard-compact.expected.json +1 -0
  6. package/corpus/lenient/lenient-filterable-static-dashboard-compact.json +1 -0
  7. package/corpus/lenient/lenient-grid-field-named-compact.expected.json +1 -0
  8. package/corpus/lenient/lenient-grid-field-named-compact.json +1 -0
  9. package/corpus/lenient/lenient-grid-transform-param-compact.expected.json +1 -0
  10. package/corpus/lenient/lenient-grid-transform-param-compact.json +1 -0
  11. package/corpus/lenient/lenient-master-detail-preselected-compact.expected.json +1 -0
  12. package/corpus/lenient/lenient-master-detail-preselected-compact.json +1 -0
  13. package/corpus/lenient/lenient-scalar-transform-composition-compact.expected.json +1 -0
  14. package/corpus/lenient/lenient-scalar-transform-composition-compact.json +1 -0
  15. package/corpus/lenient/lenient-tonedpill-pill-tag.expected.json +1 -0
  16. package/corpus/lenient/lenient-tonedpill-pill-tag.json +1 -0
  17. package/corpus/lenient/lenient-tonedpill-tone-aliases.expected.json +1 -0
  18. package/corpus/lenient/lenient-tonedpill-tone-aliases.json +1 -0
  19. package/corpus/lenient/lenient-tonedpill-tonemap-alias.expected.json +1 -0
  20. package/corpus/lenient/lenient-tonedpill-tonemap-alias.json +1 -0
  21. package/corpus/manifest.json +143 -1
  22. package/corpus/nodes/filters-date-range.json +1 -0
  23. package/corpus/nodes/form-date-range.json +1 -0
  24. package/corpus/nodes/grid-toned-pill.json +1 -0
  25. package/corpus/nodes/master-detail-preselected-second-row.json +1 -0
  26. package/corpus/reject/reject-daterange-unordered.json +1 -0
  27. package/corpus/reject/reject-tonedpill-unknown-tone.json +1 -0
  28. package/corpus/schema.json +53 -0
  29. package/dist/cli.js.map +1 -1
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/package.json +5 -4
@@ -0,0 +1 @@
1
+ {"id":"len-dr-arr","kind":{"$type":"Form","fields":[{"id":"stay","kind":{"$type":"DateRange","value":{"from":"2026-03-01","to":"2026-03-08"},"variant":"Date"},"label":"Stay","required":false}],"onSubmit":{"$type":"Dispatch"},"submitLabel":"Book"}}
@@ -0,0 +1 @@
1
+ {"id":"len-dr-arr","kind":{"$type":"Form","fields":[{"id":"stay","kind":{"$type":"DateRange","value":["2026-03-01","2026-03-08"],"variant":"Date"},"label":"Stay","required":false}],"onSubmit":{"$type":"Dispatch"},"submitLabel":"Book"}}
@@ -0,0 +1 @@
1
+ {"id":"len-dr-env","kind":{"$type":"Form","fields":[{"id":"stay","kind":{"$type":"DateRange","value":{"from":"2026-03-01","to":"2026-03-08"},"variant":"Date"},"label":"Stay","required":false}],"onSubmit":{"$type":"Dispatch"},"submitLabel":"Book"}}
@@ -0,0 +1 @@
1
+ {"id":"len-dr-env","kind":{"$type":"Form","fields":[{"id":"stay","kind":{"$type":"DateRange","value":{"$type":"Static","value":{"from":"2026-03-01","to":"2026-03-08"}},"variant":"Date"},"label":"Stay","required":false}],"onSubmit":{"$type":"Dispatch"},"submitLabel":"Book"}}
@@ -0,0 +1 @@
1
+ {"id":"filterable-static-dashboard","kind":{"$type":"Box","children":[{"id":"content-filters","kind":{"$type":"Filters","items":[{"kind":{"$type":"Choice","options":{"$type":"Static","value":[{"label":"EMEA","value":"emea"},{"label":"Americas","value":"amer"}]}},"label":"Region","name":"region"},{"kind":{"$type":"Choice","options":{"$type":"Static","value":[{"label":"Drama","value":"drama"},{"label":"Documentary","value":"docs"}]}},"label":"Genre","name":"genre"}]}},{"id":"retention-chart","kind":{"$type":"Chart","kind":"Line","source":{"$type":"Transform","params":[{"from":{"$type":"Filter","name":"region"},"name":"region"},{"from":{"$type":"Filter","name":"genre"},"name":"genre"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"region"},"op":"eq","right":{"$type":"param","name":"region"}}},{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"genre"},"op":"eq","right":{"$type":"param","name":"genre"}}}],"source":{"columns":{"genre":{"validity":[true,true],"values":["drama","docs"]},"month":{"validity":[true,true],"values":["jan","jan"]},"region":{"validity":[true,true],"values":["emea","amer"]},"retention":{"validity":[true,true],"values":[0.62,0.55]}},"schema":[{"name":"genre","type":"string"},{"name":"month","type":"string"},{"name":"region","type":"string"},{"name":"retention","type":"float"}]}},"stacked":false,"title":"Retention","xField":"month","yFields":["retention"]}},{"id":"episode-grid","kind":{"$type":"DataGrid","columns":[{"field":"month","kind":{"$type":"Text"},"label":"Month"},{"field":"retention","kind":{"$type":"Text"},"label":"Retention"}],"rowKeyField":"month","source":{"$type":"Transform","params":[{"from":{"$type":"Filter","name":"region"},"name":"region"},{"from":{"$type":"Filter","name":"genre"},"name":"genre"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"region"},"op":"eq","right":{"$type":"param","name":"region"}}},{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"genre"},"op":"eq","right":{"$type":"param","name":"genre"}}}],"source":{"columns":{"genre":{"validity":[true,true],"values":["drama","docs"]},"month":{"validity":[true,true],"values":["jan","jan"]},"region":{"validity":[true,true],"values":["emea","amer"]},"retention":{"validity":[true,true],"values":[0.62,0.55]}},"schema":[{"name":"genre","type":"string"},{"name":"month","type":"string"},{"name":"region","type":"string"},{"name":"retention","type":"float"}]}}}}],"heading":"Content performance","layout":{"$type":"Auto"},"role":"Dashboard"}}
@@ -0,0 +1 @@
1
+ {"id":"filterable-static-dashboard","kind":{"$type":"Box","children":[{"id":"content-filters","kind":{"$type":"Filters","items":[{"kind":{"$type":"Choice","options":{"$type":"Static","value":[{"label":"EMEA","value":"emea"},{"label":"Americas","value":"amer"}]}},"label":"Region","name":"region"},{"kind":{"$type":"Choice","options":{"$type":"Static","value":[{"label":"Drama","value":"drama"},{"label":"Documentary","value":"docs"}]}},"label":"Genre","name":"genre"}]}},{"id":"retention-chart","kind":{"$type":"Chart","kind":"Line","source":{"$type":"Transform","params":[{"from":{"$type":"Filter","name":"region"},"name":"region"},{"from":{"$type":"Filter","name":"genre"},"name":"genre"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"region"},"op":"eq","right":{"$type":"param","name":"region"}}},{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"genre"},"op":"eq","right":{"$type":"param","name":"genre"}}}],"source":{"columns":{"genre":["drama","docs"],"month":["jan","jan"],"region":["emea","amer"],"retention":[0.62,0.55]}}},"stacked":false,"title":"Retention","xField":"month","yFields":["retention"]}},{"id":"episode-grid","kind":{"$type":"DataGrid","columns":[{"field":"month","kind":{"$type":"Text"},"label":"Month"},{"field":"retention","kind":{"$type":"Text"},"label":"Retention"}],"rowKeyField":"month","source":{"$type":"Transform","params":[{"from":{"$type":"Filter","name":"region"},"name":"region"},{"from":{"$type":"Filter","name":"genre"},"name":"genre"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"region"},"op":"eq","right":{"$type":"param","name":"region"}}},{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"genre"},"op":"eq","right":{"$type":"param","name":"genre"}}}],"source":{"columns":{"genre":["drama","docs"],"month":["jan","jan"],"region":["emea","amer"],"retention":[0.62,0.55]}}}}}],"heading":"Content performance","layout":{"$type":"Auto"},"role":"Dashboard"}}
@@ -0,0 +1 @@
1
+ {"id":"grid-field-named","kind":{"$type":"DataGrid","columns":[{"field":"dept","kind":{"$type":"Text"},"label":"Dept"},{"field":"amount","kind":{"$type":"Text"},"label":"Amount"}],"rowKeyField":"dept","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"amount":{"validity":[true],"values":[100]},"dept":{"validity":[true],"values":["eng"]}},"schema":[{"name":"amount","type":"int"},{"name":"dept","type":"string"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"grid-field-named","kind":{"$type":"DataGrid","columns":[{"field":"dept","kind":{"$type":"Text"},"label":"Dept"},{"field":"amount","kind":{"$type":"Text"},"label":"Amount"}],"rowKeyField":"dept","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"amount":[100],"dept":["eng"]}}}}}
@@ -0,0 +1 @@
1
+ {"id":"grid-transform-param","kind":{"$type":"DataGrid","columns":[],"rowKey":"<closure>","source":{"$type":"Transform","params":[{"from":{"$type":"Filter","name":"dept"},"name":"dept"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"dept"},"op":"eq","right":{"$type":"param","name":"dept"}}}],"source":{"columns":{"amount":{"validity":[true,true],"values":[100,90]},"dept":{"validity":[true,true],"values":["eng","sales"]}},"schema":[{"name":"amount","type":"int"},{"name":"dept","type":"string"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"grid-transform-param","kind":{"$type":"DataGrid","columns":[],"rowKey":"<closure>","source":{"$type":"Transform","params":[{"from":{"$type":"Filter","name":"dept"},"name":"dept"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"dept"},"op":"eq","right":{"$type":"param","name":"dept"}}}],"source":{"columns":{"amount":[100,90],"dept":["eng","sales"]}}}}}
@@ -0,0 +1 @@
1
+ {"id":"master-detail-preselected","kind":{"$type":"Box","children":[{"id":"ticket-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"priority","kind":{"$type":"Text"},"label":"Priority"}],"rowKeyField":"id","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"id":{"validity":[true,true],"values":["TCK-2041","TCK-2042"]},"priority":{"validity":[true,true],"values":["high","low"]}},"schema":[{"name":"id","type":"string"},{"name":"priority","type":"string"}]}}}},{"id":"ticket-detail","kind":{"$type":"Box","children":[{"id":"detail-ticket","kind":{"$type":"Fact","emphasis":true,"label":"Selected ticket","value":{"$type":"Bound","binding":{"$type":"Selection","defaultValue":"TCK-2041","field":"id","nodeId":"ticket-grid"}}}}],"heading":"Ticket detail","layout":{"$type":"Flex","direction":"Vertical","wrap":false},"role":"Card"}},{"id":"related-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"priority","kind":{"$type":"Text"},"label":"Priority"}],"rowKeyField":"id","source":{"$type":"Transform","params":[{"from":{"$type":"Selection","defaultValue":"TCK-2041","field":"id","nodeId":"ticket-grid"},"name":"ticketId"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"id"},"op":"eq","right":{"$type":"param","name":"ticketId"}}}],"source":{"columns":{"id":{"validity":[true,true],"values":["TCK-2041","TCK-2042"]},"priority":{"validity":[true,true],"values":["high","low"]}},"schema":[{"name":"id","type":"string"},{"name":"priority","type":"string"}]}}}}],"layout":{"$type":"Auto"},"role":"Dashboard"}}
@@ -0,0 +1 @@
1
+ {"id":"master-detail-preselected","kind":{"$type":"Box","children":[{"id":"ticket-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"priority","kind":{"$type":"Text"},"label":"Priority"}],"rowKeyField":"id","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"id":["TCK-2041","TCK-2042"],"priority":["high","low"]}}}}},{"id":"ticket-detail","kind":{"$type":"Box","children":[{"id":"detail-ticket","kind":{"$type":"Fact","emphasis":true,"label":"Selected ticket","value":{"$type":"Bound","binding":{"$type":"Selection","defaultValue":"TCK-2041","field":"id","nodeId":"ticket-grid"}}}}],"heading":"Ticket detail","layout":{"$type":"Flex","direction":"Vertical","wrap":false},"role":"Card"}},{"id":"related-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"priority","kind":{"$type":"Text"},"label":"Priority"}],"rowKeyField":"id","source":{"$type":"Transform","params":[{"from":{"$type":"Selection","defaultValue":"TCK-2041","field":"id","nodeId":"ticket-grid"},"name":"ticketId"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"id"},"op":"eq","right":{"$type":"param","name":"ticketId"}}}],"source":{"columns":{"id":["TCK-2041","TCK-2042"],"priority":["high","low"]}}}}}],"layout":{"$type":"Auto"},"role":"Dashboard"}}
@@ -0,0 +1 @@
1
+ {"id":"scalar-transform-composition","kind":{"$type":"Box","children":[{"id":"scalar-ticket-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"severity","kind":{"$type":"Text"},"label":"Severity"}],"rowKeyField":"id","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"alert":{"validity":[true,true,true],"values":["TCK-2041 breaches SLA in 2 hours","TCK-2042 breaches SLA in 5 hours","TCK-2043 breaches SLA in 9 hours"]},"id":{"validity":[true,true,true],"values":["TCK-2041","TCK-2042","TCK-2043"]},"severity":{"validity":[true,true,true],"values":["critical","high","critical"]}},"schema":[{"name":"alert","type":"string"},{"name":"id","type":"string"},{"name":"severity","type":"string"}]}}}},{"id":"critical-count-badge","kind":{"$type":"Badge","label":{"$type":"Bound","binding":{"$type":"Transform","pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"severity"},"op":"eq","right":{"$type":"lit","cell":{"$type":"Str","value":"critical"}}}},{"$type":"groupBy","aggs":[{"fn":"count","name":"n","of":"id"}],"keys":[]}],"source":{"columns":{"alert":{"validity":[true,true,true],"values":["TCK-2041 breaches SLA in 2 hours","TCK-2042 breaches SLA in 5 hours","TCK-2043 breaches SLA in 9 hours"]},"id":{"validity":[true,true,true],"values":["TCK-2041","TCK-2042","TCK-2043"]},"severity":{"validity":[true,true,true],"values":["critical","high","critical"]}},"schema":[{"name":"alert","type":"string"},{"name":"id","type":"string"},{"name":"severity","type":"string"}]}}},"variant":"Critical"}},{"id":"sla-warning","kind":{"$type":"Callout","body":{"$type":"Bound","binding":{"$type":"Transform","params":[{"from":{"$type":"Selection","defaultValue":"TCK-2041","field":"id","nodeId":"scalar-ticket-grid"},"name":"ticketId"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"id"},"op":"eq","right":{"$type":"param","name":"ticketId"}}},{"$type":"project","cols":[{"a":"alert","b":"alert"}]},{"$type":"limit","n":1,"offset":0}],"source":{"columns":{"alert":{"validity":[true,true,true],"values":["TCK-2041 breaches SLA in 2 hours","TCK-2042 breaches SLA in 5 hours","TCK-2043 breaches SLA in 9 hours"]},"id":{"validity":[true,true,true],"values":["TCK-2041","TCK-2042","TCK-2043"]},"severity":{"validity":[true,true,true],"values":["critical","high","critical"]}},"schema":[{"name":"alert","type":"string"},{"name":"id","type":"string"},{"name":"severity","type":"string"}]}}},"heading":"SLA breach imminent","tone":"Warning"}}],"layout":{"$type":"Auto"},"role":"Dashboard"}}
@@ -0,0 +1 @@
1
+ {"id":"scalar-transform-composition","kind":{"$type":"Box","children":[{"id":"scalar-ticket-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"severity","kind":{"$type":"Text"},"label":"Severity"}],"rowKeyField":"id","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"alert":["TCK-2041 breaches SLA in 2 hours","TCK-2042 breaches SLA in 5 hours","TCK-2043 breaches SLA in 9 hours"],"id":["TCK-2041","TCK-2042","TCK-2043"],"severity":["critical","high","critical"]}}}}},{"id":"critical-count-badge","kind":{"$type":"Badge","label":{"$type":"Bound","binding":{"$type":"Transform","pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"severity"},"op":"eq","right":{"$type":"lit","cell":{"$type":"Str","value":"critical"}}}},{"$type":"groupBy","aggs":[{"fn":"count","name":"n","of":"id"}],"keys":[]}],"source":{"columns":{"alert":["TCK-2041 breaches SLA in 2 hours","TCK-2042 breaches SLA in 5 hours","TCK-2043 breaches SLA in 9 hours"],"id":["TCK-2041","TCK-2042","TCK-2043"],"severity":["critical","high","critical"]}}}},"variant":"Critical"}},{"id":"sla-warning","kind":{"$type":"Callout","body":{"$type":"Bound","binding":{"$type":"Transform","params":[{"from":{"$type":"Selection","defaultValue":"TCK-2041","field":"id","nodeId":"scalar-ticket-grid"},"name":"ticketId"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"id"},"op":"eq","right":{"$type":"param","name":"ticketId"}}},{"$type":"project","cols":[{"a":"alert","b":"alert"}]},{"$type":"limit","n":1,"offset":0}],"source":{"columns":{"alert":["TCK-2041 breaches SLA in 2 hours","TCK-2042 breaches SLA in 5 hours","TCK-2043 breaches SLA in 9 hours"],"id":["TCK-2041","TCK-2042","TCK-2043"],"severity":["critical","high","critical"]}}}},"heading":"SLA breach imminent","tone":"Warning"}}],"layout":{"$type":"Auto"},"role":"Dashboard"}}
@@ -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"}]}}}}
@@ -43,6 +43,18 @@
43
43
  "Tabs",
44
44
  "Toast"
45
45
  ],
46
+ "formFieldKinds": [
47
+ "Checkbox",
48
+ "Choice",
49
+ "Date",
50
+ "DateRange",
51
+ "Number",
52
+ "Range",
53
+ "RangedNumber",
54
+ "SegmentedChoice",
55
+ "Text",
56
+ "TextArea"
57
+ ],
46
58
  "fixtures": [
47
59
  {
48
60
  "id": "elc-ans-accept-full",
@@ -548,6 +560,22 @@
548
560
  "expectedFile": "lenient/lenient-binding-bound-wrapper.expected.json",
549
561
  "description": "pilot-5 n=3 gate — the Bound wrapper unwraps in bare-Binding slots (the TextSource.Bound convention transferred; one payload field, one-to-one); canonical stays the bare binding"
550
562
  },
563
+ {
564
+ "id": "lenient-daterange-bare-array",
565
+ "kind": "lenient-accept",
566
+ "decoder": "node",
567
+ "inputFile": "lenient/lenient-daterange-bare-array.json",
568
+ "expectedFile": "lenient/lenient-daterange-bare-array.expected.json",
569
+ "description": "Phase 725 — a DateRange Static pair may ride the [from, to] two-element array (the §3.6 bare-array coercion, mirroring `Range`); it normalises to the canonical bare {from, to} object"
570
+ },
571
+ {
572
+ "id": "lenient-daterange-static-envelope",
573
+ "kind": "lenient-accept",
574
+ "decoder": "node",
575
+ "inputFile": "lenient/lenient-daterange-static-envelope.json",
576
+ "expectedFile": "lenient/lenient-daterange-static-envelope.expected.json",
577
+ "description": "Phase 725 — a DateRange Static pair wrapped in the explicit {\"$type\":\"Static\"} envelope stays decode-accepted (the `Range` read-compat posture); the bare {from, to} object is the canonical output"
578
+ },
551
579
  {
552
580
  "id": "lenient-emphasis-cross-vocab",
553
581
  "kind": "lenient-accept",
@@ -564,6 +592,38 @@
564
592
  "expectedFile": "lenient/lenient-fact-explicit-defaults.expected.json",
565
593
  "description": "Fact (the new labeled text-fact kind) — explicit-default `tone`/`emphasis` decode and canonicalise away (omitted-when-default on both boundaries from day one), and the bare-string TextSource shorthand applies to `label`/`value`. The canonical minimal Fact is exactly the two-field form models want to write."
566
594
  },
595
+ {
596
+ "id": "lenient-filterable-static-dashboard-compact",
597
+ "kind": "lenient-accept",
598
+ "decoder": "node",
599
+ "inputFile": "lenient/lenient-filterable-static-dashboard-compact.json",
600
+ "expectedFile": "lenient/lenient-filterable-static-dashboard-compact.expected.json",
601
+ "description": "Phase 719 — the compact authoring twin of `filterable-static-dashboard`: all-valid columns as bare arrays (Core#88) and the inferable schema omitted; the canonical envelope stays the encoder's output. The pack teaches this form by example — the exemplar/prose contradiction measurably taught the envelope (claude-opus 81% envelope share, 2026-07-28 census)."
602
+ },
603
+ {
604
+ "id": "lenient-grid-field-named-compact",
605
+ "kind": "lenient-accept",
606
+ "decoder": "node",
607
+ "inputFile": "lenient/lenient-grid-field-named-compact.json",
608
+ "expectedFile": "lenient/lenient-grid-field-named-compact.expected.json",
609
+ "description": "Phase 719 — the compact authoring twin of `grid-field-named`: all-valid columns as bare arrays (Core#88) and the inferable schema omitted; the canonical envelope stays the encoder's output. The pack teaches this form by example — the exemplar/prose contradiction measurably taught the envelope (claude-opus 81% envelope share, 2026-07-28 census)."
610
+ },
611
+ {
612
+ "id": "lenient-grid-transform-param-compact",
613
+ "kind": "lenient-accept",
614
+ "decoder": "node",
615
+ "inputFile": "lenient/lenient-grid-transform-param-compact.json",
616
+ "expectedFile": "lenient/lenient-grid-transform-param-compact.expected.json",
617
+ "description": "Phase 719 — the compact authoring twin of `grid-transform-param`: all-valid columns as bare arrays (Core#88) and the inferable schema omitted; the canonical envelope stays the encoder's output. The pack teaches this form by example — the exemplar/prose contradiction measurably taught the envelope (claude-opus 81% envelope share, 2026-07-28 census)."
618
+ },
619
+ {
620
+ "id": "lenient-master-detail-preselected-compact",
621
+ "kind": "lenient-accept",
622
+ "decoder": "node",
623
+ "inputFile": "lenient/lenient-master-detail-preselected-compact.json",
624
+ "expectedFile": "lenient/lenient-master-detail-preselected-compact.expected.json",
625
+ "description": "Phase 719 — the compact authoring twin of `master-detail-preselected`: all-valid columns as bare arrays (Core#88) and the inferable schema omitted; the canonical envelope stays the encoder's output. The pack teaches this form by example — the exemplar/prose contradiction measurably taught the envelope (claude-opus 81% envelope share, 2026-07-28 census)."
626
+ },
567
627
  {
568
628
  "id": "lenient-null-static-options",
569
629
  "kind": "lenient-accept",
@@ -604,6 +664,14 @@
604
664
  "expectedFile": "lenient/lenient-opaque-static-values.expected.json",
605
665
  "description": "Pre-429 opaque multi-select values decode to the tagged placeholder list and re-encode typed"
606
666
  },
667
+ {
668
+ "id": "lenient-scalar-transform-composition-compact",
669
+ "kind": "lenient-accept",
670
+ "decoder": "node",
671
+ "inputFile": "lenient/lenient-scalar-transform-composition-compact.json",
672
+ "expectedFile": "lenient/lenient-scalar-transform-composition-compact.expected.json",
673
+ "description": "Phase 719 — the compact authoring twin of `scalar-transform-composition`: all-valid columns as bare arrays (Core#88) and the inferable schema omitted; the canonical envelope stays the encoder's output. The pack teaches this form by example — the exemplar/prose contradiction measurably taught the envelope (claude-opus 81% envelope share, 2026-07-28 census)."
674
+ },
607
675
  {
608
676
  "id": "lenient-shape-binding-scalar-fraction",
609
677
  "kind": "lenient-accept",
@@ -660,6 +728,30 @@
660
728
  "expectedFile": "lenient/lenient-shape-static-envelope-plain-scalars.expected.json",
661
729
  "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."
662
730
  },
731
+ {
732
+ "id": "lenient-tonedpill-pill-tag",
733
+ "kind": "lenient-accept",
734
+ "decoder": "node",
735
+ "inputFile": "lenient/lenient-tonedpill-pill-tag.json",
736
+ "expectedFile": "lenient/lenient-tonedpill-pill-tag.expected.json",
737
+ "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)"
738
+ },
739
+ {
740
+ "id": "lenient-tonedpill-tone-aliases",
741
+ "kind": "lenient-accept",
742
+ "decoder": "node",
743
+ "inputFile": "lenient/lenient-tonedpill-tone-aliases.json",
744
+ "expectedFile": "lenient/lenient-tonedpill-tone-aliases.expected.json",
745
+ "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)"
746
+ },
747
+ {
748
+ "id": "lenient-tonedpill-tonemap-alias",
749
+ "kind": "lenient-accept",
750
+ "decoder": "node",
751
+ "inputFile": "lenient/lenient-tonedpill-tonemap-alias.json",
752
+ "expectedFile": "lenient/lenient-tonedpill-tonemap-alias.expected.json",
753
+ "description": "Phase 750 — `toneMap` (and `tones`) alias the canonical `map` on a TonedPill cell, the `header`/`title`→`label` field-alias device"
754
+ },
663
755
  {
664
756
  "id": "lenient-transform-bare-columns",
665
757
  "kind": "lenient-accept",
@@ -948,6 +1040,14 @@
948
1040
  "expectedFile": "nodes/filters-1.json",
949
1041
  "description": "Input/Filters (text + choice)"
950
1042
  },
1043
+ {
1044
+ "id": "filters-date-range",
1045
+ "kind": "node-round-trip",
1046
+ "decoder": "node",
1047
+ "inputFile": "nodes/filters-date-range.json",
1048
+ "expectedFile": "nodes/filters-date-range.json",
1049
+ "description": "Input/Filters (Phase 725 — DateRange chip: one filter param carries the pair, value auto-bound)"
1050
+ },
951
1051
  {
952
1052
  "id": "filters-declarative",
953
1053
  "kind": "node-round-trip",
@@ -980,6 +1080,14 @@
980
1080
  "expectedFile": "nodes/form-date.json",
981
1081
  "description": "Input/Form (Date — date/time/datetime variants + bounds)"
982
1082
  },
1083
+ {
1084
+ "id": "form-date-range",
1085
+ "kind": "node-round-trip",
1086
+ "decoder": "node",
1087
+ "inputFile": "nodes/form-date-range.json",
1088
+ "expectedFile": "nodes/form-date-range.json",
1089
+ "description": "Input/Form (Phase 725 — DateRange: single-control date range, bare {from,to} pair + bounds)"
1090
+ },
983
1091
  {
984
1092
  "id": "form-declarative",
985
1093
  "kind": "node-round-trip",
@@ -1116,6 +1224,14 @@
1116
1224
  "expectedFile": "nodes/grid-field-named.json",
1117
1225
  "description": "Visualisation/Grid (Phase 425 — field-named columns + RowKeyField, closure-free)"
1118
1226
  },
1227
+ {
1228
+ "id": "grid-toned-pill",
1229
+ "kind": "node-round-trip",
1230
+ "decoder": "node",
1231
+ "inputFile": "nodes/grid-toned-pill.json",
1232
+ "expectedFile": "nodes/grid-toned-pill.json",
1233
+ "description": "Visualisation/Grid (Phase 750 — TonedPill: value-conditional cell tone declared as a value→tone map)"
1234
+ },
1119
1235
  {
1120
1236
  "id": "grid-transform",
1121
1237
  "kind": "node-round-trip",
@@ -1196,6 +1312,14 @@
1196
1312
  "expectedFile": "nodes/master-detail-preselected.json",
1197
1313
  "description": "Layout/Box (master-detail — grid + detail card State-bound with a pre-selected defaultValue)"
1198
1314
  },
1315
+ {
1316
+ "id": "master-detail-preselected-second-row",
1317
+ "kind": "node-round-trip",
1318
+ "decoder": "node",
1319
+ "inputFile": "nodes/master-detail-preselected-second-row.json",
1320
+ "expectedFile": "nodes/master-detail-preselected-second-row.json",
1321
+ "description": "Layout/Box (master-detail — Selection defaultValue naming a NON-FIRST row: prune-vs-seed is observable)"
1322
+ },
1199
1323
  {
1200
1324
  "id": "math-1",
1201
1325
  "kind": "node-round-trip",
@@ -1394,7 +1518,7 @@
1394
1518
  "decoder": "node",
1395
1519
  "inputFile": "nodes/table-1.json",
1396
1520
  "expectedFile": "nodes/table-1.json",
1397
- "description": "Visualisation/Table"
1521
+ "description": "Visualisation/Grid (static-table mode — staticRows; absorbed the retired Table kind)"
1398
1522
  },
1399
1523
  {
1400
1524
  "id": "tabs-1",
@@ -1604,6 +1728,15 @@
1604
1728
  "expectedFile": "ops/op-updatestyle (phase 147 role=eyebrow + voice=structural).json",
1605
1729
  "description": "UpdateStyle (Phase 147 Role=Eyebrow + Voice=Structural)"
1606
1730
  },
1731
+ {
1732
+ "id": "reject-daterange-unordered",
1733
+ "kind": "reject",
1734
+ "decoder": "node",
1735
+ "inputFile": "reject/reject-daterange-unordered.json",
1736
+ "expectedErrorCode": "WRONG_TYPE",
1737
+ "expectedPath": "$.kind.fields[0].kind.value",
1738
+ "description": "DateRange literal pair with start after end — the ordered-pair rule (Phase 725)"
1739
+ },
1607
1740
  {
1608
1741
  "id": "reject-emptynodeid",
1609
1742
  "kind": "reject",
@@ -1838,6 +1971,15 @@
1838
1971
  "expectedPath": "$.path",
1839
1972
  "description": "UpdateProp missing path"
1840
1973
  },
1974
+ {
1975
+ "id": "reject-tonedpill-unknown-tone",
1976
+ "kind": "reject",
1977
+ "decoder": "node",
1978
+ "inputFile": "reject/reject-tonedpill-unknown-tone.json",
1979
+ "expectedErrorCode": "UNKNOWN_DU_CASE",
1980
+ "expectedPath": "$.kind.columns[0].kind.map.Delayed",
1981
+ "description": "TonedPill tone-map value outside ToneVariant — the message names the seven legal tones (Phase 750)"
1982
+ },
1841
1983
  {
1842
1984
  "id": "reject-unknown-binding",
1843
1985
  "kind": "reject",
@@ -0,0 +1 @@
1
+ {"id":"filters-date-range","kind":{"$type":"Filters","items":[{"kind":{"$type":"DateRange","variant":"Date"},"label":"Stay","name":"stay"}]}}
@@ -0,0 +1 @@
1
+ {"id":"form-date-range","kind":{"$type":"Form","fields":[{"id":"stay","kind":{"$type":"DateRange","max":"2026-12-31","min":"2026-01-01","onChange":"<closure>","value":{"from":"2026-03-01","to":"2026-03-08"},"variant":"Date"},"label":"Stay","required":true},{"id":"shift","kind":{"$type":"DateRange","step":900,"value":{"$type":"State","defaultValue":{"from":"08:00","to":"17:00"},"key":"shift"},"variant":"Time"},"label":"Shift","required":false},{"id":"window","kind":{"$type":"DateRange","onChange":"<closure>","value":{"from":"2026-03-01T09:00","to":"2026-03-01T17:00"},"variant":"DateTime"},"label":"Window","required":false}],"onSubmit":{"$type":"Chain","ops":[]},"submitLabel":"Book"}}
@@ -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"}]}}}}
@@ -0,0 +1 @@
1
+ {"id":"master-detail-preselected-second-row","kind":{"$type":"Box","children":[{"id":"ticket-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"priority","kind":{"$type":"Text"},"label":"Priority"},{"field":"note","kind":{"$type":"Text"},"label":"Note"}],"rowKeyField":"id","source":{"$type":"Transform","pipeline":[],"source":{"columns":{"id":{"validity":[true,true,true],"values":["TCK-2041","TCK-2042","TCK-2043"]},"note":{"validity":[true,true,true],"values":["Payment gateway timeout","Search index stale","Avatar upload fails"]},"priority":{"validity":[true,true,true],"values":["high","medium","low"]}},"schema":[{"name":"id","type":"string"},{"name":"priority","type":"string"},{"name":"note","type":"string"}]}}}},{"id":"ticket-detail","kind":{"$type":"Box","children":[{"id":"detail-ticket","kind":{"$type":"Fact","emphasis":true,"label":"Selected ticket","value":{"$type":"Bound","binding":{"$type":"Selection","defaultValue":"TCK-2042","field":"id","nodeId":"ticket-grid"}}}}],"heading":"Ticket detail","layout":{"$type":"Flex","direction":"Vertical","wrap":false},"role":"Card"}},{"id":"related-grid","kind":{"$type":"DataGrid","columns":[{"field":"id","kind":{"$type":"Text"},"label":"Ticket"},{"field":"priority","kind":{"$type":"Text"},"label":"Priority"},{"field":"note","kind":{"$type":"Text"},"label":"Note"}],"rowKeyField":"id","source":{"$type":"Transform","params":[{"from":{"$type":"Selection","defaultValue":"TCK-2042","field":"id","nodeId":"ticket-grid"},"name":"ticketId"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"id"},"op":"eq","right":{"$type":"param","name":"ticketId"}}}],"source":{"columns":{"id":{"validity":[true,true,true],"values":["TCK-2041","TCK-2042","TCK-2043"]},"note":{"validity":[true,true,true],"values":["Payment gateway timeout","Search index stale","Avatar upload fails"]},"priority":{"validity":[true,true,true],"values":["high","medium","low"]}},"schema":[{"name":"id","type":"string"},{"name":"priority","type":"string"},{"name":"note","type":"string"}]}}}},{"id":"detail-note","kind":{"$type":"Callout","body":{"$type":"Bound","binding":{"$type":"Transform","params":[{"from":{"$type":"Selection","defaultValue":"TCK-2042","field":"id","nodeId":"ticket-grid"},"name":"ticketId"}],"pipeline":[{"$type":"filter","pred":{"$type":"binary","left":{"$type":"col","name":"id"},"op":"eq","right":{"$type":"param","name":"ticketId"}}},{"$type":"project","cols":[{"a":"note","b":"note"}]},{"$type":"limit","n":1,"offset":0}],"source":{"columns":{"id":{"validity":[true,true,true],"values":["TCK-2041","TCK-2042","TCK-2043"]},"note":{"validity":[true,true,true],"values":["Payment gateway timeout","Search index stale","Avatar upload fails"]},"priority":{"validity":[true,true,true],"values":["high","medium","low"]}},"schema":[{"name":"id","type":"string"},{"name":"priority","type":"string"},{"name":"note","type":"string"}]}}},"heading":"Ticket note","tone":"Info"}}],"layout":{"$type":"Auto"},"role":"Dashboard"}}
@@ -0,0 +1 @@
1
+ {"id":"f1","kind":{"$type":"Form","fields":[{"id":"stay","kind":{"$type":"DateRange","value":{"from":"2026-03-08","to":"2026-03-01"},"variant":"Date"},"label":"Stay","required":false}],"onSubmit":{"$type":"Dispatch"},"submitLabel":"Book"}}
@@ -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"}]}}}}
@@ -1309,6 +1309,34 @@
1309
1309
  "$type",
1310
1310
  "variant"
1311
1311
  ]
1312
+ },
1313
+ {
1314
+ "type": "object",
1315
+ "properties": {
1316
+ "$type": {
1317
+ "const": "DateRange"
1318
+ },
1319
+ "onChange": {
1320
+ "const": "<closure>"
1321
+ },
1322
+ "value": true,
1323
+ "variant": {
1324
+ "$ref": "#/$defs/DateVariant"
1325
+ },
1326
+ "min": {
1327
+ "type": "string"
1328
+ },
1329
+ "max": {
1330
+ "type": "string"
1331
+ },
1332
+ "step": {
1333
+ "type": "number"
1334
+ }
1335
+ },
1336
+ "required": [
1337
+ "$type",
1338
+ "variant"
1339
+ ]
1312
1340
  }
1313
1341
  ]
1314
1342
  },
@@ -1468,6 +1496,31 @@
1468
1496
  "toneFn"
1469
1497
  ]
1470
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
+ },
1471
1524
  {
1472
1525
  "type": "object",
1473
1526
  "properties": {