# NousResearch/hermes-agent · state.db teardown races and self-heal serialization fixes

## Open now

- Nothing open on GitHub.

Most members address concurrent access bugs around state.db teardown, cron worker lifecycle, and self-heal reopen races that could cause database corruption. One member is an unrelated whole-codebase refactor reducing source lines of code.

## TL;DR

- 7 member(s): 0 open issue(s), 1 closed issue(s), 0 open PR(s), 3 merged PR(s), 3 PR(s) closed without merging.
- A fix was merged to main in PR #102117. Verify it addresses your case.
- **Recommended:** read PR #102117 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-104456`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.33`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #102827: \[Bug\] v0.21.0: #94736 self-heal reopen path can race concurrent writer threads → state.db structural corruption after cron teardown (NOTADB/malformed)

## Prior & competing PRs

- **#102117: refactor: whole-codebase simplification — −34% source LOC, every god file decomposed, zero behavior change**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `.github/workflows/lint.yml`, `AGENTS.md`, `COMPAT_MANIFEST.md`, `CONTRIBUTING.md`, `acp_adapter/auth.py`, `acp_adapter/commands.py`, `acp_adapter/content.py`, `acp_adapter/edit_approval.py`, `acp_adapter/entry.py`, `acp_adapter/events.py`, `acp_adapter/model_catalog.py`, `acp_adapter/permissions.py`, `acp_adapter/provenance.py`, `acp_adapter/server.py`, `acp_adapter/session.py`, `acp_adapter/tools.py`, `agent/AGENTS.md`, `agent/__init__.py`, `agent/account_usage.py`, `agent/acp_openai_bridge.py` (+2635 more)
- **#104368: fix(cron): a finished job no longer reopens the released state.db on agent teardown (#102827 cron half, salvage #102454)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `contributors/emails/[redacted:email]`, `cron/scheduler.py`, `tests/cron/test_scheduler.py`
- **#104456: SessionDB teardown no longer overlaps a live handle for the same state.db: counted per-path barrier + cron workers own their teardown (#102827, salvage of #103118 by @JoaoMarcos44)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `agent/trace_upload.py`, `cron/scheduler.py`, `cron/scheduler_detached_worker.py`, `gateway/platforms/api_server.py`, `gateway/run.py`, `hermes_cli/web_server_lifecycle.py`, `hermes_cli/web_server_sessions.py`, `hermes_state_registry.py`, `tests/cron/test_cleanup_timeout.py`, `tests/cron/test_scheduler.py`, `tests/hermes_state/test_shared_session_db_registry.py`
- **#102859: fix(state): serialize self-heal reopens per database path (#102827)**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#103306`, `#102827`, `#103306`, `#94736`
- **#103118: fix(state): prevent SessionDB teardown races with active cron workers**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#104456`, `#104368`, `#104456`, `#102827`
- **#103306: fix(state): serialize self-heal reopen with writers**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#102859`, `#102827`, `#103118`, `#102827`, `#103118`, `#102117`, `#103118`, `#103118`

## Fix status

- Merged to main in PR #102117 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-09-06`.
