HexSleeves / tailscale
Code health
This codebase scores 5.4 out of 10 for code health, which we rate needs work. It also scores maintainability 7.1 and static performance 9.6 out of 10. The three are scored separately and never blended into one number. Risk is concentrated, as it usually is: 152 of 2,594 files are git hotspots, and they average 2.7 — which is where the fixes pay off most.
Do next
1 suggested
2 things worth doing this quarter, 1 of them now.
Worth planning
Delete 76 unused symbols and files (141 lines)
Nothing in the graph reaches them, across 7 files; every reader and agent pays to skip them.
- symbols
- 76
- lines
- 141
- safe to delete
- Yes(inferred)
Small effort
Improve what Repowise can see
Add a test coverage report
Without one, Repowise cannot tell tested code from untested code, so every test-related action says “unknown”.
- line coverage
- Unknown, no report
Small effortReview the 39 proposed decisions
None is accepted yet, so nothing can drift from one and agents get no enforced guidance from them.
- proposed
- 39
- accepted
- 0
Medium effort
- Lines of code
- 460.5K
Recent activity
All commitsCommits
- 91d10d38net/portmapper: avoid leaking permanent UPnP mappings1mo ago
- b3c71958go.toolchain.rev: bump to Go 1.27.11mo ago
- c3736ae4Dockerfile: use our own Go toolchain, not the golang Docker image1mo ago
- 0188b386fuzz: refactor fuzzing to new layout for oss-fuzz support (#21069)1mo ago
- 316b22b7cmd/tsconnect{,wasmbuild}: allow passing version stamps via env1mo ago
- e1d17a6bwgengine/magicsock: dynamically switch active disco key on recv (#20984)1mo ago
Decisions
- Migrate k8s operator to tailscale-client-go-v2 with per-tailnet ClientProviderproposed · 1mo ago
- Use containerboot state Secrets instead of ProxyGroup status for device auth info; add ProxyGroupAvailable conditionproposed · 1mo ago
- Extract shared auth key reissue logic and adjust auth key renewal behaviorproposed · 1mo ago
- Migrate containerboot from netmap.NetworkMap to an immutable netmapState for IPN bus updatesproposed · 1mo ago
- Support IPv6/dual-stack in egress ProxyGroupproposed · 1mo ago
- Preserve nil-valued map entries when cloning to fix dns.Config.Routes sentinelsproposed · 1mo ago
Everything we found
8,100 open
Every detector's open count by area, each with its worst example. An inventory, not a to-do list: the actions above are the part worth doing.
- worst item is critical severity. Code health5,334Untested hotspot · cmd/tailscale/cli/file.go30 findings · 9.6 deducted
- worst item is medium severity. Refactoring785New+1.5 health, S effort · net/tstun/tun.go
- worst item is medium severity. Decisions191ipn/ipnlocal/local.go39 awaiting review · 152 hotspots ungoverned
- worst item is medium severity. Ownership1,704tstest/natlab/vmtest/vmtest.go86% single-owner concentration, 13 commits in 90d
- worst item is low severity. Dead code86DebugIptablesUnreachable function (3 lines)
Composition
Open the graph- go95%
- typescript2%
- shell1%
- swift<1%
- makefile<1%
- Other<1%
Explore this codebase
- Docs3,691 pages across 64 modules
- ChatAsk this codebase a question and get an answer with its sources.
- Files2,594 files with per-file docs, health and history
- ArchitectureDependency graph, layers, and 96 entry points
- Code healthPer-file scores, 8,386 open findings, coverage and refactoring targets
- Knowledge graphEntities, communities, and the paths between them
- Change couplingFiles that keep changing together, mined from commit history
- CommitsChange-risk ranked history with agent provenance
- ContributorsBus factor, per-file maintainers, and the human/agent split
- StatsSize class, origin, lifetime churn, rhythm and records
- CostsWhat indexing this snapshot cost, by model and by run.