## inclusionAI/Avernet — v2026.07.28…v2026.07.30

_164+ commits._

### Features
- **feat(skills-pool): allow parallel engine promotion** (a05e689)
- **feat(engine): prune top-level `./skills` from file-tree endpoint (#660)** (2640cf6)
- **feat: session file engine direct data plane (#597)** (7db82d6)
- **feat: align desktop skills pool delivery** (4320e8d)
- **feat(skills): resolve logical pool mappings** (7c07b48)
- **feat(workspace): exclude clawbench_* files in openclaw rsync (#590)** (b4e362e)
- **feat(backend): cherry-pick draft restoration to REL20260730 (#576)** (e949eb6)
- **feat(publish): add restart in-progress marker to ext (#547)** (f001ee8)
- **feat: add session file sharing materialization (#544)** (a890819)
- **feat(gateway): add OpenAPI schemas as code (baas + bots) (#545)** (80ebc48)
- **feat: consume template factory config for coding bots (#526)** (7a17e94)
- **feat(baas): increase default provision timeouts from 900s to 1800s (#542)** (2193968)
- **feat(engine): add depth limit to aicoding file tree (#540)** (c6b2026)
- **feat(bcs): support HumanInput over IM channels (#493)** (7956973)
- **feat(service-bot): apply provider-aware decision + cleanup to restart (SDD task 6)** (1d744e8)
- **feat(service-bot): retire lingering bot on DEVICE_NOT_FOUND upgrade fallback (SDD task 5)** (fad1ba9)
- **feat(service-bot): provider-aware online reuse decision + dispatch (SDD tasks 3,4)** (445b964)
- **feat(service-bot): carry gone-bot error_code through TargetBotGoneError (SDD task 2)** (2554587)
- **feat(service-bot): add BotBuildService.retire_superseded_bot (SDD task 1)** (69fd9ca)
- **feat(bot_run): treat agent final event as session termination (#518)** (9bf1344)
- **feat: support owner-scoped skills pool rollout** (ed365dc)
- **feat(mcp): show real names for claude_code default MCPs (#504)** (cc2027f)
- **feat(mcp): add app info to claude code defaults (#477)** (4a607fb)
- **feat(bcs): add Bot-Human-Bot collaboration template (#532)** (150ec87)
- **feat(authn): multi-identity extraction pipeline with DB-backed regist… (#528)** (b9d5fb6)
- **feat(gateway,baas): OpenAPI at /docs, dump schemas on start, disable SwaggerUI execute, translate baas to EN (#506)** (b59fbfa)
- **feat(bcs): storage-baas plugin + backend-agnostic storage assembly (#419)** (0f54ab8)
- **feat(singlebox): add rule-driven bots (#498)** (650ec13)
- **feat: add header for http callback (#503)** (ddd0a60)
- **[BCS] Add exact multi-skill filtering to discover (#495)** (45072cb)
- **feat(backend): add open bot chat queriesDev (#485)** (873912d)

### Fixes
- **fix(backend): settle obsolete skills pool wakeups** (cfac318)
- **fix: scope readme bot lookup by owner and env** (c7ba1e3)
- **fix: validate readme skill bot context** (2180b41)
- **fix: resolve readme workspace from skill bot** (9e6716f)
- **fix(skill): route readme through bot owner** (6b3d3bc)
- **fix(engine): pin OpenClaw probe identity** (0705444)
- **fix(skill): preserve collaborator author** (7707830)
- **fix(engine): validate layout before pool commit** (2d9e386)
- **fix(engine): reject retired AICoding corpus links** (bd2d669)
- **fix(community): filter notify polling by engine (#573) (#646)** (5e6dfa9)
- **fix(engine): fail closed on invalid layout probes** (2a66dad)
- **fix(community): prune skills-pool in aicoding file-tree (#639)** (03aab29)
- **fix(backend): normalize skills pool runtime timestamps** (43fe16c)
- **Fs double env fix (#633)** (de12f3a)
- **fix: keep repo retirement I/O failure pending** (8d19110)
- **fix: resume AICoding repo restoration rollback** (a0d579c)
- **fix: keep repo restoration rollback retryable** (20e0fb6)
- **fix: address active repo lifecycle review** (c94aba3)
- **fix: retire AICoding active repo corpus after pool cutover** (6c4b7fa)
- **fix(backend): make skills pool rollback resumable** (2fa90ff)
- **fix(engine): prevent premature chat stream timeout for long-running tasks (#623)** (b104529)
- **fix(backend): _compose_device_conn_info 优先使用 http_info 的 target (#626)** (54a0553)
- **fix(backend): preserve draft restore file ownership (#618)** (50b4170)
- **Fs ctt type fix (#613)** (8726629)
- **fix(backend): scope bot chat names by trace owner (#611)** (82c4491)
- **fix(engine): stabilize pool mapping error contract** (135649a)
- **fix(engine): harden Desktop pool runtime contracts** (39ca1bd)
- **fix(engine): prepare empty Desktop local skills root** (f0ad3eb)
- **fix(backend): keep bot chat relation labels consistent (#572) (#601)** (3c2209e)
- **fix: fence committed pool probe failures** (7a4b02b)
- **fix(backend): preserve template config on bot restart (#589)** (5c37d62)
- **fix(workspace): explicitly exclude clawbench_results and clawbench_te… (#598)** (1bb157a)
- **fix(session-resources): proxy materialization safely (#593)** (bb11605)
- **fix: satisfy backend module size guard** (ebc04b0)
- **fix: preserve post-cutover locator evidence** (614d977)
- **fix: avoid committed evidence reprobe** (5ad882a)
- **fix: harden committed quarantine evidence** (250c89f)
- **fix: fence changed pool preparation identity** (29828e4)
- **fix: close skills pool state race gaps** (3bc7cf4)
- **fix: reconcile uncertain pool cutover states** (ed74b56)
- **fix: negotiate pool cutover evidence contract** (d9c832e)
- **fix: preserve quarantine evidence on cutover retry** (a15ed6d)
- **fix: preserve pending cutover evidence refresh** (2a1a21a)
- **fix: harden committed skills pool reconciliation** (0362ca9)
- **fix(publish-flow): backport restart flag cleanup to REL20260730 (#575)** (32524a1)
- **fix: prevent Teclaw Cloud from being default bot** (2248883)
- **fix: resume pool repair after committed cutover** (aa676fd)
- **fix race (#531)** (34b83af)
- **Revert "fix: serialize BaaS bootstrap with container init (#519)"** (77c52f1)
- **fix(teclaw): replay delivery idempotently and cover the tri-state contract** (a0d1681)
- **fix(teclaw): make the token delivery retryable and tri-state aware** (875678e)
- **fix(teclaw): deliver the passport token after the container actually starts** (f4cdb94)
- **fix(service-bot): release stale binding on restart BOT_NOT_FOUND fallback too** (e4e5487)
- **fix(service-bot): require a destroy workflow id + release stale binding on BOT_NOT_FOUND fallback** (0d68261)
- **fix(service-bot): release stale binding on FIRST_RELEASE restart + refresh teclaw MCP rule on restart-recreate** (648f41b)
- **fix(service-bot): preserve the teclaw publish handle when activating a restart binding** (59b3ed7)
- **fix(service-bot): activate the recreated binding on restart-success for stable records** (5b2c398)
- **fix(service-bot): release the superseded binding in the restart DEVICE_NOT_FOUND fallback** (cb69b3b)
- **fix(service-bot): harden supersede decision — wait on STOPPING, release stale binding, tolerate already-gone** (bda9b7a)
- **fix(service-bot): refuse to recreate on an ambiguous empty BaaS status** (70fe763)
- **fix(service-bot): propagate deploy status/lifecycle failures instead of masking them** (a1d2180)
- **fix: serialize BaaS bootstrap with container init (#519)** (bfdf458)
- **fix(baas): use gmt_modified instead of gmt_create for publish timeout baseline (#513)** (45b4d3c)
- **fix: close skills pool rollout gaps** (8c9eed1)
- **fix: harden multi-engine skills pool runtime** (1550eff)
- **fix(community): route notify probe by device_provider (BaaS ENGINE_HTTP_500) (#508)** (9c50d5c)
- **fix: fail closed on invalid pool skill mappings** (7a8e343)
- **fix: keep Teclaw skill locators logical** (dbad2c5)
- **fix: route pool-active skill CRUD to canonical paths** (a64d825)
- **fix lock (#489)** (1610097)
- **fix auth on api resources  url and node** (1e22d24)
- **fix auth on api resources  url and node** (cf7ab1a)
- **Bugfix/fix error status (#466)** (d74f093)
- **fix: domain-bots remove auth and remove iam_token (cherry-pick #442 to REL20260728) (#472)** (6fb4ed3)
- **fix(backend): recover bots stuck in pending** (09ad660)
- **fix(engine): hide internal BCS group sessions (#509)** (0408f5d)
- **fix(bcs-session-file-store): flavor-aware expires_at cast in sweep + trim session-file skill ref (#515)** (ea9cf71)
- **fix(bcs): add milliseconds to common error timestamps (#510)** (bd9d2c4)
- **fix(bcs): allow private friends to join existing groups (#507)** (6ac2652)
- **fix(bcs): preserve run correlation for channel replies (#511)** (d98b498)
- **fix: retire legacy skills storage without exchange** (a102088)
- **fix: recover skills pool cutover exchange retries** (6d0e57b)
- **fix(backend): tenant-scope the access-mode sync coalescing key** (d356124)
- **fix(backend): wrap the device data-init thread (review note on #478)** (c58a6af)
- **fix(backend): tenant isolation gaps found in PR #456 review (raw SQL + threads)** (75aa30d)
- **fix(bcs): extend provider SSE idle timeout (#323)** (04f3605)
- **fix(bcs): return 200 for admin run creation (#430)** (53ffa1d)
- **fix: support legacy skills pool rollout config CAS** (fececae)

### Backend
- **Enable template-based member management for bot collaborators (#600)** (532f640)
- **default use queue for bcn downlink (#557)** (f481a53)
- **Fs improve (#554)** (91a993c)
- **Oss endpoint div (#520)** (2849b8e)
- **remove packages (#505)** (86818b9)
- **Session fs v2 (#486)** (5d2ba88)

### Tests
- **test: cover readme bot lookup branches** (5c7f712)
- **test(engine): cover finalizing probe permissions** (5a60dd4)
- **test(engine): pin mapping schema rejection** (b70f6db)
- **test: cover committed pool finalization evidence** (97e724a)
- **test: allow Default Bot Teclaw domain error in HTTP adapter** (0582863)
- **test(service-bot): E2E actually exercises RETIRE_THEN_FIRST_RELEASE (single-live-bot guard)** (593efbc)
- **test(service-bot): regression, crash-safety, E2E guards for supersede cleanup (SDD task 7)** (b83faa9)
- **test(backend): cover _batch_get_public_bots (changed-line coverage gate)** (a56f16a)
- **test: cover rollout config entry normalization** (88886fb)

### Docs
- **docs(service-bot): align SDD tasks/plan with final propagate semantics** (614e236)
- **docs(service-bot): task breakdown for online bot supersede cleanup (SDD phase 3)** (50e3677)
- **docs(service-bot): correct plan — teclaw gone container fails publish, not DEVICE_NOT_FOUND** (fbcb7db)
- **docs(service-bot): technical plan for online bot supersede cleanup (SDD phase 2)** (644a745)
- **docs(service-bot): spec for online bot supersede cleanup (SDD phase 1)** (ad015c7)
- **docs(skills): add management and publishing architecture** (209ada5)
- **docs: move openapi-v1 handoff README under src/backend/docs** (9ff7a28)
- **docs: present skills as one 7-row endpoint table** (1242451)
- **docs: add priority tiers and make skills co-owned** (45a550a)
- **docs: assign vertical-slice ownership and add per-component endpoint checklists** (ac4e615)
- **docs: add Simplified Chinese version of /openapi/v1 handoff README** (ab56acd)
- **docs: add /openapi/v1 team handoff README** (e7e3ee9)

### Chore
- **refactor(engine): centralize skill layout planning** (640a28c)
- **refactor: split post-cutover evidence repository** (2bfe138)
- **refactor(service-bot): make online deploy decision handling exhaustive** (2844f24)
- **chore(service-bot): revert accidental uv.lock churn from test-index override** (e045034)

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