Severity: P3 (semantic-fidelity smell) · Tier-1 (mechanical)
Co-maintained repo (Pascal = architect).
Location: lib/ash_ui/rendering/iur_adapter.ex:96
convert_element does props = if map_size(element.props || %{}) > 0, do: element.props, else: element.attributes. When an element legitimately has empty props, the entire internal attributes map is substituted as props and flows into base_attributes, surfacing compiler-internal keys in the canonical output. Low impact (extra keys) but a Screen→IUR fidelity smell.
Fix: fall back to %{} rather than element.attributes, or whitelist the carried-over keys.
2026-05-28 cross-repo review — see ariston-ui docs/audits/cross-repo-review-2026-05-28.md (finding B7).
Severity: P3 (semantic-fidelity smell) · Tier-1 (mechanical)
Co-maintained repo (Pascal = architect).
Location:
lib/ash_ui/rendering/iur_adapter.ex:96convert_elementdoesprops = if map_size(element.props || %{}) > 0, do: element.props, else: element.attributes. When an element legitimately has empty props, the entire internalattributesmap is substituted as props and flows intobase_attributes, surfacing compiler-internal keys in the canonical output. Low impact (extra keys) but a Screen→IUR fidelity smell.Fix: fall back to
%{}rather thanelement.attributes, or whitelist the carried-over keys.2026-05-28 cross-repo review — see ariston-ui
docs/audits/cross-repo-review-2026-05-28.md(finding B7).