## kodustech/kodus-ai — web-1.1.27…web-1.1.28

_34 commits._

### Features
- **feat(kody-rules): cap lazy atom backfill at 5 rules per review** (82bf306)
- **feat(kody-rules): virtual atomic decomposition of long compound rules** (b6196f1)
- **feat(kody-rules): structured validation summaries for long rules** (58186a5)
- **feat(sandbox): add self-hosted local sandbox cleanup** (9e2af6d)

### Fixes
- **Merge pull request #1578 from kodustech/fix/agent-loop-token-control** (79e44c0)
- **fix(agent-harness): count done-tool schema in per-request overhead** (3d708d6)
- **fix(agent-harness): hard per-request context clamp + real tokenizer** (716e09e)
- **fix(kody-rules): examples-only edit invalidates atoms but keeps the summary** (24ce93c)
- **Merge pull request #1570 from kodustech/fix/centralized-config-sync-wipe-guard** (351f93b)
- **fix(centralized-config): report partial rule sync as failure + backfill method coverage** (3b6f5f9)
- **fix(centralized-config): guard sync reconcile against empty/failed discovery** (fd97bb2)
- **Merge pull request #1569 from kodustech/fix/sandbox-lease-cleanup-followups** (04854fa)
- **fix(sandbox): include org context in the superseded-lease warn log** (66d3db3)
- **fix(api): map Postgres 22P02 (invalid uuid/int input) to 400 instead of 500** (cdd6a6f)
- **fix(sandbox): release leaseCount on in-progress cleanup + accurate supersede logging** (bf9b106)
- **Merge pull request #1471 from Fanduzi/fix/local-sandbox-cleanup** (5a2cef7)
- **fix(kody-rules): summary generation emits usage span + Langfuse telemetry** (81682f1)
- **fix(sandbox): close local cleanup state races** (bc2960c)
- **fix(kody-rules): PR-scope shard now sees the full diff, not just file names** (45041d2)
- **fix(sandbox): preserve local cleanup failure cause** (328344c)
- **fix(sandbox): INVALIDATED acquire only decrements, does not delete doc** (d35b316)
- **fix(sandbox): prevent leaseCount leak on acquire-vs-invalidated race** (65d13b5)
- **fix(sandbox): address 4 adversarial review findings on lease lifecycle** (076cde3)
- **fix: sandbox lease cleanup race conditions and error handling** (7e85715)
- **fix(sandbox): address 4 review findings on local sandbox cleanup** (8c6351a)

### Backend
- **Merge pull request #1567 from kodustech/feat/kody-rules-summary-and-pr-scope** (80477ed)
- **Merge pull request #1566 from kodustech/codex/changelog-july-20-2026** (a18b90f)

### Tests
- **test(centralized-config): cover the discovery-failure abort + discoverConfigFiles guard** (b3fd6e2)

### Docs
- **docs: add July 20 changelog** (d9c17a8)

### Chore
- **ci(kody-rules): advisory atoms convention eval in the PR matrix** (dd12b2f)
- **chore(kody-rules): register decomposeOutputSchema in the strict-wire contract** (5ea5c20)
- **chore(evals): gitignore the local summary/atoms caches** (32e90bb)
- **chore(kody-rules): add organizationId to summary-generation log metadata** (c28c274)
- **chore(evals): Rails convention-rule analog cases + full-pipeline runners** (cff8dc1)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/kodustech/kodus-ai?utm_source=github-action)._