tools/relations.pyStage 00's builder of the mention graph.
It reads the store's pointers.jsonl and
rooms.jsonl and writes relations.jsonl, one
line per (room, other) pair a room's coder recorded, and
_README-relations.md. other is the pointer's
normalised form without r/, matched to the frame
case-insensitively. Off-platform pointers go in lines with
other null. --adjacency FILE fills
adjacent from a file built outside the analyst's reach.
Handler side at build: build.sh runs it after
build_store.py and transitions.py. It is also
shipped in the analyst's tools/.
Contract §5: other rooms "are data, never units". Its limit: a pointer "is not the whole of a room's dealings with another: a room that coordinated off the record, or whose coder read other threads, has relations this file does not hold."
Checked against: tools/relations.py, harness/build.sh, CONTRACT-aggregator.md §5.