watcher, config: no Record Change or Inconsistency for listed names (closes #255) #258

Merged
clawbot merged 1 commits from issue-255-skip-record-notifications into next 2026-10-06 03:01:47 +02:00
Collaborator

Adds DNSWATCHER_SKIP_RECORD_NOTIFICATIONS, per #255 and its plan comment.

What changed:

  • Config reads the variable as a comma-separated list of names from DNSWATCHER_TARGETS, normalised as the targets are. A listed name that is not a target stops startup with an error naming it (ErrNotInTargets).
  • The watcher sends no Record Change and no Inconsistency notification for a listed name. Everything else is unchanged: its records are checked and saved, so the dashboard and /api/v1/status show them, and NS failure and recovery, CNAME address change, NS change, port and TLS notifications are sent as before. Apex domains are covered: their own records go through the same detection.
  • README: the Environment Variables table row, and the exception stated in each place that says these changes are notified.

What the diff does not show:

  • Live DNS cannot be made to disagree on purpose, so the Inconsistency side is tested by feeding earlier and current records to the change detection directly, as the existing inconsistency tests do. The live test checks a listed name from a saved state live DNS cannot match: no Record Change, and its records are saved.
  • Judgement call: the opening description, the Rationale and the Notifications section's list of what each notification contains are left as they are: they describe the program's purpose and a notification's content, not what every name gets. So is "DNS, port and TLS problems are reported as notifications" under DNSWATCHER_SENTRY_DSN, which says where problems go.

Model: opus-5-5

Adds `DNSWATCHER_SKIP_RECORD_NOTIFICATIONS`, per https://git.eeqj.de/sneak/dnswatcher/issues/255 and its plan comment. What changed: - Config reads the variable as a comma-separated list of names from `DNSWATCHER_TARGETS`, normalised as the targets are. A listed name that is not a target stops startup with an error naming it (`ErrNotInTargets`). - The watcher sends no Record Change and no Inconsistency notification for a listed name. Everything else is unchanged: its records are checked and saved, so the dashboard and `/api/v1/status` show them, and NS failure and recovery, CNAME address change, NS change, port and TLS notifications are sent as before. Apex domains are covered: their own records go through the same detection. - README: the Environment Variables table row, and the exception stated in each place that says these changes are notified. What the diff does not show: - Live DNS cannot be made to disagree on purpose, so the Inconsistency side is tested by feeding earlier and current records to the change detection directly, as the existing inconsistency tests do. The live test checks a listed name from a saved state live DNS cannot match: no Record Change, and its records are saved. - Judgement call: the opening description, the Rationale and the Notifications section's list of what each notification contains are left as they are: they describe the program's purpose and a notification's content, not what every name gets. So is "DNS, port and TLS problems are reported as notifications" under `DNSWATCHER_SENTRY_DSN`, which says where problems go. Model: opus-5-5
clawbot added the needs-review label 2026-10-06 01:31:24 +02:00
clawbot self-assigned this 2026-10-06 01:31:24 +02:00
Author
Collaborator

README.md: the exception for names in DNSWATCHER_SKIP_RECORD_NOTIFICATIONS appears only inside the Record change bullet (line 142). Other places still say, with no exception, that these changes are notified, which is false for a listed name: the Notifications section's "Every observable state change produces a notification." (line 214), the Inconsistency detected bullet (line 157), and the apex domain bullet that lists record change and inconsistency among a domain's notifications (lines 97-101). Acceptable: each of those places says in a few words that a name listed in DNSWATCHER_SKIP_RECORD_NOTIFICATIONS gets no record change or inconsistency notification, or points to the sentence that says so. The Inconsistency detected bullet should state the exception itself, not leave it to the Record change bullet.

Model: opus-5-5

`README.md`: the exception for names in `DNSWATCHER_SKIP_RECORD_NOTIFICATIONS` appears only inside the Record change bullet (line 142). Other places still say, with no exception, that these changes are notified, which is false for a listed name: the Notifications section's "**Every observable state change produces a notification.**" (line 214), the Inconsistency detected bullet (line 157), and the apex domain bullet that lists record change and inconsistency among a domain's notifications (lines 97-101). Acceptable: each of those places says in a few words that a name listed in `DNSWATCHER_SKIP_RECORD_NOTIFICATIONS` gets no record change or inconsistency notification, or points to the sentence that says so. The Inconsistency detected bullet should state the exception itself, not leave it to the Record change bullet. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-06 01:53:15 +02:00
clawbot force-pushed issue-255-skip-record-notifications from 7755d85ab9 to bbba4bfdcb 2026-10-06 02:07:32 +02:00 Compare
clawbot added needs-review and removed needs-rework labels 2026-10-06 02:07:46 +02:00
Author
Collaborator

README: the exception for names in DNSWATCHER_SKIP_RECORD_NOTIFICATIONS is now stated in the apex domain section, the hostname section's opening line, the Inconsistency detected bullet itself, and the Notifications section.

Model: opus-5-5

README: the exception for names in `DNSWATCHER_SKIP_RECORD_NOTIFICATIONS` is now stated in the apex domain section, the hostname section's opening line, the Inconsistency detected bullet itself, and the Notifications section. Model: opus-5-5
Author
Collaborator

README.md lines 194-196 (TCP Port Monitoring): "the DNS change notification shows the new address" and "IP disappeared (from DNS change) — noted in the DNS change notification" are untrue for a domain or hostname listed in DNSWATCHER_SKIP_RECORD_NOTIFICATIONS. A change in its own A or AAAA records sends no record change notification, so the address that appeared or disappeared is in no notification. Acceptable: those two bullets say in a few words that for a listed name such an address change is not notified.

Model: opus-5-5

`README.md` lines 194-196 (TCP Port Monitoring): "the DNS change notification shows the new address" and "IP disappeared (from DNS change) — noted in the DNS change notification" are untrue for a domain or hostname listed in `DNSWATCHER_SKIP_RECORD_NOTIFICATIONS`. A change in its own A or AAAA records sends no record change notification, so the address that appeared or disappeared is in no notification. Acceptable: those two bullets say in a few words that for a listed name such an address change is not notified. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-06 02:22:16 +02:00
clawbot added 1 commit 2026-10-06 02:39:06 +02:00
DNSWATCHER_SKIP_RECORD_NOTIFICATIONS takes a comma-separated list of
names from DNSWATCHER_TARGETS, read as the targets are (letter case,
trailing dot, repeats). For a listed name no Record Change and no
Inconsistency notification is sent; its records are still checked and
saved, and its other notifications are sent. A listed name that is not
a target stops startup with an error naming it.

The two detections return early for a listed name. Apex domains are
covered too: their own records go through the same detection.

Live DNS cannot be made to disagree on purpose, so the Inconsistency
test feeds records to the change detection directly, as the existing
inconsistency tests do; the live test covers Record Change.

Model: opus-5-5
clawbot force-pushed issue-255-skip-record-notifications from bbba4bfdcb to c302f1399d 2026-10-06 02:39:06 +02:00 Compare
clawbot added needs-review and removed needs-rework labels 2026-10-06 02:39:46 +02:00
Author
Collaborator

README: the TCP Port Monitoring bullets on an address that appears or disappears, and the Monitoring Lifecycle step "On change detection", now state the exception for a domain or hostname listed in DNSWATCHER_SKIP_RECORD_NOTIFICATIONS.

Left as they are: the opening description, the Rationale and the Notifications section's list of what each notification contains, which describe the program's purpose and a notification's content, not what every name gets.

Judgement call: "DNS, port and TLS problems are reported as notifications" under DNSWATCHER_SENTRY_DSN is left as it is too; it says where problems go, not that every name's are sent.

Model: opus-5-5

README: the TCP Port Monitoring bullets on an address that appears or disappears, and the Monitoring Lifecycle step "On change detection", now state the exception for a domain or hostname listed in `DNSWATCHER_SKIP_RECORD_NOTIFICATIONS`. Left as they are: the opening description, the Rationale and the Notifications section's list of what each notification contains, which describe the program's purpose and a notification's content, not what every name gets. Judgement call: "DNS, port and TLS problems are reported as notifications" under `DNSWATCHER_SENTRY_DSN` is left as it is too; it says where problems go, not that every name's are sent. Model: opus-5-5
Author
Collaborator

The PR body is about 290 words, over the limit of about 250. Acceptable: cut it to about 250, for example by dropping the list of README places from the README bullet, since the diff already shows them. No code or commit change is needed.

Judgement call: no test lists an apex domain. Not raised, because a domain's own records go through the same per-name check as a hostname's.

Model: opus-5-5

The PR body is about 290 words, over the limit of about 250. Acceptable: cut it to about 250, for example by dropping the list of README places from the README bullet, since the diff already shows them. No code or commit change is needed. Judgement call: no test lists an apex domain. Not raised, because a domain's own records go through the same per-name check as a hostname's. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-06 02:58:55 +02:00
Author
Collaborator

PR body cut to about 250 words, as the third review asked; no code or commit change.

Model: opus-5-5

PR body cut to about 250 words, as the third review asked; no code or commit change. Model: opus-5-5
clawbot removed the needs-rework label 2026-10-06 03:01:46 +02:00
clawbot merged commit d1060315b7 into next 2026-10-06 03:01:47 +02:00
clawbot deleted branch issue-255-skip-record-notifications 2026-10-06 03:01:47 +02:00
Sign in to join this conversation.