f12ba2f9eb
Task 1 of the Instance Picker plan (docs/plans/2026-09-08-instance-picker.md). Pure, DI-free builder that nests a site's areas by ParentAreaId and hangs each area's instances beneath it, mirroring Topology's ordering (child areas first, then that level's instances; OrdinalIgnoreCase sorts) with unparented instances at the root after the root areas. Orphaned areas become roots, a case-insensitive filter keeps matching instances plus their ancestors and drops empty branches, and a ParentAreaId cycle can never recurse forever. Claude-Session: https://claude.ai/code/session_01NcMG6xXdsJbmD2wYAgkK29