Teknium
de07bd5fab
fix(serve): emit BACKEND_PORT_IN_USE sentinel + exit 75 on port bind conflict ( #93608 )
...
A held port made 'hermes serve' print only uvicorn's bare
'ERROR: [Errno 98/10048] error while attempting to bind on address'
and exit 1 — indistinguishable from a broken backend for the desktop
spawn and wrapping scripts.
- Preflight bind probe (matching uvicorn's SO_REUSEADDR bind flags)
before uvicorn.Server; on conflict print machine-readable
'BACKEND_PORT_IN_USE port=<port>' + a human hint naming likely
holders, exit 75 (EX_TEMPFAIL — existing repo convention, see
gateway/restart.py, kanban_db.py).
- Probe-to-bind race covered: SystemExit(1) from uvicorn's own bind
failure is re-checked and translated on both POSIX and Windows
runner paths.
- --port 0 (ephemeral) short-circuits the probe: unchanged behavior.
- HERMES_BACKEND_READY contract untouched.
- Tests: real held-socket repro (sentinel + exit 75, sabotage-proven
to fail as bare exit 1 without the fix), free-port boot regression,
ephemeral-port regression, probe/classification units.
- Docs: port-conflict paragraph under 'hermes serve' in
reference/cli-commands.md.
2026-08-24 09:55:15 -07:00
..
2026-08-15 00:33:01 -07:00
2026-08-22 23:25:29 -07:00
2026-08-19 19:22:48 -07:00
2026-08-23 20:00:53 -07:00
2026-08-24 03:22:57 -07:00
2026-08-22 23:25:43 -07:00
2026-08-16 06:29:53 -07:00
2026-08-16 22:06:24 -07:00
2026-08-21 13:01:35 -07:00
2026-08-20 01:47:06 -07:00
2026-08-21 14:39:02 -07:00
2026-08-14 22:04:16 -07:00
2026-08-16 06:25:46 -07:00
2026-08-22 19:30:10 -07:00
2026-08-16 06:32:08 -07:00
2026-08-16 06:31:26 -07:00
2026-08-21 15:23:51 -07:00
2026-08-24 15:42:58 +05:30
2026-08-16 01:52:00 -07:00
2026-08-17 15:47:17 -07:00
2026-08-23 03:55:14 -07:00
2026-08-23 02:14:35 -07:00
2026-08-15 02:04:49 -07:00
2026-08-15 00:36:03 -07:00
2026-08-20 04:08:57 -07:00
2026-08-16 11:34:40 -07:00
2026-08-22 02:25:12 -04:00
2026-08-20 01:46:54 -07:00
2026-08-16 22:18:04 -07:00
2026-08-24 03:20:28 -07:00
2026-08-15 00:33:32 -07:00
2026-08-19 19:22:48 -07:00
2026-08-17 11:29:10 -07:00
2026-08-15 00:32:53 -07:00
2026-08-17 02:27:37 -07:00
2026-08-23 21:12:20 -07:00
2026-08-23 21:12:20 -07:00
2026-08-24 15:45:52 +05:30
2026-08-20 20:21:12 -07:00
2026-08-18 14:26:16 -07:00
2026-08-16 01:55:25 -07:00
2026-08-23 19:55:17 -07:00
2026-08-23 16:09:14 -07:00
2026-08-23 15:49:44 -07:00
2026-08-21 22:33:45 +05:30
2026-08-23 19:55:17 -07:00
2026-08-14 21:56:33 -07:00
2026-08-19 19:24:41 -07:00
2026-08-24 03:14:30 -07:00
2026-08-22 21:36:44 -07:00
2026-08-17 02:56:17 -07:00
2026-08-17 14:02:07 +05:30
2026-08-19 23:03:58 -07:00
2026-08-15 03:54:07 -07:00
2026-08-22 13:39:04 -04:00
2026-08-22 13:38:56 -04:00
2026-08-15 03:54:07 -07:00
2026-08-23 05:12:59 -07:00
2026-08-22 23:46:06 -07:00
2026-08-15 18:15:13 -07:00
2026-08-21 14:13:28 +10:00
2026-08-16 01:54:35 -07:00
2026-08-16 02:01:15 -07:00
2026-08-21 03:51:03 -07:00
2026-08-23 18:42:59 -07:00
2026-08-22 15:27:26 +05:30
2026-08-16 06:26:12 -07:00
2026-08-20 23:41:00 -07:00
2026-08-15 00:36:03 -07:00
2026-08-21 02:48:14 +08:00
2026-08-18 16:08:29 -07:00
2026-08-24 06:48:10 -05:00
2026-08-19 19:42:31 -07:00
2026-08-19 16:10:01 -07:00
2026-08-16 13:01:20 -07:00
2026-08-21 14:38:41 -07:00
2026-08-19 23:28:14 -05:00
2026-08-22 22:00:19 -07:00
2026-08-18 11:58:48 -07:00
2026-08-14 22:25:23 -07:00
2026-08-17 14:16:21 +05:30
2026-08-17 14:16:21 +05:30
2026-08-17 14:16:21 +05:30
2026-08-16 21:56:30 -07:00
2026-08-15 00:36:03 -07:00
2026-08-23 03:55:14 -07:00
2026-08-21 13:41:39 -07:00
2026-08-18 14:26:16 -07:00
2026-08-18 16:08:29 -07:00
2026-08-18 20:42:06 -04:00
2026-08-15 10:29:05 +05:30
2026-08-14 22:37:46 -07:00
2026-08-15 02:03:24 -07:00
2026-08-19 23:15:01 -07:00
2026-08-17 12:58:51 -07:00
2026-08-15 00:34:29 -07:00
2026-08-21 14:38:19 -07:00
2026-08-18 14:26:16 -07:00
2026-08-17 12:58:51 -07:00
2026-08-23 02:14:35 -07:00
2026-08-18 14:26:16 -07:00
2026-08-19 01:19:28 -07:00
2026-08-19 23:28:14 -05:00
2026-08-22 21:36:55 -07:00
2026-08-19 19:41:52 -07:00
2026-08-21 04:44:15 -07:00
2026-08-23 00:52:50 -07:00
2026-08-23 03:56:28 -07:00
2026-08-15 00:32:44 -07:00
2026-08-23 04:45:29 -07:00
2026-08-16 22:08:37 -07:00
2026-08-17 17:23:30 -07:00
2026-08-19 08:52:03 -07:00
2026-08-19 08:52:03 -07:00
2026-08-16 11:34:40 -07:00
2026-08-20 04:30:33 -07:00
2026-08-20 04:47:38 -07:00
2026-08-18 02:27:18 -07:00
2026-08-15 00:32:53 -07:00
2026-08-17 02:11:27 -07:00
2026-08-15 00:33:11 -07:00
2026-08-21 00:24:32 -07:00
2026-08-21 00:24:32 -07:00
2026-08-20 01:46:20 -07:00
2026-08-15 14:24:35 -07:00
2026-08-23 01:47:26 -07:00
2026-08-19 23:28:14 -05:00
2026-08-19 08:52:03 -07:00
2026-08-14 22:11:30 -07:00
2026-08-17 15:47:17 -07:00
2026-08-20 04:50:39 -07:00
2026-08-23 04:45:29 -07:00
2026-08-23 18:25:35 -07:00
2026-08-21 14:38:41 -07:00
2026-08-16 02:03:22 -07:00
2026-08-16 02:14:35 -07:00
2026-08-24 09:55:15 -07:00
2026-08-20 12:37:16 -05:00
2026-08-15 02:04:49 -07:00
2026-08-15 00:55:20 -07:00
2026-08-15 02:04:49 -07:00
2026-08-16 01:55:25 -07:00
2026-08-20 02:06:05 -07:00
2026-08-16 22:09:17 -07:00
2026-08-20 11:36:54 +05:30
2026-08-24 15:45:52 +05:30
2026-08-24 15:45:52 +05:30
2026-08-22 19:30:10 -07:00
2026-08-23 05:12:59 -07:00
2026-08-19 01:23:17 +05:30
2026-08-19 10:19:35 -07:00
2026-08-20 02:58:31 +05:30
2026-08-20 02:58:31 +05:30
2026-08-24 03:20:37 -07:00
2026-08-16 01:54:35 -07:00
2026-08-19 16:10:01 -07:00
2026-08-20 03:05:46 -07:00
2026-08-21 04:44:15 -07:00
2026-08-15 18:15:18 -07:00
2026-08-14 22:11:30 -07:00
2026-08-24 15:45:52 +05:30
2026-08-19 16:10:01 -07:00
2026-08-14 21:56:33 -07:00
2026-08-24 03:20:37 -07:00
2026-08-15 00:36:03 -07:00
2026-08-16 01:59:58 -07:00
2026-08-22 23:10:32 -04:00
2026-08-20 04:54:14 -07:00
2026-08-14 22:03:56 -07:00
2026-08-19 13:17:44 -05:00
2026-08-19 02:10:37 -05:00
2026-08-20 02:45:57 -07:00
2026-08-24 03:21:18 -07:00
2026-08-16 10:51:50 -07:00
2026-08-14 22:03:56 -07:00
2026-08-23 04:25:18 -07:00
2026-08-20 04:14:42 -07:00
2026-08-24 03:21:28 -07:00
2026-08-17 23:53:05 -07:00
2026-08-14 22:03:56 -07:00
2026-08-14 22:03:56 -07:00
2026-08-23 04:45:29 -07:00
2026-08-23 04:45:29 -07:00
2026-08-23 04:45:29 -07:00
2026-08-21 15:23:49 -07:00
2026-08-23 00:50:41 -07:00
2026-08-21 03:44:55 -07:00
2026-08-15 13:28:14 -07:00
2026-08-15 03:54:07 -07:00
2026-08-22 19:30:10 -07:00
2026-08-20 03:43:00 -07:00
2026-08-20 12:41:33 -05:00
2026-08-16 10:51:50 -07:00
2026-08-20 05:02:36 -07:00
2026-08-23 02:16:33 -07:00
2026-08-16 22:07:09 -07:00
2026-08-15 02:45:27 -07:00
2026-08-21 22:08:16 -07:00
2026-08-21 22:08:16 -07:00
2026-08-21 22:08:16 -07:00
2026-08-21 19:11:55 -07:00
2026-08-21 19:11:55 -07:00
2026-08-19 16:10:01 -07:00
2026-08-15 01:05:39 -07:00
2026-08-16 11:34:40 -07:00
2026-08-19 01:23:39 -05:00
2026-08-15 01:53:34 -07:00
2026-08-15 00:37:00 -07:00
2026-08-16 20:32:09 -07:00
2026-08-16 20:53:44 -07:00
2026-08-23 19:55:17 -07:00
2026-08-23 15:21:48 -07:00
2026-08-15 00:32:53 -07:00
2026-08-24 03:21:49 -07:00
2026-08-24 03:15:07 -07:00
2026-08-16 01:59:58 -07:00
2026-08-22 21:36:44 -07:00
2026-08-22 13:38:56 -04:00
2026-08-20 01:45:56 -07:00
2026-08-19 23:55:20 -07:00