Repository navigation
#8 docs: Tailscale DNS proven across a hard reset - #11
Merged
Merged
Conversation
…ailscaled's file at boot A hard reset (exe.dev restart) on 2026-10-01 skipped tailscaled's stop hook. exe.dev's init still replaced tailscaled's file 1.5 s into boot, before systemd. tailscaled deleted the stale backup and took the file over at +1.60 s. The graceful reboot, where the file already matched, left it alone, so the runbook states both observations and drops the "untested" paragraph. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d init.scope, not systemd's first journal line PID 1 runs --log-target=syslog, so systemd's first journal line (1.91 s) is no measure of its start. The rewrite (1.534 s) coincides with exe-init guestd's start (1.53 s), which lives in init.scope, not a service. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t it when it matched, not 'writes it again at boot' Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #8. Follows #10, which listed the hard-reset path as untested.
What the hard reset showed
This was
ssh exe.dev restart co-processoron 2026-10-01; the boot started at 18:46:41Z. The previous boot's journal stops at 18:45:01 with no SIGTERM and notailscaled --cleanup, so the stop hook didn't run. Two one-shot units recorded the boot: one snapshotted the files before tailscaled started, the other ran after it. Both are now removed; copies and the log are in/var/backups/processor/8/./etc/resolv.confalready held exe.dev'snameserver 169.254.169.254. It had been rewritten 1.5 s into boot (mtime at 1.534 s), as exe-init started its guest daemon (exe-init guestd, 1.53 s). guestd runs in PID 1'sinit.scope, not as a service, so this was before exe-init exec'd systemd; journald came up at 1.84 s. tailscaled's file had not survived the boot./etc/hosts, which already matched, wasn't touched. Tailscale's old backup was still present.CorpDNS: true. It deleted the leftover backup. It took the file over at +1.60 s (exact, from the mtime), backing up exe.dev's fresh copy.brokerandindexby +1.67 s. The probe polled every 0.25 s, so these are upper bounds.tests/test_tailscaled.pypasses on the node (18 of 18).In DEPLOYMENT.md
/etc/hostsat both boots.Also on #5: the tailnet-policy item is ticked, verified from here.
indexandindex.taild0fb76.ts.netresolve, 6333 and 11434 accept connections, Qdrant's TLS certificate verifies for the full name, and Ollama answers.Review
CR --fix, findings 13–14, one commit each:init.scopecgroup. Systemd's first journal line was a weak stand-in, since PID 1 runs--log-target=syslog."tailscaled deleted the backup" was checked against tailscale 1.102.4's
net/dns/direct.go.restoreBackupdrops a backup when a non-Tailscaleresolv.confis in place, and the direct manager'sClose()calls it: the boot shows two "using direct mode" lines, 90 ms apart.Gate
uv run pytest: 215 passed.ruff check,ruff format --checkanduv lock --lockedare clean, and the scratch Redis is clean.🤖 Generated with Claude Code