Marc Mintel
1cc367697e
test: add 55-test LLM perception pipeline integrity suite
Validates the deterministic processing logic around the VLM without
needing a real LLM. Five contracts covering the full perception stack:
1. VLM Response Parsing (20 parametrized formats):
Tests _parse_yes_no against every response format observed in production:
clean YES/NO, JSON variants, explanations, edge cases (now/not/nothing),
empty strings, free-form JSON. Documents the startswith('yes') early-exit
behavior for ambiguous responses.
2. Box Index Extraction (7 formats):
Validates JSON parsing of VLM box selections across all observed key
variants: 'box', 'selected_index', 'box_index', 'index', null, and
out-of-range values.
3. Structural Guards (11 tests):
Tests every hallucination prevention guard in IntentResolver:
- Tab intent excludes Back button (bug 2026-04-30)
- Back intent preserves Back button
- Tab height guard (y > 85% screen)
- Author intent excludes nav tabs (bug 2026-05-01)
- Structural fast-paths (message input, send, author, comment)
- Abstract goals return None
- Semantic quoted-target guard
4. Semantic Match Validation (10 tests):
Prevents memory poisoning via _intent_matches_node:
- Correct matches (follow/like/save + German locale)
- Poisoning attempts: Reel thumbnails, photo content, comments
- Non-toggle intents always pass through
5. ActionMemory Lifecycle (7 tests):
Full track → confirm/reject cycle with FakeUIMemoryDB:
- Correct follow stores in memory
- Poisoned follow is BLOCKED (production bug reproduction)
- Rejected click triggers confidence decay
- No-track confirm is noop
- Mismatched intent is ignored
- Follow/view-post structural verification
2026-05-02 22:07:12 +02:00
..
2026-05-02 18:59:35 +02:00
2026-04-16 18:58:18 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-04-28 17:53:47 +02:00
2026-04-29 15:42:03 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-04-29 00:06:23 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 19:57:33 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-04-28 23:09:15 +02:00
2026-05-02 18:59:35 +02:00
2026-04-29 01:39:10 +02:00
2026-04-29 01:39:10 +02:00
2026-04-28 23:09:15 +02:00
2026-04-28 23:09:15 +02:00
2026-04-29 01:39:10 +02:00
2026-04-29 00:55:59 +02:00
2026-05-01 23:41:51 +02:00
2026-05-02 21:56:19 +02:00
2026-05-02 21:56:19 +02:00
2026-05-02 20:15:35 +02:00
2026-05-02 22:07:12 +02:00
2026-05-02 18:59:35 +02:00
2026-04-30 12:10:44 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-04-30 11:20:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-05-02 18:59:35 +02:00
2026-04-30 12:10:44 +02:00