Releases: enricai/leerie
Release list
v0.9.71
What's Changed
- fix: prune the tag channel on subtask drop, not just depends_on by @thelinuxkid in #78
Full Changelog: v0.9.70...v0.9.71
v0.9.70
What's Changed
- fix: first --resume no longer dies on a stale staging worktree by @thelinuxkid in #77
Full Changelog: v0.9.69...v0.9.70
v0.9.69
What's Changed
- leerie: 879defae65bb94bb5360f3f99d9b0db1643daa625ece20843eeea3697b2c7422 by @thelinuxkid in #76
Full Changelog: v0.9.68...v0.9.69
v0.9.68
v0.9.67
What's Changed
- test: gate host-only tests on jq (fixes 23 container-only failures) by @thelinuxkid in #75
- fix: reap leaked orphans at critical PID pressure; stop discarding a crashed integrator's resolution by @thelinuxkid in #74
Full Changelog: v0.9.66...v0.9.67
v0.9.66
What's Changed
- docs: expand the README "How it works" phase diagram to match the pipeline by @thelinuxkid in #69
- leerie: Fix release.yml's silent-skip bugs and untested squash-merge regex by @thelinuxkid in #70
- leerie: fbcf48d5c850eea189ef3ad06d7e305b84d462326b1336ed83424013529c6b08 by @thelinuxkid in #71
- fix: survive workers that emit no result event; fix bare --resume by @thelinuxkid in #72
- leerie: Wire AWS credential resolution and EC2 lifecycle scripts for --runtime ec2 by @thelinuxkid in #73
Full Changelog: v0.9.65...v0.9.66
v0.9.65
What's Changed
- docs: fix DESIGN/IMPLEMENTATION drift and make commands/chain.md reachable by @thelinuxkid in #68
Full Changelog: v0.9.64...v0.9.65
v0.9.64
What's Changed
- fix: the zombie reaper must reap an allowlist, never scan /proc by @thelinuxkid in #64
- fix(fly): --kill must reap the volume in the three shapes where it didn't by @thelinuxkid in #66
- docs(design): state the volume lifecycle in the canonical layer by @thelinuxkid in #67
- leerie: Add AWS EC2 as an execution runtime alongside Fly.io by @thelinuxkid in #65
Full Changelog: v0.9.63...v0.9.64
v0.9.63
What's Changed
- test: gate schema tests on HAS_JSONSCHEMA so they pass without the dep by @thelinuxkid in #59
- fix(plan): id-vanishing ops must rewrite inbound depends_on by @thelinuxkid in #60
- fix: resolve_task_argument's ENAMETOOLONG guard must not depend on the interpreter by @thelinuxkid in #61
- chore(release): 0.9.62 by @thelinuxkid in #62
- fix(plan): migration chunks must not share edge lists with their siblings by @thelinuxkid in #63
Full Changelog: v0.9.61...v0.9.63
v0.9.61
Fixed
--runtime fly runs no longer die with a bogus "git user.email is not configured".
The git identity was seeded correctly and readable the whole time — the return code was lying.
SIGCHLD set to SIG_IGN makes the kernel auto-reap exiting children, so their exit status is gone before anyone can read it. asyncio's PidfdChildWatcher then waitpids a pid that no longer exists, catches ChildProcessError, and invents returncode 255 with empty stdout (it can also surface as a raised ProcessLookupError). The disposition is inherited across exec, so a parent leerie does not control — an SSH daemon, a login shell, the Fly launch wrapper — can hand it down.
Only the first subprocess is corrupted, which makes the symptom maximally misleading: whichever check runs first reports a bogus failure and every later one succeeds, so blame lands on that check's subject rather than on the machinery. preflight()'s git config user.email merely had the bad luck of being first, and its rc != 0 or not stdout test dutifully blamed git.
Reproduced in the container image (Python 3.13.5): under SIG_IGN a sh -c "exit 7" reports rc=255; with the reset it reports rc=7.
_restore_sigchld_default()— called first inmain(), before anything spawns.preflight()distinguishes "cannot read the child's exit status" (rc=255 + empty stdout; git exits 1, never 255, for an unset key) from a genuinely unset identity, so the operator is no longer sent to fix a git config that is already correct._sigchld_is_ignored()gatespreflight()on the kernel'sSigIgnmask from/proc/self/status—signal.getsignal()does not reliably reflect an inherited disposition.
DESIGN §6 gains the mechanism alongside the existing returncode-255 discussion: pidfds are immune to waitpid(-1) theft, but not to kernel auto-reaping. Regression test is @linux_only (pidfd + /proc).
Full changelog: v0.9.60...v0.9.61