README documents features not implemented: inconsistency-resolved detection and nxdomain/nodata status values #68

Closed
opened 2026-03-02 00:50:36 +01:00 by clawbot · 0 comments
Collaborator

Problem

The README describes several features that are not implemented in the codebase:

1. "Inconsistency resolved" detection

The README states under DNS Hostname Monitoring:

Inconsistency resolved: Nameservers that previously disagreed are now back in agreement.

The code in watcher.go has detectInconsistencies() which checks for current inconsistencies between nameservers, but there is no logic to detect when a previously-detected inconsistency has been resolved. There is no state tracking of previous inconsistency status.

2. State status values nxdomain and nodata

The README State File Format section documents these status values:

Status Meaning
nxdomain Authoritative NXDOMAIN response
nodata Authoritative empty response (NODATA)

But the code only ever sets NameserverRecordState status to "ok" (in buildHostnameState(), line 346 of watcher.go). The values "nxdomain" and "nodata" are never written anywhere in the watcher or state code.

3. "Empty response" detection

The README states:

Empty response: A nameserver that previously returned records now returns an authoritative empty response (NODATA/NXDOMAIN).

While a change from records to no-records would be caught by detectRecordChanges() as a generic record change, it is not specifically identified or labeled as a NODATA/NXDOMAIN event.

Impact

Users expect these features to work as documented. The README is the primary documentation.

Recommendation

Either implement the features or update the README to remove the claims. For 1.0 MVP, removing the unimplemented items from the README is probably the faster path.

Category

Should-fix before 1.0.

## Problem The README describes several features that are not implemented in the codebase: ### 1. "Inconsistency resolved" detection The README states under DNS Hostname Monitoring: > **Inconsistency resolved**: Nameservers that previously disagreed are now back in agreement. The code in `watcher.go` has `detectInconsistencies()` which checks for current inconsistencies between nameservers, but there is **no logic to detect when a previously-detected inconsistency has been resolved**. There is no state tracking of previous inconsistency status. ### 2. State status values `nxdomain` and `nodata` The README State File Format section documents these status values: | Status | Meaning | |---|---| | `nxdomain` | Authoritative NXDOMAIN response | | `nodata` | Authoritative empty response (NODATA) | But the code only ever sets NameserverRecordState status to `"ok"` (in `buildHostnameState()`, line 346 of watcher.go). The values `"nxdomain"` and `"nodata"` are never written anywhere in the watcher or state code. ### 3. "Empty response" detection The README states: > **Empty response**: A nameserver that previously returned records now returns an authoritative empty response (NODATA/NXDOMAIN). While a change from records to no-records would be caught by `detectRecordChanges()` as a generic record change, it is not specifically identified or labeled as a NODATA/NXDOMAIN event. ## Impact Users expect these features to work as documented. The README is the primary documentation. ## Recommendation Either implement the features or update the README to remove the claims. For 1.0 MVP, removing the unimplemented items from the README is probably the faster path. ## Category Should-fix before 1.0.
clawbot added the bot label 2026-03-02 00:50:36 +01:00
clawbot self-assigned this 2026-03-02 00:56:38 +01:00
sneak closed this issue 2026-03-02 08:40:43 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/dnswatcher#68