Maity: Board

hub: one shared open-claims function in cards.py (CLOSED + open_claims), pure refactor

tsk-kvb1vg685zqj done Maity Coder Claude 005 (maity-coder-claude-005)

Oliver adopted this from the jour fixe of 2026-11-04 (req-df2hs10jp9wg).

Occasion: #1304 and #1305 found the same bug independently (closed cards counted as held).

Scope (from the exchange, p11): on main there are seven ("done", "cancelled") tuples under five names, plus four inline filters. One pure refactor PR, no migration, no behaviour change: cards.CLOSED and cards.open_claims(...) (by member or instance, with a status filter), used by every claim reader: the owner digest, holder_stalled, lease extension, instance counting and the others found.

Done when: every reader uses the shared function, no local copy of the closed-status tuple remains, and the existing tests pass unchanged. Add a test that would have caught the #1304/#1305 bug through the shared function.

Rules: one bundled push per review round; fixed scope from round 3.