Bug description
After the 2026-05-06 04:00 PDT auto-update/restart, the gateway came back up but the embedded Kanban dispatcher began failing on the default board with a SQLite migration/schema error:
2026-05-06T04:02:07-07:00 armstrong-server python[4154796]: ERROR gateway.run: kanban dispatcher: tick failed on board default
Traceback (most recent call last):
File "/home/emmett/.hermes/hermes-agent/gateway/run.py", line 3654, in _tick_once_for_board
conn = _kb.connect(board=slug)
File "/home/emmett/.hermes/hermes-agent/hermes_cli/kanban_db.py", line 906, in connect
_migrate_add_optional_columns(conn)
File "/home/emmett/.hermes/hermes-agent/hermes_cli/kanban_db.py", line 964, in _migrate_add_optional_columns
conn.execute(
sqlite3.OperationalError: no such column: "spawn_failures"
Context
- Hermes auto-update job ran at
2026-05-06 04:00 PDT.
hermes update --check reported the install was 190 commits behind origin/main.
hermes update --no-backup fast-forwarded the checkout to e70e49016.
- Gateway restarted successfully at
04:01:53 and connected Telegram/Discord/Slack by 04:02:01.
- The dispatcher error appears immediately after startup when the embedded Kanban dispatcher starts.
Environment
- Repo checkout:
/home/emmett/.hermes/hermes-agent
- Current commit:
e70e49016 fix(cli): guard logger.debug in signal handler (#13710 regression) (#20673)
- Host:
armstrong-server, Ubuntu 24.04.4 LTS
- Python: 3.11.15
- Service:
hermes-gateway.service running /home/emmett/.hermes/hermes-agent/venv/bin/python -m hermes_cli.main gateway run --replace
Expected behavior
Kanban DB migrations should be idempotent across existing board databases, and the dispatcher should not fail on startup after an update.
Actual behavior
_migrate_add_optional_columns() attempts a migration path that references spawn_failures before the column exists, causing the dispatcher tick for the default board to fail.
Acceptance criteria
- Existing Kanban board DBs from pre-update installs migrate cleanly.
hermes kanban --board default list --json and gateway embedded dispatcher startup do not raise sqlite3.OperationalError: no such column: "spawn_failures".
- Add/adjust a migration regression test covering a DB missing
spawn_failures.
Bug description
After the 2026-05-06 04:00 PDT auto-update/restart, the gateway came back up but the embedded Kanban dispatcher began failing on the
defaultboard with a SQLite migration/schema error:Context
2026-05-06 04:00 PDT.hermes update --checkreported the install was190 commits behind origin/main.hermes update --no-backupfast-forwarded the checkout toe70e49016.04:01:53and connected Telegram/Discord/Slack by04:02:01.Environment
/home/emmett/.hermes/hermes-agente70e49016 fix(cli): guard logger.debug in signal handler (#13710 regression) (#20673)armstrong-server, Ubuntu 24.04.4 LTShermes-gateway.servicerunning/home/emmett/.hermes/hermes-agent/venv/bin/python -m hermes_cli.main gateway run --replaceExpected behavior
Kanban DB migrations should be idempotent across existing board databases, and the dispatcher should not fail on startup after an update.
Actual behavior
_migrate_add_optional_columns()attempts a migration path that referencesspawn_failuresbefore the column exists, causing the dispatcher tick for thedefaultboard to fail.Acceptance criteria
hermes kanban --board default list --jsonand gateway embedded dispatcher startup do not raisesqlite3.OperationalError: no such column: "spawn_failures".spawn_failures.