You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.10.0] — 2026-07-20
Added
pmctl dispatch reconcile (CC-499). Diagnoses and converges stale
detached runs (crash, reboot, orphan, PID reuse) using only trusted
out-of-repo evidence — never infers success from advisory records, and
never overwrites an existing terminal claim; convergence only ever
CAS-claims failed, and only when process absence is provable. Reports
in-flight / terminal-authenticated / orphaned / process-gone-without-evidence
/ indeterminate (PID-reuse suspected). Identity capture now records a boot_id so a reboot short-circuits straight to "gone" instead of risking
a post-reboot starttime coincidence. pmctl dispatch reconcile <run_id>|--all --cd <dir> [--dry-run]; doctor.sh gained a read-only stale-run scan.
pmctl dispatch cancel / dispatch status (CC-495). Detached runs can be
terminalized with trusted process-group kill (PID/PGID/starttime/comm
re-verify before signal), exclusive terminal CAS shared with natural
complete, durable cancelled Run/Event/dispatch record, and a
nonce-authenticated cancelled sentinel. pmctl dispatch wait returns exit 130 for authenticated cancel (distinct from failed, timeout 124,
and indeterminate 3). Minimal in-flight discovery via dispatch status.
Run schema/policy and event schema gain cancelled / run.cancelled.
Fixed
Worktree/auto-pack path-contract hardening (CC-453, PR#430). pmctl_worktree_create now redirects git worktree add progress chatter to
stderr so its stdout contract is exactly one line (the worktree path). pmctl_dispatch_auto_pack validates a non-git work_dir as an absolute,
existing directory and fail-loud skips packing otherwise — a garbage
work_dir can no longer create directories under the current CWD via a
relative mkdir -p. The opencode adapter's isolation error message now only
recommends its actually supported level (none).
Changed
Guard/hook symmetry hardening (CC-452, PR#431).guard-pm-write.sh and guard-reviewer-write.sh now declare set -euo pipefail like guard-executor-write.sh; a regression test enumerates every runtime/hooks/guard-*.sh dynamically and pins guard-pm-bash.sh's
documented set -uo pipefail exemption. The duplicated episode-date
ISO8601 normalization in guard-inject-memory.sh and guard-session-summary.sh is extracted to memory_iso8601_normalize() in runtime/lib/memory.sh. The episodes.jsonl append lock (audit item 1) was
already fixed earlier and is verified not regressed.