Compact SDD attempts + community fix wave
What's New
v2.2.3-rc.3 is a new immutable community-testing refresh that carries the compact SDD runtime-attempt work from v2.2.3-rc.1 and the exact reviewer recovery from v2.2.3-rc.2, and adds the nineteen community fixes merged since — a wave that clears long-standing installer, TUI, and review-lifecycle papercuts. Earlier release candidates remain unchanged.
The headline additions: Context7 finally registers where Claude Code actually reads MCP servers from (~/.claude.json), reviewers now inspect frozen candidates through a native gentle-ai review inspect-candidate capability instead of a hardened raw-Git shell recipe, review status works from any subdirectory, and the installer respects --scope workspace for Context7, discovers LM Studio models dynamically, and stops corrupting managed sections on repeated syncs.
Changes
Review lifecycle
- Provider-bound candidate inspection: reviewers get a closed, native
review inspect-candidatecommand that resolves immutable trees from the provider binding, sanitizes Git configuration, and bounds execution time and output — replacing theenv -i gitshell recipe that reviewer sandboxes had to allowlist verbatim and that was not portable to Windows shells. (#2005, #2011) review statusresolves the repository root from nested directories: selector-free status previously inventoried authority against the literal--cwd, so running it from a subdirectory silently reported nothing. (#1862, #2024)- Staged recovery proven to ignore worktree bytes: the staged-recovery fixture now asserts the exact authorized staged bytes are recovered, unrelated untracked files are excluded, and the snapshot identity is stable when only worktree bytes change. (#1948, #2023)
Installer and sync
- Context7 registers in
~/.claude.jsonfor Claude Code: user-scope MCP servers are only read from~/.claude.json, so themcpServersblock earlier versions wrote intosettings.jsonwas inert. Registration now merges non-destructively into the user registry (a corrupt base aborts instead of being reset, 0600 is enforced, the inert settings block is cleaned best-effort), and uninstall never deletes the OAuth-bearing registry. Workspace scope keeps the scoped settings merge. (#1868, #1909) - Context7 injection honors
--scope workspace: install and sync wrote the Context7 MCP configuration to the home directory even when workspace scope was selected, polluting global config and breaking workspace isolation. (#736, #1617) - Theme identifier matches the installed theme: settings pointed at
gentleman-kanagawawhile the installed theme registers asgentleman, so selecting the theme never resolved. (#896, #1630) - Managed sections no longer duplicate: repeated syncs could leave multiple copies of the same managed block in CLAUDE.md-style files; injection now collapses duplicates in one idempotent pass while preserving user content between them. (#1675, #1764)
- Skill registry cache detects content edits: registry fingerprints included only file metadata, so editing a skill without changing its size and timestamp kept serving the stale cached copy. Content bytes are now part of the fingerprint. (#1732, #2019)
- GGA installs cannot be branch-shadowed: Unix source installs and upgrade clones now fetch the exact
refs/tags/…object instead ofgit clone --branch, which a branch named like the release tag could shadow. (#1727, #1751) doctordeduplicates symlinked PATH tools: equivalent PATH directories reached through symlinks no longer report the same tool twice. (#1664, #2015)
OpenCode TUI
- LM Studio models are discovered live: the model picker queries the local LM Studio endpoint asynchronously instead of depending on a static cache, so locally served models appear without manual configuration — with a warning, not a dead end, when discovery fails. (#375, #1917)
- Reasoning-effort variants survive provider ID mismatches: cached variants stored under one provider ID now fall back deterministically to alias providers exposing the same model, so the effort picker no longer silently disappears. (#1648, #1695)
Community tools and benchmark
- Pi MCP probe timeouts name their phase: a stalled CodeGraph MCP probe now reports whether
initializeortools/listexceeded the deadline instead of a generic wait error. (#1644, #2020) - Benchmark rejects empty explicit selections: an explicit journey selector matching nothing now fails loudly instead of silently running an empty set. (#1883, #2018)
Skills and documentation
- The issue-creation skill discovers repository policy: templates, labels, approval gates, and Discussions support are now discovered per repository through read-only checks instead of hardcoding one repo's workflow, with a contract test pinning discovery before any publication command. (#1374, #1779)
- The issue-creation skill requires a pre-submission privacy review: before
gh issue create, environment-specific data — private project names, usernames, home paths, hostnames, secrets — is replaced with explicit placeholders that keep the reproduction teachable, with a contract test pinning the rule. (#1906, #1981) - Delegated agent reports close with Key Learnings: SDD phase agents and generic delegations end their final report with a structured
## Key Learningssection that engram passive capture extracts automatically, so learnings survive delegation boundaries. (#1703, #1707) - Benchmark validation attestation documents when benchmark-module validation applies and how to mark it
N/A, in CONTRIBUTING and the PR template. (#1990, #1991) - Quick-fix readiness audit handoff publishes the corrected 56-issue readiness partition with an independent verification report. (#2006, #2010)
Carried forward from rc.1 and rc.2
- Compact
sdd-attempt acquire/settleorchestration for apply, verify, and remediation — idempotent, CAS-protected, with attempt/line budgets, immutable history, and explicit-only reset. - Exact-slot,
STATUS-mediated reviewer recollection after a pre-inspection access/provider failure, adding no retry state and consuming no additional review budget. (#1986)
Community testing
- Download
SHA256SUMS.txtand the binary for your platform, then verify the binary against its listed SHA-256 digest. - Run the binary directly and confirm
gentle-ai --versionreports2.2.3-rc.3. - Run a real SDD change through apply and verify; confirm normal orchestration returns compact acquire/settle results instead of full attempt history.
- Exercise a 4R review and confirm reviewers inspect the candidate through
gentle-ai review inspect-candidatewith no raw Git allowlist entries. - Run
gentle-ai review statusfrom a nested subdirectory of your repository and confirm it reports the same authority as from the root. - If you use LM Studio, open the OpenCode model picker with the local server running and confirm your models appear.
Please include your OS, agent/client, gentle-ai --version, and the compact result or recovery status in reports.
Validation
- Exact commit:
e0744dae5aba853c066104d17203d0ea9da95052 - Required CI run 30536155653 is green: all jobs passed for the exact commit.
- The E2E suite was migrated to the new Context7 user-registry contract as part of this refresh (the previous suite still asserted the inert
settings.jsonblock that #1909 removed). - The optional, non-gating Windows Full Suite run 30536155561 completed with failure before publication; it is not part of the required release gate.
- All five binaries were built with
vcs.modified=falseand are covered bySHA256SUMS.txt.
Contributors
Thanks to the community contributors whose merged work is part of this refresh:
- @dnlrsls - nested-cwd review status, staged-recovery proof, Pi MCP timeout attribution, benchmark selection guard, doctor PATH dedup, skill-registry fingerprints, LM Studio discovery, repository-aware issue-creation skill, duplicate-section collapse, benchmark attestation docs, and the quick-fix readiness audit. (#2024, #2023, #2020, #2019, #2018, #2015, #2010, #1991, #1917, #1779, #1764)
- @decode2 - provider-bound candidate inspection, branch-shadowing-safe GGA installs, effort-variant fallback, theme identifier alignment, and workspace-scoped Context7 injection. (#2011, #1751, #1695, #1630, #1617)
- @Denver2828 - moved Claude Code Context7 registration to the
~/.claude.jsonuser registry with a non-destructive, retrying merge. (#1909) - @ardelperal - added the mandatory pre-submission privacy review to the issue-creation skill. (#1981)
- @pablontiv - closed delegated agent reports with Key Learnings for engram passive capture. (#1707)
Distribution notice
These community-testing binaries are unsigned. SHA256SUMS.txt provides integrity checking but not publisher authentication. This prerelease does not update Homebrew.