diff --git a/.claude/skills/redeploy-fleetd/SKILL.md b/.claude/skills/redeploy-fleetd/SKILL.md index 01eea89..7f98d6e 100644 --- a/.claude/skills/redeploy-fleetd/SKILL.md +++ b/.claude/skills/redeploy-fleetd/SKILL.md @@ -29,7 +29,8 @@ and dies with `no jar at … — run without --no-build` if it is not, but it ca old. Any build that writes `fleetd/target/fleetd.jar` while the daemon runs, including `mvn install` with or without `clean`, breaks that daemon's shutdown drain. The drain loads its classes lazily at shutdown from the jar file the JVM opened at boot. Deleting is not the only hazard; replacing the jar -is enough. Verify a merge by building in a throwaway git worktree. Let only +is enough. Nothing warns at the time. The damage appears at the next restart, where it looks like the +restart's fault. Verify a merge by building in a throwaway git worktree. Let only `scripts/redeploy-fleetd.sh` touch the main clone's jar. Its stage-then-swap protects its own build, but it cannot undo a replacement that already happened. Run `--check` first: it prints the jar's hash and its modification time, so you can see for yourself whether the jar is missing or older than the @@ -74,3 +75,4 @@ start every time. The rule lives in the operator's Claude Code settings: Granted by the operator on 2026-08-15. If a call is still refused, do **not** route around it by running the stop and start as separate commands — that is exactly the approval the script replaced. Say what you were going to run and why, and let the operator decide. + diff --git a/CLAUDE.md b/CLAUDE.md index 99feb10..4d4a20e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -325,9 +325,10 @@ must obey belongs in the charter, not here. file because this file loads into every session's context. - **Never build into the main clone while `fleetd` runs.** Any build that writes `fleetd/target/fleetd.jar`, with or without `clean`, breaks the shutdown drain because its classes - load lazily from the jar file the JVM opened at boot. Verify merges in a throwaway git worktree. - Let only `scripts/redeploy-fleetd.sh` touch the main clone's jar. Its stage-then-swap cannot undo - a replacement that already happened. + load lazily from the jar file the JVM opened at boot. Nothing warns at the time. The damage appears + at the next restart, where it looks like the restart's fault. Verify merges in a throwaway git + worktree. Let only `scripts/redeploy-fleetd.sh` touch the main clone's jar. Its stage-then-swap + cannot undo a replacement that already happened. ### Redeploying the daemon — the lead may do this (primary only)