v2.1.9
What's New
Gentle AI v2.1.9 hardens the native review-authority lifecycle. A new shared, cross-worktree maintenance lock closes a concurrency race on movable authority lineages, gate-denied approved receipts now persist their invalidation and stay recovery-eligible, and cumulative authority composes correctly across overlapping recovery corrections. Community contributions pin GGA installs to tagged releases, fix SDD profile fallbacks, tighten doctor diagnostics, and add a first-class workflow skill for external contributors.
Changes
Review Authority and Concurrency
- Shared authority maintenance lock: one Git-common-dir-scoped shared/exclusive lock sits above every movable lineage and version directory, closing a flock inode race where maintenance renaming a lineage could run concurrently with a native writer. Ordinary writers acquire shared mode, maintenance acquires exclusive, with canonical ordering, bounded acquisition, and fail-closed conflict handling on Unix and Windows. (#1474)
- Approved invalidation persists on semantic denials: a gate that returns
invalidatedfor an approved receipt now persists that invalidation to authority state, so it becomes recovery-eligible instead of stranding as neither committable nor recoverable. Infrastructure faults still fail closed. (#1461) - Cumulative authority across overlapping recovery: cumulative 4R authority composes with a bounded overlapping recovery correction, enforced per publication segment and re-derived under lock at final authorization. (#1459)
- Legacy lock tolerance confined: the release gate tolerates ambiguous-lock residue attached to an already-invalid legacy-v1 entry while still failing closed on genuine current corruption. (#1472)
- Dual-anomaly recovery reconciliation:
gentle-ai reviewrepairs a single compact-v2 recovery edge that carries an unchanged target and a pre-contract free-form authorization at once, without weakening validation. (#1465) - Malformed legacy freeze events quarantined, frozen findings ledger bound in compact gate contexts, audited pristine-lineage abandonment, retired recovered-start field tolerated read-only, and staged review supported on an unborn HEAD. (#1456, #1450, #1451, #1447, #1457)
- Windows maintenance-lock hardening: legacy quarantine releases the per-lineage lock handle before renaming the lineage directory (Windows cannot rename a directory with an open handle inside), with test and CI robustness for the maintenance lock's added latency on slow runners. (#1479, #1482, #1483)
Risk Classification
- Process boundaries classify as high risk: a concrete subprocess/process-boundary integration now escalates to high risk and the canonical 4R lens set, with a fail-safe bounded content scan. (#1473)
SDD
- Compact remediation budget preserved across failed-verify remediation. (#1458)
- Profile agent assignments fall back to global when a per-profile assignment is empty, so
sdd-onboard-homeworkand peers keep their model. (#1444)
Installer, Doctor, and Sync
- GGA installs pin to the tagged release instead of tracking a moving branch, matching the upgrade path. (#1435)
- Doctor derives required agents from
state.jsonand tightens duplicate detection to matchexec.LookPathsemantics. (#1467) - Managed OpenCode and Kilocode review plugins refresh on sync. (#1448)
Contributor Experience
- New
gentle-ai-collab-perfectworkflow skill captures the issue-first, one-type:*-label, review-budget contribution flow for external contributors. (#1171)
Contributors
Huge thanks to the community contributors who shipped in this release:
- @ardelperal — pinned GGA installs to tagged releases (#1435), fixed SDD profile model fallback (#1444), hardened doctor agent diagnostics (#1467), and authored the external-contributor workflow skill (#1171).
- @franruiz0986-ai — reconciled dual-anomaly recovery edges (#1465).
Upgrade
brew upgrade gentle-ai && gentle-ai sync