Abysslink Release Checklist
This checklist must be completed before tagging any release. Each milestone section lists the mandatory review items specific to that version.
v3.x / v4.0.0 — Status
The v3.0.0–v3.0.2 releases were gated by the automated CI release gates (lint, test, security scans, repro-check, claims-check) rather than a hand-written checklist section here. v4.0.0 was tagged but its release run failed at the sign/verify gates and was never published (fail-closed, by design); its draft is superseded.
v4.0.1 — Checklist (the actual launch release)
- [ ] Release-pipeline fixes merged to main (PR #55): sign-job repo context +
egress, verify gate binds to draft-release bytes (contents: write),
package publishing moved behind the publish gate (publish-packages job),
replace_existing_draft, install.sh fail-closed bundle gate. - [ ] Rehearsal tag
v4.0.1-rc.1runs GREEN end-to-end: published prerelease withabysslink_4.0.1-rc.1_checksums.txt.bundleasset (first-ever execution of the sign job's cosign v3 path). - [ ]
v4.0.1tag green: published release,.bundlepresent. - [ ]
curl -fsSL https://raw.githubusercontent.com/abysslink/abysslink/main/install.sh | shinstalls v4.0.1 and printscosign bundle OK(with cosign installed). - [ ]
cosign verify-blob --bundleper docs/VERIFYING.md Leg 1 passes (needs internet for the Sigstore trust root). - [ ] Post-publish docs flip: quickstart/faq version pins → v4.0.1, tap answer updated once the cask lands (operator: tap repo + HOMEBREW_TAP_GITHUB_TOKEN).
- [ ] Security-surface review deltas since v3.0.2 (metrics/webui bind floors, audit chain, push gateways, kill-switch, dead-man switch) covered by the standing CI gates (claims-check 0 warnings — GATE-LNCH-04 sign-off).
v2.0.0 — Self-Hosted Backends & Fleet
Legal & License Review
-
[ ] AGPLv3 legal review: confirm no
The output MUST begithub.com/netbirdio/netbird/management/...package is transitively imported in the final binary. Run:(main module does not need github.com/netbirdio/netbird/management). If any AGPLv3 transitive import is found, engage legal review before proceeding with the release — the abysslink binary is Apache-2.0 licensed and must remain uncontaminated by AGPLv3 dependencies. -
[ ] Verify
go mod tidyleavesgo.sumandgo.modclean (no unexpected deps added). -
[ ] Run
golangci-lint run ./...with theno-netbird-agpldepguard rule enabled — must exit 0 (no new violations).
Security Review
- [ ] All NetBird REST calls use
Authorization: Token <nbp_...>(not Bearer). - [ ] NetBird setup keys generated by abysslink are
type: one-offwith explicit expiry. - [ ] Management port is bound to loopback/overlay only (
nb-mgmt-bindcheck passes). - [ ]
nb-versioncheck enforces ≥ v0.57.0 floor (CVE-2025-10678 fix). - [ ] No secrets appear in argv, audit log, or config YAML (API key, setup key are keychain-only).
Functionality
- [ ]
make lint testexits 0 on macOS 13/14 and Ubuntu 22.04/24.04. - [ ]
abysslink doctorreports correct PASS/WARN/FAIL for allnb-*checks. - [ ]
abysslink server netbird init --applyprovisions the server (Linux path verified). - [ ]
abysslink server headscale init --applyprovisions Headscale (both OS paths). - [ ] Backend abstraction:
backend.Newreturns correct adapter for all three types. - [ ] Tailscale v1 behavior is unchanged (regression test against v1.0.0 acceptance criteria).
v1.0.0 — Tailscale + CLI Foundation
(All v1.0.0 criteria were verified at release — archived here for reference)
- [x] Single static binary, cross-compiled for darwin/amd64, darwin/arm64, linux/amd64, linux/arm64.
- [x]
abysslink up --applyruns full module convergence loop. - [x]
abysslink doctorcatches all footguns from the 7-file setup guide. - [x] Audit log and backup on every file mutation.
- [x] golangci-lint clean;
make lint testgreen. - [x] Tailnet Lock enabled by default; disablement secrets printed once.
- [x] FileVault/LUKS fail-closed gate in
abysslink doctor. - [x] ntfy bound to tailnet IP only, never 0.0.0.0.
- [x] No telemetry.