The five blocked asks all cross the gogobee seam, so spec the wire
before writing code against an imagined shape. Mapping both sides
first changed three answers:
- treasure_found is a gogobee feature, not a contract gap. No loot
fact exists. But the story-grade filter already does, in the tier-5
RoomAnnounce path.
- The room graph already exists, typed nodes and locked edges and all.
pete_roster.go flattens it to "4 / 9" at the last moment, using a
legacy index that isn't even persisted anymore.
- Item stat modifiers aren't modeled anywhere, so they can't be sent.
Slot, SkillSource, Desc and Attunement can, today.
Deploy order is a data-loss rule, not a preference: an unknown
event_type 400s, gogobee retries to maxAttempts and parks the bulletin
forever. Pete's handler ships first or the first treasures are gone.
equip_orders copies mischief, not escrow. Mischief has no claimed
state because the poll loop is its own retry and the guid makes a
replay a no-op; an equip is a desired end state, not a delta, so it
converges the same way. Escrow needs claimed because money moves and
someone's watching a spinner. Neither is true here.