Benjamin Admin
f6d018234b
feat(dse): recover v3 DSE engine from container + wire into live check path
...
The calibrated DSE engine (4-layer: regex-boost / keyword / BGE-M3 embedding
recall @0.65 / semantic-validator) existed ONLY in the running macmini
container (docker cp'd, never committed) — at risk of loss on any container
rebuild. This recovers it into git and wires it into the live check path.
- Recover dse/{agent,v3_engine,_embedding_recall,_classification_gate,
regex_boost,mcs,deep_check}.py. DSEAgent (v3, BaseSpecialistAgent) replaces
the keyword-only stub: delegates MC-loading to the main engine
(rag_document_checker._load_controls), deterministic cached embedding recall
(reachability-gated), semantic-validator LLM layer honoring skip_llm,
third-country -> HIGH on documented transfer.
- Wire "dse" into _agent_outputs._TOPIC_AGENTS -> live check emits a validated
DSE tab (was snapshot/legacy-only).
- Tests rewritten for v3 (DB/embedding/LLM stubbed offline): regex-boost
detection, embedding-recall reachability guard, result->Finding conversion,
third-country HIGH; topic-wiring asserts "dse".
- deep_check.py recovered for preservation (alternate LLM-judge path, unwired).
Runtime data deps for full live behavior (note for prod): doc_check_controls
in DB + /data/mc_classification.db embedding sidecar + embedding-service; all
degrade gracefully (keyword layer carries) if absent.
dev-only, no deploy.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-21 11:15:52 +02:00
..
2026-06-21 09:23:21 +02:00
2026-06-11 14:31:41 +02:00
2026-06-08 11:35:55 +02:00
2026-06-21 11:15:52 +02:00
2026-02-11 23:47:28 +01:00
2026-05-11 22:52:26 +02:00
2026-06-07 00:42:16 +02:00
2026-04-29 15:27:51 +02:00
2026-05-10 22:56:09 +02:00
2026-06-06 21:19:49 +02:00
2026-03-07 19:00:33 +01:00
2026-06-07 00:15:08 +02:00
2026-06-06 22:20:25 +02:00
2026-03-21 11:49:43 +01:00
2026-03-23 17:15:45 +01:00
2026-04-07 13:18:29 +02:00
2026-05-21 23:36:45 +02:00
2026-06-13 15:57:07 +02:00
2026-04-07 18:39:40 +02:00
2026-04-07 18:39:40 +02:00
2026-06-07 23:48:04 +02:00
2026-04-07 13:18:29 +02:00
2026-05-03 21:42:50 +02:00
2026-04-07 18:52:31 +02:00
2026-05-03 20:58:06 +02:00
2026-05-12 14:43:13 +02:00
2026-05-21 17:27:55 +02:00
2026-05-12 18:18:50 +02:00
2026-05-02 19:52:04 +02:00
2026-05-22 08:24:46 +02:00
2026-03-24 08:48:58 +01:00
2026-05-22 09:23:37 +02:00
2026-05-18 23:48:34 +02:00
2026-06-13 16:38:38 +02:00
2026-05-19 12:22:05 +02:00
2026-05-02 21:18:10 +02:00
2026-06-06 23:25:20 +02:00
2026-06-07 18:41:54 +02:00
2026-05-22 08:57:02 +02:00
2026-06-12 23:03:28 +02:00
2026-03-21 11:49:43 +01:00
2026-06-06 21:19:49 +02:00
2026-06-07 08:26:14 +02:00
2026-05-10 22:56:09 +02:00
2026-05-19 14:31:13 +02:00
2026-05-21 21:30:02 +02:00
2026-05-18 23:48:34 +02:00
2026-05-22 08:38:08 +02:00
2026-06-06 14:47:25 +02:00
2026-03-17 09:00:37 +01:00
2026-03-24 07:06:38 +01:00
2026-04-10 11:23:43 +02:00
2026-03-23 17:15:45 +01:00
2026-03-23 17:15:45 +01:00
2026-06-16 16:35:38 +02:00
2026-05-21 06:28:25 +02:00
2026-06-08 08:20:39 +02:00
2026-05-21 23:36:45 +02:00
2026-06-07 23:48:04 +02:00
2026-06-11 21:00:50 +02:00
2026-05-18 23:48:34 +02:00
2026-05-18 18:30:08 +02:00
2026-05-18 23:48:34 +02:00
2026-05-18 23:48:34 +02:00
2026-06-11 21:26:47 +02:00
2026-06-08 08:20:39 +02:00
2026-05-21 15:47:11 +02:00
2026-05-18 18:30:08 +02:00
2026-05-22 00:24:07 +02:00
2026-06-07 23:48:04 +02:00
2026-05-19 01:01:48 +02:00
2026-06-06 23:35:33 +02:00
2026-06-06 23:35:33 +02:00
2026-06-11 20:45:18 +02:00
2026-05-02 20:06:57 +02:00
2026-05-21 18:32:07 +02:00
2026-05-22 00:24:07 +02:00
2026-05-22 19:17:21 +02:00
2026-06-14 21:49:22 +02:00
2026-06-16 18:48:52 +02:00
2026-06-14 12:37:22 +02:00
2026-06-17 07:39:39 +02:00
2026-06-17 13:17:51 +02:00
2026-06-17 21:21:28 +02:00
2026-06-17 21:21:28 +02:00
2026-06-14 08:21:56 +02:00
2026-06-16 10:10:45 +02:00
2026-06-14 08:59:41 +02:00
2026-06-13 21:24:53 +02:00
2026-06-14 09:27:09 +02:00
2026-06-17 13:17:51 +02:00
2026-06-06 21:19:49 +02:00
2026-06-11 15:42:16 +02:00
2026-06-08 16:39:33 +02:00
2026-03-28 17:24:19 +01:00
2026-05-18 18:30:08 +02:00
2026-05-21 18:58:32 +02:00
2026-06-06 21:19:49 +02:00
2026-05-21 16:45:12 +02:00
2026-05-04 23:22:30 +02:00
2026-05-04 23:22:30 +02:00
2026-04-29 19:36:46 +02:00
2026-04-10 11:23:43 +02:00
2026-04-10 11:23:43 +02:00
2026-05-07 12:37:03 +02:00
2026-05-11 23:39:26 +02:00
2026-05-03 23:38:32 +02:00
2026-05-03 23:15:25 +02:00
2026-04-10 11:23:43 +02:00
2026-05-02 19:52:04 +02:00
2026-05-03 23:38:32 +02:00
2026-04-08 22:39:19 +02:00
2026-04-08 22:39:19 +02:00
2026-04-08 21:59:03 +02:00
2026-06-06 14:47:25 +02:00
2026-04-07 13:18:29 +02:00
2026-05-18 18:30:08 +02:00
2026-05-21 16:20:19 +02:00
2026-06-08 16:39:33 +02:00
2026-03-23 12:11:55 +01:00
2026-05-21 20:21:28 +02:00
2026-06-07 17:51:17 +02:00
2026-04-09 08:35:57 +02:00
2026-04-09 08:35:57 +02:00
2026-05-21 16:43:15 +02:00
2026-05-22 08:38:08 +02:00
2026-05-02 08:37:51 +02:00
2026-04-10 11:23:43 +02:00
2026-04-10 11:23:43 +02:00
2026-04-10 11:23:43 +02:00
2026-04-10 11:23:43 +02:00
2026-05-21 17:31:37 +02:00
2026-06-09 12:33:34 +02:00
2026-06-09 12:33:34 +02:00
2026-05-04 23:22:30 +02:00
2026-04-09 08:47:56 +02:00
2026-06-08 09:32:25 +02:00
2026-03-12 19:55:06 +01:00
2026-06-16 20:22:57 +02:00
2026-03-25 23:25:14 +01:00
2026-05-21 17:06:48 +02:00
2026-05-04 23:22:30 +02:00
2026-05-22 11:51:03 +02:00
2026-05-18 18:30:08 +02:00
2026-05-22 08:57:02 +02:00
2026-05-22 09:40:11 +02:00
2026-05-17 14:06:28 +02:00
2026-05-17 14:06:28 +02:00
2026-06-08 10:04:14 +02:00
2026-03-23 17:15:45 +01:00
2026-04-10 11:23:43 +02:00
2026-04-10 11:23:43 +02:00
2026-03-21 11:49:43 +01:00
2026-03-17 09:00:37 +01:00
2026-02-11 23:47:28 +01:00
2026-03-17 09:00:37 +01:00
2026-06-10 23:44:01 +02:00
2026-03-21 11:49:43 +01:00
2026-06-09 11:30:16 +02:00
2026-05-22 08:24:46 +02:00
2026-06-06 23:13:50 +02:00
2026-04-10 11:23:43 +02:00
2026-04-07 13:18:29 +02:00
2026-04-07 13:18:29 +02:00
2026-03-21 11:49:43 +01:00
2026-06-06 21:19:49 +02:00
2026-06-07 08:50:46 +02:00
2026-05-22 08:38:08 +02:00
2026-05-21 16:38:25 +02:00
2026-06-18 12:05:05 +02:00
2026-04-07 20:03:16 +02:00
2026-05-17 01:53:09 +02:00
2026-03-07 19:00:33 +01:00
2026-05-13 16:00:15 +02:00
2026-05-04 23:34:00 +02:00
2026-03-12 19:55:06 +01:00
2026-06-06 14:47:25 +02:00
2026-04-07 19:58:02 +02:00
2026-05-04 07:01:37 +02:00
2026-05-22 19:00:27 +02:00
2026-05-18 23:48:34 +02:00
2026-06-06 23:13:50 +02:00
2026-04-07 19:42:17 +02:00
2026-05-03 22:03:25 +02:00
2026-06-06 21:42:27 +02:00
2026-05-18 23:48:34 +02:00
2026-05-18 23:48:34 +02:00
2026-06-07 00:23:25 +02:00
2026-06-17 13:17:51 +02:00
2026-03-26 11:13:37 +01:00
2026-05-12 23:14:54 +02:00
2026-05-12 23:24:12 +02:00
2026-05-02 19:52:04 +02:00
2026-05-17 13:15:40 +02:00
2026-04-10 11:23:43 +02:00
2026-04-10 11:23:43 +02:00
2026-04-10 11:23:43 +02:00
2026-06-06 21:19:49 +02:00
2026-05-18 18:30:08 +02:00
2026-05-21 06:28:25 +02:00
2026-05-22 21:55:23 +02:00
2026-05-21 23:36:45 +02:00
2026-05-21 08:01:27 +02:00
2026-05-18 18:30:08 +02:00
2026-05-12 18:18:50 +02:00
2026-04-07 19:50:40 +02:00
2026-05-02 08:26:59 +02:00
2026-05-11 11:44:20 +02:00
2026-06-07 18:41:54 +02:00