beefaf44e0
output: distinguish nameserver resolution failures from domain errors
...
When an in-bailiwick nameserver cannot be resolved (no glue records and
iterative resolution fails), the traversal previously returned a generic
RespError. This made the Results section show many identical '6.7%
resulted in an error' lines and the Summary show '100% resulted in an
error' — even though the domain itself may be perfectly reachable in
practice via glue held by the registry.
Add a new RespNSResolutionFailed response type (string: ns_error)
for this specific case. Changes:
- traverse/response.go: add RespNSResolutionFailed, include it in
IsTerminal() and String()
- traverse/traverser.go: use RespNSResolutionFailed with a descriptive
ErrorMessage when ResolveNS fails in processReferral
- output/stats.go: map ns_error to nameserver lookup failed in
summaryTypeLabel
- output/text.go: handle RespNSResolutionFailed in formatResultLine
Before:
Results: 6.7% resulted in an error (x15)
Summary: 100% resulted in an error
After:
Results: 6.7% nameserver ns-a.hansenits.com.au could not be resolved (x15)
Summary: 100% nameserver lookup failed
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 15:43:47 +10:00
multica-agent
d6063eb636
feat: DNS host selection - fix code review issues (HAN-400) ( #19 )
CI / test (push) Failing after 1m58s
2026-06-08 03:25:37 +00:00
multica-agent
93959c9f11
fix: API quality fixes from code review (HAN-398) ( #17 )
CI / test (push) Failing after 1m21s
2026-06-07 18:52:18 +00:00
multica-agent
2fe8adcfcc
feat: web frontend SPA for ExploreDNS (HAN-388) ( #18 )
CI / test (push) Failing after 1m22s
2026-06-07 18:47:17 +00:00
multica-agent
e59597a191
feat: HTTP API server with SSE and SPA serving (HAN-389) ( #16 )
CI / test (push) Failing after 4m55s
2026-06-07 18:31:28 +00:00
dd667f734c
fix: remove duplicate test declarations from PR #12/#13 conflict
...
CI / test (push) Has been cancelled
Phase 4.2 (PR #12 ) and test coverage improvement (PR #13 ) independently
added overlapping test functions. Remove duplicates from PR #13 files:
- internal/dns/iterative_test.go: remove TestExtractNSNames,
TestExtractNSNamesEmpty, TestIterativeQueryWithExchangeSuccess,
TestIterativeQueryWithExchangeNilResponse, TestIterativeQueryWithExchangeTCPFallback
(kept in roots_test.go and query_test.go from PR #12 )
- internal/output/coverage_test.go: remove TestRRDataStringDefault,
TestContainsString, TestCollectUniqueServerIPs, TestNewFormatterNilWriter
(kept in stats_test.go and formatter_test.go from PR #12 )
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 04:30:06 +10:00
dbd9322a1b
test: merge PR #13 test coverage improvements into main
...
Resolves merge conflicts between Phase 4.2 comprehensive test suite and
the test coverage improvement branch:
- config_test.go: take PR's better table-driven tests + keep main's extra tests
- coverage_test.go: keep main's Phase 4.2 comprehensive tests
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 04:24:56 +10:00
multica-agent
bb3e9d3e36
Merge pull request 'docs: comprehensive documentation (HAN-387)' ( #15 ) from feat/han-387-documentation into main
CI / test (push) Failing after 1m20s
2026-06-07 18:10:22 +00:00
ee20ed51f6
docs: comprehensive documentation for HAN-387
...
CI / test (pull_request) Failing after 1m19s
- README.md: full project overview, installation, quick start, CLI reference,
output format descriptions, architecture overview, and dnstraverse comparison
- GoDoc: package-level documentation for traverse, dns, config, output, and
fingerprint packages
- GoDoc: TraverserConfig and TraversalResult type comments in traverser.go
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 04:05:15 +10:00
45e15297f4
test: improve coverage to >80% on all core packages
...
CI / test (pull_request) Failing after 2m11s
Add comprehensive test coverage for internal packages:
- internal/config: 66.2% → 98.5%
- internal/dns: 67.8% → 84.3%
- internal/output: 48.8% → 89.1%
- internal/traverse: 56.3% → 86.9%
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 03:57:29 +10:00
multica-agent
e6e07941a5
feat: comprehensive test suite (Phase 4.2) ( #12 )
CI / test (push) Failing after 1m30s
2026-06-07 17:54:15 +00:00
multica-agent
fe1afe2a97
Phase 4.1: Error handling, edge cases, and robustness ( #11 )
CI / test (push) Failing after 2m36s
2026-06-07 17:24:00 +00:00
multica-agent
76f5010a5e
feat: implement DNS server fingerprinting (HAN-384) ( #10 )
CI / test (push) Has been cancelled
2026-06-07 16:56:51 +00:00
multica-agent
35be7539b4
Merge pull request 'feat: implement output formatting and display (HAN-383)' ( #9 ) from agent/go-expert-developer/f3b1b7cf into main
CI / test (push) Has been cancelled
2026-06-07 16:40:00 +00:00
8e7beacc22
fix: address code review issues on PR #9
...
CI / test (pull_request) Waiting to run
- gofmt main.go to fix tab indentation in main() body
- stats.go ComputeSummary: return nil when Answers and ByType are empty
- dns/types.go: remove duplicate ParseQueryType (dead code)
- formatter.go: log hook errors to stderr when Debug > 0; add Debug to Config
- text.go referralID: remove redundant depth==0 branch
- text.go writeServers: remove version lookup placeholder string
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 02:32:58 +10:00
Gary Hansen and multica-agent
5a54834c5f
feat: implement output formatting and display (HAN-383)
...
CI / test (pull_request) Failing after 2m2s
Add text and JSON formatters with real-time progress via traverser hooks,
summary statistics, and CLI integration for --show-* and --json flags.
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 02:21:13 +10:00
multica-agent
876542b2de
feat: implement CLI flags and configuration handling (HAN-382) ( #8 )
CI / test (push) Failing after 3m57s
2026-06-07 16:08:39 +00:00
gary
feb5c68b39
feat: implement referral resolution for nameserver names without glue records (HAN-381) ( #7 )
...
CI / test (push) Failing after 2m58s
Co-authored-by: Hansen IT Solutions <gary@hansenits.com >
Co-committed-by: Hansen IT Solutions <gary@hansenits.com >
2026-06-07 06:09:49 +00:00
gary
39529dacbb
feat: implement traversal engine (HAN-380) ( #6 )
...
CI / test (push) Failing after 1m26s
Co-authored-by: Hansen IT Solutions <gary@hansenits.com >
Co-committed-by: Hansen IT Solutions <gary@hansenits.com >
2026-06-06 03:41:14 +00:00
gary
194bc97526
Merge pull request 'feat: implement CachingResolver with per-server query caching' ( #5 ) from agent/go-expert-developer/f5bcb2fe into main
...
CI / test (push) Failing after 3h13m21s
Reviewed-on: http://gitea.hansenits.com.au/hits/ExploreDNS/pulls/5
2026-06-05 06:05:01 +00:00
Gary and multica-agent
db3ad498f6
feat: implement CachingResolver with per-server query caching
...
CI / test (pull_request) Failing after 3h13m39s
Add Resolver interface, BasicResolver, and CachingResolver to internal/dns.
CachingResolver wraps any Resolver with an in-memory cache keyed by
(server IP, name, type, class). Cache entries respect DNS TTL from
responses, falling back to a configurable default TTL. Thread-safe
using sync.RWMutex. Includes Len, Clear, and PurgeExpired methods
for cache management.
Closes HAN-379 (Phase 2.2).
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:58:46 +10:00
gary
6a3cdb9abe
Merge pull request 'feat: implement root server discovery (HAN-378)' ( #4 ) from agent/go-expert-developer/beb90b99 into main
...
CI / test (push) Has been cancelled
Reviewed-on: http://gitea.hansenits.com.au/hits/ExploreDNS/pulls/4
2026-06-05 05:52:28 +00:00
Gary and multica-agent
924fcbd43a
feat: implement root server discovery (HAN-378)
...
CI / test (pull_request) Failing after 1m17s
Add RootServer struct and DiscoverRoots function that queries the local
resolver for NS records of the root zone, resolves each root name to
A/AAAA addresses, and returns a list of RootServer structs.
Supports:
- Default: discovers a single root server from local resolver
- --root-server override to target a specific root server
- --all-root-servers to discover all 13 root servers
- --root-aaaa flag to include IPv6 addresses
Includes unit tests for all helper functions and integration tests
that skip gracefully when no resolver is available.
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:44:59 +10:00
gary
42a37adbee
Merge pull request 'feat: add DNS query/response layer with miekg/dns' ( #3 ) from agent/go-expert-developer/ad0c58a4 into main
...
CI / test (push) Has been cancelled
Reviewed-on: http://gitea.hansenits.com.au/hits/ExploreDNS/pulls/3
2026-06-05 05:37:38 +00:00
Gary
2338abd14f
Merge remote-tracking branch 'origin/main' into agent/go-expert-developer/8e316e05
...
CI / test (pull_request) Failing after 3h12m56s
# Conflicts:
# go.mod
# go.sum
2026-06-05 15:34:57 +10:00
Gary and multica-agent
596f0da9e1
chore: remove GitHub Actions CI workflow (replaced by Gitea Actions)
...
CI / test (push) Has been cancelled
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:33:45 +10:00
gary
2df1bd1830
Merge pull request 'ci: add Gitea Actions workflow for unit tests' ( #2 ) from agent/gitea-repo-manager/80a0aac3 into main
...
CI / test (push) Has been cancelled
Reviewed-on: http://gitea.hansenits.com.au/hits/ExploreDNS/pulls/2
2026-06-05 05:30:38 +00:00
Gary and multica-agent
33ef99aca3
ci: add Gitea Actions workflow for Go unit tests
...
CI / test (pull_request) Failing after 3h10m14s
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:27:53 +10:00
gary
c16b153a6e
Merge pull request 'feat: Go project scaffolding - module init, directory structure, CLI skeleton, Makefile, CI' ( #1 ) from agent/go-expert-developer/32986165 into main
...
CI / build (push) Has been cancelled
Reviewed-on: http://gitea.hansenits.com.au/hits/ExploreDNS/pulls/1
2026-06-05 05:22:24 +00:00
Gary and multica-agent
fce7920611
feat: add DNS query/response layer with miekg/dns
...
Phase 1.2 implementation:
- internal/dns/types.go: DNS record type constants (A, AAAA, NS, CNAME, SOA,
MX, TXT, SRV, PTR, ANY) with QNameType helper and EDNS0 defaults
- internal/dns/query.go: Query/QueryWithExchange with UDP, configurable
EDNS0 buffer size, TCP fallback on truncation, always-TCP mode, configurable
retries with timeout, context support, and injectable ExchangeFunc for testing
- internal/dns/decode.go: Response classification (answer, referral, NODATA,
NXDOMAIN, SERVFAIL), CNAME chain extraction with dedup, truncation/RCODE
detection, and section extraction utilities
32 unit tests covering all acceptance criteria.
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:14:56 +10:00
Gary and multica-agent
8090182e1a
feat: Go project scaffolding - module init, directory structure, CLI skeleton, Makefile, CI
...
CI / build (pull_request) Failing after 3h1m44s
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:08:29 +10:00
gary
afdf7df891
Initial commit
2026-06-05 04:49:39 +00:00