The README (DNS Hostname Monitoring) says an inconsistency alert fires when two nameservers that previously agreed now return different record sets. detectInconsistencies in internal/watcher/watcher.go instead sends one alert per disagreeing nameserver pair on every DNS cycle, for as long as the disagreement lasts. A trial run of the image against live DNS showed eeqj.de producing two alerts every cycle, to every configured endpoint.
Definition of done
An inconsistency alert is sent once, on the check where a pair of nameservers that agreed on the previous check starts to disagree, and not again while the disagreement persists.
A disagreement already present in the state loaded at startup does not alert again after a restart.
Tests cover a disagreement that persists across checks and one that starts on a later check.
The README describes the behavior.
No DNS mocking. make check green.
Model: opus-5-5
The README (DNS Hostname Monitoring) says an inconsistency alert fires when two nameservers that previously agreed now return different record sets. `detectInconsistencies` in `internal/watcher/watcher.go` instead sends one alert per disagreeing nameserver pair on every DNS cycle, for as long as the disagreement lasts. A trial run of the image against live DNS showed `eeqj.de` producing two alerts every cycle, to every configured endpoint.
## Definition of done
- An inconsistency alert is sent once, on the check where a pair of nameservers that agreed on the previous check starts to disagree, and not again while the disagreement persists.
- A disagreement already present in the state loaded at startup does not alert again after a restart.
- Tests cover a disagreement that persists across checks and one that starts on a later check.
- The README describes the behavior.
- No DNS mocking. `make check` green.
Model: opus-5-5
Plan. detectInconsistencies in internal/watcher/watcher.go compares only the current records. Give it the previous hostname state as well (detectHostnameChanges already has it), and alert for a pair of nameservers only when both were present in the previous state with equal records and now disagree. State loaded at startup is the previous state for the first check, so a disagreement saved before a restart does not alert again.
Test the decision on record data: put the choice of which pairs to alert for in a small function of the previous state and the current records, and test that with data built in the test (a disagreement that persists across two checks alerts once, one that starts on a later check alerts on that check, one already present in the loaded state does not alert). Do not add to or use mockResolver in internal/watcher/watcher_test.go: it stubs DNS and is being removed under #159.
README: the DNS Hostname Monitoring section says the alert fires once, when nameservers that agreed start to disagree.
Model: opus-5-5
Plan. `detectInconsistencies` in `internal/watcher/watcher.go` compares only the current records. Give it the previous hostname state as well (`detectHostnameChanges` already has it), and alert for a pair of nameservers only when both were present in the previous state with equal records and now disagree. State loaded at startup is the previous state for the first check, so a disagreement saved before a restart does not alert again.
Test the decision on record data: put the choice of which pairs to alert for in a small function of the previous state and the current records, and test that with data built in the test (a disagreement that persists across two checks alerts once, one that starts on a later check alerts on that check, one already present in the loaded state does not alert). Do not add to or use `mockResolver` in `internal/watcher/watcher_test.go`: it stubs DNS and is being removed under https://git.eeqj.de/sneak/dnswatcher/issues/159.
README: the DNS Hostname Monitoring section says the alert fires once, when nameservers that agreed start to disagree.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The README (DNS Hostname Monitoring) says an inconsistency alert fires when two nameservers that previously agreed now return different record sets.
detectInconsistenciesininternal/watcher/watcher.goinstead sends one alert per disagreeing nameserver pair on every DNS cycle, for as long as the disagreement lasts. A trial run of the image against live DNS showedeeqj.deproducing two alerts every cycle, to every configured endpoint.Definition of done
make checkgreen.Model: opus-5-5
Plan.
detectInconsistenciesininternal/watcher/watcher.gocompares only the current records. Give it the previous hostname state as well (detectHostnameChangesalready has it), and alert for a pair of nameservers only when both were present in the previous state with equal records and now disagree. State loaded at startup is the previous state for the first check, so a disagreement saved before a restart does not alert again.Test the decision on record data: put the choice of which pairs to alert for in a small function of the previous state and the current records, and test that with data built in the test (a disagreement that persists across two checks alerts once, one that starts on a later check alerts on that check, one already present in the loaded state does not alert). Do not add to or use
mockResolverininternal/watcher/watcher_test.go: it stubs DNS and is being removed under #159.README: the DNS Hostname Monitoring section says the alert fires once, when nameservers that agreed start to disagree.
Model: opus-5-5