rebuild(hermes): kanban.db and kanban/ missing from backup manifest — board data lost on every rebuild
- Dominant language
- TypeScript
- Stars
- 22.5k
- Forks
- 3.1k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 715
Description
### Investigation Summary
- `nemohermes hermes rebuild` restores "15 directories, 3 files" but the Hermes kanban board is empty afterwards — `hermes kanban list` returns `(no matching tasks)` for tasks that existed before the rebuild
- Root cause confirmed: `agents/hermes/manifest.yaml` drives the backup contract, and neither `kanban.db` nor the `kanban/` directory appears in `state_dirs` / `state_files`
- The pre-rebuild backup under `~/.nemoclaw/rebuild-backups///` and its `rebuild-manifest.json` confirm the board was never captured (only `SOUL.md`, `.hermes_history`, `runtime/state.db` plus the 15 listed dirs)
- Reproduced on NemoClaw main (`d034b7f0e`) with Hermes Agent v0.18.0 (calver 2026.7.1), OpenShell 0.0.72, Docker driver on WSL2/docker-desktop
### Description
The rebuild backup/restore mechanism is designed to carry the Hermes agent's durable state across sandbox rebuilds (profiles, sessions, memories, skills, dashboard-home, etc., plus `runtime/state.db` via SQLite online backup). However the Hermes kanban board — which its own CLI help describes as a "Durable SQLite-backed task board" — is not part of the manifest's state contract:
- `kanban.db` (tasks, comments, events, runs) is not in `state_files`
- `kanban/` (per-task worker workspaces and run artifacts) is not in `state_dirs`
As a result every rebuild silently drops the entire board while the rest of the agent state comes back, which contradicts the board's durability contract and the mechanism's data-preservation intent (cf. the strict pre-upgrade backup gate and #7005's "abort when all state dirs fail to back up").
The kanban feature landed in the Hermes 0.16-era while the manifest's dir list predates it, so this looks like an oversight rather than a design decision.
### Steps to Reproduce
1. Onboard a Hermes sandbox and create a task: `hermes kanban create "test task"`
2. `nemohermes hermes rebuild --yes`
3. After the rebuild completes (state restored successfully), run `hermes kanban list`
### Expected Behavior
The kanban board (tasks, comments, events, runs, and any worktree/dir workspaces) survives the rebuild like sessions and profiles do.
### Actual Behavior
`hermes kanban list` returns `(no matching tasks)`; `kanban.db` is a freshly initialized empty database. The rebuild backup directory contains no copy of the board, so the data is unrecoverable unless the user took a manual `docker cp` snapshot beforehand.
### Environment
- NemoClaw: main @ `d034b7f0e` (post v0.0.84)
- Hermes Agent: v0.18.0 (calver 2026.7.1)
- OpenShell: 0.0.72 (docker driver)
- Host: WSL2 Ubuntu on Windows 11, Docker Desktop
### Proposed Fix
Add to `agents/hermes/manifest.yaml`: `kanban` in `state_dirs`, and `kanban.db` in `state_files` with `strategy: sqlite_backup` (same treatment as `runtime/state.db`; the zero-byte `kanban.db.*.lock` files can be omitted). PR incoming, intentionally scoped to the kanban items only.
---
Responsible human: @tyeth (please review) — filed on their behalf by `tyeth-ai-assisted`.
Contributor guide
Assessment
This issue has not been assessed yet.