Dom
c8a3618e27
feat(cache): ScreenStateCache clé composite context-aware (Lot D)
...
Avant : clé = phash seul
-> deux contextes différents avec même screenshot partageaient
la même entrée cache -> collisions silencieuses.
Après : clé composite {phash}|{md5(ctx)[:16]} avec ctx =
- window_title
- app_name
- enable_ocr
- enable_ui_detection
- workflow_id (isolation inter-workflows)
get_or_compute() kwargs-only. TTL 2s et éviction LRU inchangés.
invalidate_if_changed() continue de comparer uniquement les phash.
ExecutionLoop propage tout le contexte au cache.
8 nouveaux tests prouvant :
- même image + window différent = miss
- même image + app différent = miss
- même image + flags différents = miss
- même image + workflow_id différent = miss
- même image + même contexte = hit
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-15 09:06:51 +02:00
..
2026-03-31 09:30:14 +02:00
2026-04-15 09:06:19 +02:00
2026-04-14 16:49:02 +02:00
2026-04-09 21:03:25 +02:00
2026-03-26 10:19:18 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-03-18 16:24:01 +01:00
2026-04-10 09:01:13 +02:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-03-16 22:25:12 +01:00
2026-03-16 22:58:44 +01:00
2026-04-14 16:48:36 +02:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-04-10 09:01:52 +02:00
2026-04-15 09:06:28 +02:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-03-16 23:10:51 +01:00
2026-04-09 22:21:40 +02:00
2026-04-15 09:06:41 +02:00
2026-04-10 08:09:05 +02:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-04-10 08:42:01 +02:00
2026-03-26 10:19:18 +01:00
2026-04-14 16:48:23 +02:00
2026-04-14 16:48:00 +02:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-04-09 21:03:25 +02:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-04-15 09:06:41 +02:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-04-15 09:06:51 +02:00
2026-01-29 11:23:51 +01:00
2026-04-14 16:49:17 +02:00
2026-04-14 16:49:17 +02:00
2026-01-29 11:23:51 +01:00
2026-04-10 09:04:37 +02:00
2026-04-10 09:04:37 +02:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-03-31 09:45:20 +02:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-04-10 10:54:19 +02:00
2026-04-14 16:48:00 +02:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-04-09 21:03:25 +02:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-04-14 16:48:00 +02:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-04-10 08:28:55 +02:00
2026-04-10 11:02:51 +02:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-03-15 10:02:09 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-01-29 11:23:51 +01:00
2026-04-09 21:50:32 +02:00
2026-04-15 09:06:19 +02:00