Benjamin Admin
0ce4794767
feat(ai-sdk): pluggable LLM judgment over recall-safe dedup candidates (P2 slice 2)
...
Adds the semantic judgement layer on top of the slice-1 detector + GT wall.
DEV-TIME, propose-only — nothing mutates the library or runtime.
- CandidateJudge interface with two implementations: HeuristicJudge
(deterministic default/fallback, used in tests) and LLMJudge (offline, over the
shared llm.ProviderRegistry via the LLMCompleter adapter). LLMJudge degrades to
"uncertain" on any transport/parse error — it can never break a run.
- BuildJudgePrompt: the ISO 12100 same-vs-distinct prompt, unit-tested
deterministically even though the call is not.
- RenderProposalQueue: markdown human-review queue with a suggested action per
candidate (supersede / keep both / needs review).
On real warewashing output the heuristic punts to "uncertain — needs the LLM
judge" for exactly the two recall-safe near-dupes (HP807/HP033 update,
HP101/HP096 winding-vs-friction), making the LLM's role explicit. All 3 GTs
unaffected (read-only). Live qwen wiring + a CLI/file queue are slice 3.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-26 10:27:01 +02:00
..
2026-05-21 10:51:08 +02:00
2026-06-13 17:01:41 +02:00
2026-06-24 23:46:19 +02:00
2026-06-11 09:35:37 +02:00
2026-06-12 09:18:03 +02:00
2026-06-11 14:59:47 +02:00
2026-05-15 10:08:21 +02:00
2026-06-11 14:59:47 +02:00
2026-05-17 01:39:17 +02:00
2026-02-25 22:27:06 +01:00
2026-02-25 22:27:06 +01:00
2026-04-19 10:03:44 +02:00
2026-03-16 12:50:53 +01:00
2026-04-19 10:03:44 +02:00
2026-05-21 23:36:26 +02:00
2026-05-09 07:25:39 +02:00
2026-05-09 07:25:39 +02:00
2026-05-09 21:32:23 +02:00
2026-05-21 10:51:08 +02:00
2026-05-09 21:32:23 +02:00
2026-05-07 14:23:15 +02:00
2026-06-11 12:12:02 +02:00
2026-05-10 21:23:46 +02:00
2026-05-10 21:23:46 +02:00
2026-06-11 14:59:47 +02:00
2026-06-11 14:59:47 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-05-13 01:02:33 +02:00
2026-06-10 17:15:55 +02:00
2026-03-16 13:15:31 +01:00
2026-05-22 00:21:49 +02:00
2026-03-15 23:13:41 +01:00
2026-05-10 09:15:43 +02:00
2026-06-13 00:05:52 +02:00
2026-06-13 00:05:52 +02:00
2026-05-10 22:24:02 +02:00
2026-05-10 22:24:02 +02:00
2026-05-10 22:24:02 +02:00
2026-06-13 13:34:41 +02:00
2026-06-13 13:34:41 +02:00
2026-06-12 22:59:01 +02:00
2026-06-12 23:41:13 +02:00
2026-05-12 09:45:18 +02:00
2026-06-10 22:29:10 +02:00
2026-05-16 21:11:02 +02:00
2026-06-09 11:57:08 +02:00
2026-06-09 19:02:18 +02:00
2026-06-26 10:27:01 +02:00
2026-05-13 11:41:26 +02:00
2026-06-26 10:27:01 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-03-15 23:13:41 +01:00
2026-04-19 09:35:02 +02:00
2026-06-24 22:13:34 +02:00
2026-06-10 17:15:55 +02:00
2026-05-16 21:11:02 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-05-16 21:11:02 +02:00
2026-05-12 08:50:14 +02:00
2026-05-17 02:15:51 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-06-10 17:15:55 +02:00
2026-05-16 21:11:02 +02:00
2026-05-17 01:59:16 +02:00
2026-06-10 17:15:55 +02:00
2026-05-17 01:59:16 +02:00
2026-05-16 22:00:06 +02:00
2026-05-16 21:11:02 +02:00
2026-06-24 22:13:34 +02:00
2026-05-07 14:05:58 +02:00
2026-05-16 22:00:06 +02:00
2026-05-15 00:05:28 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-05-07 10:53:26 +02:00
2026-05-17 01:59:16 +02:00
2026-05-14 23:04:31 +02:00
2026-06-26 10:27:01 +02:00
2026-06-10 17:15:55 +02:00
2026-05-17 01:59:16 +02:00
2026-06-11 15:06:33 +02:00
2026-06-10 17:15:55 +02:00
2026-05-17 01:59:16 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-17 01:59:16 +02:00
2026-06-10 17:15:55 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-06-10 17:15:55 +02:00
2026-05-21 23:36:26 +02:00
2026-05-16 21:11:02 +02:00
2026-06-10 17:15:55 +02:00
2026-06-26 10:27:01 +02:00
2026-05-17 01:59:16 +02:00
2026-06-10 17:15:55 +02:00
2026-05-17 01:59:16 +02:00
2026-05-10 08:52:56 +02:00
2026-06-24 20:20:15 +02:00
2026-06-25 00:05:30 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-05-07 10:53:26 +02:00
2026-03-16 10:22:49 +01:00
2026-06-26 10:27:01 +02:00
2026-06-10 22:29:10 +02:00
2026-06-10 22:29:10 +02:00
2026-06-10 17:15:55 +02:00
2026-05-16 23:04:56 +02:00
2026-05-16 23:04:56 +02:00
2026-05-17 02:15:51 +02:00
2026-05-10 09:15:43 +02:00
2026-05-16 13:08:52 +02:00
2026-06-11 15:21:25 +02:00
2026-05-10 07:07:34 +02:00
2026-05-10 08:43:21 +02:00
2026-05-10 07:07:34 +02:00
2026-05-16 13:08:52 +02:00
2026-05-16 10:12:55 +02:00
2026-05-12 07:20:38 +02:00
2026-06-11 15:21:25 +02:00
2026-05-10 07:07:34 +02:00
2026-05-10 08:52:56 +02:00
2026-06-25 00:05:30 +02:00
2026-06-24 20:20:15 +02:00
2026-06-11 13:39:48 +02:00
2026-06-11 13:39:48 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-05-07 10:53:26 +02:00
2026-05-12 09:15:43 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-05-22 09:02:05 +02:00
2026-05-22 09:02:05 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:23:52 +02:00
2026-05-22 09:32:38 +02:00
2026-05-22 09:32:38 +02:00
2026-05-22 09:32:38 +02:00
2026-05-22 09:32:38 +02:00
2026-05-22 09:48:07 +02:00
2026-05-22 09:48:07 +02:00
2026-05-22 09:32:38 +02:00
2026-05-22 09:32:38 +02:00
2026-05-22 09:02:05 +02:00
2026-06-11 09:35:37 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-22 09:02:05 +02:00
2026-06-13 00:16:41 +02:00
2026-06-13 00:16:41 +02:00
2026-06-09 11:57:08 +02:00
2026-06-09 16:15:34 +02:00
2026-06-24 23:46:19 +02:00
2026-06-26 10:27:01 +02:00
2026-05-10 08:22:55 +02:00
2026-06-26 10:27:01 +02:00
2026-05-22 08:37:24 +02:00
2026-06-10 22:29:10 +02:00
2026-06-10 17:15:55 +02:00
2026-06-24 20:20:15 +02:00
2026-06-10 17:15:55 +02:00
2026-06-10 17:15:55 +02:00
2026-05-10 20:55:26 +02:00
2026-06-26 10:27:01 +02:00
2026-06-26 10:27:01 +02:00
2026-06-26 10:27:01 +02:00
2026-06-26 10:27:01 +02:00
2026-06-26 10:27:01 +02:00
2026-06-26 10:27:01 +02:00
2026-05-13 01:02:33 +02:00
2026-06-10 23:04:56 +02:00
2026-06-11 12:12:02 +02:00
2026-06-10 23:04:56 +02:00
2026-06-11 15:21:25 +02:00
2026-06-09 15:22:44 +02:00
2026-06-11 08:54:47 +02:00
2026-06-11 08:54:47 +02:00
2026-06-09 15:35:39 +02:00
2026-06-11 09:14:36 +02:00
2026-05-10 09:15:43 +02:00
2026-05-21 23:36:26 +02:00
2026-05-05 09:29:03 +02:00
2026-05-08 01:49:14 +02:00
2026-05-17 01:39:17 +02:00
2026-06-10 17:15:55 +02:00
2026-05-18 22:31:30 +02:00
2026-05-08 01:02:41 +02:00
2026-04-19 09:35:02 +02:00
2026-06-26 10:27:01 +02:00
2026-05-18 19:55:13 +02:00
2026-05-08 07:03:44 +02:00
2026-05-19 11:46:34 +02:00
2026-04-19 09:29:54 +02:00
2026-06-09 11:57:08 +02:00
2026-03-16 10:22:49 +01:00
2026-06-09 11:57:08 +02:00
2026-03-16 10:22:49 +01:00
2026-05-05 09:29:03 +02:00
2026-04-19 10:03:44 +02:00
2026-04-19 10:03:44 +02:00
2026-05-08 01:02:41 +02:00
2026-03-16 13:15:31 +01:00
2026-05-22 09:48:07 +02:00
2026-03-16 12:50:53 +01:00