From 7f9137fcb6407e3f979f16f5989a82fe31a4e362 Mon Sep 17 00:00:00 2001 From: Dai Ha Date: Sat, 12 Sep 2026 05:46:34 +0700 Subject: [PATCH] fleetd #480: ignore the handover file, and note the absolute-path guarantee in the handover skill MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lead rollover handover file now lives inside the workspace, at the relative path fleetd.yaml's leadRollover.handoverPath names. It is a snapshot of one moment's live state, so it must never enter git history. The handover skill also now says the handoverPath fleetd hands back is always absolute, even when the configured value is relative — a lead that resolves it itself can pick a different file from the one the daemon checks. --- .claude/skills/handover/SKILL.md | 6 ++++++ .gitignore | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/.claude/skills/handover/SKILL.md b/.claude/skills/handover/SKILL.md index 7d19077..22cabb3 100644 --- a/.claude/skills/handover/SKILL.md +++ b/.claude/skills/handover/SKILL.md @@ -135,6 +135,12 @@ refused.** 1. **`fleet_handover{action: "open", reason: ""}`.** It returns a `token` and the `handoverPath` you must write to. Nothing has happened to your pane yet. + + **Write to exactly that path, and do not resolve it yourself.** It is always absolute, even when + the operator configured a relative `handoverPath`: fleetd resolves a relative one against your + own workspace before it hands it to you. The daemon and your pane can run in different + directories, so a path you resolve yourself can point at a different file from the one the daemon + will check. 2. **Write the handover file at that path**, following sections 1–10 above. 3. **Ask the operator, then `fleet_handover{action: "confirm", token, operatorConfirmed: true}`.** diff --git a/.gitignore b/.gitignore index 94bc52e..1aab090 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,9 @@ fleetd.out fleetd/fleetd.out logs/ + +# fleetd #480: the lead rollover handover file. `leadRollover.handoverPath` points here, and the +# outgoing lead rewrites it on every rollover. It is a snapshot of one moment's live state — +# unpushed branches, running builds, open questions — so it is stale the moment it is written and +# has no business in git history. +.handover/