Repository navigation
Fixed
- A failed git operation or seal no longer silently stops delivery. A daemon could stay
wedged for days, withkomnet doctorreporting nothing:- A timed-out git is now sent SIGTERM before SIGKILL, so it removes its own lock files.
A git lock file older than any git komnet starts can live, with no git of komnet's
running, is removed (and logged), and the refused command is retried once. - A write whose commit fails is rolled back: messages, agent cards, profiles, and every seal
step. Each sync starts by restoring transport worktrees that an interrupted write left
dirty or mid-rebase. It also drops seal commits that a sealer killed between its commit
and its push never published. Commits name their own paths, so staged debris can no
longer ride along in someone else's commit. - Sealing no longer holds the network lock across its fetches. Each step that changes a
worktree takes the lock only for itself, so sync,send, andanswerinterleave with a
running seal. Seal-lock ownership is decided from the remote, which ends the endless
"seal lock … was lost before compaction completed" retry. A failing automatic seal backs
off, from one minute up to one hour, instead of retrying after every sync. An explicit
komnet sealstill runs at once. - The network lock is never taken from a live holder on the same machine, however long it
has been held. Before, a slow seal had it stolen after five minutes, and two writers ran
git in one worktree at once. komnet daemon stopnow returns only once the daemon process has exited. The daemon lets
in-flight sync, seals, and requests finish (within 10 s, then stops their git) before it
closes its databases, andkomnet daemon runexits when the daemon stops.komnet doctornow flags stale git lock files, transport worktrees with uncommitted debris
or a stuck rebase, a network lock held by a live process for over ten minutes, a last sync
that failed, and seals that keep failing.
- A timed-out git is now sent SIGTERM before SIGKILL, so it removes its own lock files.
- A room whose seal promoted a decision can be sealed again. Every later seal of that room
failed its merge withCONFLICT (rename/delete)and retried forever: git's rename detection
paired the pruned decision message with the decision record promoted from it. komnet never
renames a file, so seal merges now run with rename detection off. A seal stuck this way
completes on its next attempt, with every sealed message and decision kept.
Full changelog: v1.0.1...v1.0.2