hmo
7b26c373d1
fix(reassess): stale_detector timeout 60->240s + batch cap 5/run + GATE_ZONE_SANITY
...
Three issues from zhiwei's strategy report:
1. '37 reassess all timed out (subprocess 60s)': real cause is per-call LLM
latency exceeding the 60s per-subprocess limit during the key5-dead/
gateway-unstable window. NOT 'no concurrency control' as reported (60s
is per stock, not for the batch). Fixes: per-call timeout 60->240s
(LLM cold-start is 20-100s), and cap AUTO_REASSESS batch to 5 stocks
per run with remainder continuing next run (was unbounded serial calls
that also blew the 120s cron script window).
2. '15 stocks entry-zone center wrongly 97.0': quality gates had no
zone-sanity-vs-price check, so bad data (bad quote or LLM template
output) could be written freely. New GATE_ZONE_SANITY (CRITICAL):
zone center must be within 0.3x-3x of current price. Verified: rejects
the exact 97-center-vs-5.69-price corruption, passes legit zones.
3. 'reassess overwrites manual SQL fixes': true by design; with
GATE_ZONE_SANITY at write time, reassess can no longer overwrite good
values with garbage - invalid writes get rejected + flagged instead.
2026-07-20 22:05:00 +08:00
..
2026-07-08 12:34:39 +08:00
2026-07-06 14:01:54 +08:00
2026-07-08 23:54:01 +08:00
2026-07-09 17:57:17 +08:00
2026-07-20 19:04:05 +08:00
2026-07-08 12:37:36 +08:00
2026-07-20 01:12:38 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 17:46:57 +08:00
2026-07-10 13:58:23 +08:00
2026-07-04 09:30:50 +08:00
2026-07-08 23:54:01 +08:00
2026-07-09 19:42:35 +08:00
2026-07-10 14:06:20 +08:00
2026-07-20 18:10:05 +08:00
2026-07-20 22:05:00 +08:00
2026-07-20 08:48:08 +08:00
2026-07-20 22:05:00 +08:00
2026-07-20 01:34:37 +08:00
2026-07-19 20:12:47 +08:00
2026-07-19 11:06:50 +08:00
2026-07-20 08:48:08 +08:00
2026-07-20 17:30:15 +08:00
2026-07-20 20:55:30 +08:00
2026-07-20 17:46:57 +08:00
2026-07-20 17:30:15 +08:00
2026-07-20 01:12:38 +08:00
2026-07-19 11:06:50 +08:00
2026-07-20 17:30:15 +08:00
2026-07-19 11:06:50 +08:00
2026-07-20 17:46:57 +08:00
2026-07-20 17:30:15 +08:00
2026-07-19 11:06:50 +08:00
2026-07-20 20:55:30 +08:00
2026-07-06 14:01:54 +08:00
2026-07-08 23:54:01 +08:00
2026-07-20 19:04:05 +08:00
2026-07-08 23:54:01 +08:00
2026-07-20 19:04:05 +08:00
2026-07-08 19:50:44 +08:00
2026-07-14 10:56:38 +08:00
2026-07-20 01:12:38 +08:00
2026-07-14 12:14:08 +08:00
2026-07-06 14:01:54 +08:00
2026-07-08 23:54:01 +08:00
2026-07-08 19:50:44 +08:00
2026-07-10 11:59:08 +08:00
2026-07-14 11:08:07 +08:00
2026-07-19 20:12:47 +08:00
2026-07-20 22:05:00 +08:00
2026-07-20 01:12:38 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-14 15:00:56 +08:00
2026-07-19 11:06:50 +08:00
2026-07-20 01:12:38 +08:00
2026-07-19 11:06:50 +08:00
2026-07-20 17:30:15 +08:00
2026-07-10 10:26:14 +08:00
2026-07-20 01:34:37 +08:00
2026-07-06 14:01:54 +08:00
2026-07-20 17:30:15 +08:00
2026-07-20 20:27:11 +08:00
2026-07-01 23:00:28 +08:00
2026-07-06 14:01:54 +08:00
2026-07-03 12:12:05 +08:00
2026-07-09 19:42:35 +08:00
2026-07-17 23:08:11 +08:00
2026-07-20 19:04:05 +08:00
2026-07-14 10:56:38 +08:00
2026-07-20 17:30:15 +08:00
2026-07-20 17:30:15 +08:00
2026-07-20 17:30:15 +08:00
2026-07-20 17:30:15 +08:00
2026-07-20 17:30:15 +08:00
2026-07-19 20:12:47 +08:00
2026-07-19 11:06:50 +08:00
2026-07-02 13:46:53 +08:00
2026-07-01 23:00:28 +08:00
2026-07-08 12:37:36 +08:00
2026-07-19 12:47:15 +08:00
2026-07-08 20:04:32 +08:00
2026-07-08 12:37:36 +08:00
2026-06-27 01:37:18 +08:00
2026-07-20 19:04:05 +08:00
2026-06-24 00:15:33 +08:00
2026-07-08 12:34:39 +08:00
2026-07-06 14:01:54 +08:00
2026-07-20 18:10:05 +08:00
2026-07-09 16:35:27 +08:00
2026-07-06 14:01:54 +08:00
2026-07-06 14:01:54 +08:00
2026-07-08 23:54:01 +08:00
2026-07-08 23:54:01 +08:00
2026-07-20 18:10:05 +08:00
2026-07-14 10:56:38 +08:00
2026-07-08 12:37:36 +08:00
2026-07-06 14:01:54 +08:00
2026-07-09 11:13:45 +08:00
2026-07-08 12:34:39 +08:00
2026-07-08 23:54:01 +08:00
2026-07-20 17:33:39 +08:00
2026-07-20 18:10:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:39:58 +08:00
2026-07-20 20:27:11 +08:00
2026-07-20 17:30:15 +08:00
2026-06-30 02:56:35 +08:00
2026-07-13 12:09:25 +08:00
2026-07-19 20:12:47 +08:00
2026-07-08 23:54:01 +08:00
2026-07-09 13:43:30 +08:00
2026-07-10 12:20:18 +08:00
2026-07-08 16:18:26 +08:00
2026-07-20 18:10:05 +08:00
2026-07-06 14:01:54 +08:00
2026-07-13 12:09:25 +08:00
2026-07-04 09:30:50 +08:00
2026-07-08 23:54:01 +08:00
2026-07-06 14:01:54 +08:00
2026-07-20 19:39:58 +08:00
2026-07-20 19:39:58 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 19:04:05 +08:00
2026-07-03 12:12:05 +08:00
2026-07-04 09:45:27 +08:00
2026-07-20 00:40:32 +08:00
2026-07-20 08:48:08 +08:00
2026-07-20 18:10:05 +08:00
2026-07-14 10:56:38 +08:00
2026-07-08 12:34:39 +08:00
2026-07-06 14:01:54 +08:00
2026-07-13 12:09:25 +08:00
2026-07-13 12:09:25 +08:00
2026-07-08 23:54:01 +08:00
2026-07-08 23:54:01 +08:00
2026-06-29 23:25:54 +08:00
2026-07-08 12:37:36 +08:00
2026-07-08 23:54:01 +08:00
2026-07-08 12:37:36 +08:00
2026-07-17 23:08:11 +08:00
2026-07-08 23:54:01 +08:00
2026-07-08 12:34:39 +08:00
2026-07-08 23:54:01 +08:00
2026-07-19 10:56:42 +08:00
2026-07-09 13:43:30 +08:00
2026-07-06 14:01:54 +08:00
2026-07-07 11:20:04 +08:00
2026-07-19 23:23:46 +08:00
2026-07-17 23:08:11 +08:00
2026-07-08 12:34:39 +08:00
2026-07-10 21:07:59 +08:00
2026-07-19 20:12:47 +08:00
2026-07-20 21:42:59 +08:00
2026-07-20 18:10:05 +08:00
2026-07-20 17:46:57 +08:00
2026-07-20 17:46:57 +08:00
2026-07-20 17:30:15 +08:00
2026-07-19 23:23:46 +08:00
2026-07-19 22:09:15 +08:00
2026-07-19 20:12:47 +08:00
2026-07-20 21:42:59 +08:00
2026-07-20 01:12:38 +08:00
2026-07-20 00:21:49 +08:00
2026-07-20 21:42:59 +08:00
2026-07-19 20:12:47 +08:00
2026-07-20 17:46:57 +08:00
2026-07-20 19:39:58 +08:00
2026-07-19 11:06:50 +08:00
2026-07-19 23:23:46 +08:00
2026-07-19 20:12:47 +08:00
2026-07-20 22:05:00 +08:00
2026-07-20 22:05:00 +08:00
2026-07-08 12:37:36 +08:00
2026-07-20 20:55:30 +08:00
2026-07-20 19:04:05 +08:00
2026-07-20 08:48:08 +08:00
2026-07-08 10:13:49 +08:00
2026-07-20 01:12:38 +08:00
2026-07-20 08:48:08 +08:00
2026-07-20 20:27:11 +08:00
2026-07-20 00:07:28 +08:00
2026-07-20 17:30:15 +08:00
2026-07-07 15:33:14 +08:00
2026-07-20 19:39:58 +08:00
2026-07-19 11:06:50 +08:00
2026-07-10 12:20:18 +08:00
2026-07-08 12:37:36 +08:00
2026-07-01 23:00:28 +08:00
2026-07-06 14:01:54 +08:00
2026-07-09 10:35:34 +08:00
2026-07-02 01:43:33 +08:00