Eric's question exposed the gap: stored_in was settable only at pick-time, with no path for a game already in the system. The Library detail page's "Where it lives" card now renders for every entry — "in its own box on a shelf" with an it-lives-inside-another-box control, or the current container with a change button — saving through a new /api/stored-in endpoint that updates the match rows (the durable record) AND the library entry in place, so the page and the shelf math reflect it immediately, no enrich run needed. Guards refuse self-containment and direct cycles; local games are addressable through their key's normalized title. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqdW79g