Identity that survives the conversation
Last reviewed: July 2026.
When a model regenerates a UI fragment – "change the metric count to four" – what
happens to the components it didn't mean to change? In text-emission systems, the
regenerated fragment carries no guarantee of preserving the identity of unchanged
children. Framework affordances like React's key prop can mitigate this when the
author remembers, but the language doesn't require it and the model holds no contract
to maintain it. The consequences land on the user: lost scroll positions and local
state, restarted animations, effects re-fired on nodes that never changed.
Fuaran makes identity a typed, permanent property. Every node carries a NodeId
whose lifetime is the node itself: not the render, not the session. The contract is
blunt: if trees at turn N and turn N+1 share a NodeId, the runtime must treat them as
the same logical node, preserving its local state and continuity. The id is written into
human-authored source, carried in the wire format on every emission, and – for nodes an
agent adds mid-session – persisted in the edit history, so the guarantee spans sessions
rather than only surviving one.
Three mechanisms hold it up:
- The validator enforces uniqueness at build time – two colliding ids in one scope fail the build, with both occurrences named.
- The wire format requires
idon every node, and the model always sees the current tree's ids, so addressing an existing node is a lookup, not a guess. - Edits address nodes by id, not by index. "Edit
revenue-kpi" is the same operation wherever that node currently sits in the child order. This choice is deliberate: index-addressed edits – what generic structural-editing machinery would suggest – are fragile under sibling reordering, which is one of the most common things an AI does to a tree. Id-addressed edits are stable under it.
The payoff compounds with conversation length. At turn two, identity barely matters. At turn twelve – after inserts, moves, and reorders – it is the difference between an interface that accumulated history and one that accumulated drift. And because ids are permanent, everything downstream can key off them: the edit history addresses them, the layout and style observers report facts against them, and a rendered element can be traced back to the exact node an agent emitted, however long ago.
A rule of thumb falls out: any system that lets an AI edit a UI iteratively needs an identity contract; if the language doesn't provide one, the users are it.