Off-BGG games become local library citizens
An unmatched title that's a REAL game BGG doesn't have dead-ended: manual id or reject. The RPG local-citizen pattern generalizes to a human decision — review (web + TUI, key l) gains "not on BGG — keep locally": match_status "local" clears any BGG identity, diff routes it to local_only (never queued), and enrich synthesizes a library entry from the game's own photo reads (name, year, publisher cue — no API call, so even a blocked run lands them; pruning keeps local keys). Library and Titles show a "local — not on BGG" chip; Help's legend, review description, and shortcuts cover the new verb, distinguishing it from reject (bad read / not a game). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
This commit is contained in:
co-authored by
Claude Fable 5
parent
59f4b8c43c
commit
e187ed4f3f
@@ -593,3 +593,15 @@ def test_open_version_ballot_puts_every_edition_up_for_review(tmp_path):
|
||||
)
|
||||
with pytest.raises(ValueError, match="no BGG match"):
|
||||
session2.open_version_ballot(session2.rows[0])
|
||||
|
||||
|
||||
def test_local_decision_keeps_a_real_game_off_bgg(tmp_path):
|
||||
cfg = _setup(
|
||||
tmp_path, [_row(title_raw="Obscure Homebrew", match_status="unmatched")]
|
||||
)
|
||||
run_review(
|
||||
cfg, console=quiet_console(), input_fn=scripted("l"), client=fixture_client()
|
||||
)
|
||||
(row,) = read_matches(cfg.matches_path)
|
||||
assert row["match_status"] == "local"
|
||||
assert row["bgg_id"] == "" # a local citizen carries no BGG identity
|
||||
|
||||
Reference in New Issue
Block a user