Prove parity cell: gated delete of unrecoverable gitignored data (AN-1) on...
Your AI's guard dog to stop it from going rogue.
Brought to you by:
doberman
Originally created by: fu351
The parity matrix shows "Deleting unrecoverable gitignored data is gated (AN-1)" as ◻ on every host. There's no proven sibling yet anywhere, so this starts from the engine test, not a host test.
What to do
tests/unit/test_rule_commands.py::test_unrecoverable_gitignored_data_delete_requires_auth. It drives DestructiveCommandRule directly with commands like rm data/app.db, rm .env, rm config/server.key and asserts AUTH plus ReasonCode.destructive_command.tests/unit/test_hosthook_claude_pre.py, mirroring the wiring of test_destructive_bash_is_denied in the same file: call _pre("Bash", {"command": "rm data/app.db"}, cwd). The default headless prompter resolves an AUTH to permissionDecision == "deny" (see test_webfetch_to_external_url_triggers_auth for the same shape) — assert that, and also assert "[AUTH]" (not "[BLOCK]") is in the reason so the test can't pass on the wrong verdict.@pytest.mark.guarantee("gitignored-delete-gate", host="claude-code")DestructiveCommandRule (src/doberman/engine/rules/commands.py), confirm your test goes red, revert. Note "mutation-checked" in the PR.python -m tools.parity.generate_parity (CI's --check fails if you skip this).Directory deletes stay out of scope — AN-1 only covers a delete naming a file matching *.db/*.sqlite*/.env/*.key. A small, concrete first parity proof.
Ticket changed by: fu351