fuaran-ui 0.7.0__tar.gz

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 (852) hide show
  1. fuaran_ui-0.7.0/.gitattributes +31 -0
  2. fuaran_ui-0.7.0/.github/dependabot.yml +21 -0
  3. fuaran_ui-0.7.0/.github/workflows/ci.yml +231 -0
  4. fuaran_ui-0.7.0/.github/workflows/publish-pypi-placeholder.yml +91 -0
  5. fuaran_ui-0.7.0/.github/workflows/publish-pypi.yml +203 -0
  6. fuaran_ui-0.7.0/.gitignore +32 -0
  7. fuaran_ui-0.7.0/CLAUDE.md +467 -0
  8. fuaran_ui-0.7.0/CODE_OF_CONDUCT.md +77 -0
  9. fuaran_ui-0.7.0/CONTRIBUTING.md +32 -0
  10. fuaran_ui-0.7.0/LICENSE +215 -0
  11. fuaran_ui-0.7.0/NOTICE +16 -0
  12. fuaran_ui-0.7.0/PKG-INFO +1335 -0
  13. fuaran_ui-0.7.0/README.md +1305 -0
  14. fuaran_ui-0.7.0/SECURITY.md +105 -0
  15. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-accept-full.json +1 -0
  16. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-accept-int-for-float.json +1 -0
  17. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-accept-minimal.json +1 -0
  18. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-reject-enum.json +1 -0
  19. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-reject-float-range.json +1 -0
  20. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-reject-int-range.json +1 -0
  21. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-reject-missing-required.json +1 -0
  22. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-reject-string-len.json +1 -0
  23. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-reject-type-mismatch.json +1 -0
  24. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-ans-reject-undeclared.json +1 -0
  25. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-full.json +1 -0
  26. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-minimal.json +1 -0
  27. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-answered.json +1 -0
  28. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-declined.json +1 -0
  29. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-reject-empty-id.json +1 -0
  30. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-reject-missing-answer.json +1 -0
  31. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-reject-stray-key.json +1 -0
  32. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-reject-unknown-type.json +1 -0
  33. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-superseded-anon.json +1 -0
  34. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-superseded-by.json +1 -0
  35. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-out-timedout.json +1 -0
  36. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-bad-space.json +1 -0
  37. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-bad-timeout.json +1 -0
  38. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-bad-version.json +1 -0
  39. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-default-nonconformant.json +1 -0
  40. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-duplicate-field.json +1 -0
  41. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-empty-contract.json +1 -0
  42. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-empty-id.json +1 -0
  43. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-missing-version.json +1 -0
  44. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-stray-key.json +1 -0
  45. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-tree-decode.json +1 -0
  46. fuaran_ui-0.7.0/conformance/corpus/elicitation/elc-reject-unknown-node.json +1 -0
  47. fuaran_ui-0.7.0/conformance/corpus/envelope/envelope-foreign-major.json +1 -0
  48. fuaran_ui-0.7.0/conformance/corpus/envelope/envelope-foreign-namespace.json +1 -0
  49. fuaran_ui-0.7.0/conformance/corpus/envelope/envelope-known-current.json +1 -0
  50. fuaran_ui-0.7.0/conformance/corpus/envelope/envelope-unknown-behind.json +1 -0
  51. fuaran_ui-0.7.0/conformance/corpus/envelope/envelope-unknown-malformed-required-profile.json +1 -0
  52. fuaran_ui-0.7.0/conformance/corpus/envelope/envelope-unknown-required-profile.json +1 -0
  53. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-022-lvr-emphasis-loud.expected.json +1 -0
  54. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-022-lvr-emphasis-loud.json +1 -0
  55. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-022-lvr-emphasis-normal.expected.json +1 -0
  56. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-022-lvr-emphasis-normal.json +1 -0
  57. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1126-clipboard-literal-envelope.expected.json +1 -0
  58. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1126-clipboard-literal-envelope.json +1 -0
  59. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1521-int-slot-integral-float.expected.json +1 -0
  60. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1521-int-slot-integral-float.json +1 -0
  61. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1521-payload-integer-beyond-int53.expected.json +1 -0
  62. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1521-payload-integer-beyond-int53.json +1 -0
  63. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1656-state-default-null.expected.json +1 -0
  64. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1656-state-default-null.json +1 -0
  65. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1661-i18n-arg-tagged-static.expected.json +1 -0
  66. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1661-i18n-arg-tagged-static.json +1 -0
  67. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1670-fragment-decl-redundant-defaults.expected.json +1 -0
  68. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-1670-fragment-decl-redundant-defaults.json +1 -0
  69. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-emphasis-muted.expected.json +1 -0
  70. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-emphasis-muted.json +1 -0
  71. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-emphasis-strong.expected.json +1 -0
  72. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-emphasis-strong.json +1 -0
  73. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-tone-danger.expected.json +1 -0
  74. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-tone-danger.json +1 -0
  75. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-tone-positive.expected.json +1 -0
  76. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-alias-tone-positive.json +1 -0
  77. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-explicit-default-column.expected.json +1 -0
  78. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-explicit-default-column.json +1 -0
  79. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-explicit-default-metric.expected.json +1 -0
  80. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-explicit-default-metric.json +1 -0
  81. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-explicit-default-style.expected.json +1 -0
  82. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-460-explicit-default-style.json +1 -0
  83. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-596-form-explicit-auto-state.expected.json +1 -0
  84. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-596-form-explicit-auto-state.json +1 -0
  85. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-665-rows-opaque-sentinel.expected.json +1 -0
  86. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-665-rows-opaque-sentinel.json +1 -0
  87. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-call-url.expected.json +1 -0
  88. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-call-url.json +1 -0
  89. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-card-title-metric-value.expected.json +1 -0
  90. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-card-title-metric-value.json +1 -0
  91. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-datagrid-data-column-type.expected.json +1 -0
  92. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-datagrid-data-column-type.json +1 -0
  93. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-form-field-name.expected.json +1 -0
  94. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-form-field-name.json +1 -0
  95. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-grid-columns-row.expected.json +1 -0
  96. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-grid-columns-row.json +1 -0
  97. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-navigate-href.expected.json +1 -0
  98. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-navigate-href.json +1 -0
  99. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-select-options-query-deps.expected.json +1 -0
  100. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-alias-select-options-query-deps.json +1 -0
  101. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-button-label.expected.json +1 -0
  102. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-button-label.json +1 -0
  103. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-callout.expected.json +1 -0
  104. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-callout.json +1 -0
  105. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-heading.expected.json +1 -0
  106. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-heading.json +1 -0
  107. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-markdown.expected.json +1 -0
  108. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-bare-text-markdown.json +1 -0
  109. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-binding-bound-wrapper.expected.json +1 -0
  110. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-binding-bound-wrapper.json +1 -0
  111. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-daterange-bare-array.expected.json +1 -0
  112. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-daterange-bare-array.json +1 -0
  113. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-daterange-static-envelope.expected.json +1 -0
  114. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-daterange-static-envelope.json +1 -0
  115. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-emphasis-cross-vocab.expected.json +1 -0
  116. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-emphasis-cross-vocab.json +1 -0
  117. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-fact-explicit-defaults.expected.json +1 -0
  118. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-fact-explicit-defaults.json +1 -0
  119. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-filterable-static-dashboard-compact.expected.json +1 -0
  120. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-filterable-static-dashboard-compact.json +1 -0
  121. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-grid-field-named-compact.expected.json +1 -0
  122. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-grid-field-named-compact.json +1 -0
  123. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-grid-transform-param-compact.expected.json +1 -0
  124. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-grid-transform-param-compact.json +1 -0
  125. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-caption-envelope.expected.json +1 -0
  126. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-caption-envelope.json +1 -0
  127. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-empty-srcset.expected.json +1 -0
  128. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-empty-srcset.json +1 -0
  129. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-explicit-defaults.expected.json +1 -0
  130. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-explicit-defaults.json +1 -0
  131. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-explicit-expandable-false.expected.json +1 -0
  132. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-image-explicit-expandable-false.json +1 -0
  133. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-master-detail-preselected-compact.expected.json +1 -0
  134. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-master-detail-preselected-compact.json +1 -0
  135. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-navigate-target-self.expected.json +1 -0
  136. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-navigate-target-self.json +1 -0
  137. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-null-static-options.expected.json +1 -0
  138. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-null-static-options.json +1 -0
  139. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-markers.expected.json +1 -0
  140. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-markers.json +1 -0
  141. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-options.expected.json +1 -0
  142. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-options.json +1 -0
  143. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-series.expected.json +1 -0
  144. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-series.json +1 -0
  145. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-values.expected.json +1 -0
  146. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-opaque-static-values.json +1 -0
  147. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-scalar-transform-composition-compact.expected.json +1 -0
  148. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-scalar-transform-composition-compact.json +1 -0
  149. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-a11y-label-bare-scalar.expected.json +1 -0
  150. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-a11y-label-bare-scalar.json +1 -0
  151. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-binding-scalar-fraction.expected.json +1 -0
  152. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-binding-scalar-fraction.json +1 -0
  153. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-grid-no-cols.expected.json +1 -0
  154. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-grid-no-cols.json +1 -0
  155. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-grid-template-no-cols.expected.json +1 -0
  156. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-grid-template-no-cols.json +1 -0
  157. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-options-bare-strings.expected.json +1 -0
  158. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-options-bare-strings.json +1 -0
  159. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-params-map.expected.json +1 -0
  160. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-params-map.json +1 -0
  161. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-segmented-orientation-omitted.expected.json +1 -0
  162. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-segmented-orientation-omitted.json +1 -0
  163. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-static-envelope-plain-scalars.expected.json +1 -0
  164. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-shape-static-envelope-plain-scalars.json +1 -0
  165. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-tonedpill-pill-tag.expected.json +1 -0
  166. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-tonedpill-pill-tag.json +1 -0
  167. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-tonedpill-tone-aliases.expected.json +1 -0
  168. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-tonedpill-tone-aliases.json +1 -0
  169. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-tonedpill-tonemap-alias.expected.json +1 -0
  170. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-tonedpill-tonemap-alias.json +1 -0
  171. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-bare-columns.expected.json +1 -0
  172. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-bare-columns.json +1 -0
  173. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-column-member-legacy.expected.json +1 -0
  174. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-column-member-legacy.json +1 -0
  175. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-epoch-timestamps.expected.json +1 -0
  176. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-epoch-timestamps.json +1 -0
  177. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-expr-spellings.expected.json +1 -0
  178. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-expr-spellings.json +1 -0
  179. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-contains.expected.json +1 -0
  180. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-contains.json +1 -0
  181. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-filter.expected.json +1 -0
  182. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-filter.json +1 -0
  183. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-or.expected.json +1 -0
  184. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-or.json +1 -0
  185. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-scalar-fn.expected.json +1 -0
  186. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-flat-scalar-fn.json +1 -0
  187. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-schemaless.expected.json +1 -0
  188. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-schemaless.json +1 -0
  189. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-source-rowmajor.expected.json +1 -0
  190. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-source-rowmajor.json +1 -0
  191. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-source-state-rows.expected.json +1 -0
  192. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-source-state-rows.json +1 -0
  193. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-step-aliases.expected.json +1 -0
  194. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-step-aliases.json +1 -0
  195. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-values-only-columns.expected.json +1 -0
  196. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-transform-values-only-columns.json +1 -0
  197. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-window-cumsum-legacy.expected.json +1 -0
  198. fuaran_ui-0.7.0/conformance/corpus/lenient/lenient-window-cumsum-legacy.json +1 -0
  199. fuaran_ui-0.7.0/conformance/corpus/manifest.json +4919 -0
  200. fuaran_ui-0.7.0/conformance/corpus/markdown/corpus.json +64 -0
  201. fuaran_ui-0.7.0/conformance/corpus/nodes/a11y-alert-assertive.json +1 -0
  202. fuaran_ui-0.7.0/conformance/corpus/nodes/a11y-button-named.json +1 -0
  203. fuaran_ui-0.7.0/conformance/corpus/nodes/a11y-image-decorative.json +1 -0
  204. fuaran_ui-0.7.0/conformance/corpus/nodes/a11y-link-labelled.json +1 -0
  205. fuaran_ui-0.7.0/conformance/corpus/nodes/a11y-wrapper-all-slots.json +1 -0
  206. fuaran_ui-0.7.0/conformance/corpus/nodes/a11y-wrapper-state-bound.json +1 -0
  207. fuaran_ui-0.7.0/conformance/corpus/nodes/a11y-wrapper-transform-label.json +1 -0
  208. fuaran_ui-0.7.0/conformance/corpus/nodes/action-confirm-cancel.json +1 -0
  209. fuaran_ui-0.7.0/conformance/corpus/nodes/action-confirm.json +1 -0
  210. fuaran_ui-0.7.0/conformance/corpus/nodes/action-focus.json +1 -0
  211. fuaran_ui-0.7.0/conformance/corpus/nodes/action-navigate-bound.json +1 -0
  212. fuaran_ui-0.7.0/conformance/corpus/nodes/action-navigate-target.json +1 -0
  213. fuaran_ui-0.7.0/conformance/corpus/nodes/badge-1.json +1 -0
  214. fuaran_ui-0.7.0/conformance/corpus/nodes/badge-transform-live.json +1 -0
  215. fuaran_ui-0.7.0/conformance/corpus/nodes/boundary-1.json +1 -0
  216. fuaran_ui-0.7.0/conformance/corpus/nodes/box-break-before-1.json +1 -0
  217. fuaran_ui-0.7.0/conformance/corpus/nodes/box-keep-together-1.json +1 -0
  218. fuaran_ui-0.7.0/conformance/corpus/nodes/btn-1.json +1 -0
  219. fuaran_ui-0.7.0/conformance/corpus/nodes/btn-copy-bound.json +1 -0
  220. fuaran_ui-0.7.0/conformance/corpus/nodes/btn-copy-link.json +1 -0
  221. fuaran_ui-0.7.0/conformance/corpus/nodes/btn-invoke.json +1 -0
  222. fuaran_ui-0.7.0/conformance/corpus/nodes/btn-json-payloads.json +1 -0
  223. fuaran_ui-0.7.0/conformance/corpus/nodes/btn-read-workbook.json +1 -0
  224. fuaran_ui-0.7.0/conformance/corpus/nodes/button-print.json +1 -0
  225. fuaran_ui-0.7.0/conformance/corpus/nodes/button-setstate-valuefrom.json +1 -0
  226. fuaran_ui-0.7.0/conformance/corpus/nodes/call-into.json +1 -0
  227. fuaran_ui-0.7.0/conformance/corpus/nodes/callout-1.json +1 -0
  228. fuaran_ui-0.7.0/conformance/corpus/nodes/card-1.json +1 -0
  229. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-1.json +1 -0
  230. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-annotation-bands.json +1 -0
  231. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-annotation-events.json +1 -0
  232. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-annotations.json +1 -0
  233. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-axis-titles.json +1 -0
  234. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-data-labels.json +1 -0
  235. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-legend-position.json +1 -0
  236. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-state-rows.json +1 -0
  237. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-temporal-x.json +1 -0
  238. fuaran_ui-0.7.0/conformance/corpus/nodes/chart-value-format.json +1 -0
  239. fuaran_ui-0.7.0/conformance/corpus/nodes/code-1.json +1 -0
  240. fuaran_ui-0.7.0/conformance/corpus/nodes/composite-root.json +1 -0
  241. fuaran_ui-0.7.0/conformance/corpus/nodes/composite-tabs-panels.json +1 -0
  242. fuaran_ui-0.7.0/conformance/corpus/nodes/controls-closure.json +1 -0
  243. fuaran_ui-0.7.0/conformance/corpus/nodes/controls-declarative.json +1 -0
  244. fuaran_ui-0.7.0/conformance/corpus/nodes/custom-1.json +1 -0
  245. fuaran_ui-0.7.0/conformance/corpus/nodes/custom-bounded-1.json +1 -0
  246. fuaran_ui-0.7.0/conformance/corpus/nodes/custom-bounded-advisory.json +1 -0
  247. fuaran_ui-0.7.0/conformance/corpus/nodes/custom-nonascii-keys.json +1 -0
  248. fuaran_ui-0.7.0/conformance/corpus/nodes/dash-empty.json +1 -0
  249. fuaran_ui-0.7.0/conformance/corpus/nodes/discl-1.json +1 -0
  250. fuaran_ui-0.7.0/conformance/corpus/nodes/drawing-1.json +1 -0
  251. fuaran_ui-0.7.0/conformance/corpus/nodes/drawing-empty.json +1 -0
  252. fuaran_ui-0.7.0/conformance/corpus/nodes/drawing-nonfinite-sentinels.json +1 -0
  253. fuaran_ui-0.7.0/conformance/corpus/nodes/drawing-rotated-labels.json +1 -0
  254. fuaran_ui-0.7.0/conformance/corpus/nodes/drawing-tipped-shapes.json +1 -0
  255. fuaran_ui-0.7.0/conformance/corpus/nodes/embed-1.json +1 -0
  256. fuaran_ui-0.7.0/conformance/corpus/nodes/embed-aspect-1.json +1 -0
  257. fuaran_ui-0.7.0/conformance/corpus/nodes/embed-permissions-1.json +1 -0
  258. fuaran_ui-0.7.0/conformance/corpus/nodes/empty-state-card.json +1 -0
  259. fuaran_ui-0.7.0/conformance/corpus/nodes/expr-params-state-selection.json +1 -0
  260. fuaran_ui-0.7.0/conformance/corpus/nodes/expr-scalar.json +1 -0
  261. fuaran_ui-0.7.0/conformance/corpus/nodes/fact-1.json +1 -0
  262. fuaran_ui-0.7.0/conformance/corpus/nodes/filterable-static-dashboard.json +1 -0
  263. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-1.json +1 -0
  264. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-date-range.json +1 -0
  265. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-declarative.json +1 -0
  266. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-param-source-declared.json +1 -0
  267. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-param-source-undeclared.json +1 -0
  268. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-rating-colour.json +1 -0
  269. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-segmented.json +1 -0
  270. fuaran_ui-0.7.0/conformance/corpus/nodes/filters-tokens.json +1 -0
  271. fuaran_ui-0.7.0/conformance/corpus/nodes/form-1.json +1 -0
  272. fuaran_ui-0.7.0/conformance/corpus/nodes/form-color.json +1 -0
  273. fuaran_ui-0.7.0/conformance/corpus/nodes/form-combobox-freetext.json +1 -0
  274. fuaran_ui-0.7.0/conformance/corpus/nodes/form-combobox-query.json +1 -0
  275. fuaran_ui-0.7.0/conformance/corpus/nodes/form-combobox-static.json +1 -0
  276. fuaran_ui-0.7.0/conformance/corpus/nodes/form-date-range.json +1 -0
  277. fuaran_ui-0.7.0/conformance/corpus/nodes/form-date.json +1 -0
  278. fuaran_ui-0.7.0/conformance/corpus/nodes/form-declarative-minimal.json +1 -0
  279. fuaran_ui-0.7.0/conformance/corpus/nodes/form-declarative.json +1 -0
  280. fuaran_ui-0.7.0/conformance/corpus/nodes/form-field-rules.json +1 -0
  281. fuaran_ui-0.7.0/conformance/corpus/nodes/form-local-1.json +1 -0
  282. fuaran_ui-0.7.0/conformance/corpus/nodes/form-local-debounce.json +1 -0
  283. fuaran_ui-0.7.0/conformance/corpus/nodes/form-local-declared.json +1 -0
  284. fuaran_ui-0.7.0/conformance/corpus/nodes/form-ranged.json +1 -0
  285. fuaran_ui-0.7.0/conformance/corpus/nodes/form-rating-halves.json +1 -0
  286. fuaran_ui-0.7.0/conformance/corpus/nodes/form-rating.json +1 -0
  287. fuaran_ui-0.7.0/conformance/corpus/nodes/form-rule-tokens.json +1 -0
  288. fuaran_ui-0.7.0/conformance/corpus/nodes/form-segmented.json +1 -0
  289. fuaran_ui-0.7.0/conformance/corpus/nodes/form-toggle.json +1 -0
  290. fuaran_ui-0.7.0/conformance/corpus/nodes/form-tokens-freetext.json +1 -0
  291. fuaran_ui-0.7.0/conformance/corpus/nodes/form-tokens-query.json +1 -0
  292. fuaran_ui-0.7.0/conformance/corpus/nodes/form-tokens-suggested.json +1 -0
  293. fuaran_ui-0.7.0/conformance/corpus/nodes/format-bindings.json +1 -0
  294. fuaran_ui-0.7.0/conformance/corpus/nodes/format-since.json +1 -0
  295. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-decl-1.json +1 -0
  296. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-decl-param.json +1 -0
  297. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-ref-1.json +1 -0
  298. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-ref-args.json +1 -0
  299. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-confirm-action-pair-ref.json +1 -0
  300. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-confirm-action-pair.json +1 -0
  301. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-empty-state-panel-ref.json +1 -0
  302. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-empty-state-panel.json +1 -0
  303. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-filter-bar-ref.json +1 -0
  304. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-filter-bar.json +1 -0
  305. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-kpi-strip-ref.json +1 -0
  306. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-kpi-strip.json +1 -0
  307. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-labelled-metric-row-ref.json +1 -0
  308. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-labelled-metric-row.json +1 -0
  309. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-loading-placeholder-ref.json +1 -0
  310. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-loading-placeholder.json +1 -0
  311. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-metric-card-ref.json +1 -0
  312. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-metric-card.json +1 -0
  313. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-section-header-ref.json +1 -0
  314. fuaran_ui-0.7.0/conformance/corpus/nodes/frag-stdlib-section-header.json +1 -0
  315. fuaran_ui-0.7.0/conformance/corpus/nodes/glayout-1.json +1 -0
  316. fuaran_ui-0.7.0/conformance/corpus/nodes/glayout-tpl-autofit.json +1 -0
  317. fuaran_ui-0.7.0/conformance/corpus/nodes/glayout-tpl-fixed.json +1 -0
  318. fuaran_ui-0.7.0/conformance/corpus/nodes/glayout-tpl-ratio.json +1 -0
  319. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-1.json +1 -0
  320. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-bound-sort.json +1 -0
  321. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-declared-edit.json +1 -0
  322. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-editable-state.json +1 -0
  323. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-exportable-1.json +1 -0
  324. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-field-named.json +1 -0
  325. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-keep-rows-together-1.json +1 -0
  326. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-paged-sorted.json +1 -0
  327. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-paged.json +1 -0
  328. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-reorderable.json +1 -0
  329. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-repeat-header-1.json +1 -0
  330. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-sort-ascending.json +1 -0
  331. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-sort-state-key.json +1 -0
  332. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-toned-pill.json +1 -0
  333. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-transform-param.json +1 -0
  334. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-transform-undeclared-param.json +1 -0
  335. fuaran_ui-0.7.0/conformance/corpus/nodes/grid-transform.json +1 -0
  336. fuaran_ui-0.7.0/conformance/corpus/nodes/heading-1.json +1 -0
  337. fuaran_ui-0.7.0/conformance/corpus/nodes/icon-1.json +1 -0
  338. fuaran_ui-0.7.0/conformance/corpus/nodes/image-1.json +1 -0
  339. fuaran_ui-0.7.0/conformance/corpus/nodes/image-caption-1.json +1 -0
  340. fuaran_ui-0.7.0/conformance/corpus/nodes/image-caption-i18n-1.json +1 -0
  341. fuaran_ui-0.7.0/conformance/corpus/nodes/image-expandable-1.json +1 -0
  342. fuaran_ui-0.7.0/conformance/corpus/nodes/image-expandable-figure-1.json +1 -0
  343. fuaran_ui-0.7.0/conformance/corpus/nodes/image-presentation-1.json +1 -0
  344. fuaran_ui-0.7.0/conformance/corpus/nodes/image-srcset-1.json +1 -0
  345. fuaran_ui-0.7.0/conformance/corpus/nodes/limit-expr-nodes-pipeline-at-max.json +1 -0
  346. fuaran_ui-0.7.0/conformance/corpus/nodes/limit-node-depth-at-max.json +1 -0
  347. fuaran_ui-0.7.0/conformance/corpus/nodes/limit-skeleton-rows-at-max.json +1 -0
  348. fuaran_ui-0.7.0/conformance/corpus/nodes/limit-tree-item-depth-at-max.json +1 -0
  349. fuaran_ui-0.7.0/conformance/corpus/nodes/link-1.json +1 -0
  350. fuaran_ui-0.7.0/conformance/corpus/nodes/link-protected-1.json +1 -0
  351. fuaran_ui-0.7.0/conformance/corpus/nodes/list-1.json +1 -0
  352. fuaran_ui-0.7.0/conformance/corpus/nodes/lvr-1.json +1 -0
  353. fuaran_ui-0.7.0/conformance/corpus/nodes/map-1.json +1 -0
  354. fuaran_ui-0.7.0/conformance/corpus/nodes/markdown-1.json +1 -0
  355. fuaran_ui-0.7.0/conformance/corpus/nodes/masonry-1.json +1 -0
  356. fuaran_ui-0.7.0/conformance/corpus/nodes/masonry-gap.json +1 -0
  357. fuaran_ui-0.7.0/conformance/corpus/nodes/master-detail-multi-field.json +1 -0
  358. fuaran_ui-0.7.0/conformance/corpus/nodes/master-detail-preselected-second-row.json +1 -0
  359. fuaran_ui-0.7.0/conformance/corpus/nodes/master-detail-preselected.json +1 -0
  360. fuaran_ui-0.7.0/conformance/corpus/nodes/math-1.json +1 -0
  361. fuaran_ui-0.7.0/conformance/corpus/nodes/media-audio-1.json +1 -0
  362. fuaran_ui-0.7.0/conformance/corpus/nodes/media-audio-transcript-1.json +1 -0
  363. fuaran_ui-0.7.0/conformance/corpus/nodes/media-video-1.json +1 -0
  364. fuaran_ui-0.7.0/conformance/corpus/nodes/media-video-autoplay-1.json +1 -0
  365. fuaran_ui-0.7.0/conformance/corpus/nodes/media-video-captions-1.json +1 -0
  366. fuaran_ui-0.7.0/conformance/corpus/nodes/media-video-poster-1.json +1 -0
  367. fuaran_ui-0.7.0/conformance/corpus/nodes/media-video-tracks-2.json +1 -0
  368. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-1.json +1 -0
  369. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-duration-1.json +1 -0
  370. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-float-17sig.json +1 -0
  371. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-float-1e17.json +1 -0
  372. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-float-bigint.json +1 -0
  373. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-float-exp-neg.json +1 -0
  374. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-float-exp-pos.json +1 -0
  375. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-inverted-polarity.json +1 -0
  376. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-invoke.json +1 -0
  377. fuaran_ui-0.7.0/conformance/corpus/nodes/metric-nonfinite-sentinel.json +1 -0
  378. fuaran_ui-0.7.0/conformance/corpus/nodes/modal-1.json +1 -0
  379. fuaran_ui-0.7.0/conformance/corpus/nodes/mount-1.json +1 -0
  380. fuaran_ui-0.7.0/conformance/corpus/nodes/mount-2.json +1 -0
  381. fuaran_ui-0.7.0/conformance/corpus/nodes/multiselect-1.json +1 -0
  382. fuaran_ui-0.7.0/conformance/corpus/nodes/multiselect-chip-list-param.json +1 -0
  383. fuaran_ui-0.7.0/conformance/corpus/nodes/node-visible.json +1 -0
  384. fuaran_ui-0.7.0/conformance/corpus/nodes/now-environment-binding.json +1 -0
  385. fuaran_ui-0.7.0/conformance/corpus/nodes/now-grain.json +1 -0
  386. fuaran_ui-0.7.0/conformance/corpus/nodes/popover-anchored-1.json +1 -0
  387. fuaran_ui-0.7.0/conformance/corpus/nodes/popover-open-1.json +1 -0
  388. fuaran_ui-0.7.0/conformance/corpus/nodes/progress-1.json +1 -0
  389. fuaran_ui-0.7.0/conformance/corpus/nodes/query-dependson.json +1 -0
  390. fuaran_ui-0.7.0/conformance/corpus/nodes/scalar-transform-composition.json +1 -0
  391. fuaran_ui-0.7.0/conformance/corpus/nodes/scroll-1.json +1 -0
  392. fuaran_ui-0.7.0/conformance/corpus/nodes/select-1.json +1 -0
  393. fuaran_ui-0.7.0/conformance/corpus/nodes/shared-source-seeded-pair.json +1 -0
  394. fuaran_ui-0.7.0/conformance/corpus/nodes/skel-1.json +1 -0
  395. fuaran_ui-0.7.0/conformance/corpus/nodes/spark-1.json +1 -0
  396. fuaran_ui-0.7.0/conformance/corpus/nodes/spark-nonfinite-sentinel.json +1 -0
  397. fuaran_ui-0.7.0/conformance/corpus/nodes/split-1.json +1 -0
  398. fuaran_ui-0.7.0/conformance/corpus/nodes/stack-1.json +1 -0
  399. fuaran_ui-0.7.0/conformance/corpus/nodes/state-absent-default.json +1 -0
  400. fuaran_ui-0.7.0/conformance/corpus/nodes/step-1.json +1 -0
  401. fuaran_ui-0.7.0/conformance/corpus/nodes/style-direction-isolated-1.json +1 -0
  402. fuaran_ui-0.7.0/conformance/corpus/nodes/style-direction-ltr-1.json +1 -0
  403. fuaran_ui-0.7.0/conformance/corpus/nodes/style-role-voice-1.json +1 -0
  404. fuaran_ui-0.7.0/conformance/corpus/nodes/summary-1.json +1 -0
  405. fuaran_ui-0.7.0/conformance/corpus/nodes/switch-1.json +1 -0
  406. fuaran_ui-0.7.0/conformance/corpus/nodes/switch-carousel-1.json +1 -0
  407. fuaran_ui-0.7.0/conformance/corpus/nodes/switch-on-selection.json +1 -0
  408. fuaran_ui-0.7.0/conformance/corpus/nodes/switch-on-transform-scalar.json +1 -0
  409. fuaran_ui-0.7.0/conformance/corpus/nodes/switch-predicate-only.json +1 -0
  410. fuaran_ui-0.7.0/conformance/corpus/nodes/switch-predicate.json +1 -0
  411. fuaran_ui-0.7.0/conformance/corpus/nodes/table-1.json +1 -0
  412. fuaran_ui-0.7.0/conformance/corpus/nodes/table-sortable-1.json +1 -0
  413. fuaran_ui-0.7.0/conformance/corpus/nodes/tabs-1.json +1 -0
  414. fuaran_ui-0.7.0/conformance/corpus/nodes/tabs-explicit-1.json +1 -0
  415. fuaran_ui-0.7.0/conformance/corpus/nodes/text-i18n-bound-arg-1.json +1 -0
  416. fuaran_ui-0.7.0/conformance/corpus/nodes/text-i18n-mixed-args-1.json +1 -0
  417. fuaran_ui-0.7.0/conformance/corpus/nodes/toast-1.json +1 -0
  418. fuaran_ui-0.7.0/conformance/corpus/nodes/tooltip-button-1.json +1 -0
  419. fuaran_ui-0.7.0/conformance/corpus/nodes/tooltip-icon-button-1.json +1 -0
  420. fuaran_ui-0.7.0/conformance/corpus/nodes/tooltip-metric-1.json +1 -0
  421. fuaran_ui-0.7.0/conformance/corpus/nodes/transfer-board.json +1 -0
  422. fuaran_ui-0.7.0/conformance/corpus/nodes/tree-1.json +1 -0
  423. fuaran_ui-0.7.0/conformance/corpus/nodes/tree-expanded-1.json +1 -0
  424. fuaran_ui-0.7.0/conformance/corpus/nodes/tree-selection-1.json +1 -0
  425. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-1.json +1 -0
  426. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-capture-camera-1.json +1 -0
  427. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-capture-microphone-1.json +1 -0
  428. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-destination-1.json +1 -0
  429. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-drop-1.json +1 -0
  430. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-max-bytes-1.json +1 -0
  431. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-max-files-1.json +1 -0
  432. fuaran_ui-0.7.0/conformance/corpus/nodes/upload-paste-1.json +1 -0
  433. fuaran_ui-0.7.0/conformance/corpus/ops/op-batch.json +1 -0
  434. fuaran_ui-0.7.0/conformance/corpus/ops/op-editnode-action-commitlocal.json +1 -0
  435. fuaran_ui-0.7.0/conformance/corpus/ops/op-editnode.json +1 -0
  436. fuaran_ui-0.7.0/conformance/corpus/ops/op-insertchild.json +1 -0
  437. fuaran_ui-0.7.0/conformance/corpus/ops/op-movenode.json +1 -0
  438. fuaran_ui-0.7.0/conformance/corpus/ops/op-removenode.json +1 -0
  439. fuaran_ui-0.7.0/conformance/corpus/ops/op-reorderchildren.json +1 -0
  440. fuaran_ui-0.7.0/conformance/corpus/ops/op-replacebinding.json +1 -0
  441. fuaran_ui-0.7.0/conformance/corpus/ops/op-replaceroot.json +1 -0
  442. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-badfield.json +1 -0
  443. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-badindex.json +1 -0
  444. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-column0-label.json +1 -0
  445. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-column1-label.json +1 -0
  446. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-field0-required.json +1 -0
  447. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-field1-required.json +1 -0
  448. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-malformed.json +1 -0
  449. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-object-value.json +1 -0
  450. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-yfield0.json +1 -0
  451. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop-nested-yfield1.json +1 -0
  452. fuaran_ui-0.7.0/conformance/corpus/ops/op-updateprop.json +1 -0
  453. fuaran_ui-0.7.0/conformance/corpus/ops/op-updatestate.json +1 -0
  454. fuaran_ui-0.7.0/conformance/corpus/ops/op-updatestyle (phase 147 role=eyebrow + voice=structural).json +1 -0
  455. fuaran_ui-0.7.0/conformance/corpus/ops/op-updatestyle (phase 1472 direction=ltr, the only style member).json +1 -0
  456. fuaran_ui-0.7.0/conformance/corpus/ops/op-updatestyle.json +1 -0
  457. fuaran_ui-0.7.0/conformance/corpus/reject/reject-a11y-hidden-nonbool.json +1 -0
  458. fuaran_ui-0.7.0/conformance/corpus/reject/reject-a11y-label-nonstring.json +1 -0
  459. fuaran_ui-0.7.0/conformance/corpus/reject/reject-a11y-labelledby-nonstring.json +1 -0
  460. fuaran_ui-0.7.0/conformance/corpus/reject/reject-a11y-liveregion-nonstring.json +1 -0
  461. fuaran_ui-0.7.0/conformance/corpus/reject/reject-a11y-liveregion-unknown.json +1 -0
  462. fuaran_ui-0.7.0/conformance/corpus/reject/reject-a11y-not-object.json +1 -0
  463. fuaran_ui-0.7.0/conformance/corpus/reject/reject-a11y-role-nonstring.json +1 -0
  464. fuaran_ui-0.7.0/conformance/corpus/reject/reject-action-print-with-payload.json +1 -0
  465. fuaran_ui-0.7.0/conformance/corpus/reject/reject-binding-float-bool.json +1 -0
  466. fuaran_ui-0.7.0/conformance/corpus/reject/reject-binding-float-sentinel-case.json +1 -0
  467. fuaran_ui-0.7.0/conformance/corpus/reject/reject-binding-float-string.json +1 -0
  468. fuaran_ui-0.7.0/conformance/corpus/reject/reject-binding-floatseq-sentinel-case.json +1 -0
  469. fuaran_ui-0.7.0/conformance/corpus/reject/reject-binding-int-bool.json +1 -0
  470. fuaran_ui-0.7.0/conformance/corpus/reject/reject-binding-int-sentinel-string.json +1 -0
  471. fuaran_ui-0.7.0/conformance/corpus/reject/reject-box-masonry-nonpositive-cols.json +1 -0
  472. fuaran_ui-0.7.0/conformance/corpus/reject/reject-chart-annotation-date-unparseable.json +1 -0
  473. fuaran_ui-0.7.0/conformance/corpus/reject/reject-chart-annotation-nonfinite.json +1 -0
  474. fuaran_ui-0.7.0/conformance/corpus/reject/reject-chart-annotation-range-unordered.json +1 -0
  475. fuaran_ui-0.7.0/conformance/corpus/reject/reject-color-value-not-hex.json +1 -0
  476. fuaran_ui-0.7.0/conformance/corpus/reject/reject-combobox-allowfreetext-nonbool.json +1 -0
  477. fuaran_ui-0.7.0/conformance/corpus/reject/reject-confirm-missing-onconfirm.json +1 -0
  478. fuaran_ui-0.7.0/conformance/corpus/reject/reject-confirm-nested.json +1 -0
  479. fuaran_ui-0.7.0/conformance/corpus/reject/reject-daterange-unordered.json +1 -0
  480. fuaran_ui-0.7.0/conformance/corpus/reject/reject-embed-missing-title.json +1 -0
  481. fuaran_ui-0.7.0/conformance/corpus/reject/reject-embed-permission-nonstring.json +1 -0
  482. fuaran_ui-0.7.0/conformance/corpus/reject/reject-embed-unknown-permission.json +1 -0
  483. fuaran_ui-0.7.0/conformance/corpus/reject/reject-emptynodeid.json +1 -0
  484. fuaran_ui-0.7.0/conformance/corpus/reject/reject-expr-col-reference.json +1 -0
  485. fuaran_ui-0.7.0/conformance/corpus/reject/reject-expr-unbound-param.json +1 -0
  486. fuaran_ui-0.7.0/conformance/corpus/reject/reject-fieldrule-empty.json +1 -0
  487. fuaran_ui-0.7.0/conformance/corpus/reject/reject-fieldrule-length-unordered.json +1 -0
  488. fuaran_ui-0.7.0/conformance/corpus/reject/reject-formfield-near-miss-validation.json +1 -0
  489. fuaran_ui-0.7.0/conformance/corpus/reject/reject-i18n-arg-binding-missing-key.json +1 -0
  490. fuaran_ui-0.7.0/conformance/corpus/reject/reject-i18n-arg-unknown-binding-case.json +1 -0
  491. fuaran_ui-0.7.0/conformance/corpus/reject/reject-image-expandable-nonbool.json +1 -0
  492. fuaran_ui-0.7.0/conformance/corpus/reject/reject-image-srcset-nonpositive-width.json +1 -0
  493. fuaran_ui-0.7.0/conformance/corpus/reject/reject-image-srcset-null.json +1 -0
  494. fuaran_ui-0.7.0/conformance/corpus/reject/reject-int-slot-fractional.json +1 -0
  495. fuaran_ui-0.7.0/conformance/corpus/reject/reject-int-slot-out-of-range.json +1 -0
  496. fuaran_ui-0.7.0/conformance/corpus/reject/reject-invalid-empty.json +0 -0
  497. fuaran_ui-0.7.0/conformance/corpus/reject/reject-invalid-garbage.json +1 -0
  498. fuaran_ui-0.7.0/conformance/corpus/reject/reject-invalid-truncated.json +1 -0
  499. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-bare-nan.json +1 -0
  500. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-duplicate-key.json +1 -0
  501. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-lone-high-surrogate.json +1 -0
  502. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-lone-low-surrogate.json +1 -0
  503. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-number-empty-exponent.json +1 -0
  504. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-number-leading-plus.json +1 -0
  505. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-number-leading-zero.json +1 -0
  506. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-number-no-integer-part.json +1 -0
  507. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-number-trailing-point.json +1 -0
  508. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-raw-control-char.json +1 -0
  509. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-surrogate-pair-split.json +1 -0
  510. fuaran_ui-0.7.0/conformance/corpus/reject/reject-json-trailing-content.json +1 -0
  511. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-expr-nodes-derive.json +1 -0
  512. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-expr-nodes-filter.json +1 -0
  513. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-expr-nodes-transform-bypass.json +1 -0
  514. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-json-depth-at-max.json +1 -0
  515. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-json-depth.json +1 -0
  516. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-node-depth.json +1 -0
  517. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-op-depth.json +1 -0
  518. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-skeleton-rows.json +1 -0
  519. fuaran_ui-0.7.0/conformance/corpus/reject/reject-limit-tree-item-depth.json +1 -0
  520. fuaran_ui-0.7.0/conformance/corpus/reject/reject-local-codec-no-inverse.json +1 -0
  521. fuaran_ui-0.7.0/conformance/corpus/reject/reject-local-oncommit-and-committo.json +1 -0
  522. fuaran_ui-0.7.0/conformance/corpus/reject/reject-media-autoplay-nonbool.json +1 -0
  523. fuaran_ui-0.7.0/conformance/corpus/reject/reject-media-missing-label.json +1 -0
  524. fuaran_ui-0.7.0/conformance/corpus/reject/reject-media-track-default-nonbool.json +1 -0
  525. fuaran_ui-0.7.0/conformance/corpus/reject/reject-media-track-missing-srclang.json +1 -0
  526. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-binding-type.json +1 -0
  527. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-custom-moduleid.json +1 -0
  528. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-markdown-text.json +1 -0
  529. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-metric-value.json +1 -0
  530. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-mount-scopeid.json +1 -0
  531. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-node-id.json +1 -0
  532. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-node-kind.json +1 -0
  533. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-switch-cases.json +1 -0
  534. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-switch-default.json +1 -0
  535. fuaran_ui-0.7.0/conformance/corpus/reject/reject-missing-switch-statekey.json +1 -0
  536. fuaran_ui-0.7.0/conformance/corpus/reject/reject-modal-modality-nonstring.json +1 -0
  537. fuaran_ui-0.7.0/conformance/corpus/reject/reject-modal-modality-unknown.json +1 -0
  538. fuaran_ui-0.7.0/conformance/corpus/reject/reject-navigate-target-invalid.json +1 -0
  539. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-a11y-aria-hidden.json +1 -0
  540. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-a11y-arialabel.json +1 -0
  541. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-a11y-live.json +1 -0
  542. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-a11y-liveregion-case.json +1 -0
  543. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-column-readonly.json +1 -0
  544. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-grid-behaviour-record.json +1 -0
  545. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-grid-current-page.json +1 -0
  546. fuaran_ui-0.7.0/conformance/corpus/reject/reject-nearmiss-grid-sortable.json +1 -0
  547. fuaran_ui-0.7.0/conformance/corpus/reject/reject-now-grain-invalid.json +1 -0
  548. fuaran_ui-0.7.0/conformance/corpus/reject/reject-null-action-aitool-args.json +1 -0
  549. fuaran_ui-0.7.0/conformance/corpus/reject/reject-null-action-notify-payload.json +1 -0
  550. fuaran_ui-0.7.0/conformance/corpus/reject/reject-null-action-setstate-value.json +1 -0
  551. fuaran_ui-0.7.0/conformance/corpus/reject/reject-null-custom-prop.json +1 -0
  552. fuaran_ui-0.7.0/conformance/corpus/reject/reject-null-i18n-arg.json +1 -0
  553. fuaran_ui-0.7.0/conformance/corpus/reject/reject-null-updateprop-value.json +1 -0
  554. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-insertchild-empty-childid.json +1 -0
  555. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-insertchild-missing-parentid.json +1 -0
  556. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-insertchild-retired-position.json +1 -0
  557. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-missing-type.json +1 -0
  558. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-movenode-retired-newposition.json +1 -0
  559. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-reorderchildren-wrongtype.json +1 -0
  560. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-unknown-yeet.json +1 -0
  561. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-updateprop-missing-path.json +1 -0
  562. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-updatestyle-direction-nonstring.json +1 -0
  563. fuaran_ui-0.7.0/conformance/corpus/reject/reject-op-updatestyle-direction-unknown.json +1 -0
  564. fuaran_ui-0.7.0/conformance/corpus/reject/reject-rating-max-zero.json +1 -0
  565. fuaran_ui-0.7.0/conformance/corpus/reject/reject-setstate-value-and-valuefrom.json +1 -0
  566. fuaran_ui-0.7.0/conformance/corpus/reject/reject-spark-element-nonnumeric.json +1 -0
  567. fuaran_ui-0.7.0/conformance/corpus/reject/reject-state-default-without-key.json +1 -0
  568. fuaran_ui-0.7.0/conformance/corpus/reject/reject-style-direction-nonstring.json +1 -0
  569. fuaran_ui-0.7.0/conformance/corpus/reject/reject-style-direction-unknown.json +1 -0
  570. fuaran_ui-0.7.0/conformance/corpus/reject/reject-switch-autoadvance-fractional.json +1 -0
  571. fuaran_ui-0.7.0/conformance/corpus/reject/reject-switch-autoadvance-negative.json +1 -0
  572. fuaran_ui-0.7.0/conformance/corpus/reject/reject-switch-autoadvance-zero.json +1 -0
  573. fuaran_ui-0.7.0/conformance/corpus/reject/reject-switch-case-match-and-when.json +1 -0
  574. fuaran_ui-0.7.0/conformance/corpus/reject/reject-switch-case-neither.json +1 -0
  575. fuaran_ui-0.7.0/conformance/corpus/reject/reject-tokens-closed-without-suggestions.json +1 -0
  576. fuaran_ui-0.7.0/conformance/corpus/reject/reject-tokens-value-not-list.json +1 -0
  577. fuaran_ui-0.7.0/conformance/corpus/reject/reject-tonedpill-unknown-tone.json +1 -0
  578. fuaran_ui-0.7.0/conformance/corpus/reject/reject-tooltip-nonstring.json +1 -0
  579. fuaran_ui-0.7.0/conformance/corpus/reject/reject-transform-project-columns-and-cols.json +1 -0
  580. fuaran_ui-0.7.0/conformance/corpus/reject/reject-transform-sort-key-column-and-col.json +1 -0
  581. fuaran_ui-0.7.0/conformance/corpus/reject/reject-tree-item-missing-id.json +1 -0
  582. fuaran_ui-0.7.0/conformance/corpus/reject/reject-tree-item-missing-label.json +1 -0
  583. fuaran_ui-0.7.0/conformance/corpus/reject/reject-tree-nested-item-missing-id.json +1 -0
  584. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-binding.json +1 -0
  585. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-capture-source.json +1 -0
  586. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-drawing-curve-command.json +1 -0
  587. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-drawing-shape.json +1 -0
  588. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-image-aspect.json +1 -0
  589. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-link-protection.json +1 -0
  590. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-media-kind.json +1 -0
  591. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-mount-direction.json +1 -0
  592. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-static-sort-direction.json +1 -0
  593. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-textsource.json +1 -0
  594. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-tone.json +1 -0
  595. fuaran_ui-0.7.0/conformance/corpus/reject/reject-unknown-trend-polarity.json +1 -0
  596. fuaran_ui-0.7.0/conformance/corpus/reject/reject-upload-acceptpaste-nonbool.json +1 -0
  597. fuaran_ui-0.7.0/conformance/corpus/reject/reject-upload-destination-empty.json +1 -0
  598. fuaran_ui-0.7.0/conformance/corpus/reject/reject-upload-droptarget-nonbool.json +1 -0
  599. fuaran_ui-0.7.0/conformance/corpus/reject/reject-upload-maxbytes-nonint.json +1 -0
  600. fuaran_ui-0.7.0/conformance/corpus/reject/reject-upload-maxbytes-nonpositive.json +1 -0
  601. fuaran_ui-0.7.0/conformance/corpus/reject/reject-upload-maxfiles-nonint.json +1 -0
  602. fuaran_ui-0.7.0/conformance/corpus/reject/reject-upload-maxfiles-nonpositive.json +1 -0
  603. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongnodekind-sparkler.json +1 -0
  604. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongnodekind-widget.json +1 -0
  605. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-box-break-before.json +1 -0
  606. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-box-children.json +1 -0
  607. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-box-keep-together.json +1 -0
  608. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-clipboard-payload.json +1 -0
  609. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-discriminator.json +1 -0
  610. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-default-sort-column.json +1 -0
  611. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-exportable-number.json +1 -0
  612. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-exportable.json +1 -0
  613. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-keep-rows-together.json +1 -0
  614. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-page-size-zero.json +1 -0
  615. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-repeat-header.json +1 -0
  616. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-transfer-in-key.json +1 -0
  617. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-grid-transfer-out-key.json +1 -0
  618. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-heading-level.json +1 -0
  619. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-id.json +1 -0
  620. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-kind.json +1 -0
  621. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-static-sort-column.json +1 -0
  622. fuaran_ui-0.7.0/conformance/corpus/reject/reject-wrongtype-style-tone.json +1 -0
  623. fuaran_ui-0.7.0/conformance/corpus/render-fidelity.json +1100 -0
  624. fuaran_ui-0.7.0/conformance/corpus/render-text.json +203 -0
  625. fuaran_ui-0.7.0/conformance/corpus/schema.json +10028 -0
  626. fuaran_ui-0.7.0/conformance/corpus/snapshot.json +4 -0
  627. fuaran_ui-0.7.0/conformance/corpus/style-observer/accent-indistinct-toned-tint.json +17 -0
  628. fuaran_ui-0.7.0/conformance/corpus/style-observer/budget-at-the-tolerance-edge.json +11 -0
  629. fuaran_ui-0.7.0/conformance/corpus/style-observer/budget-breached.json +13 -0
  630. fuaran_ui-0.7.0/conformance/corpus/style-observer/budget-within-tolerance.json +11 -0
  631. fuaran_ui-0.7.0/conformance/corpus/style-observer/contrast-below-aa-grey-on-white.json +17 -0
  632. fuaran_ui-0.7.0/conformance/corpus/style-observer/first-opaque-layer-wins.json +15 -0
  633. fuaran_ui-0.7.0/conformance/corpus/style-observer/font-role-monospace.json +15 -0
  634. fuaran_ui-0.7.0/conformance/corpus/style-observer/font-role-sans-serif.json +15 -0
  635. fuaran_ui-0.7.0/conformance/corpus/style-observer/font-role-serif.json +15 -0
  636. fuaran_ui-0.7.0/conformance/corpus/style-observer/font-role-unknown.json +15 -0
  637. fuaran_ui-0.7.0/conformance/corpus/style-observer/invisible-and-accent-indistinct.json +18 -0
  638. fuaran_ui-0.7.0/conformance/corpus/style-observer/invisible-white-on-white.json +17 -0
  639. fuaran_ui-0.7.0/conformance/corpus/style-observer/legible-black-on-white.json +15 -0
  640. fuaran_ui-0.7.0/conformance/corpus/style-observer/manifest-contrast-below-declared-floor.json +10 -0
  641. fuaran_ui-0.7.0/conformance/corpus/style-observer/manifest-off-palette-colour.json +10 -0
  642. fuaran_ui-0.7.0/conformance/corpus/style-observer/manifest-token-resolution-failed-escaped-slot.json +10 -0
  643. fuaran_ui-0.7.0/conformance/corpus/style-observer/manifest-token-resolution-failed.json +10 -0
  644. fuaran_ui-0.7.0/conformance/corpus/style-observer/manifest-untoned-node-is-exempt.json +8 -0
  645. fuaran_ui-0.7.0/conformance/corpus/style-observer/no-layers-means-the-implicit-white-canvas.json +15 -0
  646. fuaran_ui-0.7.0/conformance/corpus/style-observer/toned-observation-carries-its-tone.json +17 -0
  647. fuaran_ui-0.7.0/conformance/corpus/style-observer/transparent-layers-fall-through-to-white.json +15 -0
  648. fuaran_ui-0.7.0/conformance/corpus/style-observer/untoned-tint-is-exempt.json +15 -0
  649. fuaran_ui-0.7.0/conformance/host-capability-manifest.json +204 -0
  650. fuaran_ui-0.7.0/conformance/sync_corpus.py +471 -0
  651. fuaran_ui-0.7.0/docs/AUTHORING.md +553 -0
  652. fuaran_ui-0.7.0/docs/decoder-robustness.json +28 -0
  653. fuaran_ui-0.7.0/docs/decoder-robustness.md +21 -0
  654. fuaran_ui-0.7.0/docs/fable-python-decision.md +127 -0
  655. fuaran_ui-0.7.0/examples/getting_started.py +679 -0
  656. fuaran_ui-0.7.0/examples/notebook_display.ipynb +2992 -0
  657. fuaran_ui-0.7.0/examples/quickstart_client.py +36 -0
  658. fuaran_ui-0.7.0/examples/quickstart_reactive_data_app.py +119 -0
  659. fuaran_ui-0.7.0/examples/quickstart_terse_dashboard.py +106 -0
  660. fuaran_ui-0.7.0/pyproject.toml +98 -0
  661. fuaran_ui-0.7.0/run.ps1 +133 -0
  662. fuaran_ui-0.7.0/samples/fastapi-host/README.md +168 -0
  663. fuaran_ui-0.7.0/samples/fastapi-host/app.py +364 -0
  664. fuaran_ui-0.7.0/src/fuaran_ui/__init__.py +113 -0
  665. fuaran_ui-0.7.0/src/fuaran_ui/ai_tools/__init__.py +86 -0
  666. fuaran_ui-0.7.0/src/fuaran_ui/ai_tools/dispatch.py +99 -0
  667. fuaran_ui-0.7.0/src/fuaran_ui/ai_tools/introspect.py +190 -0
  668. fuaran_ui-0.7.0/src/fuaran_ui/ai_tools/surface.py +194 -0
  669. fuaran_ui-0.7.0/src/fuaran_ui/canonical.py +216 -0
  670. fuaran_ui-0.7.0/src/fuaran_ui/charts/__init__.py +3391 -0
  671. fuaran_ui-0.7.0/src/fuaran_ui/cli/__init__.py +31 -0
  672. fuaran_ui-0.7.0/src/fuaran_ui/cli/core.py +387 -0
  673. fuaran_ui-0.7.0/src/fuaran_ui/client/__init__.py +77 -0
  674. fuaran_ui-0.7.0/src/fuaran_ui/client/client.py +284 -0
  675. fuaran_ui-0.7.0/src/fuaran_ui/client/contract.py +199 -0
  676. fuaran_ui-0.7.0/src/fuaran_ui/client/session.py +66 -0
  677. fuaran_ui-0.7.0/src/fuaran_ui/client/wire.py +250 -0
  678. fuaran_ui-0.7.0/src/fuaran_ui/compute/__init__.py +42 -0
  679. fuaran_ui-0.7.0/src/fuaran_ui/compute/evaluate.py +658 -0
  680. fuaran_ui-0.7.0/src/fuaran_ui/conformance/__init__.py +7 -0
  681. fuaran_ui-0.7.0/src/fuaran_ui/conformance/bridge.py +84 -0
  682. fuaran_ui-0.7.0/src/fuaran_ui/conformance/decoder_fuzz.py +1046 -0
  683. fuaran_ui-0.7.0/src/fuaran_ui/conformance/fuzz_exchange.py +209 -0
  684. fuaran_ui-0.7.0/src/fuaran_ui/conformance/harness.py +111 -0
  685. fuaran_ui-0.7.0/src/fuaran_ui/conformance/host_capability.py +366 -0
  686. fuaran_ui-0.7.0/src/fuaran_ui/conformance/refusal_report.py +123 -0
  687. fuaran_ui-0.7.0/src/fuaran_ui/dag.py +277 -0
  688. fuaran_ui-0.7.0/src/fuaran_ui/dataframe/__init__.py +149 -0
  689. fuaran_ui-0.7.0/src/fuaran_ui/dataframe/codec.py +1104 -0
  690. fuaran_ui-0.7.0/src/fuaran_ui/dataframe/evaluate.py +940 -0
  691. fuaran_ui-0.7.0/src/fuaran_ui/dataframe/model.py +428 -0
  692. fuaran_ui-0.7.0/src/fuaran_ui/elicitation.py +559 -0
  693. fuaran_ui-0.7.0/src/fuaran_ui/envelope.py +166 -0
  694. fuaran_ui-0.7.0/src/fuaran_ui/function.py +294 -0
  695. fuaran_ui-0.7.0/src/fuaran_ui/layout_observer/__init__.py +70 -0
  696. fuaran_ui-0.7.0/src/fuaran_ui/layout_observer/flags.py +260 -0
  697. fuaran_ui-0.7.0/src/fuaran_ui/layout_observer/observer.py +248 -0
  698. fuaran_ui-0.7.0/src/fuaran_ui/limits.py +136 -0
  699. fuaran_ui-0.7.0/src/fuaran_ui/merge.py +676 -0
  700. fuaran_ui-0.7.0/src/fuaran_ui/model.py +89 -0
  701. fuaran_ui-0.7.0/src/fuaran_ui/op_stream/__init__.py +140 -0
  702. fuaran_ui-0.7.0/src/fuaran_ui/op_stream/hash_chain.py +230 -0
  703. fuaran_ui-0.7.0/src/fuaran_ui/op_stream/in_memory_sink.py +144 -0
  704. fuaran_ui-0.7.0/src/fuaran_ui/op_stream/replay.py +375 -0
  705. fuaran_ui-0.7.0/src/fuaran_ui/op_stream/types.py +280 -0
  706. fuaran_ui-0.7.0/src/fuaran_ui/ops/__init__.py +72 -0
  707. fuaran_ui-0.7.0/src/fuaran_ui/ops/apply.py +1053 -0
  708. fuaran_ui-0.7.0/src/fuaran_ui/ops/decode.py +236 -0
  709. fuaran_ui-0.7.0/src/fuaran_ui/ops/diff.py +305 -0
  710. fuaran_ui-0.7.0/src/fuaran_ui/ops/encode.py +11 -0
  711. fuaran_ui-0.7.0/src/fuaran_ui/ops/placement.py +504 -0
  712. fuaran_ui-0.7.0/src/fuaran_ui/render_fidelity.py +561 -0
  713. fuaran_ui-0.7.0/src/fuaran_ui/renderer/__init__.py +152 -0
  714. fuaran_ui-0.7.0/src/fuaran_ui/renderer/bindings.py +873 -0
  715. fuaran_ui-0.7.0/src/fuaran_ui/renderer/content/fuaran-reference.css +4072 -0
  716. fuaran_ui-0.7.0/src/fuaran_ui/renderer/document.py +925 -0
  717. fuaran_ui-0.7.0/src/fuaran_ui/renderer/egress.py +596 -0
  718. fuaran_ui-0.7.0/src/fuaran_ui/renderer/email.py +1437 -0
  719. fuaran_ui-0.7.0/src/fuaran_ui/renderer/html.py +67 -0
  720. fuaran_ui-0.7.0/src/fuaran_ui/renderer/markdown.py +1211 -0
  721. fuaran_ui-0.7.0/src/fuaran_ui/renderer/notebook.py +406 -0
  722. fuaran_ui-0.7.0/src/fuaran_ui/renderer/projection.py +176 -0
  723. fuaran_ui-0.7.0/src/fuaran_ui/renderer/render.py +2793 -0
  724. fuaran_ui-0.7.0/src/fuaran_ui/renderer/sanitize.py +591 -0
  725. fuaran_ui-0.7.0/src/fuaran_ui/renderer/seeds.py +159 -0
  726. fuaran_ui-0.7.0/src/fuaran_ui/renderer/theme.py +263 -0
  727. fuaran_ui-0.7.0/src/fuaran_ui/result.py +71 -0
  728. fuaran_ui-0.7.0/src/fuaran_ui/runtime/__init__.py +22 -0
  729. fuaran_ui-0.7.0/src/fuaran_ui/runtime/runtime.py +259 -0
  730. fuaran_ui-0.7.0/src/fuaran_ui/runtime/sample.py +57 -0
  731. fuaran_ui-0.7.0/src/fuaran_ui/schema/__init__.py +15 -0
  732. fuaran_ui-0.7.0/src/fuaran_ui/schema/decode.py +4406 -0
  733. fuaran_ui-0.7.0/src/fuaran_ui/schema/encode.py +11 -0
  734. fuaran_ui-0.7.0/src/fuaran_ui/schema/types.py +4007 -0
  735. fuaran_ui-0.7.0/src/fuaran_ui/shapeguard.py +315 -0
  736. fuaran_ui-0.7.0/src/fuaran_ui/style_observer/__init__.py +129 -0
  737. fuaran_ui-0.7.0/src/fuaran_ui/style_observer/color.py +91 -0
  738. fuaran_ui-0.7.0/src/fuaran_ui/style_observer/flags.py +326 -0
  739. fuaran_ui-0.7.0/src/fuaran_ui/style_observer/manifest_flags.py +108 -0
  740. fuaran_ui-0.7.0/src/fuaran_ui/style_observer/observer.py +334 -0
  741. fuaran_ui-0.7.0/src/fuaran_ui/teleport.py +263 -0
  742. fuaran_ui-0.7.0/src/fuaran_ui/theme_manifest/__init__.py +91 -0
  743. fuaran_ui-0.7.0/src/fuaran_ui/theme_manifest/decode.py +174 -0
  744. fuaran_ui-0.7.0/src/fuaran_ui/theme_manifest/manifest.py +184 -0
  745. fuaran_ui-0.7.0/src/fuaran_ui/theme_manifest/project.py +173 -0
  746. fuaran_ui-0.7.0/src/fuaran_ui/ui/__init__.py +1663 -0
  747. fuaran_ui-0.7.0/src/fuaran_ui/ui/capability.py +242 -0
  748. fuaran_ui-0.7.0/src/fuaran_ui/ui/compute.py +759 -0
  749. fuaran_ui-0.7.0/src/fuaran_ui/ui/controls.py +313 -0
  750. fuaran_ui-0.7.0/src/fuaran_ui/ui/quick.py +381 -0
  751. fuaran_ui-0.7.0/src/fuaran_ui/validator/__init__.py +7 -0
  752. fuaran_ui-0.7.0/src/fuaran_ui/validator/validate.py +780 -0
  753. fuaran_ui-0.7.0/tests/_corpus.py +147 -0
  754. fuaran_ui-0.7.0/tests/_reference_host.py +139 -0
  755. fuaran_ui-0.7.0/tests/fixtures/cli_parity/contract.json +95 -0
  756. fuaran_ui-0.7.0/tests/fixtures/cli_parity/missing-kind.json +1 -0
  757. fuaran_ui-0.7.0/tests/fixtures/cli_parity/not-json.json +1 -0
  758. fuaran_ui-0.7.0/tests/fixtures/cli_parity/valid-node.json +1 -0
  759. fuaran_ui-0.7.0/tests/fixtures/dataframe_parity.json +1 -0
  760. fuaran_ui-0.7.0/tests/test_action_cases.py +62 -0
  761. fuaran_ui-0.7.0/tests/test_active_index_omit_default.py +84 -0
  762. fuaran_ui-0.7.0/tests/test_ai_tools.py +179 -0
  763. fuaran_ui-0.7.0/tests/test_authoring_toggle_now_selection.py +158 -0
  764. fuaran_ui-0.7.0/tests/test_bare_state_source.py +75 -0
  765. fuaran_ui-0.7.0/tests/test_bindings_actions.py +402 -0
  766. fuaran_ui-0.7.0/tests/test_bridge.py +91 -0
  767. fuaran_ui-0.7.0/tests/test_browser_style_observer.py +80 -0
  768. fuaran_ui-0.7.0/tests/test_canonical_numbers.py +48 -0
  769. fuaran_ui-0.7.0/tests/test_capability_seam.py +118 -0
  770. fuaran_ui-0.7.0/tests/test_chart_lowering.py +940 -0
  771. fuaran_ui-0.7.0/tests/test_cli.py +211 -0
  772. fuaran_ui-0.7.0/tests/test_cli_parity.py +178 -0
  773. fuaran_ui-0.7.0/tests/test_client.py +517 -0
  774. fuaran_ui-0.7.0/tests/test_client_mock_endpoint.py +132 -0
  775. fuaran_ui-0.7.0/tests/test_compute.py +417 -0
  776. fuaran_ui-0.7.0/tests/test_compute_authoring.py +123 -0
  777. fuaran_ui-0.7.0/tests/test_controls.py +309 -0
  778. fuaran_ui-0.7.0/tests/test_corpus_sentinel.py +220 -0
  779. fuaran_ui-0.7.0/tests/test_corpus_sync.py +119 -0
  780. fuaran_ui-0.7.0/tests/test_dag_roundtrip.py +174 -0
  781. fuaran_ui-0.7.0/tests/test_dataframe_parity.py +72 -0
  782. fuaran_ui-0.7.0/tests/test_decode_determinism.py +321 -0
  783. fuaran_ui-0.7.0/tests/test_decoder_fuzz.py +202 -0
  784. fuaran_ui-0.7.0/tests/test_diff.py +365 -0
  785. fuaran_ui-0.7.0/tests/test_diff_golden.py +116 -0
  786. fuaran_ui-0.7.0/tests/test_document_bytes.py +106 -0
  787. fuaran_ui-0.7.0/tests/test_egress_policy.py +494 -0
  788. fuaran_ui-0.7.0/tests/test_elicitation.py +115 -0
  789. fuaran_ui-0.7.0/tests/test_emission_grammar.py +214 -0
  790. fuaran_ui-0.7.0/tests/test_envelope.py +93 -0
  791. fuaran_ui-0.7.0/tests/test_fastapi_host.py +194 -0
  792. fuaran_ui-0.7.0/tests/test_fastapi_spend_guards.py +179 -0
  793. fuaran_ui-0.7.0/tests/test_field_rule.py +323 -0
  794. fuaran_ui-0.7.0/tests/test_field_widening.py +524 -0
  795. fuaran_ui-0.7.0/tests/test_function.py +159 -0
  796. fuaran_ui-0.7.0/tests/test_fuzz_exchange.py +168 -0
  797. fuaran_ui-0.7.0/tests/test_generative_parity.py +234 -0
  798. fuaran_ui-0.7.0/tests/test_host_capability_manifest.py +236 -0
  799. fuaran_ui-0.7.0/tests/test_isnull_evaluation.py +116 -0
  800. fuaran_ui-0.7.0/tests/test_kind_set.py +125 -0
  801. fuaran_ui-0.7.0/tests/test_layout_observer.py +162 -0
  802. fuaran_ui-0.7.0/tests/test_lenient.py +32 -0
  803. fuaran_ui-0.7.0/tests/test_limits.py +176 -0
  804. fuaran_ui-0.7.0/tests/test_list_params.py +429 -0
  805. fuaran_ui-0.7.0/tests/test_local_wire.py +160 -0
  806. fuaran_ui-0.7.0/tests/test_manifest_flags.py +135 -0
  807. fuaran_ui-0.7.0/tests/test_markdown_corpus.py +176 -0
  808. fuaran_ui-0.7.0/tests/test_masonry_layout.py +119 -0
  809. fuaran_ui-0.7.0/tests/test_merge_conformance.py +207 -0
  810. fuaran_ui-0.7.0/tests/test_merge_primacy.py +207 -0
  811. fuaran_ui-0.7.0/tests/test_node_child_routing.py +105 -0
  812. fuaran_ui-0.7.0/tests/test_node_envelope_members.py +109 -0
  813. fuaran_ui-0.7.0/tests/test_node_kinds_drawing_fact_mount.py +285 -0
  814. fuaran_ui-0.7.0/tests/test_notebook_display.py +356 -0
  815. fuaran_ui-0.7.0/tests/test_op_stream.py +602 -0
  816. fuaran_ui-0.7.0/tests/test_ops_apply.py +451 -0
  817. fuaran_ui-0.7.0/tests/test_packaging_contract.py +37 -0
  818. fuaran_ui-0.7.0/tests/test_placement.py +777 -0
  819. fuaran_ui-0.7.0/tests/test_projections.py +441 -0
  820. fuaran_ui-0.7.0/tests/test_reject.py +20 -0
  821. fuaran_ui-0.7.0/tests/test_render_a11y_corpus.py +154 -0
  822. fuaran_ui-0.7.0/tests/test_render_a11y_placement.py +88 -0
  823. fuaran_ui-0.7.0/tests/test_render_a11y_projection.py +125 -0
  824. fuaran_ui-0.7.0/tests/test_render_conditional_visibility.py +133 -0
  825. fuaran_ui-0.7.0/tests/test_render_fidelity.py +143 -0
  826. fuaran_ui-0.7.0/tests/test_render_obligations.py +1132 -0
  827. fuaran_ui-0.7.0/tests/test_render_parity.py +345 -0
  828. fuaran_ui-0.7.0/tests/test_render_sanitize.py +228 -0
  829. fuaran_ui-0.7.0/tests/test_render_text_corpus.py +225 -0
  830. fuaran_ui-0.7.0/tests/test_render_tooltip.py +193 -0
  831. fuaran_ui-0.7.0/tests/test_renderer.py +395 -0
  832. fuaran_ui-0.7.0/tests/test_retired_position.py +68 -0
  833. fuaran_ui-0.7.0/tests/test_roundtrip.py +24 -0
  834. fuaran_ui-0.7.0/tests/test_runtime.py +146 -0
  835. fuaran_ui-0.7.0/tests/test_sanitization_corpus.py +137 -0
  836. fuaran_ui-0.7.0/tests/test_scalar_compute_parity.py +174 -0
  837. fuaran_ui-0.7.0/tests/test_schema_conformance.py +75 -0
  838. fuaran_ui-0.7.0/tests/test_sparkline_lowering.py +204 -0
  839. fuaran_ui-0.7.0/tests/test_stacked_omit_default.py +74 -0
  840. fuaran_ui-0.7.0/tests/test_state_seeding.py +220 -0
  841. fuaran_ui-0.7.0/tests/test_style_observer.py +219 -0
  842. fuaran_ui-0.7.0/tests/test_style_observer_corpus.py +176 -0
  843. fuaran_ui-0.7.0/tests/test_tabs_stepper_typed_spec.py +140 -0
  844. fuaran_ui-0.7.0/tests/test_teleport.py +131 -0
  845. fuaran_ui-0.7.0/tests/test_theme_manifest.py +118 -0
  846. fuaran_ui-0.7.0/tests/test_toned_pill.py +160 -0
  847. fuaran_ui-0.7.0/tests/test_trend_polarity.py +248 -0
  848. fuaran_ui-0.7.0/tests/test_ui_authoring.py +2346 -0
  849. fuaran_ui-0.7.0/tests/test_ui_quick.py +277 -0
  850. fuaran_ui-0.7.0/tests/test_validator.py +280 -0
  851. fuaran_ui-0.7.0/tests/test_validator_coverage.py +83 -0
  852. fuaran_ui-0.7.0/validator-coverage.json +42 -0
@@ -0,0 +1,31 @@
1
+ # Pin canonical text-file line endings to LF.
2
+ #
3
+ # `text=auto` lets git detect text vs. binary; `eol=lf` pins the
4
+ # canonical in-repo line ending. On a Windows checkout, files stay LF
5
+ # on disk (no autocrlf round-trip churn), eliminating the recurring
6
+ # "LF will be replaced by CRLF the next time Git touches it" warnings
7
+ # and phantom "modified" churn on tool-regenerated files.
8
+
9
+ * text=auto eol=lf
10
+
11
+ # Explicit binary types — git's auto-detection is usually correct
12
+ # but spell out the common ones to be safe.
13
+ *.png binary
14
+ *.jpg binary
15
+ *.jpeg binary
16
+ *.gif binary
17
+ *.ico binary
18
+ *.svg binary
19
+ *.dll binary
20
+ *.exe binary
21
+ *.pdb binary
22
+ *.nupkg binary
23
+ *.snupkg binary
24
+ *.zip binary
25
+ *.tar binary
26
+ *.gz binary
27
+ *.pdf binary
28
+ *.woff binary
29
+ *.woff2 binary
30
+ *.ttf binary
31
+ *.eot binary
@@ -0,0 +1,21 @@
1
+ # Dependabot — the other half of SHA-pinning a GitHub Action.
2
+ #
3
+ # A digest pin removes the "a moved tag silently changed the credential-bearing
4
+ # code in my publish job" hazard, and replaces it with "the pin is now frozen at
5
+ # whatever was current the day it was written". This config is what keeps the
6
+ # second from becoming permanent: Dependabot proposes each bump as a reviewable
7
+ # PR carrying the new digest and the release notes behind it, so an upgrade is a
8
+ # decision somebody made rather than one that happened.
9
+ #
10
+ # Scope is `github-actions` only. The language ecosystems in this repository are
11
+ # pinned and reviewed through their own lockfiles/props and are deliberately not
12
+ # on Dependabot's schedule here.
13
+ version: 2
14
+ updates:
15
+ - package-ecosystem: github-actions
16
+ directory: "/"
17
+ schedule:
18
+ interval: monthly
19
+ open-pull-requests-limit: 5
20
+ commit-message:
21
+ prefix: ci
@@ -0,0 +1,231 @@
1
+ # Build, test and wire-format conformance gate for the Python host.
2
+ #
3
+ # ── Layout ───────────────────────────────────────────────────────────────────
4
+ # The conformance corpus is its own public repository. The test suite resolves
5
+ # it as a SIBLING of this repo root (tests/_corpus.py walks to
6
+ # `<container>/wire-format-fixtures`), so this repo is checked out into a
7
+ # subdirectory and the corpus beside it:
8
+ #
9
+ # $GITHUB_WORKSPACE/
10
+ # ├── fuaran-py/ ← this repo
11
+ # └── wire-format-fixtures/ ← the corpus (fuaran-ui/fuaran-ui-specification)
12
+ #
13
+ # The corpus repository is PUBLIC, so the checkout is anonymous — no token.
14
+ #
15
+ # ── Why the corpus assertion below is not optional ───────────────────────────
16
+ # When the corpus is absent, tests/_corpus.py does NOT fail — it silently falls
17
+ # back to the committed offline snapshot under conformance/corpus/. A layout
18
+ # drift would therefore leave the suite certifying against a stale local copy of
19
+ # the spec while the job stayed green, which is the one failure mode a
20
+ # conformance gate must never have. The assertion turns that into a hard stop.
21
+
22
+ name: CI
23
+
24
+ on:
25
+ push:
26
+ branches: [main]
27
+ pull_request:
28
+ branches: [main]
29
+
30
+ permissions:
31
+ contents: read
32
+
33
+ env:
34
+ # ── QUARANTINE ──────────────────────────────────────────────────────────────────────────
35
+ # Cases that fail on a clean tree are excluded from the blocking gate here, so
36
+ # that a NEW regression is caught while known drift stays visible. An entry is
37
+ # not a judgement that a case is wrong — it is a record of known, understood,
38
+ # outstanding work, and the list SHRINKS TO EMPTY as the decoder catches up.
39
+ # Delete entries as they start passing; do not add to it to make a red build
40
+ # green without a root-cause note — a new failure here is the regression this
41
+ # gate exists to catch.
42
+ #
43
+ # EMPTY as of 2026-08-13: the Toggle/Now/Switch vocabulary landed
44
+ # (3ac3c87/8e9fac3), the offline corpus snapshot was re-synced (392abd6), and
45
+ # every formerly quarantined case passes against the current corpus —
46
+ # verified by the full suite at 1627 passed with zero deselections AND each
47
+ # former entry re-run by node ID (24 passed). The machinery stays armed; a
48
+ # future corpus advance repopulates the list the same way.
49
+ QUARANTINE: ""
50
+
51
+ jobs:
52
+ build:
53
+ runs-on: ubuntu-latest
54
+ strategy:
55
+ fail-fast: false
56
+ matrix:
57
+ # 3.12 is the declared floor (pyproject requires-python); 3.13 stays as the
58
+ # workspace's own interpreter. Both must pass, or the floor is a claim.
59
+ python-version: ['3.12', '3.13']
60
+ # The `live-host` extra carries what `samples/fastapi-host/` needs to be
61
+ # TESTED. Both rows are needed and they prove different things: with the
62
+ # extra, `tests/test_fastapi_host.py` gates — the sample's credential
63
+ # containment is asserted rather than assumed; without it, the suite is
64
+ # proven to skip CLEANLY, which is what lets `fuaran-ui` claim to be
65
+ # dependency-light. Before this axis existed only the second arrangement
66
+ # ever ran, so the sample's tests skipped on every run in a green job.
67
+ extras: ['dev', 'dev,live-host']
68
+ name: "Test (py${{ matrix.python-version }}, ${{ matrix.extras }})"
69
+ defaults:
70
+ run:
71
+ working-directory: fuaran-py
72
+ steps:
73
+ - uses: actions/checkout@v4
74
+ with:
75
+ path: fuaran-py
76
+
77
+ # Deliberately UNPINNED: the corpus is the shared conformance authority
78
+ # every host certifies against, and one current spec for all hosts is the
79
+ # point of giving it a single home. Pinning here would let this host drift
80
+ # from the spec without anything going red.
81
+ - name: Check out the wire-format conformance corpus
82
+ uses: actions/checkout@v4
83
+ with:
84
+ repository: fuaran-ui/fuaran-ui-specification
85
+ path: wire-format-fixtures
86
+ # Full history, because the drift step below measures the DISTANCE
87
+ # between the committed snapshot's recorded commit and this HEAD. The
88
+ # default depth of 1 holds HEAD and nothing else, under which that
89
+ # distance is unmeasurable — the check would report "unknown" on every
90
+ # run and the number the report exists to give would never appear.
91
+ fetch-depth: 0
92
+
93
+ - name: Assert the corpus is where the tests resolve it
94
+ run: test -f ../wire-format-fixtures/manifest.json
95
+
96
+ # ── The reference host, for the render-parity oracles ────────────────────
97
+ # The class-vocabulary parity lock and the reference-stylesheet byte-copy
98
+ # check read the F# reference host's own sources. Before this step those
99
+ # oracles SKIPPED here — this job was a single-host checkout, which is the
100
+ # one shape in which skipping is honest, and the note further down said so
101
+ # at length. Honest is not the same as useful: the drift they exist to
102
+ # catch was therefore visible only on a maintainer's workspace checkout,
103
+ # so a stale oracle looked valid everywhere a machine actually ran it, and
104
+ # the one that mattered had gone vacuous for months.
105
+ #
106
+ # Sparse: only the renderer projects are read (the vocabulary derivation
107
+ # globs `src/Fuaran.UI.Renderer*`, and the stylesheet lives under one of
108
+ # them), so the checkout stays small. The repo is PUBLIC — anonymous, no
109
+ # token — and deliberately UNPINNED, for the reason the corpus checkout
110
+ # above gives: pinning would let this host drift from the reference
111
+ # without anything going red.
112
+ - name: Check out the F# reference host (render-parity oracles)
113
+ uses: actions/checkout@v4
114
+ with:
115
+ repository: fuaran-ui/fuaran-dotnet
116
+ path: fuaran-dotnet
117
+ sparse-checkout: src/Fuaran.UI.Renderer*
118
+ sparse-checkout-cone-mode: false
119
+
120
+ - name: Assert the reference host is where the oracles resolve it
121
+ run: test -d ../fuaran-dotnet/src/Fuaran.UI.Renderer.Core
122
+
123
+ - uses: actions/setup-python@v5
124
+ with:
125
+ python-version: ${{ matrix.python-version }}
126
+
127
+ # Non-blocking, on every push: how far the committed offline snapshot
128
+ # (conformance/corpus/, and the authority commit it records in
129
+ # snapshot.json) has fallen behind the authority at HEAD.
130
+ #
131
+ # It is a WARN and not a gate on purpose. A snapshot lagging the authority
132
+ # is not by itself a defect — the suite certifies against the AUTHORITY
133
+ # here, so a lagging snapshot changes nothing about what this run proved,
134
+ # and reddening main for it would train people to ignore it. What it does
135
+ # is make the distance visible before the release gesture, where the same
136
+ # check IS a refusal (publish-pypi.yml). The first v0.1.0 tag failed its
137
+ # gated test_corpus_sync because the authority had moved twice after CI
138
+ # passed on that head, and nothing between the two runs said so.
139
+ #
140
+ # Needs no install: the check is standard library plus git.
141
+ - name: Corpus snapshot drift (reported, non-blocking)
142
+ continue-on-error: true
143
+ run: |
144
+ set +e
145
+ python conformance/sync_corpus.py --check 2>&1 | tee corpus-drift.log
146
+ status=${PIPESTATUS[0]}
147
+ {
148
+ echo "### Corpus snapshot vs the authority"
149
+ echo
150
+ echo '```'
151
+ cat corpus-drift.log
152
+ echo '```'
153
+ } >> "$GITHUB_STEP_SUMMARY"
154
+ exit $status
155
+
156
+ - name: Install
157
+ run: |
158
+ python -m pip install --upgrade pip
159
+ python -m pip install ".[${{ matrix.extras }}]"
160
+
161
+ - name: Lint (ruff check)
162
+ run: python -m ruff check .
163
+
164
+ - name: Format check (ruff format)
165
+ run: python -m ruff format --check .
166
+
167
+ - name: Type check (mypy)
168
+ run: python -m mypy
169
+
170
+ # Print what this gate does NOT cover, on every run. A cap nobody can see
171
+ # reads as "covered everything".
172
+ - name: Report the conformance quarantine
173
+ run: |
174
+ if [ -n "$QUARANTINE" ]; then
175
+ echo "The blocking gate below EXCLUDES these known-failing cases:"
176
+ echo "$QUARANTINE" | tr ' ' '\n' | grep -v '^--deselect$' | sed 's/^/ - /'
177
+ else
178
+ echo "Quarantine EMPTY — the blocking gate covers the full conformance suite."
179
+ fi
180
+ echo
181
+ echo "ALSO NOT GATED HERE — inert rather than quarantined (see the skip"
182
+ echo "summary that -rs prints under each test run below):"
183
+ echo " - NOTHING, on the reference-renderer parity axis, as of Phase 1654."
184
+ echo " This job now checks the F# reference host out beside the corpus, so"
185
+ echo " the class-vocabulary parity lock and the stylesheet byte-copy check"
186
+ echo " GATE here rather than skipping. They used to skip, honestly and"
187
+ echo " uselessly: this was a single-host checkout, which is the one shape in"
188
+ echo " which skipping is right, and the consequence was that the oracle ran"
189
+ echo " only on a maintainer's workspace checkout. It had been VACUOUS for"
190
+ echo " months when that was finally measured — admitting every possible"
191
+ echo " class through one over-broad prefix extracted from a doc comment —"
192
+ echo " and no run anywhere would have said so."
193
+ echo " - the FastAPI sample-host tests, on the rows that install [dev] ALONE."
194
+ echo " fastapi is a sample-only dependency, so the skip there is honest and is"
195
+ echo " itself the evidence that this package is dependency-light. The [dev,live-host]"
196
+ echo " rows install it and those tests GATE — read the matrix row name to know"
197
+ echo " which arrangement this run is."
198
+ {
199
+ echo "### Conformance quarantine (excluded from the blocking gate)"
200
+ echo
201
+ if [ -n "$QUARANTINE" ]; then
202
+ echo '```'
203
+ echo "$QUARANTINE" | tr ' ' '\n' | grep -v '^--deselect$'
204
+ echo '```'
205
+ else
206
+ echo "Empty — the blocking gate covers the full conformance suite."
207
+ fi
208
+ } >> "$GITHUB_STEP_SUMMARY"
209
+
210
+ # Non-blocking: runs the FULL suite so the size of the existing drift is
211
+ # measured on every run rather than inferred from the quarantine list.
212
+ - name: Conformance drift (reported, non-blocking)
213
+ continue-on-error: true
214
+ run: |
215
+ set +e
216
+ python -m pytest -q -rs > drift.log 2>&1
217
+ status=$?
218
+ tail -40 drift.log
219
+ {
220
+ echo "### Full suite, including quarantined cases (non-blocking)"
221
+ echo
222
+ echo '```'
223
+ grep -E '^[0-9]+ (failed|passed)|failed,|passed,' drift.log | tail -3
224
+ echo '```'
225
+ } >> "$GITHUB_STEP_SUMMARY"
226
+ exit 0
227
+
228
+ # THE GATE. Everything the suite currently passes, including every
229
+ # conformance case outside the quarantine above.
230
+ - name: Test (gated)
231
+ run: python -m pytest -q -rs $QUARANTINE
@@ -0,0 +1,91 @@
1
+ # Publish the BARE-NAME PLACEHOLDER distribution `fuaran` to PyPI, via Trusted Publishing.
2
+ #
3
+ # This is not the host. The host is `fuaran-ui`, published by `publish-pypi.yml` from the same
4
+ # repository on a `v*` tag. This workflow publishes `placeholder/` — a package that exports
5
+ # nothing and never will — so the unqualified name `fuaran` cannot be taken by an unrelated
6
+ # project and mistaken for the Python host. Same posture as the unscoped npm name `fuaran` and
7
+ # the bare `fuaran` crate.
8
+ #
9
+ # Trigger: a `placeholder-v*` tag ONLY. That prefix is deliberate and load-bearing: the host's
10
+ # workflow triggers on `v*`, which matches tags BEGINNING with `v`, so `placeholder-v0.0.0`
11
+ # reaches this workflow and never that one. Do not "tidy" the prefix to `v*`.
12
+ #
13
+ # Prerequisites (one-time, on pypi.org, operator only): register a PENDING PUBLISHER for project
14
+ # `fuaran` — owner `fuaran-ui`, repository `fuaran-py`, workflow `publish-pypi-placeholder.yml`,
15
+ # environment `pypi`. It is a SEPARATE registration from the `fuaran-ui` one: a
16
+ # trusted-publisher policy is scoped to a project name.
17
+ #
18
+ # PEP 541 tolerates a held name that points somewhere real and refuses an empty squat, so
19
+ # `placeholder/README.md` is part of what makes this publishable rather than decoration — it
20
+ # names the real distribution, the import, the repository and the docs.
21
+ name: publish-pypi-placeholder
22
+
23
+ on:
24
+ push:
25
+ tags: ["placeholder-v*"]
26
+
27
+ permissions:
28
+ contents: read
29
+
30
+ jobs:
31
+ build:
32
+ runs-on: ubuntu-latest
33
+ defaults:
34
+ run:
35
+ working-directory: placeholder
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+ - uses: actions/setup-python@v5
39
+ with:
40
+ python-version: "3.13"
41
+
42
+ # The tag must equal the placeholder's own version, for the reason the host's workflow
43
+ # states: a mistyped tag must not publish a mismatched release.
44
+ - name: Version gate — tag must equal placeholder/pyproject.toml
45
+ run: |
46
+ set -euo pipefail
47
+ tag="${GITHUB_REF_NAME#placeholder-v}"
48
+ ver="$(python - <<'PY'
49
+ import tomllib
50
+ print(tomllib.load(open("pyproject.toml","rb"))["project"]["version"])
51
+ PY
52
+ )"
53
+ if [ "$tag" != "$ver" ]; then
54
+ echo "tag placeholder-v$tag does not match placeholder version $ver" >&2
55
+ exit 1
56
+ fi
57
+
58
+ # The only assertion worth making about this package: that it exports nothing. A
59
+ # placeholder that grew an API would be a different thing under the same held name.
60
+ - name: Assert the package is empty
61
+ run: |
62
+ set -euo pipefail
63
+ python -c "import sys; sys.path.insert(0, 'src'); import fuaran; assert fuaran.__all__ == [], fuaran.__all__"
64
+
65
+ - name: Build sdist + wheel
66
+ run: |
67
+ python -m pip install --upgrade pip build
68
+ python -m build
69
+ - uses: actions/upload-artifact@v4
70
+ with:
71
+ name: dist-placeholder
72
+ path: placeholder/dist/
73
+ if-no-files-found: error
74
+
75
+ publish:
76
+ needs: [build]
77
+ runs-on: ubuntu-latest
78
+ environment: pypi
79
+ permissions:
80
+ id-token: write
81
+ contents: read
82
+ steps:
83
+ - uses: actions/download-artifact@v4
84
+ with:
85
+ name: dist-placeholder
86
+ path: dist/
87
+ # SHA-pinned for the reason the host's workflow states: this step holds the OIDC-minted
88
+ # publishing identity, so a moved `release/v1` is credential-bearing code nobody reviewed.
89
+ # `skip-existing` is deliberately absent here too.
90
+ - name: Publish to PyPI (Trusted Publishing)
91
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -0,0 +1,203 @@
1
+ # Publish fuaran-ui to PyPI on a version tag, via PyPI Trusted Publishing (OIDC — no stored token).
2
+ #
3
+ # THE PROJECT IS `fuaran-ui`; THE REPOSITORY IS STILL `fuaran-py`. Registry names carry the
4
+ # domain and drop the language (`Fuaran.UI.*`, `@fuaran-ui/*`, the `fuaran-ui` crate,
5
+ # `io.fuaran:fuaran-ui`), while repo names stay — `fuaran-ui/fuaran-py` is disambiguated by the
6
+ # org, and renaming it would cost redirects, CI checkouts, corpus resolvers and `workspace.json`
7
+ # for no consumer-visible gain.
8
+ #
9
+ # THE `fuaran-py` PROJECT ON PYPI IS LEFT EXACTLY AS IT STANDS (operator decision, 2026-09-10).
10
+ # Its releases up to 0.5.0 remain downloadable and must remain so — a public demo page and three
11
+ # CI workflows still install them by exact version. It is never re-tagged and never published to
12
+ # again; there is no deprecation shim, because nothing has ever consumed it as a dependency.
13
+ #
14
+ # Trigger: a `v*` tag push only. A branch push reaches no publish job.
15
+ # Prerequisites (one-time, on pypi.org): register a PENDING PUBLISHER for the NEW project —
16
+ # project `fuaran-ui`, owner `fuaran-ui`, repository `fuaran-py`, workflow `publish-pypi.yml`,
17
+ # environment `pypi` — then create the `pypi` environment on this repository. The registration
18
+ # that named project `fuaran-py` does NOT carry over: a trusted-publisher policy is scoped to a
19
+ # project name, so the first `fuaran-ui` tag fails at the OIDC exchange until the new pending
20
+ # publisher exists. That is the right failure — loud, and before any artefact is uploaded.
21
+ # The tag must equal the version in pyproject.toml; the gate below refuses otherwise, so a
22
+ # mistyped tag never publishes a mismatched release.
23
+ #
24
+ # WHAT THIS WORKFLOW REFUSES TO PUBLISH, and why each refusal exists:
25
+ # * a tag whose version does not match pyproject.toml — the `build` job's version gate;
26
+ # * a tree whose suite is red — the `test` job below, which `publish` `needs`. Until it
27
+ # existed, a `v*` tag published whatever was at that commit having run no test, no lint
28
+ # and no type check: the ONLY gate on the released artefact was that it built. CI runs
29
+ # the same checks on a branch push, but a tag push is a different event on a different
30
+ # ref, so "CI was green on main" was never a statement about the tagged commit;
31
+ # * a version PyPI already serves — `skip-existing` is deliberately absent. With it, a
32
+ # re-tag of an already-published version exited 0 having uploaded nothing, so a release
33
+ # that silently did not happen was indistinguishable from one that did. Without it the
34
+ # run fails, by name, and the fix is to cut a new version.
35
+ # * a tree whose committed corpus snapshot is behind the authority — the `test` job's
36
+ # corpus-drift refusal, which runs FIRST and names both commits and the re-sync command.
37
+ # Both this workflow and CI check the corpus out at HEAD, so a snapshot that matched when
38
+ # CI passed can be behind it minutes later when the tag is cut; the first v0.1.0 tag failed
39
+ # that way, deep inside `test_corpus_sync`, and had to be withdrawn and re-cut. Refusing up
40
+ # front makes the failure read as what it is — a stale snapshot, not a broken host.
41
+ #
42
+ # ── THE STEP A RELEASE OFTEN NEEDS AND NOTHING ELSE ASKS FOR: the no-op re-sync ──────────
43
+ #
44
+ # The drift refusal above compares the authority COMMIT the snapshot records against the
45
+ # authority's HEAD, and nothing else. It is deliberately not a payload diff: the authority is
46
+ # a REPOSITORY, and a snapshot that cannot say which revision of it was copied cannot answer
47
+ # "is this current" at all — only "do these bytes happen to match today's", which is a
48
+ # different and weaker claim. `conformance/corpus/snapshot.json` is what carries the answer.
49
+ #
50
+ # The cost of that choice, which is real and lands on the person cutting a tag: a corpus
51
+ # commit touching NO bundled fixture — a README edit, a doc pointer, a change under
52
+ # `conformance/` or `dag/` or any path the sync does not copy — still moves the authority's
53
+ # HEAD, so the recorded commit no longer equals it and this job refuses, with the snapshot's
54
+ # payload byte-for-byte correct. The refusal is accurate ("your snapshot was taken from an
55
+ # older revision") and reads as alarming ("the corpus moved and you did not adopt it").
56
+ #
57
+ # So the recipe is: BEFORE cutting a `v*` tag, run
58
+ #
59
+ # python conformance/sync_corpus.py
60
+ #
61
+ # and commit whatever it writes — frequently `conformance/corpus/snapshot.json` alone. That
62
+ # is a legitimate, expected commit and not a workaround; it is the snapshot recording which
63
+ # revision of the authority it was last checked against. Run it even when you are confident
64
+ # no fixture changed: confirming it costs one command, and discovering it costs a withdrawn
65
+ # tag (the version cannot simply be re-tagged — `skip-existing` is absent above, on purpose).
66
+ #
67
+ # Do NOT "fix" this by making `--check` diff the payload instead. That would report a stale
68
+ # snapshot as current whenever the authority's change happened to miss the copied set, which
69
+ # is precisely the state a release must not be able to enter unknowingly.
70
+ name: publish-pypi
71
+
72
+ on:
73
+ push:
74
+ tags: ["v*"]
75
+
76
+ permissions:
77
+ contents: read
78
+
79
+ jobs:
80
+ # The gate on the TAGGED tree. Mirrors ci.yml's blocking steps — the corpus
81
+ # checkout it certifies against, the lint/format/type checks, and the suite —
82
+ # on the release interpreter. Its failure is what stops `publish` below.
83
+ test:
84
+ runs-on: ubuntu-latest
85
+ defaults:
86
+ run:
87
+ working-directory: fuaran-py
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+ with:
91
+ path: fuaran-py
92
+
93
+ # Deliberately UNPINNED, for the reason ci.yml states: the corpus is the
94
+ # shared conformance authority and one current spec for all hosts is the
95
+ # point of giving it a single home.
96
+ - name: Check out the wire-format conformance corpus
97
+ uses: actions/checkout@v4
98
+ with:
99
+ repository: fuaran-ui/fuaran-ui-specification
100
+ path: wire-format-fixtures
101
+ # Full history — the refusal below reports how many commits the
102
+ # snapshot is behind, which the default depth of 1 cannot answer.
103
+ fetch-depth: 0
104
+
105
+ # Every corpus-dependent test skips when the corpus is absent, so a layout
106
+ # drift would retire the conformance leg and still report green. Assert it.
107
+ - name: Assert the corpus is where the tests resolve it
108
+ run: test -f ../wire-format-fixtures/manifest.json
109
+
110
+ - uses: actions/setup-python@v5
111
+ with:
112
+ python-version: "3.13"
113
+
114
+ # THE RELEASE-PATH REFUSAL, and deliberately the FIRST thing this job
115
+ # decides — before the install, the lint, the type check and the suite.
116
+ #
117
+ # The same check CI runs as a warning on every push is a hard refusal here,
118
+ # because the two workflows differ in exactly the way that matters: on a
119
+ # push a lagging snapshot costs nothing (the suite certifies against the
120
+ # authority it just checked out), while on a tag the gated
121
+ # `test_corpus_sync` compares the snapshot to a HEAD that may have moved
122
+ # since CI passed. That is not hypothetical — it is how the first v0.1.0
123
+ # tag failed and had to be withdrawn.
124
+ #
125
+ # Running it first is the whole point. The same staleness reached as a
126
+ # `test_corpus_sync` failure two minutes into pytest reads as a broken
127
+ # host; reached here it reads as what it is, and the message carries both
128
+ # commits and the one command that fixes it.
129
+ #
130
+ # Needs no install: the check is standard library plus git.
131
+ - name: Refuse a corpus snapshot behind the authority
132
+ run: python conformance/sync_corpus.py --check
133
+
134
+ - name: Install
135
+ run: |
136
+ python -m pip install --upgrade pip
137
+ python -m pip install ".[dev]"
138
+
139
+ - name: Lint (ruff check)
140
+ run: python -m ruff check .
141
+
142
+ - name: Format check (ruff format)
143
+ run: python -m ruff format --check .
144
+
145
+ - name: Type check (mypy)
146
+ run: python -m mypy
147
+
148
+ - name: Test (gated)
149
+ run: python -m pytest -q -rs
150
+
151
+ build:
152
+ runs-on: ubuntu-latest
153
+ steps:
154
+ - uses: actions/checkout@v4
155
+ - uses: actions/setup-python@v5
156
+ with:
157
+ python-version: "3.13"
158
+ - name: Version gate — tag must equal pyproject version
159
+ run: |
160
+ set -euo pipefail
161
+ tag="${GITHUB_REF_NAME#v}"
162
+ ver="$(python - <<'PY'
163
+ import tomllib
164
+ print(tomllib.load(open("pyproject.toml","rb"))["project"]["version"])
165
+ PY
166
+ )"
167
+ if [ "$tag" != "$ver" ]; then
168
+ echo "tag v$tag does not match pyproject version $ver" >&2
169
+ exit 1
170
+ fi
171
+ - name: Build sdist + wheel
172
+ run: |
173
+ python -m pip install --upgrade pip build
174
+ python -m build
175
+ - uses: actions/upload-artifact@v4
176
+ with:
177
+ name: dist
178
+ path: dist/
179
+ if-no-files-found: error
180
+
181
+ publish:
182
+ # BOTH, not just `build`: a green build says the artefact assembles, which is
183
+ # not a statement about whether the code in it works.
184
+ needs: [test, build]
185
+ runs-on: ubuntu-latest
186
+ environment: pypi
187
+ permissions:
188
+ id-token: write
189
+ contents: read
190
+ steps:
191
+ - uses: actions/download-artifact@v4
192
+ with:
193
+ name: dist
194
+ path: dist/
195
+ # SHA-PINNED, not tag-pinned: this step holds the OIDC-minted publishing
196
+ # identity, so a moved `release/v1` is credential-bearing code nobody
197
+ # reviewed. `# v1.14.2` records which release the digest is; Dependabot's
198
+ # `github-actions` schedule proposes the bumps as reviewable PRs.
199
+ #
200
+ # `skip-existing` is deliberately ABSENT — see the header. A re-tag of an
201
+ # already-published version must fail, not exit 0 having uploaded nothing.
202
+ - name: Publish to PyPI (Trusted Publishing)
203
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -0,0 +1,32 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ dist/
8
+
9
+ # Virtual environments
10
+ .venv/
11
+ venv/
12
+ env/
13
+
14
+ # Tooling caches
15
+ .pytest_cache/
16
+ .mypy_cache/
17
+ .ruff_cache/
18
+ .coverage
19
+ htmlcov/
20
+ coverage.xml
21
+
22
+ # Editors / OS
23
+ .vscode/
24
+ .idea/
25
+ .DS_Store
26
+ Thumbs.db
27
+
28
+ # The synced corpus snapshot (conformance/corpus/) IS committed — it makes
29
+ # fuaran-py standalone-testable offline and gives the drift guard
30
+ # (tests/test_corpus_sync.py) a committed baseline to pin against the authority.
31
+ # Re-sync + re-commit it whenever the authoritative corpus regenerates
32
+ # (python conformance/sync_corpus.py), per the §11 forward-coupling rule.