docs(contributing): add targeted test selection guide
Your AI's guard dog to stop it from going rogue.
Brought to you by:
doberman
Originally created by: navaneethsankar07
Repo: doberman-core
Feature / Slice: Targeted test selection guide for contributors
Adds a "Choosing targeted tests" section to CONTRIBUTING.md to help contributors iterate faster while preserving the existing pre-PR verification workflow.
Specifically, this change:
pytest examples for:No code changes.
Documentation only.
Verified all documented commands against the current repository:
pytest tests/unit/test_cli_help.pypytest tests/unit/test_discovery_scan.pypytest tests/unit/test_objective_guardrail.pypytest tests/unit/test_audit_sink.pypytest tests/integration/test_proxy_passthrough.pypytest tests/unit/test_hosthook_control_plane.pypytest tests/unit/test_discovery_scan.py::test_scan_is_depth_boundedpytest -k scanruff check .ruff format --check .lint-importsCloses [#177]
Ticket changed by: fu351
Originally posted by: fu351
Merged — thanks again. Since you're now unblocked, here's where I'd point you next, roughly in order of how well it matches what you just demonstrated.
Doberman labels every issue with a difficulty level (
level-1…level-10) so you can pick your own step size.Closest to what you just did — documentation that has to be verified against the code:
good first issue,level-3). Same discipline as your test guide: read what the adapters actually do, then write it down accurately. This one matters because the adapter shape is what someone needs to understand before they can guard a new agent harness.level-5). This one has real teeth: while reviewing another PR today I found thatdoberman scanalways exits 0 no matter what it finds, while its help text advertises itself as useful for CI gates. So this issue isn't only writing docs — it's establishing what the exit codes should be and flagging where the code disagrees with its own documentation.A natural step up, if you'd like to move from docs into tests:
good first issue,level-3). "Raise-only" is one of Doberman's core safety invariants: combining guardrail results may tighten a verdict but must never loosen one. This issue is about proving that property holds for every combination rather than the few we happen to test. It's a great introduction to how this codebase thinks, and it's the kind of test that would genuinely catch a serious regression.No obligation to take any of these — if something else in the tracker interests you more, go for it. If you'd like, comment on whichever issue you pick and I'll make sure the context you need is there before you start.
The one-character typo (
PASS / AUTH /BLOCK) is still outstanding if you want a trivial warm-up PR to open alongside.Originally posted by: fu351
@navaneethsankar07 The targeted test-selection guide still gets newcomers to a fast feedback loop. Thanks for writing it.
Quick community roll-call: are you in the Doberman Discord? If yes, drop your handle here (or DM me there) so I can match the GitHub side of your work to your Discord name. If not, you're warmly invited: https://discord.gg/Sfy5XGNqty
Originally posted by: navaneethsankar07
Joined! My Discord handle is navaneethsankar