🔴 RED → 🟢 GREEN for 4 critical bugs found in production run 2026-04-29:
1. ResonanceEvaluator: Add null-guard for evaluate_post_vibe() return.
When VLM returns truncated JSON, the function returns None. The caller
now handles this gracefully instead of crashing with AttributeError.
2. ScreenIdentity POST_DETAIL: Replace broken 'and not selected_tab'
condition with structural differentiator using main_feed_action_bar.
Posts opened from feed retain feed_tab selected, which was causing
misclassification as HOME_FEED → LLM fallback → OWN_PROFILE hallucination
→ permanent Qdrant cache poisoning.
3. ActionMemory VLM verification: When VLM returns JSON instead of YES/NO,
treat as inconclusive (fall through to structural delta) rather than
hard failure. Only return False when response explicitly contains 'no'.
4 new E2E regression tests, 75/75 pass, zero regressions.