Status: fixed
What to build: 36017 is the only *identity* that is implemented, non-vanilla, and untested — it rides the grandfather list (tests/fixtures/untested_cards_grandfathered.json). Write at least one card_36017_* Rust test and delete the 36017 exemption entry (the list only shrinks; an entry that gains a test must be deleted, per docs/adding-a-card.md).
Where: implementation is in rust/netrunner-core/src/cards/vp.rs:19-24 (hooks on_hardware_install + on_hardware_trash, impl hiram_peek at vp.rs:65+). Tests go in a #[cfg(test)] mod tests in vp.rs — note vp.rs currently has zero card_* tests, so this ticket also establishes the test module for the pack (follow the sg.rs pattern, including the set_runner_identity helper style at sg.rs:2103-2111).
Definition of done: card_36017_* test exercising the install and trash triggers passes; 36017 removed from the grandfathered fixture; has_tests flipped in game/cards_impl/vp.json; tests/test_card_manifest_honesty.py green.
vp.rs now has a #[cfg(test)] mod tests — the first one in the pack — built
on the sg.rs helper shape (base_card / base_state / set_runner_identity,
plus a become_hiram wrapper since both tests swap the identity).
Two tests. card_36017_hardware_install_and_trash_peek_the_top_of_rd fires
hooks::trigger_hardware_install and trigger_hardware_trash under a
non-Hiram identity first (no decision — the hooks are keyed by identity code),
then under 36017, and asserts each trigger pushes a Runner DecisionData::Hiram
carrying the *top* card of a two-card R&D, that R&D still holds both cards (a
peek is not a draw), and that the log names the peeked title.
card_36017_peek_with_an_empty_rd_shows_no_card covers the empty-R&D arm:
still a decision, card: None, "R&D is empty" logged — the runner's
AcknowledgeHiram is owed either way.
36017 deleted from tests/fixtures/untested_cards_grandfathered.json (15 codes
left, seeded_count untouched at 71) and has_tests flipped to true in
game/cards_impl/vp.json.
cargo fmt, cargo clippy --workspace --all-targets -- -D warnings,
cargo test --workspace (162, was 160) and pytest -q (160, incl. the 16
manifest-honesty tests) all green.