teknium1
67757285f6
feat(sessions): hermes sessions repair-profiles settles crossed-profile durable state
...
The per-profile store model (#88734 ), the parent-inheritance fence (#88381 ),
profile-stamped topic rows (#76423 ) and profile-prefixed voice keys (#75198 )
are all forward-only: they put NEW state under the right profile and refuse to
widen existing damage, but nothing walks the stores and settles what earlier
releases left crossed. #113884 found 246 sessions stranded that way and could
only warn.
`hermes sessions repair-profiles` scans every profile's state.db plus the
gateway's voice-mode and sessions.json files and names six kinds of crossing:
1. `profile_name` disagreeing with the row's own session key -> relabel;
2. rows physically in another profile's store -> move (all message
generations, usage rows, system prompt) to the owning store, parents before
children so lineage survives, copy-then-delete so a crash leaves a duplicate
the next run settles;
3. `parent_session_id` crossing namespaces -> sever (own identity kept);
4. routing rows outside the default store under multiplexing -> move (an
existing row wins); routing rows for a profile that no longer exists -> drop;
5. Telegram topic bindings and voice-mode entries missing their bot's profile
-> relabel from the sessions that hold the chat (ambiguous chats reported);
6. sessions.json mirror entries for an unclaimed namespace -> drop (the legacy
import re-injects them into routing every boot).
Report-only by default. `--apply` refuses while a gateway owns any store, takes
a quick snapshot of every store first, and is idempotent. Two cases are
reported but never guessed: rows keyed to a profile that does not exist, and
`agent:main` rows inside a named profile's store (`--legacy-main rekey|move`
says which of the two histories they are).
Storage side lives in `hermes_state_profile_repair.py` (SessionDB mixin);
orchestration across stores in `hermes_cli/sessions_repair_profiles.py`; the
CLI face in `hermes_cli/sessions_cmd_repair_profiles.py` (pre-DB handler: it
opens every store itself).
Part of #88715 (PR-6). Closes the remediation gap #113884 only warns about.
2026-09-18 22:36:41 -07:00
..
2026-09-13 09:40:44 -07:00
2026-09-18 09:19:04 -07:00
2026-09-15 21:46:37 -07:00
2026-09-18 22:36:41 -07:00
2026-09-19 02:06:55 +05:30
2026-09-14 09:02:28 -07:00
2026-09-15 04:11:11 -07:00
2026-09-18 09:50:52 -07:00
2026-09-18 09:49:46 -07:00
2026-09-15 04:11:11 -07:00
2026-09-18 10:45:07 -07:00
2026-09-15 03:58:44 -07:00
2026-09-15 03:58:44 -07:00
2026-09-17 00:02:09 -07:00
2026-09-17 12:28:25 +05:30
2026-09-11 03:45:33 +05:30
2026-09-15 20:44:42 +05:30
2026-09-15 04:57:29 -07:00
2026-09-18 20:55:24 -07:00
2026-09-18 20:55:24 -07:00
2026-09-15 20:44:42 +05:30
2026-09-15 04:12:13 -07:00
2026-09-15 04:12:13 -07:00
2026-09-18 10:17:59 -07:00
2026-09-16 14:34:59 -07:00
2026-09-12 22:07:41 -07:00
2026-09-15 03:38:29 -07:00
2026-09-12 22:07:41 -07:00
2026-09-16 14:34:59 -07:00
2026-09-18 11:01:52 -07:00
2026-09-18 10:17:59 -07:00
2026-09-17 00:34:50 -05:00
2026-09-19 03:43:58 +05:30
2026-09-15 19:06:54 -07:00
2026-09-16 16:53:40 -07:00
2026-09-08 03:06:30 -07:00
2026-09-15 18:24:22 -07:00
2026-09-12 08:25:54 -07:00
2026-09-18 10:24:15 -07:00
2026-09-12 08:25:54 -07:00
2026-09-15 04:12:13 -07:00
2026-09-18 01:43:35 +05:30
2026-09-18 12:46:54 -07:00
2026-09-18 12:51:22 -07:00
2026-09-15 04:12:13 -07:00
2026-09-15 14:52:26 +05:30
2026-09-17 14:24:53 -04:00
2026-09-15 18:25:46 -07:00
2026-09-18 01:43:35 +05:30
2026-09-17 09:06:59 -07:00
2026-09-12 22:00:02 -07:00
2026-09-18 01:43:35 +05:30
2026-09-08 13:39:17 -07:00
2026-09-15 04:08:53 -07:00
2026-09-18 09:55:21 -07:00
2026-09-15 04:12:13 -07:00
2026-09-17 18:36:22 +05:30
2026-09-13 20:50:10 -07:00
2026-09-15 19:05:29 -07:00
2026-09-15 19:05:29 -07:00
2026-09-15 06:29:50 -07:00
2026-09-12 08:25:36 -07:00
2026-09-18 20:55:49 -07:00
2026-09-12 16:17:04 -07:00
2026-09-18 20:55:24 -07:00
2026-09-15 06:29:50 -07:00
2026-09-15 21:47:48 -07:00
2026-09-15 05:25:39 -07:00
2026-09-15 00:41:13 +05:30
2026-09-18 09:41:02 -07:00
2026-09-18 12:49:40 -07:00
2026-09-17 09:06:59 -07:00
2026-09-16 08:57:18 -07:00
2026-09-13 05:07:11 -07:00
2026-09-13 05:09:06 -07:00
2026-09-18 12:46:54 -07:00
2026-09-15 05:38:31 -07:00
2026-09-18 09:38:01 -07:00
2026-09-13 05:07:11 -07:00
2026-09-13 09:18:02 -07:00
2026-09-16 23:13:20 -04:00
2026-09-10 01:25:45 -07:00
2026-09-18 12:44:32 -07:00
2026-09-18 09:56:28 -07:00
2026-09-13 05:09:06 -07:00
2026-09-16 17:02:34 -07:00
2026-09-16 23:19:45 +05:30
2026-09-18 21:47:13 +05:30
2026-09-15 12:06:08 -07:00
2026-09-17 19:00:40 -04:00
2026-09-06 05:41:46 -07:00
2026-09-13 20:51:06 -07:00
2026-09-12 21:39:10 -07:00
2026-09-14 08:10:36 -07:00
2026-09-18 12:52:36 -07:00
2026-09-15 04:12:13 -07:00
2026-09-16 08:57:18 -07:00
2026-09-16 00:33:03 -07:00
2026-09-16 08:57:18 -07:00
2026-09-16 08:57:18 -07:00
2026-09-15 03:44:36 -07:00
2026-09-15 04:07:13 -07:00
2026-09-18 17:49:41 -07:00
2026-09-19 02:06:55 +05:30
2026-09-18 10:01:01 -07:00
2026-09-16 16:43:08 -07:00
2026-09-07 00:51:41 -07:00
2026-09-18 10:00:29 -07:00
2026-09-17 20:56:27 +05:30
2026-09-16 00:32:15 -07:00
2026-09-18 11:01:52 -07:00
2026-09-16 16:58:43 -07:00
2026-09-18 20:34:16 -07:00
2026-09-07 14:16:57 -07:00
2026-09-18 22:36:24 -07:00
2026-09-16 16:51:45 -07:00
2026-09-18 20:34:16 -07:00
2026-09-18 09:48:41 -07:00
2026-09-18 20:34:16 -07:00
2026-09-15 18:35:32 -07:00
2026-09-07 04:46:54 -07:00
2026-09-15 18:34:40 -07:00
2026-09-07 04:46:54 -07:00
2026-09-07 04:46:54 -07:00
2026-09-15 18:33:43 -07:00
2026-09-09 12:18:58 -07:00
2026-09-18 09:50:19 -07:00
2026-09-16 16:56:22 -07:00
2026-09-17 20:56:27 +05:30
2026-09-15 04:12:13 -07:00
2026-09-18 10:10:05 -07:00
2026-09-15 04:12:13 -07:00
2026-09-17 09:19:19 -07:00
2026-09-15 18:35:59 -07:00
2026-09-12 08:25:54 -07:00
2026-09-18 15:40:37 +05:30
2026-09-15 04:12:13 -07:00
2026-09-16 16:18:17 -05:00
2026-09-19 03:43:58 +05:30
2026-09-18 09:38:34 -07:00
2026-09-17 08:44:33 -07:00
2026-09-16 15:16:09 -05:00
2026-09-18 10:01:01 -07:00
2026-09-18 12:47:49 -07:00
2026-09-15 19:06:54 -07:00
2026-09-18 09:23:13 -07:00
2026-09-15 03:38:29 -07:00
2026-09-17 09:03:29 -07:00
2026-09-16 17:11:01 -07:00
2026-09-15 05:34:29 -07:00
2026-09-13 05:07:11 -07:00
2026-09-10 04:22:38 -07:00
2026-09-13 20:54:50 -07:00
2026-09-15 04:12:13 -07:00
2026-09-15 03:39:45 -07:00
2026-09-18 15:40:37 +05:30
2026-09-18 11:01:52 -07:00
2026-09-19 10:43:50 +05:30
2026-09-18 15:40:37 +05:30
2026-09-10 09:11:00 -07:00
2026-09-18 11:01:52 -07:00
2026-09-12 01:35:05 -07:00
2026-09-12 01:35:05 -07:00
2026-09-15 18:58:02 -07:00
2026-09-19 01:44:53 +05:30
2026-09-14 22:01:32 +00:00
2026-09-11 03:45:31 +05:30
2026-09-10 18:11:25 -07:00
2026-09-19 01:44:53 +05:30
2026-09-16 00:32:15 -07:00
2026-09-18 09:43:19 -07:00
2026-09-16 17:15:38 -07:00
2026-09-17 00:11:27 -07:00
2026-09-17 00:11:27 -07:00
2026-09-17 00:11:27 -07:00
2026-09-18 09:43:19 -07:00
2026-09-18 10:01:01 -07:00
2026-09-15 18:48:59 -07:00
2026-09-17 09:03:29 -07:00
2026-09-16 17:08:25 -07:00
2026-09-17 00:11:27 -07:00
2026-09-17 00:11:27 -07:00
2026-09-17 18:36:20 -07:00
2026-09-11 03:45:31 +05:30
2026-09-16 00:32:15 -07:00
2026-09-13 14:33:11 -07:00
2026-09-16 14:21:14 -07:00
2026-09-16 14:34:59 -07:00
2026-09-06 05:34:01 -07:00
2026-09-18 10:01:01 -07:00
2026-09-16 14:34:22 -07:00
2026-09-18 10:18:40 -07:00
2026-09-13 05:08:29 -07:00
2026-09-18 15:40:37 +05:30
2026-09-18 15:40:37 +05:30
2026-09-13 05:07:50 -07:00
2026-09-13 05:07:11 -07:00
2026-09-18 09:52:03 -07:00
2026-09-15 06:36:19 -07:00
2026-09-18 12:48:16 -07:00
2026-09-14 19:49:12 +05:30
2026-09-15 03:44:36 -07:00
2026-09-18 12:49:40 -07:00
2026-09-13 05:07:50 -07:00
2026-09-13 05:07:50 -07:00
2026-09-19 03:43:03 +05:30
2026-09-15 04:12:13 -07:00
2026-09-19 00:24:50 +05:30
2026-09-15 18:30:05 -07:00
2026-09-11 06:24:54 -07:00
2026-09-11 06:24:54 -07:00
2026-09-11 06:24:54 -07:00
2026-09-17 21:17:15 +05:30
2026-09-16 17:02:13 -07:00
2026-09-18 10:38:41 -07:00
2026-09-09 13:30:28 -07:00
2026-09-11 06:24:54 -07:00
2026-09-18 22:36:41 -07:00
2026-09-18 22:36:41 -07:00
2026-09-18 22:36:41 -07:00
2026-09-13 05:32:38 -07:00
2026-09-15 04:12:13 -07:00
2026-09-18 21:47:13 +05:30
2026-09-18 09:47:06 -07:00
2026-09-12 08:25:54 -07:00
2026-09-15 04:12:13 -07:00
2026-09-18 10:45:07 -07:00
2026-09-18 12:51:22 -07:00
2026-09-12 08:25:54 -07:00
2026-09-18 12:51:22 -07:00
2026-09-13 05:08:29 -07:00
2026-09-18 09:38:34 -07:00
2026-09-11 03:45:31 +05:30
2026-09-12 21:47:53 -07:00
2026-09-13 05:21:02 -07:00
2026-09-14 08:10:36 -07:00
2026-09-16 17:58:25 +00:00
2026-09-15 03:53:13 -07:00
2026-09-15 18:55:47 -07:00
2026-09-16 00:32:15 -07:00
2026-09-15 14:52:26 +05:30
2026-09-11 06:24:54 -07:00
2026-09-08 19:52:26 +05:30
2026-09-15 04:12:13 -07:00
2026-09-12 08:34:43 -07:00
2026-09-16 16:42:47 -07:00
2026-09-16 16:42:47 -07:00
2026-09-12 08:25:54 -07:00
2026-09-18 17:09:28 +02:00
2026-09-17 00:02:09 -07:00
2026-09-17 20:35:22 -07:00
2026-09-13 05:08:20 -07:00
2026-09-18 12:47:23 -07:00
2026-09-16 17:44:36 -07:00
2026-09-18 10:15:11 -07:00
2026-09-18 12:44:04 -07:00
2026-09-17 00:11:27 -07:00
2026-09-18 19:57:08 -07:00
2026-09-17 00:02:09 -07:00
2026-09-18 17:09:28 +02:00
2026-09-15 04:12:13 -07:00
2026-09-18 12:47:23 -07:00
2026-09-18 15:11:47 -07:00
2026-09-18 17:09:28 +02:00
2026-09-10 11:48:01 -07:00
2026-09-13 19:19:32 -07:00
2026-09-09 21:16:40 +05:30
2026-09-18 20:55:24 -07:00
2026-09-18 12:46:54 -07:00
2026-09-18 15:12:27 -07:00
2026-09-07 07:11:36 -07:00
2026-09-18 15:11:47 -07:00
2026-09-17 00:34:50 -05:00
2026-09-17 00:34:50 -05:00
2026-09-14 08:10:36 -07:00
2026-09-18 09:20:07 -07:00
2026-09-12 18:35:21 -07:00
2026-09-15 20:44:42 +05:30
2026-09-18 10:18:40 -07:00
2026-09-11 06:37:27 -07:00
2026-09-18 15:12:27 -07:00
2026-09-13 21:30:02 -07:00
2026-09-13 20:55:29 -07:00
2026-09-15 18:27:06 -07:00
2026-09-16 16:43:08 -07:00
2026-09-09 02:36:00 -07:00