mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 08:02:24 +00:00
Mutating the host-key policy table showed it is well covered: accepting a revoked key with verification off, and silently accepting an unknown or a changed key, each fail the suite. The carrying-out was not. **Saying no had nothing holding it.** Deleting the `if !accept` guard in `apply_decision` — so a person shown a changed host key declines and connects anyway — left every test in the repo green. `accepted_and_remembered` is tested on its own; nothing checked that the caller acts on its answer. Now four responses are refused: no, no-with-the-checkbox-still-ticked, cancelled, and a response of the wrong shape. It touches no filesystem, because none of them reach the recording branch. **Dropping the superseded line had nothing holding it either.** The order is the point — `check` answers `Known` on any same-algorithm match, so appending without dropping leaves the key this one replaces trusted for good, which is how a host that rotated away from a compromised key goes on accepting the old one. There was a test named after that bug, but it called the two halves itself, so removing the `forget_superseded` call from `apply_decision` changed nothing it could see. The sequence is now one function, `record_trusted`, with the order and the "if the drop fails, append nothing" rule stated where it happens. Production and that test call the same thing, so neither can drop a half alone. Verified by re-running both mutations against the new tests; each fails, naming what went wrong.