test: add 63-test GOAP navigation engine suite
Production bug 2026-05-02 22:30: Bot got trapped in a restart loop:
1. 'tap reels tab' → VLM clicked wrong element → EXPLORE_GRID
2. After 2 failures → action masked
3. HD Map: 'REELS_FEED unreachable due to masked edges'
4. GOAP: 'completely trapped' → force Instagram restart
5. Repeat forever
ALL TESTS WERE GREEN because NONE of this logic was tested.
NEW: test_system_goap_navigation.py — 63 tests across 8 contracts:
CONTRACT 1: Screen Identification from XML (16 tests)
- Home, Explore, Reels, Profile, DM, Story, Modal, Foreign App
- Post detail vs Home feed (action_bar discriminator)
- Reels full-screen (no tab bar, structural markers only)
CONTRACT 2: Available Actions Extraction (4 tests)
- All 5 tab actions present on home feed
- Screen-specific actions (first post on Explore)
CONTRACT 3: HD Map BFS Routing (7 tests)
- Direct routes, multi-step routes, already-there
- Masked edges, all-edges-masked → None
CONTRACT 4: Goal → Target Screen Mapping (14 tests)
- All navigation goals + non-navigation goals return None
CONTRACT 5: Action Failure Masking (4 tests)
- Mask after MAX_RETRIES, no mask under threshold
- Full production chain reproduction
CONTRACT 6: Goal Achievement Detection (9 tests)
- Screen-based, context-based, non-nav goals
CONTRACT 7: Structural Action Protection (4 tests)
- HD Map actions are structural, random actions are not
CONTRACT 8: Step-Aware Navigation Validation (5 tests)
- Expected screen for action, mismatch detection