- timelineLine named the viewer as their own rival on a lost duel: a
rival_result arrives on the loser's page via the opponent column, so
naming the opponent field pointed at themselves. Thread the page
character's name through and name the other party.
- buildMapView drew a frontier room twice when two visited rooms both
had a door to it (Nodes carried the id twice). Place each id once.
- proseGuard's board query ran before the IsGUIDSeen dedup, so a retried
dispatch paid for it and threw it away. Check dedup first.