# description
Schema for docs/store_map.json — the canonical join key between STORIS store_id and Trakwell location identifiers, plus the physical_location grouping that drives KPI math. Forbidding the wrong shape here prevents fusion runs from producing nonsensical close ratios.

VOCABULARY: see docs/CONCEPTS.md.
LOAD-BEARING RULE: stores 003 and 004 share a single Trakwell door (Decatur outlet); both have physical_location='decatur_outlet' and trakwell_store_id_numeric='004'. See docs/FUSION_PLAN.md §3a.

# properties.physical_locations.title
Map of physical_location_id -> location entry

# properties.physical_locations.description
Inverse of the stores.physical_location field. Lists which STORIS store_ids are co-located. Excludes 777 (online — has no physical_location).

# $defs.StoreEntry.properties.shares_door_with.description
List of OTHER STORIS store_ids that share this store's Trakwell door. Empty for stores with their own door (001, 002) or no door (777). Both members of a shared-door pair must list each other.

# $defs.StoreEntry.allOf[].title
If has_door_traffic is true, trakwell_store_id_numeric must not be null

# $defs.StoreEntry.allOf[].title
If has_door_traffic is false, all Trakwell fields must be null