## kodustech/kodus-ai — web-1.1.32…web-1.1.33

_217+ commits._

### Features
- **feat(llm): switch trial default model from native DeepSeek to Fireworks-hosted DeepSeek V4 Flash** (92e26ec)
- **Merge pull request #1715 from kodustech/chore/add-runo-recipe** (4237728)
- **feat(subscription): add self-hosted trial request CTA** (b769fa4)
- **feat(kody-rules): reconcile plan lock at review time (server + CLI)** (e38d1cf)
- **feat(e2e): sample the GitHub quota on a timer, not on scenario boundaries** (365082e)
- **feat(e2e): attribute GitHub quota spend per scenario** (980d099)
- **feat(e2e): resolve the review model as one all-or-nothing set locally** (0b890a3)
- **feat(e2e): run the review model on DeepSeek V4 Flash via Fireworks** (c6f49b1)
- **feat(e2e): check the review LLM before spending a run on it** (a7d2412)
- **feat(e2e): publish throwaway images to the CI org, not next to the releases** (6c3330f)
- **feat(e2e): keep throwaway images in the org, prune them on a schedule** (52a3c7e)
- **feat(e2e): one-step self-hosted runs, in CI and locally** (0efa800)
- **feat(e2e): build test images without cutting a release** (bb9ee12)
- **feat(e2e): let the matrix run against images from another registry** (1d1c481)

### Fixes
- **Merge pull request #1733 from kodustech/fix/rc-e2e-harness-failures** (61c9e0d)
- **Merge pull request #1734 from kodustech/fix/trial-model-name** (03c59b7)
- **fix(e2e): repair RC harness blockers** (2f3f6ae)
- **Merge pull request #1731 from kodustech/fix/release-e2e-matrix-permissions** (fdcade0)
- **fix(ci): allow release matrix history writes** (f6e7780)
- **Merge pull request #1730 from kodustech/fix/release-cloud-gate-permissions** (7d9753d)
- **fix(ci): allow release cloud gate history writes** (3405b74)
- **fix(llm): enable supportsStructuredOutputs on Fireworks trial fallback** (a1ec065)
- **fix(llm): enable structuredOutputs by default for known-capable OpenAI-compatible endpoints** (ba22c13)
- **Merge pull request #1719 from kodustech/fix/kody-learning-pool-exhaustion** (8cc34d6)
- **fix(llm): enable structuredOutputs for Fireworks OpenAI-compatible endpoint** (33c9604)
- **Merge branch 'main' of github.com:kodustech/kodus-ai into fix/kody-learning-pool-exhaustion** (817f010)
- **fix(api): stop the Kody Learning cron from draining the DB pool** (41673c8)
- **Merge pull request #1656 from andyst-dev/fix/agents-rules-discovery** (a65cc5e)
- **fix(trace): restore pre-push distillation and module wiring** (9b92d9f)
- **Merge pull request #1712 from kodustech/fix/e2e-tunnel-failure-evidence** (6c47d96)
- **fix(e2e): say why the tunnel failed before destroying the evidence** (077bd1e)
- **Merge pull request #1711 from kodustech/fix/e2e-placement-allows-context-lines** (55f483a)
- **fix(e2e): a comment on a context line is not a misplacement** (99e5e6a)
- **Merge pull request #1710 from kodustech/fix/reaper-do-token-blocks-ec2** (2672768)
- **Merge pull request #1709 from kodustech/fix/e2e-byok-clear-log** (62ffc2b)
- **fix(reaper): retire DigitalOcean and unblock the EC2 sweep** (48961c1)
- **fix(e2e): stop reporting a failed BYOK clear as CLEARED** (d98e526)
- **Merge pull request #1708 from kodustech/fix/ci-qa-deploy-permissions** (985bf32)
- **Merge pull request #1707 from kodustech/fix/e2e-finding-vs-license-notice** (186d1b7)
- **fix(ci): pin the e2e matrix to read-only permissions** (0c3bac1)
- **fix(ci): unbreak the QA deploy pipeline** (993052a)
- **fix(e2e): a severity badge means finding, not license notice** (488305e)
- **Merge pull request #1706 from kodustech/fix/e2e-clear-free-tenant-byok** (943d01d)
- **Merge pull request #1705 from kodustech/fix/centralized-config-ownership** (11e0fb9)
- **fix(e2e): clear the free tenant's stored BYOK key instead of just skipping it** (f77f83c)
- **fix(centralized-config): log directory scopes with unencodable paths** (3a975a5)
- **Merge branch 'main' of github.com:kodustech/kodus-ai into fix/centralized-config-ownership** (ca0983b)
- **Merge pull request #1704 from kodustech/fix/e2e-free-tenant-byok** (593a3cd)
- **fix(e2e): stop handing the free cloud tenant a BYOK key** (910b2d6)
- **fix(centralized-config): write directory-scope messages at directory level** (bf3d5c4)
- **fix(centralized-config): reconcile stale scopes from recorded ownership** (9cdbf73)
- **fix(centralized-config): dump plain objects when writing YAML** (a52462f)
- **Merge pull request #1664 from kodustech/fix/e2e-matrix-signal** (dea46d0)
- **fix Trace review suggestions** (e1453a7)
- **fix(e2e): address Kody review on #1664** (b081372)
- **Merge pull request #1701 from mzglinski/fix/format-rule-to-yaml-class-instances** (fe26e60)
- **fix(centralized-config): plain-ify rule payloads before yaml.dump** (9e2cb08)
- **fix(e2e): pass the centralized-config repo through to the runner** (63c77df)
- **fix(e2e): wait for the PR-opened automation to let go of the lock** (41dad13)
- **Merge pull request #1697 from kodustech/fix/centralized-config-directory-only-baseline** (069e037)
- **fix(e2e): a review still running outranks a duplicate's skip** (92b03f4)
- **fix(centralized-config): log a failed zip finalize** (12cd23c)
- **Merge pull request #1692 from kodustech/fix/kody-rules-onboarding-backfill** (c2af2bb)
- **Merge pull request #1631 from Sahil-Gupta584/fix/staled-kody-rules** (d1b0ad4)
- **fix(e2e): a cell that reports nothing must fail the run, not vanish** (51e2831)
- **fix(e2e): keep the onboarding settle when the finish is served from cache** (3dc9e09)
- **fix(centralized-config): restore the download bundle after the archiver v8 bump** (c8ce1a4)
- **fix(kody-rules): name the organization in the sampling logs** (0e770df)
- **fix(centralized-config): keep a directory-only repo out of the repository baseline** (8b5e524)
- **Merge pull request #1691 from kodustech/fix/centralized-config-absent-vs-removed** (38c4a4d)
- **fix(kody-rules): bound the per-PR walk for providers with no repo-level listing** (b5add6c)
- **fix(kody-rules): sample repo comments directly instead of walking every PR** (242a9fa)
- **fix(centralized-config): re-read the parameter before writing the baseline** (0d21b57)
- **fix(migrations): keep the profile_configs dedup from outreaching its UNIQUE** (5d7d649)
- **Merge remote-tracking branch 'origin/main' into fix/centralized-config-absent-vs-removed** (3b02411)
- **Merge pull request #1660 from kodustech/fix/cli-403-error-message** (09b6da4)
- **fix(trace): focus local UI on session review** (43b1e0a)
- **fix(e2e): stop paying for the onboarding GitHub backfill once per scenario** (e40e9b8)
- **Merge pull request #1679 from kodustech/hotfix/anthropic-models** (161960d)
- **Merge branch 'main' into hotfix/anthropic-models** (3cf295a)
- **Merge pull request #1684 from kodustech/fix/cron-throttle-crons-pool** (8e56f6f)
- **fix(e2e): state the BYOK config on self-hosted tenants instead of inferring it** (9da2e53)
- **fix(crons): log lockKey on the lock failures** (69e67e6)
- **fix(e2e): the LLM probe was failing on its own cap, and luna breaks reviews** (80c654c)
- **fix(ai-engine): restore concurrent on the context_references index** (ec55314)
- **perf(crons): stop throttling the work that never touches the pool** (cc2a7b7)
- **fix(trace): align local UI with Kodus brand** (10ea557)
- **fix(crons): align the index decorators with what the migration owns** (a2081d1)
- **fix(crons): correct the pool arithmetic and the migration self-heal** (794e04b)
- **Merge remote-tracking branch 'origin/main' into fix/cron-throttle-crons-pool** (cefce31)
- **Merge pull request #1675 from kodustech/fix/query-perf-and-indexes** (05b0799)
- **fix(kody-rules): don't let a failed lock release reject the sync handler** (6a447ba)
- **perf(issues): bound the parallel issue creation fan-out** (f234c2d)
- **fix(migrations): reset session timeouts so they don't ride the pool** (0c17c28)
- **fix(integrations): let findByOrganizationAndConfigKey surface DB errors** (662d54b)
- **fix(api,worker): restore the single EventEmitterModule.forRoot()** (df4489f)
- **Merge remote-tracking branch 'origin/main' into fix/query-perf-and-indexes** (4635ffc)
- **fix(trace): deduplicate turn-start records** (121c982)
- **fix(trace): keep enable status idempotent** (61a58e7)
- **Merge remote-tracking branch 'origin/main' into fix/e2e-matrix-signal** (51e432f)
- **fix(trace): harden shared decision workflow** (e74f92a)
- **Merge pull request #1669 from kodustech/fix/unassign-ex-members** (97e069d)
- **Merge remote-tracking branch 'origin/main' into fix/query-perf-and-indexes** (317b493)
- **fix(e2e): grant the on-demand workflow the permissions its chain needs** (f5ef114)
- **fix(e2e): resolve the registry in a step, not in reusable-workflow inputs** (37ce42f)
- **fix(profileConfig): @Index synchronize option isn't valid on the fields overload** (be441b2)
- **Merge remote-tracking branch 'origin/main' into fix/query-perf-and-indexes** (20c92e0)
- **fix(pool,queries,locks): pool exhaustion mitigations from 2026-08 incident audit** (2683cc1)
- **fix env** (87531a0)
- **fix(e2e): stop the new checks from failing a legitimate sharded run** (ae6ec62)

### Backend
- **Fixing model name** (a8ad1e6)
- **Merge pull request #1720 from kodustech/task/native-deepseek-to-fireworks-deepseek** (7cbe76c)
- **Merge pull request #1702 from kodustech/malinosqui/subir-trial-cta-pr** (bca1db9)
- **Merge pull request #1667 from kodustech/feat/kodus-trace** (f998dfa)
- **optimize Trace path matching** (9cbe7d9)
- **Merge remote-tracking branch 'origin/main' into feat/kodus-trace** (e501dd5)
- **Fixing test** (1edbb85)
- **wire and gate Trace review context** (2b19ec2)
- **Merge pull request #1676 from kodustech/codex/changelog-august-10** (e5cfcc1)
- **Merge pull request #1681 from kodustech/malinosqui/ci-validate-di-graph** (2b45271)
- **Merge pull request #1678 from kodustech/chore/remove-dry-run-dead-code** (2ce48d9)
- **Merge remote-tracking branch 'origin/main' into chore/remove-dry-run-dead-code** (5fc08d0)
- **Merge pull request #1671 from kodustech/feat/registry-env-schema** (4575dfe)
- **kody fixes** (a9b1121)
- **kody fixes** (fdea2ea)
- **revoke ex members** (64b2535)

### Tests
- **test(parameters): cover the web centralized-config download endpoint** (4df65d0)
- **test(e2e): quarantine command-review on bitbucket** (451a839)
- **test(centralized-config): mock the zip factory instead of archiver itself** (37b9c09)
- **test(centralized-config): cover the directory and global-config guards** (600c13a)
- **test(code-review): fix call sites the dry-run removal missed** (5bbadf4)
- **test(classifyOrphanedSessions): mock DistributedLockService in cron spec** (a9a3060)
- **test(finish-comments): shift updateOverallComment arg index after dry-run removal** (289d11f)

### Docs
- **docs(centralized-config): note the config repo must be selected in Kodus** (216ccd1)
- **docs(kody-rules): say why the two comment listings run in order** (a8503a9)
- **docs: add August 10 changelog** (cedf50b)
- **docs(trace): refresh final validation counts** (a45f58b)
- **docs(trace): complete validation evidence** (93b49db)
- **docs(env): register KODUS_REGISTRY in the schema** (d308f4c)

### Chore
- **chore: add runo workspace recipe** (f04b656)
- **refactor(centralized-config): give zip packing its own use-case** (3b569fc)
- **refactor(centralized-config): declare IUseCase on the module's use-cases** (90c0a3e)
- **refactor(centralized-config): move zip packing into the download use-case** (1de6c49)
- **chore: ignore local tlc-spec-driven skill** (85ae9ad)
- **chore(e2e): retire the temporary push trigger, name the App gap in the log** (8242264)
- **chore(gitignore): ignore .tessl** (50987b5)
- **ci: validate the api DI graph on every PR** (6d7d89d)
- **refactor(migrations): drop the session-timeout juggling** (09527a0)
- **chore: drop the last dry-run leftovers** (04067f4)
- **chore(e2e): the image build job is no longer cloud-only** (5272825)

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