2026-09-15 - 2026-10-15

Overview

79 Active Pull Requests
97 Active Issues
Excluding merges, 0 authors have pushed 0 commits to main and 78 commits to all branches. On main, 0 files have changed and there have been 0 additions and 0 deletions.

2 Releases published by 1 user

Published v1.0.0-rc2 2026-10-14 00:31:43 +02:00

Published v1.0.0-rc1 2026-10-13 22:31:59 +02:00

77 Pull requests merged by 1 user

Merged #290 watcher: a hostname whose zone's nameservers all stop answering gets NS Failure (closes #284) 2026-10-14 00:27:31 +02:00

Merged #282 watcher: an IPv6 address is written in brackets before its port (closes #270) 2026-10-13 22:27:35 +02:00

Merged #283 docs: TODO.md names only open issues as next steps (closes #281) 2026-10-13 22:00:05 +02:00

Merged #280 watcher: a port check that finds 443 closed removes its certificate entries (closes #265) 2026-10-13 21:27:35 +02:00

Merged #278 state: a state file without a section loads it empty (closes #267) 2026-10-13 20:27:27 +02:00

Merged #279 watcher: a stop during the first scan sends no startup notification (closes #271) 2026-10-13 20:00:01 +02:00

Merged #273 watcher: a removed nameserver is an NS Change, not an NS Failure (closes #262) 2026-10-13 19:27:37 +02:00

Merged #277 config: a metrics username without a password stops startup (closes #268) 2026-10-13 19:10:59 +02:00

Merged #276 state: Save syncs the state file before renaming it into place (closes #264) 2026-10-13 18:27:31 +02:00

Merged #275 server: a port that cannot be bound stops startup (closes #266) 2026-10-13 18:00:01 +02:00

Merged #274 config: a bad number or true/false setting stops startup (closes #269) 2026-10-13 15:27:34 +02:00

Merged #272 state: GetSnapshot copies the state's maps (closes #261) 2026-10-13 13:44:32 +02:00

Merged #259 build: re-vendor canonical files from prompts dd4027b (closes #257) 2026-10-06 04:29:50 +02:00

Merged #258 watcher, config: no Record Change or Inconsistency for listed names (closes #255) 2026-10-06 03:01:47 +02:00

Merged #254 resolver: a nameserver with a failed record type is not nodata (closes #253) 2026-10-02 13:16:43 +02:00

Merged #250 resolver, watcher: a domain's nameservers are only its own delegation (closes #222) 2026-10-02 12:38:45 +02:00

Merged #252 resolver: the refused-query test asks several operators, one query each (closes #251) 2026-10-02 12:00:49 +02:00

Merged #246 watcher: a name removed from the targets leaves the state (closes #223) 2026-10-02 11:17:59 +02:00

Merged #234 resolver, watcher: a record type whose query fails keeps its previous records (closes #231) 2026-10-02 10:51:24 +02:00

Merged #249 watcher: Port Change notifications list domains apart from hostnames (closes #248) 2026-10-02 10:42:07 +02:00

Merged #247 dashboard and status API list a port's domains apart from its hostnames (closes #245) 2026-10-02 10:31:07 +02:00

Merged #242 resolver: ask a referral's nameservers that come without addresses (closes #221) 2026-10-02 10:12:09 +02:00

Merged #244 dashboard, status API and notifications tell apex domains from hostnames (closes #224) 2026-10-02 10:08:33 +02:00

Merged #243 dashboard: list record types in the README's order (closes #226) 2026-10-02 09:55:07 +02:00

Merged #235 dashboard and status API show why a check failed (closes #225) 2026-10-02 09:14:28 +02:00

Merged #236 resolver: store a name's CNAME once per nameserver (closes #220) 2026-10-02 09:09:52 +02:00

Merged #237 watcher: a lookup cut short by shutdown is not logged as an error (closes #229) 2026-10-02 08:56:53 +02:00

Merged #238 watcher: change messages name only the record types that differ (closes #219) 2026-10-02 08:46:57 +02:00

Merged #241 watcher: startup notification no longer says every endpoint works (closes #230) 2026-10-02 08:42:35 +02:00

Merged #240 notify: a failed Mattermost delivery's error names Mattermost 2026-10-02 08:40:20 +02:00

Merged #239 log: write durations as text, not nanoseconds (closes #228) 2026-10-02 08:37:48 +02:00

Merged #209 watcher: follow a watched name's CNAME for port and TLS checks (closes #203) 2026-10-02 08:26:27 +02:00

Merged #232 resolver tests: retry an answer missing the record type read (closes #218) 2026-10-02 07:52:45 +02:00

Merged #213 docker: a plain docker build . stamps the git version (closes #210) 2026-10-02 06:27:47 +02:00

Merged #212 resolver: never resend a refused query asking for recursion (closes #206) 2026-10-02 06:10:55 +02:00

Merged #217 ci: a push cancels its branch's older run, checkout keeps no token (closes #216) 2026-10-02 06:07:53 +02:00

Merged #215 watcher tests: far fewer live queries, longer live attempts (closes #214) 2026-10-02 06:04:32 +02:00

Merged #199 resolver: try servers in a random order on each resolution (closes #138) 2026-10-02 03:26:07 +02:00

Merged #205 README: correct claims the code does not bear out (closes #108) 2026-10-02 03:14:27 +02:00

Merged #211 config: watch a target listed twice only once (closes #207) 2026-10-02 02:56:12 +02:00

Merged #208 watcher: warn of an expiring certificate on every TLS check (closes #204) 2026-10-02 01:58:28 +02:00

Merged #202 resolver: take a domain's NS set from its delegation (closes #200) 2026-10-02 01:48:55 +02:00

Merged #198 docs: add the README sections policy requires (closes #173) 2026-10-02 01:25:14 +02:00

Merged #201 resolver: pass over a server that answers SERVFAIL or refers no closer (closes #197) 2026-10-02 01:17:39 +02:00

Merged #195 watcher: keep port state when no nameserver of a name answered (closes #193) 2026-10-02 00:44:50 +02:00

Merged #194 resolver: error from ResolveIPAddresses when no nameserver answered (closes #190) 2026-10-02 00:28:54 +02:00

Merged #196 fmt: format and check Markdown with prettier in a container (closes #119) 2026-10-02 00:19:30 +02:00

Merged #192 fmt: check goimports in fmt-check, run it at its pinned commit (#119) 2026-10-01 23:51:22 +02:00

Merged #191 resolver: query a hostname at its own zone's servers (closes #189) 2026-10-01 23:34:36 +02:00

Merged #187 watcher: notify nameserver address changes (closes #105) 2026-10-01 23:23:27 +02:00

Merged #186 watcher: save state when it stops and wait for that save (closes #114) 2026-10-01 23:14:18 +02:00

Merged #184 server: report HTTP handler panics to Sentry (closes #107) 2026-10-01 23:09:39 +02:00

Merged #188 watcher: save and notify nothing for a cut-short port or TLS check (closes #185) 2026-10-01 22:49:45 +02:00

Merged #183 middleware: take the client address from the right of X-Forwarded-For (closes #181) 2026-10-01 22:35:18 +02:00

Merged #175 watcher: notify NS query failure and recovery (closes #104) 2026-10-01 22:23:33 +02:00

Merged #178 config: stop startup on an invalid DNS or TLS interval 2026-10-01 22:19:05 +02:00

Merged #180 metrics: rate limit /metrics per client address before Basic Auth (closes #101) 2026-10-01 22:09:15 +02:00

Merged #182 docker: report the real version in the image (closes #109) 2026-10-01 22:01:44 +02:00

Merged #179 notify: release held deliveries so shutdown tests fail, not hang (closes #176) 2026-10-01 21:58:59 +02:00

Merged #170 script/install-precommit: work where .git is a file (closes #129) 2026-10-01 21:45:58 +02:00

Merged #171 docs: bring TODO.md up to date (closes #146) 2026-10-01 21:32:50 +02:00

Merged #167 docker: set up the data directory in an entrypoint (closes #166) 2026-10-01 21:15:03 +02:00

Merged #172 server: limit wildcard CORS to the public routes (closes #100) 2026-10-01 21:05:43 +02:00

Merged #169 Move the test-only constructors into export_test.go (closes #111) 2026-10-01 21:03:04 +02:00

Merged #174 notify: make the shutdown tests fail with the right message (closes #116) 2026-10-01 20:42:22 +02:00

Merged #165 tests: rename internal/livedns to livednstest and deny it outside tests 2026-10-01 19:52:49 +02:00

Merged #163 golangci: re-vendor the org config with gomodguard_v2 2026-09-29 10:27:08 +02:00

Merged #162 tests: remove the DNS stand-ins from the watcher and resolver tests 2026-09-29 08:44:08 +02:00

Merged #161 watcher: send the inconsistency alert once per disagreement 2026-09-29 02:29:54 +02:00

Merged #160 resolver: lower-case DNS names in record values (closes #157) 2026-09-29 00:30:30 +02:00

Merged #155 script: force lint and test to run in cibuild and docker 2026-09-28 23:13:39 +02:00

Merged #153 server: assert timeouts on the served http.Server, not just the constructor 2026-09-28 22:01:36 +02:00

Merged #156 docker: run as non-root, add health check, document upaas 2026-09-28 20:13:38 +02:00

Merged #112 feat: add security response headers middleware (closes #98) 2026-09-22 00:52:48 +02:00

Merged #154 Add tests for globals, healthcheck, and logger packages 2026-09-21 10:05:39 +02:00

Merged #150 gomod: drop stale golang.org/x/sync indirect line 2026-09-21 09:44:50 +02:00

Merged #151 Merge main into next to restore ancestry (resolve TODO.md) 2026-09-21 09:44:28 +02:00

2 Pull requests proposed by 1 user

Proposed #152 next 2026-09-21 09:44:48 +02:00

Proposed #291 A nameserver is asked at each of its addresses in turn 2026-10-15 12:25:54 +02:00

91 Issues closed from 1 user

Closed #284 A hostname whose zone's nameservers all stop answering gets no NS Failure notification 2026-10-14 00:27:32 +02:00

Closed #270 An IPv6 address joined with its port, as in a Port Change notification, cannot be told from the port 2026-10-13 22:27:36 +02:00

Closed #281 TODO.md names closed issues as its next and future steps 2026-10-13 22:00:06 +02:00

Closed #265 A certificate entry stays ok after its port 443 closes 2026-10-13 21:27:35 +02:00

Closed #267 A state file holding {} crashes the watcher on its first check 2026-10-13 20:27:28 +02:00

Closed #271 The startup notification says the initial scan completed when shutdown cut it short 2026-10-13 20:00:02 +02:00

Closed #262 A nameserver removed from a domain's delegation is also reported as an NS Failure 2026-10-13 19:27:38 +02:00

Closed #268 /metrics is served with an empty password when only DNSWATCHER_METRICS_USERNAME is set 2026-10-13 19:10:59 +02:00

Closed #264 The state file is renamed into place without being synced, so a crash can leave it empty and stop the next start 2026-10-13 18:27:32 +02:00

Closed #266 dnswatcher keeps running without its HTTP server when the listen port is in use 2026-10-13 18:00:01 +02:00

Closed #269 A setting that is not a valid number or true/false is read as 0 or false instead of stopping startup 2026-10-13 15:27:34 +02:00

Closed #261 The dashboard and /api/v1/status iterate the state's live maps without the lock, which can crash the process 2026-10-13 13:44:32 +02:00

Closed #260 Defect hunt before the release candidate: a trial run of next and a read of its code paths 2026-10-13 12:53:25 +02:00

Closed #263 A non-numeric DNSWATCHER_TLS_EXPIRY_WARNING or PORT is silently read as 0 2026-10-13 12:51:04 +02:00

Closed #257 Re-vendor the canonical files from sneak/prompts at dd4027b 2026-10-06 04:29:50 +02:00

Closed #255 Let an admin turn off Record Change and Inconsistency notifications for one name 2026-10-06 03:01:47 +02:00

Closed #256 Let an admin turn off the record-change notification for one host 2026-10-03 14:26:31 +02:00

Closed #233 OWNER: names whose nameservers rotate their answers notify on every check 2026-10-03 14:22:59 +02:00

Closed #144 Review toward 1.0: identify and file all next steps 2026-10-02 13:18:58 +02:00

Closed #253 A nameserver whose A query got no reply is reported nodata when its other answers were empty 2026-10-02 13:16:43 +02:00

Closed #222 A name gets a parent zone's nameservers when finding its own fails: a domain that does not exist shows the .com servers 2026-10-02 12:38:45 +02:00

Closed #251 Red next: the Quad9 refusal test needs all eight of its queries answered at once 2026-10-02 12:00:49 +02:00

Closed #223 Targets removed from DNSWATCHER_TARGETS stay on the dashboard, in /api/v1/status and in the startup counts 2026-10-02 11:17:59 +02:00

Closed #231 One lost query saves a nameserver's records with that type missing, and notifies a change 2026-10-02 10:51:24 +02:00

Closed #248 Port Change notifications list apex domains as hosts 2026-10-02 10:42:08 +02:00

Closed #245 The dashboard Ports table lists an apex domain as a hostname 2026-10-02 10:31:07 +02:00

Closed #221 Nameservers that a referral names without addresses are not looked up, so pool.ntp.org cannot be watched 2026-10-02 10:12:10 +02:00

Closed #224 Apex domains are counted, listed and notified as hostnames 2026-10-02 10:08:33 +02:00

Closed #226 The dashboard lists each nameserver's records in a random order of record type 2026-10-02 09:55:07 +02:00

Closed #225 The dashboard and /api/v1/status do not say why a nameserver or certificate check failed 2026-10-02 09:14:28 +02:00

Closed #220 A hostname's CNAME is stored once for every record type asked for, eight copies in all 2026-10-02 09:09:52 +02:00

Closed #229 A DNS lookup cut short by shutdown is logged as an error 2026-10-02 08:56:54 +02:00

Closed #219 Record Change and Inconsistency notifications print every record type in Go map syntax instead of what changed 2026-10-02 08:46:57 +02:00

Closed #230 The startup notification says all notification channels are working before any delivery is known 2026-10-02 08:42:35 +02:00

Closed #227 A failed Mattermost delivery is logged as "slack notification failed" 2026-10-02 08:40:20 +02:00

Closed #228 Durations in the log are bare nanosecond counts 2026-10-02 08:37:48 +02:00

Closed #203 A watched name whose CNAME points into another zone gets no port or TLS checks 2026-10-02 08:26:27 +02:00

Closed #218 Resolver tests for AAAA and MX records fail when one query is lost 2026-10-02 07:52:45 +02:00

Closed #149 Trial run of the finished image against real targets before tagging 1.0 2026-10-02 07:36:51 +02:00

Closed #210 docker build . stamps dev, not the git tag or short commit 2026-10-02 06:27:48 +02:00

Closed #206 A query a server refuses is resent asking for recursion, so answers can come from a recursive resolver 2026-10-02 06:10:55 +02:00

Closed #216 CI runs every pushed head, even after a newer push to the same branch has replaced it 2026-10-02 06:07:53 +02:00

Closed #214 next is red in CI: watcher tests time out since nameserver addresses are looked up on each domain check 2026-10-02 06:04:32 +02:00

Closed #138 queryServers always tries servers in fixed order, so every resolution starts at a.root-servers.net 2026-10-02 03:26:08 +02:00

Closed #108 README accuracy sweep: architecture omissions, undocumented state field, overclaimed MAINTENANCE_MODE and /metrics 2026-10-02 03:14:27 +02:00

Closed #207 A target listed twice in DNSWATCHER_TARGETS is checked twice 2026-10-02 02:56:12 +02:00

Closed #204 TLS expiry warning is skipped on some checks, at random 2026-10-02 01:58:29 +02:00

Closed #200 A domain's NS set comes from whichever server answers first, so it can change between checks when servers disagree 2026-10-02 01:48:56 +02:00

Closed #173 README lacks the Getting Started, Rationale, Design and TODO sections that REPO_POLICIES.md requires 2026-10-02 01:25:14 +02:00

Closed #197 Finding a zone's servers gives up after the first server answers SERVFAIL or refers onward 2026-10-02 01:17:39 +02:00

Closed #193 Saved port state is removed when every nameserver of a hostname fails 2026-10-02 00:44:51 +02:00

Closed #190 ResolveIPAddresses returns no addresses and no error when every nameserver fails 2026-10-02 00:28:54 +02:00

Closed #119 fmt tooling is incomplete: fmt-check does not verify goimports, and no formatter covers Markdown 2026-10-02 00:19:30 +02:00

Closed #189 Hostname records are queried at the servers of the name's last two labels, the wrong zone under co.uk-style suffixes and delegated subdomains 2026-10-01 23:34:36 +02:00

Closed #105 Nameserver glue/IP changes are never detected — README claims they trigger a notification 2026-10-01 23:23:27 +02:00

Closed #114 Final state persistence at shutdown depends on implicit fx hook ordering and is untested 2026-10-01 23:14:18 +02:00

Closed #107 DNSWATCHER_SENTRY_DSN is documented and accepted but does nothing: port the Sentry integration from gohttpserver 2026-10-01 23:09:39 +02:00

Closed #185 A check cut short by shutdown saves every port as closed and every certificate as failed 2026-10-01 22:49:45 +02:00

Closed #181 The client address taken from X-Forwarded-For is the first entry, which the client itself can set 2026-10-01 22:35:18 +02:00

Closed #104 Per-nameserver query status is discarded: NS failure and NS recovery notifications never fire 2026-10-01 22:23:33 +02:00

Closed #177 An invalid DNSWATCHER_DNS_INTERVAL or DNSWATCHER_TLS_INTERVAL is silently replaced by the default 2026-10-01 22:19:05 +02:00

Closed #101 No rate limiting on the Basic-Auth-protected /metrics endpoint 2026-10-01 22:09:15 +02:00

Closed #109 Dockerfile does not implement the mandated fail-fast lint stage, and does not pass VERSION as a build ARG 2026-10-01 22:01:44 +02:00

Closed #176 notify shutdown tests hang until the 90-second timeout instead of failing when a drain returns early 2026-10-01 21:58:59 +02:00

Closed #129 script/install-precommit fails in a linked worktree: .git is a file, not a directory 2026-10-01 21:45:58 +02:00

Closed #146 TODO.md is stale: lists shipped work as future steps and tells the reader to keep DNS tests mocked 2026-10-01 21:32:50 +02:00

Closed #166 The container sets its data directory permissions itself before startup 2026-10-01 21:15:03 +02:00

Closed #100 CORS wildcard applies to the authenticated /metrics route, and advertises methods that do not exist 2026-10-01 21:05:44 +02:00

Closed #111 internal/state ships test-only constructors in the production build 2026-10-01 21:03:05 +02:00

Closed #116 internal/notify shutdown tests: misleading failure diagnostic and an overloaded timing constant 2026-10-01 20:42:22 +02:00

Closed #164 Test-only package internal/livedns can be compiled into the binary: rename it and name it in the test-support lint rule 2026-10-01 19:52:52 +02:00

Closed #159 Watcher tests stub DNS with a mock resolver, against the no-DNS-mocking rule 2026-10-01 19:52:13 +02:00

Closed #123 DECISION NEEDED: gomodguard linter is deprecated, and .golangci.yml can only be changed by you 2026-10-01 19:52:13 +02:00

Closed #158 Inconsistency alert repeats on every DNS cycle while nameservers disagree 2026-10-01 19:52:12 +02:00

Closed #147 Deploy readiness for upaas: non-root image, healthcheck, trial run, README deploy section 2026-10-01 19:52:12 +02:00

Closed #168 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:12:16 +02:00

Closed #157 Record values are compared with letter case, so nameservers that agree are reported as inconsistent 2026-09-29 00:30:30 +02:00

Closed #115 script/cibuild can report a green it did not earn: RUN make check is served from the Docker layer cache 2026-09-28 23:13:39 +02:00

Closed #120 Server timeout tests protect the constructor but not the call site, and carry an inverted rationale comment 2026-09-28 22:01:36 +02:00

Closed #126 DECISION/ACCESS NEEDED: the CI job log Gitea returns for a commit does not correspond to that commit 2026-09-25 01:27:10 +02:00

Closed #98 Add security response headers middleware (HSTS, CSP, X-Frame-Options, nosniff, Referrer-Policy, Permissions-Policy) 2026-09-22 00:52:49 +02:00

Closed #110 internal/globals, internal/healthcheck, and internal/logger have no tests at all 2026-09-21 10:05:39 +02:00

Closed #132 go.mod is untidy: golang.org/x/sync listed both direct and indirect, so script/bootstrap mutates a tracked file 2026-09-21 09:44:50 +02:00

Closed #145 next cannot be merged into main: TODO.md conflicts after the squash of the last milestone 2026-09-21 09:44:28 +02:00

Closed #124 script/docker has the same layer-cache hole as script/cibuild, so make docker can hand a developer an unearned green 2026-09-21 09:19:08 +02:00

Closed #125 CHECK_EPOCH freshness is host-conditional: busybox date silently drops %N 2026-09-21 09:19:08 +02:00

Closed #133 script/lint and script/fmt invoke golangci-lint and goimports by bare name, so a PATH shadow still overrides the pin 2026-09-21 09:19:08 +02:00

Closed #117 script/bootstrap installs pinned tools only when missing, so the golangci-lint pin is inert on any machine that already has one 2026-09-21 09:19:07 +02:00

Closed #121 script/lint shares one golangci-lint cache and lock across concurrent worktrees, so results can come from another codebase 2026-09-21 09:19:07 +02:00

Closed #103 script/test always runs with -v instead of the conditional verbose rerun pattern 2026-09-21 09:19:07 +02:00

Closed #130 Lint cache follow-ups: same-checkout runs abort instead of queueing, and make clean leaves .lint-cache/ 2026-09-21 09:19:07 +02:00

70 Issues created by 1 user

Opened #144 Review toward 1.0: identify and file all next steps 2026-09-21 09:14:03 +02:00

Opened #145 next cannot be merged into main: TODO.md conflicts after the squash of the last milestone 2026-09-21 09:18:32 +02:00

Opened #149 Trial run of the finished image against real targets before tagging 1.0 2026-09-21 09:18:32 +02:00

Opened #148 OWNER: upaas deployment on fsn1app1 - deploy branch decision and the setup only you can do 2026-09-21 09:18:32 +02:00

Opened #146 TODO.md is stale: lists shipped work as future steps and tells the reader to keep DNS tests mocked 2026-09-21 09:18:32 +02:00

Opened #147 Deploy readiness for upaas: non-root image, healthcheck, trial run, README deploy section 2026-09-21 09:18:32 +02:00

Opened #157 Record values are compared with letter case, so nameservers that agree are reported as inconsistent 2026-09-28 19:18:07 +02:00

Opened #158 Inconsistency alert repeats on every DNS cycle while nameservers disagree 2026-09-28 19:18:07 +02:00

Opened #159 Watcher tests stub DNS with a mock resolver, against the no-DNS-mocking rule 2026-09-28 22:15:17 +02:00

Opened #164 Test-only package internal/livedns can be compiled into the binary: rename it and name it in the test-support lint rule 2026-09-29 09:10:45 +02:00

Opened #166 The container sets its data directory permissions itself before startup 2026-09-29 11:07:47 +02:00

Opened #168 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:02:22 +02:00

Opened #173 README lacks the Getting Started, Rationale, Design and TODO sections that REPO_POLICIES.md requires 2026-10-01 20:09:49 +02:00

Opened #176 notify shutdown tests hang until the 90-second timeout instead of failing when a drain returns early 2026-10-01 20:26:07 +02:00

Opened #177 An invalid DNSWATCHER_DNS_INTERVAL or DNSWATCHER_TLS_INTERVAL is silently replaced by the default 2026-10-01 21:00:00 +02:00

Opened #181 The client address taken from X-Forwarded-For is the first entry, which the client itself can set 2026-10-01 21:43:12 +02:00

Opened #185 A check cut short by shutdown saves every port as closed and every certificate as failed 2026-10-01 22:33:25 +02:00

Opened #189 Hostname records are queried at the servers of the name's last two labels, the wrong zone under co.uk-style suffixes and delegated subdomains 2026-10-01 22:54:12 +02:00

Opened #190 ResolveIPAddresses returns no addresses and no error when every nameserver fails 2026-10-01 22:54:12 +02:00

Opened #193 Saved port state is removed when every nameserver of a hostname fails 2026-10-01 23:44:13 +02:00

Opened #197 Finding a zone's servers gives up after the first server answers SERVFAIL or refers onward 2026-10-02 00:26:25 +02:00

Opened #200 A domain's NS set comes from whichever server answers first, so it can change between checks when servers disagree 2026-10-02 00:42:09 +02:00

Opened #203 A watched name whose CNAME points into another zone gets no port or TLS checks 2026-10-02 01:34:46 +02:00

Opened #204 TLS expiry warning is skipped on some checks, at random 2026-10-02 01:34:46 +02:00

Opened #206 A query a server refuses is resent asking for recursion, so answers can come from a recursive resolver 2026-10-02 01:44:46 +02:00

Opened #207 A target listed twice in DNSWATCHER_TARGETS is checked twice 2026-10-02 01:47:34 +02:00

Opened #210 docker build . stamps dev, not the git tag or short commit 2026-10-02 02:21:47 +02:00

Opened #214 next is red in CI: watcher tests time out since nameserver addresses are looked up on each domain check 2026-10-02 03:49:55 +02:00

Opened #216 CI runs every pushed head, even after a newer push to the same branch has replaced it 2026-10-02 04:08:59 +02:00

Opened #218 Resolver tests for AAAA and MX records fail when one query is lost 2026-10-02 07:17:52 +02:00

Opened #219 Record Change and Inconsistency notifications print every record type in Go map syntax instead of what changed 2026-10-02 07:35:28 +02:00

Opened #220 A hostname's CNAME is stored once for every record type asked for, eight copies in all 2026-10-02 07:35:28 +02:00

Opened #221 Nameservers that a referral names without addresses are not looked up, so pool.ntp.org cannot be watched 2026-10-02 07:35:28 +02:00

Opened #227 A failed Mattermost delivery is logged as "slack notification failed" 2026-10-02 07:35:33 +02:00

Opened #226 The dashboard lists each nameserver's records in a random order of record type 2026-10-02 07:35:33 +02:00

Opened #224 Apex domains are counted, listed and notified as hostnames 2026-10-02 07:35:33 +02:00

Opened #223 Targets removed from DNSWATCHER_TARGETS stay on the dashboard, in /api/v1/status and in the startup counts 2026-10-02 07:35:33 +02:00

Opened #222 A name gets a parent zone's nameservers when finding its own fails: a domain that does not exist shows the .com servers 2026-10-02 07:35:33 +02:00

Opened #225 The dashboard and /api/v1/status do not say why a nameserver or certificate check failed 2026-10-02 07:35:33 +02:00

Opened #228 Durations in the log are bare nanosecond counts 2026-10-02 07:35:34 +02:00

Opened #229 A DNS lookup cut short by shutdown is logged as an error 2026-10-02 07:35:34 +02:00

Opened #230 The startup notification says all notification channels are working before any delivery is known 2026-10-02 07:35:34 +02:00

Opened #231 One lost query saves a nameserver's records with that type missing, and notifies a change 2026-10-02 07:35:59 +02:00

Opened #233 OWNER: names whose nameservers rotate their answers notify on every check 2026-10-02 07:37:21 +02:00

Opened #245 The dashboard Ports table lists an apex domain as a hostname 2026-10-02 09:53:25 +02:00

Opened #248 Port Change notifications list apex domains as hosts 2026-10-02 10:31:16 +02:00

Opened #251 Red next: the Quad9 refusal test needs all eight of its queries answered at once 2026-10-02 11:25:27 +02:00

Opened #253 A nameserver whose A query got no reply is reported nodata when its other answers were empty 2026-10-02 12:31:30 +02:00

Opened #255 Let an admin turn off Record Change and Inconsistency notifications for one name 2026-10-03 14:22:50 +02:00

Opened #256 Let an admin turn off the record-change notification for one host 2026-10-03 14:26:15 +02:00

Opened #257 Re-vendor the canonical files from sneak/prompts at dd4027b 2026-10-06 01:29:30 +02:00

Opened #260 Defect hunt before the release candidate: a trial run of next and a read of its code paths 2026-10-13 12:10:54 +02:00

Opened #267 A state file holding {} crashes the watcher on its first check 2026-10-13 12:32:08 +02:00

Opened #262 A nameserver removed from a domain's delegation is also reported as an NS Failure 2026-10-13 12:32:08 +02:00

Opened #266 dnswatcher keeps running without its HTTP server when the listen port is in use 2026-10-13 12:32:08 +02:00

Opened #265 A certificate entry stays ok after its port 443 closes 2026-10-13 12:32:08 +02:00

Opened #264 The state file is renamed into place without being synced, so a crash can leave it empty and stop the next start 2026-10-13 12:32:08 +02:00

Opened #263 A non-numeric DNSWATCHER_TLS_EXPIRY_WARNING or PORT is silently read as 0 2026-10-13 12:32:08 +02:00

Opened #261 The dashboard and /api/v1/status iterate the state's live maps without the lock, which can crash the process 2026-10-13 12:32:08 +02:00

Opened #268 /metrics is served with an empty password when only DNSWATCHER_METRICS_USERNAME is set 2026-10-13 12:32:09 +02:00

Opened #269 A setting that is not a valid number or true/false is read as 0 or false instead of stopping startup 2026-10-13 12:50:07 +02:00

Opened #270 An IPv6 address joined with its port, as in a Port Change notification, cannot be told from the port 2026-10-13 12:50:07 +02:00

Opened #271 The startup notification says the initial scan completed when shutdown cut it short 2026-10-13 12:50:07 +02:00

Opened #281 TODO.md names closed issues as its next and future steps 2026-10-13 20:44:56 +02:00

Opened #284 A hostname whose zone's nameservers all stop answering gets no NS Failure notification 2026-10-13 22:55:37 +02:00

Opened #285 A nameserver with several addresses is asked at only the first one, so one unreachable address reports it as failed 2026-10-13 22:55:39 +02:00

Opened #286 The static asset route serves directory listings at /s/ and /s/css/ 2026-10-13 22:55:40 +02:00

Opened #287 A webhook that answers with a redirect is counted as a successful delivery 2026-10-13 22:55:40 +02:00

Opened #288 Debug logging writes the Slack, Mattermost and ntfy webhook URLs to the log on every delivery 2026-10-13 22:55:41 +02:00

Opened #289 TESTING.md describes a root-server fan-out and a calibrated query timeout that the resolver does not have 2026-10-13 22:55:43 +02:00

2 Unresolved Conversations

Open #59 No DNSSEC validation in iterative resolution 2026-10-14 00:31:54 +02:00

Open #66 1.0/mvp 2026-10-14 00:31:53 +02:00