Expand description
Structural type-round-trip lint (C6b; governing principle:
feedback_no_auto_string_conversion).
Detects DAG paths where a value’s type is modulated to another type
and then restored — T → Y → … → T — purely through conversion /
formatting machinery during synthesis. Native types must stay
native through data passing; a round trip means some hand-off point
was expressed in a foreign type (usually text) and re-parsed, which
loses type fidelity, costs work, and turns downstream type checks
into liars. The canonical instance is the retired identity-shadow
bug (VecF32 → printf → Str → parse → VecF32); this lint subsumes
that string case in one structural rule.
Classification is derived from the adapter catalogs themselves
(boundary_adapter enumerated over the closed PortType
surface), so the conversion-node registry cannot drift from the
catalog. Formatting combinators (printf, str_concat,
select_str) and identity are carriers: walks pass through
them to find the typed value that entered the text domain.
Sanctioned intermediaries are exempt: a restore FROM Json is
by-design (JSON is a declared text hand-off format), so
T → Json → T is never reported.
Severity: one RoundTripFinding per restoring node; the caller
(assembly resolve) reports findings as compile warnings by
default and as a hard error under strict-values mode.
Structs§
- Round
Trip Finding - One detected round trip:
restoredleft the native domain throughdeparture_node(or entered a formatting carrier natively) and was restored byrestore_nodevia theviatype.