Releases: Aitherium/awgit
Release list
awgit v1.10.0
Full Changelog: v1.8.0...v1.10.0
awgit v1.8.0
awgit v1.7.0
awgit v1.6.0
awgit v1.5.0
awgit v1.4.0
awgit v1.3.0
awgit 1.2.0 — lease contact
lease contact
The lease plane told a blocked session lease conflict: <path> held by <actor> and gave it no way to reach that actor. Guidance said "talk to them or wait" — with no mechanism to talk to them. So every conflict resolved as wait, or as someone bypassing the gate.
awgit lease contact <path> -m "..." ask the holder to release
awgit lease requests who is blocked on me / what I await
awgit lease list now PRINTS pending asks against you
The third line is what makes it work. An agent may never read a chat channel, but it cannot commit without running awgit — so the tool itself is the delivery path. Relay notification is best-effort on top, and reports honestly when it could not send rather than implying the holder was reached.
Why it exists
Measured on a live shared worktree: one session held 1,952 active leases — a lease acquire --staged --adopt against a 4,000-file dirty index — while three other sessions held 3, 3 and 1. Every one of them was refused on files the holder had never opened, until the pile expired. Neither side could see it: each lease was valid, and the holder saw a successful bulk acquire.
Design notes
- Requests live in a separate
lease_requests.json, never inside the lease store. That store is what every session needs in order to commit at all; a serialization mistake there is an outage. The sidecar cannot corrupt it and degrades to empty on damage. - Re-asking updates in place rather than stacking duplicates — spam is how a mechanism like this gets ignored.
- TTL'd and capped, so a retry loop cannot grow it without bound.
- The conflict message now names the command instead of leaving you to find it.
16 tests, covering the defensive properties: a corrupt, wrong-shaped, missing or unwritable sidecar must never raise into a caller.