aboutsummaryrefslogtreecommitdiff
path: root/claude-rules/daily-drivers.md
diff options
context:
space:
mode:
Diffstat (limited to 'claude-rules/daily-drivers.md')
-rw-r--r--claude-rules/daily-drivers.md66
1 files changed, 66 insertions, 0 deletions
diff --git a/claude-rules/daily-drivers.md b/claude-rules/daily-drivers.md
new file mode 100644
index 0000000..7ee5f06
--- /dev/null
+++ b/claude-rules/daily-drivers.md
@@ -0,0 +1,66 @@
+# Daily-Driver Machines
+
+Applies to: `**/*`
+
+Craig runs exactly two daily-driver machines: **ratio** and **velox**. They are
+kept in sync, and an important change made on one usually needs to reach the
+other.
+
+## The Rule
+
+When you make or notice a change that is **machine-level and important** —
+dotfiles, installed tooling, a synced repo's clone or timer setup, a global
+config, a systemd unit, a credential, a one-time bootstrap step — consider
+whether the *other* daily driver needs the same change, and flag it. Don't
+assume a change made on the current machine is live everywhere.
+
+Both machines are on the same tailnet, so the agent can usually reach the other
+one directly over tailscale ssh — it can sync, verify, or repair the other daily
+driver, not just flag the drift. Reach for that when a change needs to land on
+both boxes now. (This session repaired ratio's dotfiles and verified the fix
+over tailscale; the .emacs.d side has driven ratio the same way — `git fetch` +
+`reset --hard` and an `scp` across.)
+
+When tailscale is down or the other machine is offline, fall back to the
+original discipline: this is a prompt to think, and the point is to surface "the
+other daily driver may need this too" at the moment the change lands, so it
+doesn't silently drift to one box.
+
+## How the sync actually happens
+
+The mechanism depends on what changed:
+
+- **A tracked repo** (rulesets, dotfiles, a project) — the other machine just
+ needs a `git pull` (and, for rulesets, a `make install` to relink anything
+ new). Most changes are this.
+- **Dotfiles** — ride the dotfiles repo; the other machine picks them up on its
+ next stow/pull.
+- **A one-time setup** — a new repo clone, a new systemd timer, a freshly
+ installed tool, a credential — has to be done by hand on each machine. These
+ are the ones that silently drift, because nothing carries them automatically.
+
+When the change is the one-time kind, say so explicitly: name the manual step
+the other machine still needs.
+
+## Reaching the other machine over tailscale
+
+`tailscale status` lists every node with its tailscale IP and online state.
+Connect by tailscale IP (e.g. `100.71.182.1`) or MagicDNS name (e.g.
+`ratio.tailf3bb8c.ts.net`) — both always resolve and connect. A bare hostname
+(`ssh ratio`) works only when MagicDNS is configured on the local machine;
+without it the bare name can fail to resolve, which makes the box look
+unreachable when it isn't. Prefer the IP or the full MagicDNS name when in
+doubt. The first connection from a new address fails host-key verification under
+`BatchMode`; add `-o StrictHostKeyChecking=accept-new` to clear it.
+
+## Knowing which machine you're on
+
+`uname -n` returns the hostname (`ratio` or `velox`). Use it when a reminder is
+machine-specific ("on ratio, you still need to …") so the note is actionable
+rather than abstract — and after an ssh hop, to confirm which machine you landed
+on.
+
+## Current open instance
+
+None. (The org-roam knowledge-base clone + `roam-sync` timer is confirmed on
+both daily drivers, velox and ratio, as of 2026-06-30.)