package/store/neighbours.jsonlEvery pair of rooms that touch on the canvas or name each other.
One line per ordered pair, both directions written: sub,
other, shared_artworks (ids the atlas links to
both), border_px (pixels of one room's artworks touching
the other's), overlap_px (pixels covered by an artwork of
each), and mention (null, or label,
n, reciprocal, direction: names,
named-by or both). A room whose outline the atlas lacks can take its
region from INPUT/canvas/derived_regions.json (the koi, 541
pixels). mem.py neighbours ranks the ties: named both ways,
named one way (a claim), shared artwork, overlap, border; the last three
are the canvas, the outcome, and stage A2 does not cluster on them.
build_neighbours.py, handler side at build, when
INPUT/canvas/atlas_2017.json exists. Without it
build.sh warns that the file "holds no canvas neighbours;
mem.py neighbours will say so".
It serves mem.py neighbours, which any stage may read.
Its limits: the atlas outline is one annotator's, drawn after the event;
a border is not a negotiation; rooms with no artwork in the atlas have
no canvas neighbours, "which says nothing about where they built."
package/store/neighbours.jsonl.
Checked against: tools/build_neighbours.py, harness/build.sh, tools/mem.py, STANDING-INSTRUCTIONS.md ยง1.