# Generated per-node runtime state — never committed (each node regenerates).
alert.spool
results.ring
results.ring.tmp.*
results.ring.lock
*.state
*.state.tmp.*
# flock companions to the state files (2026-08-17, claim-audit F5). One per
# state file, created on first use and NEVER deleted while anything may hold it
# open — unlinking a held lock file hands the next two arrivals two inodes, i.e.
# two holders of "the" lock (lib.sh, "state-file serialization").
*.state.lock
# Phase C brain runtime state (coordinator only) — breaker ledger + cost log.
brain.cost.log
.brain-*
# Raw model output retained on a FAILED brain pass (WD_BRAIN_RAW_DIR,
# watchdog-brain-publish-rc5 2026-08-31). Per-node diagnostic bytes, capped at
# WD_BRAIN_RAW_KEEP files — never committed.
brain-raw/
# install-coordinator.sh step 1b's renamed-aside legacy spool
# (wd-spool-split-path-defect, 2026-08-30) — the one-time fold's kept history.
alert.spool.migrated-*
# wd-installer-wipes-runtime-state (2026-08-30): the rest of the runtime state
# this tree writes, enumerated from the WRITERS rather than from memory. These
# were absent here for the same reason they were absent from the installer's
# WD_EXCLUDES — the two lists describe ONE set and drifted apart independently.
# testing/fleet/install-mutex-selftest.sh §7 now proves every pattern below
# survives a real redeploy, so the two cannot drift again silently.
# WD_EXCLUDES itself now has ONE home (wd-excludes-single-source, 2026-08-31):
# wd-excludes.sh, sourced by both install-coordinator.sh and install-build-node.sh —
# see that file's header for why this list and WD_EXCLUDES cannot be made
# textually identical (different pattern languages).
alarm-acks.tsv
respawn.cost.log
context-economy.latest.json
context-economy.latest.txt
context-economy.history.tsv
# wd-excludes-state-tmp-pattern-gap (2026-09-09): `*.state.tmp.*` above only
# matches wd_window_append's pid-suffixed tmp companion. Six inline
# write-then-mv sites (checks.fleet.d/56-{{BENCH_NODE_WORD}}-disk-budget.sh,
# reconcile.sh, blocked-premise.sh — see wd-excludes.sh's WD_EXCLUDES
# header for the full list) write the FIXED name `<file>.tmp`, matched by
# neither `*.state` nor `*.state.tmp.*`. Same underlying set as
# WD_EXCLUDES's `*.tmp` entry (different glob dialect, see wd-excludes.sh
# header "CONSISTENCY WITH .gitignore").
#
# KEPT AS A BACKSTOP after wd-atomic-write-one-shared-helper (2026-09-13)
# consolidated every writer onto wd_tmp_name: nothing in this tree composes a
# bare `<file>.tmp` any more, but pre-conversion residue still sits in the
# deployed trees and an older installed tree still writes one.
*.tmp
# THE ONE SHAPE, for any base — not only `.state` ones
# (wd-atomic-write-one-shared-helper, 2026-09-13). `*.state.tmp.*` above
# covers wd_window_append's sample windows, whose bases all end in `.state`;
# wd_tmp_name serves EVERY writer in this tree, so a base that does not
# (`{{BENCH_NODE_WORD}}-dead-scratch-census.state`'s scratch siblings, brain `ledger.md`
# in a throwaway worktree) would otherwise show up as an untracked file.
# WD_EXCLUDES's twin entry is `*.tmp.*`. Checked, both polarities, by
# ops/fleet-watchdog/selftest-atomic-write.sh gate (A8b): no tracked file
# under this tree matches it (`git ls-files ops/fleet-watchdog | grep -E
# '\.lock$|\.tmp$|\.tmp\.'` — empty).
*.tmp.*
