What to build: Implement 30003 — Carnivore. Card text: "+1[mu] Access, once per turn -> Trash 2 cards from your grip: Trash the card you are accessing. Limit 1 console per player." Follow docs/adding-a-card.md for the definition of done: one contiguous hook block in rust/netrunner-core/src/cards/sg.rs, at least one card_30003_* Rust test, and implemented/has_tests flipped in game/cards_impl/sg.json.
Blocked by: 10 — implement sg remaining (this ticket's parent).
Status: fixed
2026-08-01: New ACCESS_ACTIONS registry (hardware's twin of ENCOUNTER_ACTIONS), dispatched from the run's access branch in legal.rs, plus an Action::UseCarnivore handled in engine::use_carnivore — the alternative to paying a trash cost, so it reaches cards that have none. Once per turn via a new carnivore_used turn flag; which 2 grip cards pay is taken off the top of the grip, as every other forced grip discard is. Landed with ticket 10.
2026-08-01: Approximation lifted in ticket 39 — which 2 grip cards pay is now a real runner decision (DecisionData::CarnivoreTrash, one card per window), and the accessed card is not trashed until both have been chosen.