Benjamin Admin
8674b2cd9a
feat(ai-sdk): offline dedup-candidate proposer + deterministic GT wall (P2 slice 1)
...
First thin slice of the offline library-improvement proposer. DEV-TIME ONLY,
propose-only — it never mutates the pattern library or the runtime.
- FindDedupCandidates (proposer_dedup.go): structural near-duplicate detection
over the fired patterns (category + measure/zone/scenario overlap). Bakes in
the P1 lesson: only same-category pairs compare, and pairs with different
operational states are never proposed (normal-operation vs maintenance are
legitimately distinct, e.g. HP011 vs HP077).
- ScreenSupersession (proposer_screen.go): the wall. A proposal is safe only if
(1) dropping the hazard does not reduce GT recall AND (2) keep/drop do not
credit DIFFERENT GT entries. Check 2 catches distinct hazards that merely share
measures (HP2201 hot surface GT 1.3 vs HP2202 hot ware GT 1.4) which recall
alone would wave through.
On real warewashing output: 3 candidates -> 1 BLOCKED (distinct GT), 2
RECALL-SAFE for human/LLM review (the update + winding/friction near-dupes).
Nothing auto-applied. All 3 GTs unaffected (read-only). The LLM judgement and a
CLI/file queue are slice 2.
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-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