- Slot no longer auto-binds LayoutOrder onto mounted elements (was
magic/layering violation) - index (raw, compacted position) and
offset (Slot.Offset, now a public field like Length) are passed to
updateFn as plain values; actual property binding is entirely
updateFn's responsibility via its own userdata-managed Source
- updateFn(item, index, offset, prev, userdata) param order now
mirrors return order (prev, userdata) instead of the reversed one
- updateFn's three branches (discard/redraw/update-only) documented
explicitly - only updateFn knows which applies, so deciding Set
timing outside it wastes writes on soon-to-be-discarded Sources
- fix reconcile bug: rawAdd/rawMove was using the raw data-array loop
index instead of a compacted mounted-position counter, which could
error once filtering was in play; introduced candidateIndex
- add duplicate-key guard (seen[key] check, ~free) and explicit
key/index terminology disambiguation (raw data index vs key vs
updateFn's compacted index all get confused otherwise)
- sync ROADMAP.md M6 and .claude/README.md summaries to match
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>