diff --git a/GramAddict/core/dm_engine.py b/GramAddict/core/dm_engine.py index 08ee457..3b5aba3 100644 --- a/GramAddict/core/dm_engine.py +++ b/GramAddict/core/dm_engine.py @@ -14,20 +14,23 @@ MAX_REPLIES_PER_INBOX_VISIT = 3 _EMPTY_CONTEXT_SENTINELS = frozenset({"no previous context", "", "none", "n/a"}) -# Structural resource-IDs that indicate a real "Send" button. def _is_send_button(node: dict) -> bool: - """Semantic verification: returns True if the node is identified as a Send button.""" - desc = (node.get("description") or node.get("desc", "")).lower() - text = (node.get("text") or "").lower() + """ + Structural verification: returns True if the node is identified as a Send button. + NO hardcoded UI strings (no localized 'send' or 'absenden'). + """ rid = (node.get("id") or node.get("resource_id", "")).lower() - # Accept if semantic markers indicate sending - if any(m in rid for m in ["send", "composer_button"]): + # 1. Structural Resource IDs (Language agnostic) + if "send" in rid or "composer_button" in rid or "direct_send_button_text" in rid: return True - if any(m in desc for m in ["send", "absenden"]): - return True - if text == "send" or text == "absenden": + + # 2. Spatial Guard: The send button in a DM thread is ALWAYS on the far right side of the screen + # next to the composer input. + x = node.get("x", 0) + if int(x) > (1080 * 0.75): return True + return False diff --git a/GramAddict/core/perception/action_memory.py b/GramAddict/core/perception/action_memory.py index 4e614ac..c83ccc3 100644 --- a/GramAddict/core/perception/action_memory.py +++ b/GramAddict/core/perception/action_memory.py @@ -220,8 +220,8 @@ class ActionMemory: ) if is_toggle: prompt += ( - "If the intent was 'follow', does the button now indicate 'Following' or 'Requested'? " - "If it was 'like', is the heart icon clearly active/red? " + "If the intent was 'follow', did the button change its visual state to indicate an active subscription? " + "If it was 'like', is the heart icon clearly active/filled? " "If the screen shifted completely to a profile when you just wanted to like/follow from a feed, it FAILED. " "If the tapped element does NOT sound like a like/follow button (e.g. it's a caption, comment field, or post content), it FAILED. " ) diff --git a/GramAddict/core/perception/intent_resolver.py b/GramAddict/core/perception/intent_resolver.py index b5fb581..bd86cd5 100644 --- a/GramAddict/core/perception/intent_resolver.py +++ b/GramAddict/core/perception/intent_resolver.py @@ -30,6 +30,11 @@ class IntentResolver: bounding boxes around clickable candidates, sends the annotated image to the VLM, and lets the VLM visually decide which box to tap. + CRITICAL ARCHITECTURE RULE: Language Agnosticism & Structural Determinism + - NO hardcoded localized UI strings (e.g. "follow", "message", "like") are permitted. + - All non-VLM resolution logic MUST rely strictly on spatial coordinates (e.g. center_x bounds) + or structural Android resource IDs. + Architecture: 1. Navigation tabs → structural zone guard (bottom 15%, resource-id) 2. Everything else → Visual Discovery (screenshot + numbered boxes + VLM) @@ -137,8 +142,17 @@ class IntentResolver: # This prevents the weak VLM from hallucinating bounding box numbers that point to "Comment". interaction_suffixes = ["comment", "like", "share", "send", "save", "button_icon", "scrubber"] is_interaction = any(s in rid for s in interaction_suffixes) or any(s in desc for s in interaction_suffixes) - node_text_lower = (node.text or "").lower() - is_follow = "follow" in rid or "follow" in node_text_lower or "follow" in desc + + # SPATIAL GUARD (NO HARDCODED STRINGS): The post author (avatar/name) is always strictly on the left side of the screen. + # The "More options" (Report menu) button is strictly on the far right. + # We enforce a mathematical boundary to prevent LLM hallucinations from clicking the report menu. + if is_author_intent and node.center_x > (1080 * 0.75): + logger.debug( + f"🛡️ [Author Spatial Guard] Excluded far-right element '{node.resource_id}' " + f"(x={node.center_x}) for author intent '{intent_description}'" + ) + continue + is_follow = "button_follow" in rid or "ufi_follow" in rid is_media_intent = "media content" in intent_lower or "image" in intent_lower or "video" in intent_lower if (is_author_intent or is_media_intent) and (is_interaction or is_follow): @@ -309,10 +323,8 @@ class IntentResolver: if ("send" in intent_lower or "share" in intent_lower) and "post" in intent_lower and "button" in intent_lower: for node in candidates: rid = (node.resource_id or "").lower() - desc = (node.content_desc or "").lower() - # Feed uses row_feed_button_share, POST_DETAIL may use direct_share_button or just desc "Send" - if "row_feed_button_share" in rid or "direct_share_button" in rid or "send" in desc or "share" in desc: - logger.info(f"🎯 [Structural Fast-Path] Found send/share post button: {rid or desc}") + if "row_feed_button_share" in rid or "direct_share_button" in rid or "button_share" in rid: + logger.info(f"🎯 [Structural Fast-Path] Found send/share post button: {rid}") return node if "add to story" in intent_lower: @@ -708,14 +720,14 @@ class IntentResolver: f"CRITICAL RULES:\n" f"1. If the intent contains a word in quotes (e.g., 'Search', 'New Message'), you MUST look at the Box legend and pick the box that contains that word (case-insensitive). Do not pick anything else.\n" f"2. For icons without text:\n" - f" - 'like button' = HEART-SHAPED ICON (♡/❤), usually has desc='Like'.\n" - f" - 'comment button' = SPEECH BUBBLE ICON, usually has desc='Comment'.\n" + f" - 'like button' = HEART-SHAPED ICON (♡/❤), look for id containing 'button_like' or 'ufi_heart'.\n" + f" - 'comment button' = SPEECH BUBBLE ICON, look for id containing 'button_comment' or 'ufi_comment'.\n" f"3. Do NOT select text, captions, or view counts if looking for an icon.\n" f"4. Ignore numbers inside the text itself. Do not confuse the text '19' with Box [19].\n" - f"5. If the intent contains 'following', you MUST pick the box containing 'following'. Do NOT pick 'followers' or 'Follow'.\n" + f"5. If the intent contains 'following', you MUST pick the box containing id 'button_following' or 'profile_header_following'. Do NOT pick 'followers' or 'Follow'.\n" f"6. If the intent is to tap a 'post', 'first post', or 'grid item':\n" - f" - Look for boxes with descriptions containing 'photos by', 'Reel by', or 'row 1, column 1'.\n" - f" - Pick the FIRST matching box index (e.g. if [0] says '6 photos...', return 0, NOT 6).\n" + f" - Look for boxes with ids like 'image_button' inside a grid, or visual grid thumbnails.\n" + f" - Pick the FIRST matching box index.\n" f" - Do NOT pick navigation buttons like 'Search'.\n" f"7. If the intent is a bottom navigation tab (e.g. 'profile tab', 'home tab'):\n" f" - These are always at the BOTTOM edge of the screen.\n" @@ -724,17 +736,17 @@ class IntentResolver: f" - 'explore tab' is the magnifying glass.\n" f" - 'reels tab' is the video clapperboard.\n" f"8. If the intent involves 'author username' or 'author profile':\n" - f" - Pick the profile picture (e.g. 'Profile picture of ') or the username text.\n" - f" - NEVER pick a 'Follow' button. Do NOT pick 'Follow '.\n" + f" - Pick the profile picture or the username text.\n" + f" - NEVER pick a 'Follow' button. Do NOT pick 'button_follow'.\n" f"9. If the intent is 'save post':\n" f" - The save icon is the bookmark icon on the bottom right of the post image/video.\n" - f" - Usually has desc='Add to Saved' or 'Save'. Do NOT pick the post text or other action buttons.\n" + f" - Look for id containing 'button_save' or 'ufi_save'. Do NOT pick the post text or other action buttons.\n" f"10. DISTINGUISHING BOTTOM TABS vs CONTENT BUTTONS:\n" f" - Bottom Navigation Tabs (Home, Search, Reels, Profile) are ALWAYS at the very bottom (y > 2100).\n" f" - Content Interaction Buttons (Like, Comment, Share, Reactions, Message Input) are attached to posts or threads, NOT the bottom nav bar.\n" - f" - If looking for 'message input' or 'type message', do NOT select 'reactions' or emoji icons. Look for an empty text box or 'Message...'.\n" + f" - If looking for 'message input' or 'type message', do NOT select 'reactions' or emoji icons. Look for an empty text box or id 'message_content'.\n" f"11. If the intent is 'feed post content' or 'post media content':\n" - f" - Pick the largest box that contains the actual image or video, usually described as 'Photo', 'Video', or 'Carousel'.\n" + f" - Pick the largest box that contains the actual image or video. Look for id 'zoomable_view_container' or 'media_frame'.\n" f"12. If the exact control is NOT visible, return null. Do NOT guess.\n\n" f'Reply ONLY with a valid JSON object: {{"box": }} or {{"box": null}}' ) diff --git a/GramAddict/core/perception/screen_identity.py b/GramAddict/core/perception/screen_identity.py index 41b9ca8..dcffcb9 100644 --- a/GramAddict/core/perception/screen_identity.py +++ b/GramAddict/core/perception/screen_identity.py @@ -205,6 +205,12 @@ class ScreenIdentity: logger.info("🛡️ [ScreenIdentity] Critical obstacle detected → DANGER_ACTION_BLOCKED") return ScreenType.DANGER_ACTION_BLOCKED + # Menu Trap Detection (O(1) fast-path) + # Overrides hallucinated LLM cache using STRICTLY STRUCTURAL IDs (no localized strings). + if "bottom_sheet_container" in ids and "action_sheet_row_text_view" in ids: + logger.info("🛡️ [ScreenIdentity] Options/Report menu trap detected → MODAL") + return ScreenType.MODAL + # Priority 2: Structural Heuristics (100% Deterministic) if "unified_follow_list_tab_layout" in ids or "follow_list_container" in ids: return ScreenType.FOLLOW_LIST @@ -367,42 +373,30 @@ class ScreenIdentity: if tab_id in resource_ids: actions.append(action) - # Screen-specific actions - desc_lower = " ".join(content_descs).lower() - text_lower = " ".join(texts).lower() + # Screen-specific actions (Purely structural, NO localized strings) + ids_str = " ".join(resource_ids).lower() - if "like" in desc_lower: + if "button_like" in ids_str or "ufi_heart" in ids_str: actions.append("tap like button") - if "comment" in desc_lower: + if "button_comment" in ids_str or "ufi_comment" in ids_str: actions.append("tap comment button") - if "share" in desc_lower: + if "button_share" in ids_str or "ufi_share" in ids_str or "direct_share" in ids_str: actions.append("tap share button") - if "save" in desc_lower or "bookmark" in desc_lower: + if "button_save" in ids_str or "ufi_save" in ids_str: actions.append("tap save button") - if "back" in desc_lower: + if "back" in ids_str or "action_bar_button_back" in ids_str: actions.append("tap back button") - has_following = any( - "following" in e.get("text", "").lower() or "following" in e.get("desc", "").lower() - for e in clickable_elements - ) + + has_following = "button_following" in ids_str or "profile_header_following" in ids_str if has_following: actions.append("tap following button") - elif any( - "follow" in e.get("text", "").lower() - or "follow" in e.get("desc", "").lower() - or "follow" in e.get("id", "").lower() - for e in clickable_elements - ): + elif "button_follow" in ids_str: actions.append("tap follow button") if screen_type == ScreenType.OWN_PROFILE or screen_type == ScreenType.OTHER_PROFILE: - if "message" in desc_lower: + if "button_message" in ids_str or "direct_message" in ids_str: actions.append("tap message button") - if ( - "following" in desc_lower - or "following" in text_lower - or "profile_header_following" in " ".join(resource_ids).lower() - ): + if "profile_header_following" in ids_str: actions.append("tap following list") # Grid items diff --git a/GramAddict/core/situational_awareness.py b/GramAddict/core/situational_awareness.py index d6c5693..29e151e 100644 --- a/GramAddict/core/situational_awareness.py +++ b/GramAddict/core/situational_awareness.py @@ -8,6 +8,11 @@ and learns from every episode — positive AND negative. After initial learning, 95%+ of situations are handled from memory alone with ZERO LLM calls. This is "Tesla fleet learning" for bots. + +CRITICAL ARCHITECTURE RULE: Language Agnosticism & Structural Determinism +NO hardcoded localized UI strings (e.g. "Report", "OK", "Deny") are permitted. +All structural heuristic fallbacks must use O(1) Android `resource-id` bounds +to ensure the bot functions flawlessly regardless of the device language. """ import hashlib @@ -536,12 +541,12 @@ class SituationalAwarenessEngine: "- If you see a dismiss/close/cancel/skip/not now button, click it\n" "- If the Situation type is obstacle_locked_screen, action must be 'unlock'\n" "- If the Situation type is obstacle_foreign_app, action must be 'kill_foreign_apps'\n" - "- If the Situation type is obstacle_system, you MUST look for 'Deny', 'Don't allow', or 'Cancel' and click it. \n" - " NEVER click 'Allow', 'OK', or 'Confirm' on system permissions.\n" + "- If the Situation type is obstacle_system, you MUST look for the negative action (e.g. deny, block, do not allow, cancel) and click it. \n" + " NEVER click the positive action (allow, accept, confirm) on system permissions.\n" " If no negative action button exists, action must be 'back'\n" "- If there is NO obstacle and the screen is a normal Instagram view (false positive), action must be 'false_positive'\n" "- If nothing else works, suggest 'app_start' to force-reopen Instagram\n" - "- NEVER click 'OK'/'Confirm'/'Accept' on surveys or prompts\n" + "- NEVER click the positive/accept button on surveys or prompts\n" "- When you choose to click, you MUST use the EXACT coordinates provided in `center=(x,y)` for that element in the XML\n" '- Return ONLY valid JSON: {"action": "click"|"back"|"app_start"|"unlock"|"kill_foreign_apps"|"false_positive", "x": N, "y": N, "reason": "..."}' ) diff --git a/GramAddict/core/telepathic_engine.py b/GramAddict/core/telepathic_engine.py index a0412ad..fc1b092 100644 --- a/GramAddict/core/telepathic_engine.py +++ b/GramAddict/core/telepathic_engine.py @@ -93,6 +93,7 @@ class TelepathicEngine: if not any(k in intent_lower for k in typing_keywords): logger.warning("⌨️ [TelepathicEngine] Keyboard detected during non-typing intent! Auto-dismissing.") import time + device.back() time.sleep(1.0) # Re-fetch UI state @@ -129,8 +130,8 @@ class TelepathicEngine: (best_node.text or "") + " " + (best_node.content_desc or "") + " " + (best_node.resource_id or "") ) semantic = semantic.lower() - # Zero-Maintenance: Only English UI states. resource_id never changes with locale. - if "following" in semantic or "requested" in semantic: + # Zero-Maintenance: Strictly structural IDs, no localized strings. + if "button_following" in semantic or "profile_header_following" in semantic: return {"skip": True, "semantic": "already_followed"} # 4. Track action diff --git a/GramAddict/core/unfollow_engine.py b/GramAddict/core/unfollow_engine.py index 89dc8ad..5fff730 100644 --- a/GramAddict/core/unfollow_engine.py +++ b/GramAddict/core/unfollow_engine.py @@ -127,19 +127,23 @@ def _run_zero_latency_unfollow_loop( extra={"color": Fore.YELLOW}, ) - # Find 'Following' button on their profile + # Find the button that indicates active subscription (Following) following_nodes = telepathic._extract_semantic_nodes( - profile_xml, "find 'Following' button", threshold=0.7 + profile_xml, + "find the button indicating active subscription, look for id 'button_following' or 'profile_header_following'", + threshold=0.7, ) if following_nodes and not following_nodes[0].get("skip"): f_node = following_nodes[0] _humanized_click(device, f_node["x"], f_node["y"]) random_sleep(1.0, 2.0) - # Find 'Unfollow' confirm + # Find the confirmation button confirm_xml = device.dump_hierarchy() confirm_nodes = telepathic._extract_semantic_nodes( - confirm_xml, "find 'Unfollow' confirmation button", threshold=0.8 + confirm_xml, + "find the confirmation button to stop following, look for id 'follow_sheet_unfollow_row' or red warning text", + threshold=0.8, ) if confirm_nodes and not confirm_nodes[0].get("skip"): diff --git a/README.md b/README.md index 89cb629..a5912d3 100644 --- a/README.md +++ b/README.md @@ -63,3 +63,16 @@ The engine has undergone a massive stabilization refactor to achieve **100% TDD > [!NOTE] > Unlike legacy bots, GramPilot requires zero maintenance. It will automatically re-learn the UI over time using its integrated Qdrant memory vectors. + +--- + +## 🏛️ Core Architecture Rules: Language Agnosticism & Structural Determinism + +**CRITICAL: Hardcoding localized UI strings (e.g., "Follow", "Like", "Send", "Report") is STRICTLY FORBIDDEN across the entire codebase.** + +GramPilot operates on a globally language-agnostic plane. If the UI is switched to German, Arabic, or Japanese, the bot must not fail. To achieve this, all perception and navigation logic must adhere to the following strict rules: + +1. **Spatial Geometry over Text:** Use coordinates and boundaries to identify elements. (e.g., The "Send" button in DMs is *always* on the far right `center_x > width * 0.75`). +2. **Structural Resource IDs over Descriptions:** Use Android UI resource IDs (`action_sheet_row_text_view`, `button_following`) instead of English `desc` or `text` properties. IDs are not localized and are universally stable. +3. **Semantic LLM Prompts:** When querying the Vision-Language Model (VLM), **do not give exact string examples** that assume an English UI. For example, do not say `find the 'Unfollow' button`. Instead, say `find the button to stop following, look for a red warning text or id 'follow_sheet_unfollow_row'`. +4. **Zero Magie:** Any text-based matching logic is considered a legacy flaw and will be mercilessly purged. If you find a text match, replace it with a structural O(1) fast-path or spatial guard. diff --git a/tests/__pycache__/__init__.cpython-311.pyc b/tests/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index b69d950..0000000 Binary files a/tests/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/__pycache__/conftest.cpython-311-pytest-8.3.5.pyc b/tests/__pycache__/conftest.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 852e3ff..0000000 Binary files a/tests/__pycache__/conftest.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/__pycache__/test_planner_dynamic_brain.cpython-311-pytest-8.3.5.pyc b/tests/__pycache__/test_planner_dynamic_brain.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f084973..0000000 Binary files a/tests/__pycache__/test_planner_dynamic_brain.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/__pycache__/test_planner_hierarchy.cpython-311-pytest-8.3.5.pyc b/tests/__pycache__/test_planner_hierarchy.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 479437a..0000000 Binary files a/tests/__pycache__/test_planner_hierarchy.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/__init__.cpython-311.pyc b/tests/anomalies/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index dda8691..0000000 Binary files a/tests/anomalies/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_bot_flow_edge_cases.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_bot_flow_edge_cases.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index dfbd16e..0000000 Binary files a/tests/anomalies/__pycache__/test_bot_flow_edge_cases.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_cognitive_edge_cases.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_cognitive_edge_cases.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 3824cee..0000000 Binary files a/tests/anomalies/__pycache__/test_cognitive_edge_cases.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_debug.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_debug.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index ad09fa1..0000000 Binary files a/tests/anomalies/__pycache__/test_debug.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_debug2.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_debug2.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index eeb10b3..0000000 Binary files a/tests/anomalies/__pycache__/test_debug2.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_debug3.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_debug3.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 88efc73..0000000 Binary files a/tests/anomalies/__pycache__/test_debug3.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_fsd_recovery.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_fsd_recovery.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c5b8cca..0000000 Binary files a/tests/anomalies/__pycache__/test_fsd_recovery.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_goap_learning.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_goap_learning.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 1d81826..0000000 Binary files a/tests/anomalies/__pycache__/test_goap_learning.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_hardware_anomalies.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_hardware_anomalies.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index da0260b..0000000 Binary files a/tests/anomalies/__pycache__/test_hardware_anomalies.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_hardware_anomalies_gauss.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_hardware_anomalies_gauss.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 808697e..0000000 Binary files a/tests/anomalies/__pycache__/test_hardware_anomalies_gauss.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_hardware_edge_cases.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_hardware_edge_cases.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 24e0212..0000000 Binary files a/tests/anomalies/__pycache__/test_hardware_edge_cases.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_human_hesitation.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_human_hesitation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 13fee13..0000000 Binary files a/tests/anomalies/__pycache__/test_human_hesitation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_llm_hallucination_recovery.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_llm_hallucination_recovery.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 1025004..0000000 Binary files a/tests/anomalies/__pycache__/test_llm_hallucination_recovery.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_nav_failure_tdd.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_nav_failure_tdd.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index df4a9dc..0000000 Binary files a/tests/anomalies/__pycache__/test_nav_failure_tdd.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_nav_graph_edge_cases.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_nav_graph_edge_cases.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4adbed5..0000000 Binary files a/tests/anomalies/__pycache__/test_nav_graph_edge_cases.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_poisoned_learning_recovery.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_poisoned_learning_recovery.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 331ac20..0000000 Binary files a/tests/anomalies/__pycache__/test_poisoned_learning_recovery.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_telepathic_guards.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_telepathic_guards.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a952386..0000000 Binary files a/tests/anomalies/__pycache__/test_telepathic_guards.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_trap_escape.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_trap_escape.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b576a44..0000000 Binary files a/tests/anomalies/__pycache__/test_trap_escape.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/anomalies/__pycache__/test_trap_radome.cpython-311-pytest-8.3.5.pyc b/tests/anomalies/__pycache__/test_trap_radome.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d98ab2e..0000000 Binary files a/tests/anomalies/__pycache__/test_trap_radome.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/chaos/__pycache__/__init__.cpython-311.pyc b/tests/chaos/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 8c2a7c0..0000000 Binary files a/tests/chaos/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/chaos/__pycache__/test_chaos_network.cpython-311-pytest-8.3.5.pyc b/tests/chaos/__pycache__/test_chaos_network.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f69dbf5..0000000 Binary files a/tests/chaos/__pycache__/test_chaos_network.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/chaos/__pycache__/test_chaos_xml_corruption.cpython-311-pytest-8.3.5.pyc b/tests/chaos/__pycache__/test_chaos_xml_corruption.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 680eb7a..0000000 Binary files a/tests/chaos/__pycache__/test_chaos_xml_corruption.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_action_memory_fast_path.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_action_memory_fast_path.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4dae595..0000000 Binary files a/tests/core/__pycache__/test_action_memory_fast_path.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_config.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_config.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 951afb8..0000000 Binary files a/tests/core/__pycache__/test_config.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_config_help.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_config_help.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8d62dd5..0000000 Binary files a/tests/core/__pycache__/test_config_help.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_embeddings_truncation.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_embeddings_truncation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 56754a4..0000000 Binary files a/tests/core/__pycache__/test_embeddings_truncation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_intent_resolver_multilingual.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_intent_resolver_multilingual.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 6325fb7..0000000 Binary files a/tests/core/__pycache__/test_intent_resolver_multilingual.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_qdrant_memory.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_qdrant_memory.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 0be0dfe..0000000 Binary files a/tests/core/__pycache__/test_qdrant_memory.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_unfollow_engine.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_unfollow_engine.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f927280..0000000 Binary files a/tests/core/__pycache__/test_unfollow_engine.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/core/__pycache__/test_zero_maintenance_strings.cpython-311-pytest-8.3.5.pyc b/tests/core/__pycache__/test_zero_maintenance_strings.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9492aa6..0000000 Binary files a/tests/core/__pycache__/test_zero_maintenance_strings.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/__init__.cpython-311.pyc b/tests/e2e/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index d1f93a1..0000000 Binary files a/tests/e2e/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/conftest.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/conftest.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index abbfedf..0000000 Binary files a/tests/e2e/__pycache__/conftest.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/conftest.cpython-311.pyc b/tests/e2e/__pycache__/conftest.cpython-311.pyc deleted file mode 100644 index 9765ef2..0000000 Binary files a/tests/e2e/__pycache__/conftest.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/device_emulator.cpython-311.pyc b/tests/e2e/__pycache__/device_emulator.cpython-311.pyc deleted file mode 100644 index 9bfe14d..0000000 Binary files a/tests/e2e/__pycache__/device_emulator.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_ad_visual_detection.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_ad_visual_detection.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 676fc74..0000000 Binary files a/tests/e2e/__pycache__/test_ad_visual_detection.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_all_workflows.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_all_workflows.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 775ffa3..0000000 Binary files a/tests/e2e/__pycache__/test_all_workflows.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_autonomous_goals.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_autonomous_goals.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e8683b2..0000000 Binary files a/tests/e2e/__pycache__/test_autonomous_goals.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_behavior_ad_guard.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_behavior_ad_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index cc5d9b0..0000000 Binary files a/tests/e2e/__pycache__/test_behavior_ad_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_behavior_scrape_profile.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_behavior_scrape_profile.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4aba457..0000000 Binary files a/tests/e2e/__pycache__/test_behavior_scrape_profile.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_behavior_story_view.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_behavior_story_view.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 68fc73a..0000000 Binary files a/tests/e2e/__pycache__/test_behavior_story_view.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_bot_flow_curiosity.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_bot_flow_curiosity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index bda2a72..0000000 Binary files a/tests/e2e/__pycache__/test_bot_flow_curiosity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_brain_live.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_brain_live.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a7c14ab..0000000 Binary files a/tests/e2e/__pycache__/test_brain_live.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_debug.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_debug.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7230d9d..0000000 Binary files a/tests/e2e/__pycache__/test_debug.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_animation_timing.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_animation_timing.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2549dad..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_animation_timing.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_autonomous_session.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_autonomous_session.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 849ec65..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_autonomous_session.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_behaviors.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_behaviors.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 23ff23f..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_behaviors.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_behaviors.cpython-311.pyc b/tests/e2e/__pycache__/test_e2e_behaviors.cpython-311.pyc deleted file mode 100644 index 9b15ec5..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_behaviors.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_blank_start_integrity.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_blank_start_integrity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b69755f..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_blank_start_integrity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_carousel_sequence.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_carousel_sequence.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 256e334..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_carousel_sequence.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_config_goal_limits.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_config_goal_limits.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b59e1ab..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_config_goal_limits.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_dm_engine.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_dm_engine.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e9349b8..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_dm_engine.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_dm_sequence.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_dm_sequence.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7a8b1bf..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_dm_sequence.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_dojo_integration.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_dojo_integration.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 423f1b7..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_dojo_integration.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_explore_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_explore_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 09a893c..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_explore_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_goap.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_goap.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 55b1f8e..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_goap.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_goap.cpython-311.pyc b/tests/e2e/__pycache__/test_e2e_goap.cpython-311.pyc deleted file mode 100644 index 063d318..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_goap.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_guards.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_guards.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c923647..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_guards.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_home_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_home_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2f1c264..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_home_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_interactions_expanded.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_interactions_expanded.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f0d2cfa..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_interactions_expanded.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_navigation_escape_dm_trap.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_navigation_escape_dm_trap.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 77c701c..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_navigation_escape_dm_trap.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_plugin_profile_interaction.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_plugin_profile_interaction.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e4534bb..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_plugin_profile_interaction.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_real_llm_learning.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_real_llm_learning.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 70b55c8..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_real_llm_learning.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_reels_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_reels_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c2c9083..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_reels_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_sae.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_sae.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 99e62e2..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_sae.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_scraping_sequence.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_scraping_sequence.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 1b9d23e..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_scraping_sequence.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_search_sequence.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_search_sequence.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f615722..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_search_sequence.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_session_limits.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_session_limits.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 283f69b..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_session_limits.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_stories_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_stories_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c7353b7..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_stories_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_e2e_unfollow_sequence.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_e2e_unfollow_sequence.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b710cc1..0000000 Binary files a/tests/e2e/__pycache__/test_e2e_unfollow_sequence.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_engine_learning.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_engine_learning.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a7eb4e1..0000000 Binary files a/tests/e2e/__pycache__/test_engine_learning.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_engine_perception.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_engine_perception.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d867a49..0000000 Binary files a/tests/e2e/__pycache__/test_engine_perception.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_engine_perception.cpython-311.pyc b/tests/e2e/__pycache__/test_engine_perception.cpython-311.pyc deleted file mode 100644 index fd1e808..0000000 Binary files a/tests/e2e/__pycache__/test_engine_perception.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_engine_timeout.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_engine_timeout.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 65f5c60..0000000 Binary files a/tests/e2e/__pycache__/test_engine_timeout.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_follow_verification_integrity.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_follow_verification_integrity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8d9daaa..0000000 Binary files a/tests/e2e/__pycache__/test_follow_verification_integrity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_full_e2e_android_sim.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_full_e2e_android_sim.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c9b0e5f..0000000 Binary files a/tests/e2e/__pycache__/test_full_e2e_android_sim.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_full_workflow_hostile_env.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_full_workflow_hostile_env.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f9163ce..0000000 Binary files a/tests/e2e/__pycache__/test_full_workflow_hostile_env.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_goal_decomposer_e2e.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_goal_decomposer_e2e.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 22e1def..0000000 Binary files a/tests/e2e/__pycache__/test_goal_decomposer_e2e.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_goal_executor_achieve.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_goal_executor_achieve.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e3c45cc..0000000 Binary files a/tests/e2e/__pycache__/test_goal_executor_achieve.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_goap_hallucination_guards.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_goap_hallucination_guards.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 0676832..0000000 Binary files a/tests/e2e/__pycache__/test_goap_hallucination_guards.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_goap_loop_prevention.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_goap_loop_prevention.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8c8167d..0000000 Binary files a/tests/e2e/__pycache__/test_goap_loop_prevention.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_goap_trap_recovery.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_goap_trap_recovery.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 12d18bb..0000000 Binary files a/tests/e2e/__pycache__/test_goap_trap_recovery.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_lifecycle_e2e.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_lifecycle_e2e.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 80438d7..0000000 Binary files a/tests/e2e/__pycache__/test_lifecycle_e2e.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_nav_engagement.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_nav_engagement.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 35f5748..0000000 Binary files a/tests/e2e/__pycache__/test_nav_engagement.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_nav_home_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_nav_home_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 55a881b..0000000 Binary files a/tests/e2e/__pycache__/test_nav_home_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_nav_messaging.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_nav_messaging.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 056ed77..0000000 Binary files a/tests/e2e/__pycache__/test_nav_messaging.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_nav_profile.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_nav_profile.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index afb61a3..0000000 Binary files a/tests/e2e/__pycache__/test_nav_profile.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_nav_reels.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_nav_reels.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 85fceff..0000000 Binary files a/tests/e2e/__pycache__/test_nav_reels.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_nav_search_explore.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_nav_search_explore.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f5f155c..0000000 Binary files a/tests/e2e/__pycache__/test_nav_search_explore.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_persistent_list_realism.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_persistent_list_realism.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 85f386a..0000000 Binary files a/tests/e2e/__pycache__/test_persistent_list_realism.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_plugin_chain_hostile_env.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_plugin_chain_hostile_env.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 3acba18..0000000 Binary files a/tests/e2e/__pycache__/test_plugin_chain_hostile_env.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_post_data_extraction.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_post_data_extraction.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4f15f40..0000000 Binary files a/tests/e2e/__pycache__/test_post_data_extraction.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_production_bug_foreign_app_20260501.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_production_bug_foreign_app_20260501.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4b1e02a..0000000 Binary files a/tests/e2e/__pycache__/test_production_bug_foreign_app_20260501.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_production_bug_play_store_trap_20260503.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_production_bug_play_store_trap_20260503.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index eb93e21..0000000 Binary files a/tests/e2e/__pycache__/test_production_bug_play_store_trap_20260503.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_production_bug_regression.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_production_bug_regression.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index aab7a4f..0000000 Binary files a/tests/e2e/__pycache__/test_production_bug_regression.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_production_bug_regression_20260501.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_production_bug_regression_20260501.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 72dd455..0000000 Binary files a/tests/e2e/__pycache__/test_production_bug_regression_20260501.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_reel_interactions.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_reel_interactions.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 3ae8009..0000000 Binary files a/tests/e2e/__pycache__/test_reel_interactions.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_reel_navigation_guards.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_reel_navigation_guards.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 289047a..0000000 Binary files a/tests/e2e/__pycache__/test_reel_navigation_guards.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_sae_foreign_app_fastpath.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_sae_foreign_app_fastpath.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 78a028b..0000000 Binary files a/tests/e2e/__pycache__/test_sae_foreign_app_fastpath.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_sim_full_lifecycle.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_sim_full_lifecycle.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index fc718da..0000000 Binary files a/tests/e2e/__pycache__/test_sim_full_lifecycle.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_sim_full_lifecycle.cpython-311.pyc b/tests/e2e/__pycache__/test_sim_full_lifecycle.cpython-311.pyc deleted file mode 100644 index f7d1997..0000000 Binary files a/tests/e2e/__pycache__/test_sim_full_lifecycle.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_coverage_gate.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_system_coverage_gate.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 5bcd398..0000000 Binary files a/tests/e2e/__pycache__/test_system_coverage_gate.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_full_lifecycle.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_system_full_lifecycle.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7b74498..0000000 Binary files a/tests/e2e/__pycache__/test_system_full_lifecycle.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_goap_navigation.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_system_goap_navigation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index fb9e4a0..0000000 Binary files a/tests/e2e/__pycache__/test_system_goap_navigation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_integrity_contracts.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_system_integrity_contracts.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 07a938c..0000000 Binary files a/tests/e2e/__pycache__/test_system_integrity_contracts.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_llm_perception.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_system_llm_perception.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4b99716..0000000 Binary files a/tests/e2e/__pycache__/test_system_llm_perception.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_sae.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_system_sae.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 507f10c..0000000 Binary files a/tests/e2e/__pycache__/test_system_sae.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_sae.cpython-311.pyc b/tests/e2e/__pycache__/test_system_sae.cpython-311.pyc deleted file mode 100644 index 369f3a3..0000000 Binary files a/tests/e2e/__pycache__/test_system_sae.cpython-311.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_system_session_persistence.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_system_session_persistence.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index eea9303..0000000 Binary files a/tests/e2e/__pycache__/test_system_session_persistence.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_verification_integrity.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_verification_integrity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f6b786b..0000000 Binary files a/tests/e2e/__pycache__/test_verification_integrity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_visual_intent_resolver.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_visual_intent_resolver.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f4ebd6c..0000000 Binary files a/tests/e2e/__pycache__/test_visual_intent_resolver.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_account_switch.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_account_switch.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 208ba0e..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_account_switch.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_dm_inbox.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_dm_inbox.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8ac48f2..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_dm_inbox.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_explore_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_explore_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 12c7c09..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_explore_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_feed_foreign_app_escape.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_feed_foreign_app_escape.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index fcca0c7..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_feed_foreign_app_escape.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_foreign_app.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_foreign_app.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 670d8f9..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_foreign_app.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_instagram_modal.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_instagram_modal.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 5cc245b..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_instagram_modal.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_live_simulation.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_live_simulation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7fd9b63..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_live_simulation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_locked_screen.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_locked_screen.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 93f3557..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_locked_screen.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_normal_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_normal_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 765030d..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_normal_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_permission_dialog.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_permission_dialog.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index cf49839..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_permission_dialog.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_plugin_integrity.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_plugin_integrity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 21bc985..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_plugin_integrity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_post_detail.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_post_detail.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 0b83038..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_post_detail.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_profiles.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_profiles.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 6f3a4b7..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_profiles.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_reels_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_reels_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 96cdbec..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_reels_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_same_post_loop.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_same_post_loop.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c7ccace..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_same_post_loop.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_search_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_search_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2d4f4de..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_search_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_stories_feed.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_stories_feed.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 312193d..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_stories_feed.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_stories_foreign_app_escape.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_stories_foreign_app_escape.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 62f65cd..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_stories_foreign_app_escape.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_stuck_other_profile.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_stuck_other_profile.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 37c12fc..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_stuck_other_profile.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/__pycache__/test_workflow_vlm_tab_confusion.cpython-311-pytest-8.3.5.pyc b/tests/e2e/__pycache__/test_workflow_vlm_tab_confusion.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 187c036..0000000 Binary files a/tests/e2e/__pycache__/test_workflow_vlm_tab_confusion.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/e2e/test_intent_report_guard.py b/tests/e2e/test_intent_report_guard.py new file mode 100644 index 0000000..b5ff0ef --- /dev/null +++ b/tests/e2e/test_intent_report_guard.py @@ -0,0 +1,34 @@ +import os + +from GramAddict.core.perception.intent_resolver import IntentResolver +from GramAddict.core.perception.spatial_parser import SpatialParser + + +def test_intent_resolver_filters_report_menu(): + """ + Proves that the intent resolver filters out the 'More actions' / 3-dots menu + when the bot is looking for the post author, preventing it from clicking 'Report'. + """ + base_dir = os.path.dirname(os.path.dirname(__file__)) + feed_xml_path = os.path.join(base_dir, "e2e", "fixtures", "home_feed_real.xml") + + with open(feed_xml_path, "r", encoding="utf-8") as f: + feed_xml = f.read() + + parser = SpatialParser() + root = parser.parse(feed_xml) + candidates = parser.get_clickable_nodes(root) + + resolver = IntentResolver() + + # Run the filter explicitly for "tap post username" + filtered = resolver.filter_navigation_conflicts(candidates, "tap post username", screen_height=2400) + + # Look for the 'More actions' option button in the filtered results + for node in filtered: + rid = (node.resource_id or "").lower() + desc = (node.content_desc or "").lower() + + # It must NOT be in the filtered list! + assert "option_button" not in rid, f"Option button leaked into candidates! {rid}" + assert "more actions" not in desc, f"More actions leaked into candidates! {desc}" diff --git a/tests/e2e/test_system_learning_live.py b/tests/e2e/test_system_learning_live.py new file mode 100644 index 0000000..930cf0f --- /dev/null +++ b/tests/e2e/test_system_learning_live.py @@ -0,0 +1,103 @@ +import os + +import pytest + +from GramAddict.core.perception.spatial_parser import SpatialNode +from GramAddict.core.telepathic_engine import TelepathicEngine + + +@pytest.mark.live_llm +def test_live_qdrant_learning_pipeline_no_mocks(make_real_device_with_image): + """ + 100% Live Learning E2E Test. + Proves Qdrant and LLM are used seamlessly. No lying mocks. + + Scenario: + 1. The bot encounters a real UI and is given an abstract intent. + 2. Since Qdrant is empty, it uses the REAL Vision LLM to find the element. + 3. The click is tracked and confirmed (Positive Reinforcement). + 4. We prove the bot learned by asking again: this time we break the VLM connection. + If the bot survives and finds the node, it means Qdrant O(1) retrieval worked perfectly. + 5. We track the click again but reject it (Negative Reinforcement). + 6. We prove the bot 'unlearned' by checking the confidence decay in Qdrant. + """ + base_dir = os.path.dirname(os.path.dirname(__file__)) + xml_path = os.path.join(base_dir, "fixtures", "user_profile_dump.xml") + img_path = os.path.join(base_dir, "fixtures", "user_profile_dump.jpg") + + with open(xml_path, "r", encoding="utf-8") as f: + xml_content = f.read() + + device = make_real_device_with_image(img_path, xml_content) + + # 1. Reset engine and wipe memory to guarantee blank slate + engine = TelepathicEngine.get_instance() + engine.wipe() + action_memory = engine._memory + + # We use an abstract intent that shouldn't hit a simple keyword fast-path easily + intent = "open the direct message window to chat with this user" + + # 2. First pass: VLM Discovery + node = engine.find_best_node(xml_content, intent, device=device) + assert node is not None, "VLM failed to find any node for the intent!" + + # Verify the VLM actually picked something reasonable (like the message button) + desc = (node.get("description") or "").lower() + text = (node.get("text") or "").lower() + assert "message" in desc or "message" in text, f"VLM picked wrong node: {node}" + + # 3. Track and Confirm Click (Learn) + orig = node.get("original_attribs", {}) + s_node = SpatialNode( + bounds=orig.get("bounds", (0, 0, 0, 0)), + text=orig.get("text", ""), + content_desc=orig.get("content_desc", ""), + resource_id=orig.get("resource_id", ""), + ) + action_memory.track_click(intent, s_node, xml_content) + action_memory.confirm_click(intent) + + # 4. Verify Qdrant persistence and O(1) retrieval (Bypass VLM) + from GramAddict.core.perception.semantic_evaluator import SemanticEvaluator + + original_query = SemanticEvaluator._query_vlm + vlm_called = False + + def boom_vlm(*args, **kwargs): + nonlocal vlm_called + vlm_called = True + raise Exception("VLM should NOT be called! The bot should use its memory.") + + SemanticEvaluator._query_vlm = boom_vlm + try: + node2 = engine.find_best_node(xml_content, intent, device=device) + assert node2 is not None, "Failed to retrieve from Qdrant memory!" + assert node2["id"] == node["id"], "Memory mismatch!" + assert not vlm_called, "VLM was called despite memory existing! Bot is not learning efficiently." + finally: + SemanticEvaluator._query_vlm = original_query + + # 5. Check Confidence before decay + point_id = action_memory.ui_memory._deterministic_id(intent) + points = action_memory.ui_memory.client.retrieve( + collection_name=action_memory.ui_memory.collection_name, ids=[point_id], with_payload=True + ) + assert points, "Memory point not found in Qdrant!" + initial_confidence = points[0].payload.get("confidence", 0.0) + + # 6. Reject Click (Unlearn) + action_memory.track_click(intent, s_node, xml_content) + action_memory.reject_click(intent) + + # 7. Check Confidence after decay + points_after = action_memory.ui_memory.client.retrieve( + collection_name=action_memory.ui_memory.collection_name, ids=[point_id], with_payload=True + ) + + if points_after: + after_confidence = points_after[0].payload.get("confidence", 0.0) + assert after_confidence < initial_confidence, "Confidence did not decay! Negative reinforcement failed." + else: + # It's possible the confidence dropped below the threshold (0.1) and was purged. + pass diff --git a/tests/e2e/test_system_story_trap.py b/tests/e2e/test_system_story_trap.py new file mode 100644 index 0000000..b6fca0c --- /dev/null +++ b/tests/e2e/test_system_story_trap.py @@ -0,0 +1,74 @@ +import os + +import pytest + +from GramAddict.core.perception.spatial_parser import SpatialNode +from GramAddict.core.telepathic_engine import TelepathicEngine + + +@pytest.mark.live_llm +def test_story_trap_negative_reinforcement(make_real_device_with_image): + """ + Proves that clicking a profile picture that leads to a STORY (not a PROFILE) + correctly triggers a verification failure and negative reinforcement. + """ + base_dir = os.path.dirname(os.path.dirname(__file__)) + feed_xml_path = os.path.join(base_dir, "e2e", "fixtures", "home_feed_real.xml") + story_xml_path = os.path.join(base_dir, "e2e", "fixtures", "story_view_full.xml") + img_path = os.path.join(base_dir, "e2e", "fixtures", "home_feed_real.jpg") + + with open(feed_xml_path, "r", encoding="utf-8") as f: + feed_xml = f.read() + + with open(story_xml_path, "r", encoding="utf-8") as f: + story_xml = f.read() + + device = make_real_device_with_image(img_path, feed_xml) + + engine = TelepathicEngine.get_instance() + engine.wipe() + action_memory = engine._memory + + intent = "tap post username" + + # Track the click on a profile picture (which is what caused the trap) + s_node = SpatialNode( + bounds=(0, 0, 100, 100), + text="", + content_desc="Profile picture of costarica", + resource_id="com.instagram.android:id/row_feed_photo_profile_imageview", + ) + + action_memory.track_click(intent, s_node, feed_xml) + + # 1. Verification should FAIL because the profile header is missing. + # The action_memory uses the NEW screen XML (which we provide or it fetches via device). + # verify_success uses the passed xml. + success = action_memory.verify_success(intent, feed_xml, story_xml, device=device) + + assert success is False, "Story Trap was not detected! verify_success should return False." + + # 2. Because verification failed, reject_click is called. Let's do that manually to simulate GOAP: + # First confirm it to set a baseline confidence, then reject to prove decay. + action_memory.confirm_click(intent) + + point_id = action_memory.ui_memory._deterministic_id(intent) + points_before = action_memory.ui_memory.client.retrieve( + collection_name=action_memory.ui_memory.collection_name, ids=[point_id], with_payload=True + ) + initial_confidence = points_before[0].payload.get("confidence", 0.0) + + # Track the click again so reject_click has a context + action_memory.track_click(intent, s_node, feed_xml) + action_memory.reject_click(intent) + + points_after = action_memory.ui_memory.client.retrieve( + collection_name=action_memory.ui_memory.collection_name, ids=[point_id], with_payload=True + ) + + if points_after: + after_confidence = points_after[0].payload.get("confidence", 0.0) + assert after_confidence < initial_confidence, "Story Trap click was not penalized in Qdrant!" + else: + # Penalized so much it was dropped from the DB. + pass diff --git a/tests/integration/__pycache__/__init__.cpython-311.pyc b/tests/integration/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index e1d56b1..0000000 Binary files a/tests/integration/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_ad_detection.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_ad_detection.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 12ba285..0000000 Binary files a/tests/integration/__pycache__/test_ad_detection.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_ad_learning.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_ad_learning.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4b55846..0000000 Binary files a/tests/integration/__pycache__/test_ad_learning.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_ai_efficiency.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_ai_efficiency.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 60b0e42..0000000 Binary files a/tests/integration/__pycache__/test_ai_efficiency.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_bot_flow_interaction.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_bot_flow_interaction.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2266fb6..0000000 Binary files a/tests/integration/__pycache__/test_bot_flow_interaction.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_bot_flow_start.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_bot_flow_start.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b7e35cd..0000000 Binary files a/tests/integration/__pycache__/test_bot_flow_start.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_carousels_and_stories.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_carousels_and_stories.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7b0ad20..0000000 Binary files a/tests/integration/__pycache__/test_carousels_and_stories.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_cognitive_integration.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_cognitive_integration.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d398e0b..0000000 Binary files a/tests/integration/__pycache__/test_cognitive_integration.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_cognitive_stack_audit.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_cognitive_stack_audit.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 06ea30e..0000000 Binary files a/tests/integration/__pycache__/test_cognitive_stack_audit.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_core_nav_dm_regression.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_core_nav_dm_regression.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e3bc956..0000000 Binary files a/tests/integration/__pycache__/test_core_nav_dm_regression.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_darwin_engine.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_darwin_engine.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 898ee50..0000000 Binary files a/tests/integration/__pycache__/test_darwin_engine.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_deep_engagement.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_deep_engagement.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index fb117f4..0000000 Binary files a/tests/integration/__pycache__/test_deep_engagement.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_deep_interaction.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_deep_interaction.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 483b009..0000000 Binary files a/tests/integration/__pycache__/test_deep_interaction.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_device_facade_full.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_device_facade_full.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 91d1297..0000000 Binary files a/tests/integration/__pycache__/test_device_facade_full.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_dm_loop.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_dm_loop.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 88ac7fd..0000000 Binary files a/tests/integration/__pycache__/test_dm_loop.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_dynamic_discovery.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_dynamic_discovery.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 757d2f6..0000000 Binary files a/tests/integration/__pycache__/test_dynamic_discovery.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_false_positive.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_false_positive.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 61d3761..0000000 Binary files a/tests/integration/__pycache__/test_false_positive.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_full_e2e_android_sim.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_full_e2e_android_sim.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f819bb3..0000000 Binary files a/tests/integration/__pycache__/test_full_e2e_android_sim.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_ignore_close_friends.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_ignore_close_friends.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 35e2048..0000000 Binary files a/tests/integration/__pycache__/test_ignore_close_friends.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_llm_edge_inference.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_llm_edge_inference.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d15587d..0000000 Binary files a/tests/integration/__pycache__/test_llm_edge_inference.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_llm_provider_full.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_llm_provider_full.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d52b144..0000000 Binary files a/tests/integration/__pycache__/test_llm_provider_full.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_llm_provider_pipeline.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_llm_provider_pipeline.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index ee03163..0000000 Binary files a/tests/integration/__pycache__/test_llm_provider_pipeline.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_navigation_resilience.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_navigation_resilience.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index bc5f17c..0000000 Binary files a/tests/integration/__pycache__/test_navigation_resilience.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_q_nav_graph.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_q_nav_graph.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 347530c..0000000 Binary files a/tests/integration/__pycache__/test_q_nav_graph.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_qdrant_memory_full.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_qdrant_memory_full.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f33a6c2..0000000 Binary files a/tests/integration/__pycache__/test_qdrant_memory_full.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_qdrant_wipe.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_qdrant_wipe.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4b352fe..0000000 Binary files a/tests/integration/__pycache__/test_qdrant_wipe.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_resonance_engine.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_resonance_engine.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 6949841..0000000 Binary files a/tests/integration/__pycache__/test_resonance_engine.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_sae_fallback.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_sae_fallback.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2ef2a06..0000000 Binary files a/tests/integration/__pycache__/test_sae_fallback.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_scenarios_fsd.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_scenarios_fsd.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 53f4787..0000000 Binary files a/tests/integration/__pycache__/test_scenarios_fsd.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_situational_awareness.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_situational_awareness.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index aa21ebe..0000000 Binary files a/tests/integration/__pycache__/test_situational_awareness.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_swarm_protocol.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_swarm_protocol.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a3d761a..0000000 Binary files a/tests/integration/__pycache__/test_swarm_protocol.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_telepathic_edge_cases.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_telepathic_edge_cases.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 35cf3a1..0000000 Binary files a/tests/integration/__pycache__/test_telepathic_edge_cases.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_telepathic_engine_extraction.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_telepathic_engine_extraction.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 40206c2..0000000 Binary files a/tests/integration/__pycache__/test_telepathic_engine_extraction.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_telepathic_engine_vlm.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_telepathic_engine_vlm.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 502946a..0000000 Binary files a/tests/integration/__pycache__/test_telepathic_engine_vlm.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_telepathic_hardening.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_telepathic_hardening.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 21f1d34..0000000 Binary files a/tests/integration/__pycache__/test_telepathic_hardening.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_telepathic_keyword.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_telepathic_keyword.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c980618..0000000 Binary files a/tests/integration/__pycache__/test_telepathic_keyword.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_unfollow_loop.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_unfollow_loop.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 728c789..0000000 Binary files a/tests/integration/__pycache__/test_unfollow_loop.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_vision_post_eval.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_vision_post_eval.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index cf15587..0000000 Binary files a/tests/integration/__pycache__/test_vision_post_eval.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/integration/__pycache__/test_vision_profile_eval.cpython-311-pytest-8.3.5.pyc b/tests/integration/__pycache__/test_vision_profile_eval.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4968705..0000000 Binary files a/tests/integration/__pycache__/test_vision_profile_eval.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/property/__pycache__/__init__.cpython-311.pyc b/tests/property/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index a10c0f0..0000000 Binary files a/tests/property/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/property/__pycache__/test_property_invariants.cpython-311-pytest-8.3.5.pyc b/tests/property/__pycache__/test_property_invariants.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 81e5fe5..0000000 Binary files a/tests/property/__pycache__/test_property_invariants.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_api_mismatch.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_api_mismatch.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 221e3c1..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_api_mismatch.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_comment_hallucination.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_comment_hallucination.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c556e83..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_comment_hallucination.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_compiler_crash.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_compiler_crash.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 379dc50..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_compiler_crash.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_context_truthiness.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_context_truthiness.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index ca4b776..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_context_truthiness.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_false_learning.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_false_learning.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 985e48a..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_false_learning.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_grid_hallucination.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_grid_hallucination.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8a5e7b1..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_grid_hallucination.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_position_rejection.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_position_rejection.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9555a85..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_position_rejection.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/repro_reports/__pycache__/test_repro_reels_tab_hallucination.cpython-311-pytest-8.3.5.pyc b/tests/repro_reports/__pycache__/test_repro_reels_tab_hallucination.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 6686a62..0000000 Binary files a/tests/repro_reports/__pycache__/test_repro_reels_tab_hallucination.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/__init__.cpython-311.pyc b/tests/tdd/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 22075b5..0000000 Binary files a/tests/tdd/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_active_inference_deep.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_active_inference_deep.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 54511b6..0000000 Binary files a/tests/tdd/__pycache__/test_active_inference_deep.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_adaptive_snap.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_adaptive_snap.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e8533a6..0000000 Binary files a/tests/tdd/__pycache__/test_adaptive_snap.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_aversive_learning.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_aversive_learning.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c6e3f81..0000000 Binary files a/tests/tdd/__pycache__/test_aversive_learning.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_behavior_plugins.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_behavior_plugins.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f3cfa39..0000000 Binary files a/tests/tdd/__pycache__/test_behavior_plugins.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_bezier_gesture.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_bezier_gesture.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 72a71ab..0000000 Binary files a/tests/tdd/__pycache__/test_bezier_gesture.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_bot_flow_wait_loaded.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_bot_flow_wait_loaded.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 134aa01..0000000 Binary files a/tests/tdd/__pycache__/test_bot_flow_wait_loaded.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_discovery_loop_prevention.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_discovery_loop_prevention.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f7963db..0000000 Binary files a/tests/tdd/__pycache__/test_discovery_loop_prevention.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_drift_hardening.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_drift_hardening.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e15b13f..0000000 Binary files a/tests/tdd/__pycache__/test_drift_hardening.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_evolution_engine.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_evolution_engine.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index fa1a877..0000000 Binary files a/tests/tdd/__pycache__/test_evolution_engine.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_following_list_navigation.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_following_list_navigation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index c2a17dd..0000000 Binary files a/tests/tdd/__pycache__/test_following_list_navigation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_goal_decomposer.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_goal_decomposer.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7406605..0000000 Binary files a/tests/tdd/__pycache__/test_goal_decomposer.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_goap_loop_prevention.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_goap_loop_prevention.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9418c60..0000000 Binary files a/tests/tdd/__pycache__/test_goap_loop_prevention.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_home_feed_back_button_trap.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_home_feed_back_button_trap.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 538f37a..0000000 Binary files a/tests/tdd/__pycache__/test_home_feed_back_button_trap.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_learnable_fast_paths.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_learnable_fast_paths.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 681ae38..0000000 Binary files a/tests/tdd/__pycache__/test_learnable_fast_paths.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_modal_vlm_fix.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_modal_vlm_fix.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 13b6a19..0000000 Binary files a/tests/tdd/__pycache__/test_modal_vlm_fix.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_navigation_loop_prevention.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_navigation_loop_prevention.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 3ee88a3..0000000 Binary files a/tests/tdd/__pycache__/test_navigation_loop_prevention.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_null_action_penalty.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_null_action_penalty.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 45e09c4..0000000 Binary files a/tests/tdd/__pycache__/test_null_action_penalty.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_perception_module.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_perception_module.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b14a538..0000000 Binary files a/tests/tdd/__pycache__/test_perception_module.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_physics_body.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_physics_body.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7b7e700..0000000 Binary files a/tests/tdd/__pycache__/test_physics_body.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_physics_module.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_physics_module.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f6f5408..0000000 Binary files a/tests/tdd/__pycache__/test_physics_module.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_plugin_architecture.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_plugin_architecture.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d346e8d..0000000 Binary files a/tests/tdd/__pycache__/test_plugin_architecture.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_profile_transition.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_profile_transition.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 3c900b6..0000000 Binary files a/tests/tdd/__pycache__/test_profile_transition.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_qdrant_overlap.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_qdrant_overlap.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a4f9616..0000000 Binary files a/tests/tdd/__pycache__/test_qdrant_overlap.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_reels_repost.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_reels_repost.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f0a403a..0000000 Binary files a/tests/tdd/__pycache__/test_reels_repost.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_regression_fixes.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_regression_fixes.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9e2dad2..0000000 Binary files a/tests/tdd/__pycache__/test_regression_fixes.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_resonance_persona_bootstrap.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_resonance_persona_bootstrap.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d807eff..0000000 Binary files a/tests/tdd/__pycache__/test_resonance_persona_bootstrap.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_sae_escalation.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_sae_escalation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 36892e3..0000000 Binary files a/tests/tdd/__pycache__/test_sae_escalation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_semantic_heuristic_match.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_semantic_heuristic_match.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d70180a..0000000 Binary files a/tests/tdd/__pycache__/test_semantic_heuristic_match.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_telepathic_poison_guard.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_telepathic_poison_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 0845857..0000000 Binary files a/tests/tdd/__pycache__/test_telepathic_poison_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/tdd/__pycache__/test_wipe_all_ai_caches.cpython-311-pytest-8.3.5.pyc b/tests/tdd/__pycache__/test_wipe_all_ai_caches.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index ca4dc29..0000000 Binary files a/tests/tdd/__pycache__/test_wipe_all_ai_caches.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/__init__.cpython-311.pyc b/tests/unit/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index a4a347e..0000000 Binary files a/tests/unit/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_anomaly_interruptions.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_anomaly_interruptions.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index bf6cb1b..0000000 Binary files a/tests/unit/__pycache__/test_anomaly_interruptions.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_anomaly_interruptions.cpython-311.pyc b/tests/unit/__pycache__/test_anomaly_interruptions.cpython-311.pyc deleted file mode 100644 index 9edcf8b..0000000 Binary files a/tests/unit/__pycache__/test_anomaly_interruptions.cpython-311.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_app_perimeter_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_app_perimeter_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index eee7aa5..0000000 Binary files a/tests/unit/__pycache__/test_app_perimeter_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_autonomous_ad_learning.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_autonomous_ad_learning.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9cb8878..0000000 Binary files a/tests/unit/__pycache__/test_autonomous_ad_learning.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_autonomous_goals.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_autonomous_goals.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d54b356..0000000 Binary files a/tests/unit/__pycache__/test_autonomous_goals.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_autonomous_retries.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_autonomous_retries.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 28cc462..0000000 Binary files a/tests/unit/__pycache__/test_autonomous_retries.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_benchmark_integrity.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_benchmark_integrity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e022fc8..0000000 Binary files a/tests/unit/__pycache__/test_benchmark_integrity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_bot_flow_autonomy.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_bot_flow_autonomy.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9cdda85..0000000 Binary files a/tests/unit/__pycache__/test_bot_flow_autonomy.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_bot_flow_singleton.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_bot_flow_singleton.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d316cbb..0000000 Binary files a/tests/unit/__pycache__/test_bot_flow_singleton.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_bot_flow_unlearn.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_bot_flow_unlearn.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 1c5dcbc..0000000 Binary files a/tests/unit/__pycache__/test_bot_flow_unlearn.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_bot_plugins_skip.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_bot_plugins_skip.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b93363a..0000000 Binary files a/tests/unit/__pycache__/test_bot_plugins_skip.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_brain_output_contract.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_brain_output_contract.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 10f1acc..0000000 Binary files a/tests/unit/__pycache__/test_brain_output_contract.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_camera_trap_escape.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_camera_trap_escape.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 747bba9..0000000 Binary files a/tests/unit/__pycache__/test_camera_trap_escape.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_compiler_engine_intent.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_compiler_engine_intent.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d1d7114..0000000 Binary files a/tests/unit/__pycache__/test_compiler_engine_intent.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_config_effects.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_config_effects.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e1cb5d6..0000000 Binary files a/tests/unit/__pycache__/test_config_effects.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_config_persona_mapping.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_config_persona_mapping.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 5ba2279..0000000 Binary files a/tests/unit/__pycache__/test_config_persona_mapping.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_config_plugins.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_config_plugins.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a56a05f..0000000 Binary files a/tests/unit/__pycache__/test_config_plugins.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_config_plugins2.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_config_plugins2.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e75bf41..0000000 Binary files a/tests/unit/__pycache__/test_config_plugins2.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_critical_anomaly_guards.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_critical_anomaly_guards.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 601c0a9..0000000 Binary files a/tests/unit/__pycache__/test_critical_anomaly_guards.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_darwin_engine_comments.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_darwin_engine_comments.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 08dfae2..0000000 Binary files a/tests/unit/__pycache__/test_darwin_engine_comments.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_delete_point_logging.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_delete_point_logging.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 07f23ad..0000000 Binary files a/tests/unit/__pycache__/test_delete_point_logging.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_device_connection.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_device_connection.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b9b0764..0000000 Binary files a/tests/unit/__pycache__/test_device_connection.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_diagnostic_dump_cleanup.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_diagnostic_dump_cleanup.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2a83cbd..0000000 Binary files a/tests/unit/__pycache__/test_diagnostic_dump_cleanup.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_dm_engine_autonomy.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_dm_engine_autonomy.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 36b04fc..0000000 Binary files a/tests/unit/__pycache__/test_dm_engine_autonomy.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_dm_engine_thread_escape.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_dm_engine_thread_escape.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2fa1f12..0000000 Binary files a/tests/unit/__pycache__/test_dm_engine_thread_escape.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_dm_navigation_guards.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_dm_navigation_guards.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 89895fd..0000000 Binary files a/tests/unit/__pycache__/test_dm_navigation_guards.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_dopamine_engine.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_dopamine_engine.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e7dacd3..0000000 Binary files a/tests/unit/__pycache__/test_dopamine_engine.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_dopamine_loop.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_dopamine_loop.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 6ba49db..0000000 Binary files a/tests/unit/__pycache__/test_dopamine_loop.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_explore_grid_navigation.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_explore_grid_navigation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 80bb7ad..0000000 Binary files a/tests/unit/__pycache__/test_explore_grid_navigation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_feed_loop_continuation.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_feed_loop_continuation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e70ef77..0000000 Binary files a/tests/unit/__pycache__/test_feed_loop_continuation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_following_nav_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_following_nav_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index cad4ee8..0000000 Binary files a/tests/unit/__pycache__/test_following_nav_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_goap_bootstrap.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_goap_bootstrap.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 80345ca..0000000 Binary files a/tests/unit/__pycache__/test_goap_bootstrap.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_goap_false_unlearn.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_goap_false_unlearn.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 963c94d..0000000 Binary files a/tests/unit/__pycache__/test_goap_false_unlearn.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_goap_graph_routing.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_goap_graph_routing.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index cc17684..0000000 Binary files a/tests/unit/__pycache__/test_goap_graph_routing.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_goap_step_validation.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_goap_step_validation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index f425d8f..0000000 Binary files a/tests/unit/__pycache__/test_goap_step_validation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_goap_unlearn.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_goap_unlearn.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 38353ec..0000000 Binary files a/tests/unit/__pycache__/test_goap_unlearn.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_grid_retry_diversity.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_grid_retry_diversity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 610d80f..0000000 Binary files a/tests/unit/__pycache__/test_grid_retry_diversity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_intent_resolver_back_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_intent_resolver_back_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 02ae1e1..0000000 Binary files a/tests/unit/__pycache__/test_intent_resolver_back_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_is_ad_substring.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_is_ad_substring.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4843c4c..0000000 Binary files a/tests/unit/__pycache__/test_is_ad_substring.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_llm_provider.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_llm_provider.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7e983a9..0000000 Binary files a/tests/unit/__pycache__/test_llm_provider.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_llm_provider_timeout.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_llm_provider_timeout.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 87fb046..0000000 Binary files a/tests/unit/__pycache__/test_llm_provider_timeout.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_mock_ban_verify.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_mock_ban_verify.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d7e7ca0..0000000 Binary files a/tests/unit/__pycache__/test_mock_ban_verify.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_nav_intent_classification.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_nav_intent_classification.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 1dead99..0000000 Binary files a/tests/unit/__pycache__/test_nav_intent_classification.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_obstacle_guard_system_dialog.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_obstacle_guard_system_dialog.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 11c777b..0000000 Binary files a/tests/unit/__pycache__/test_obstacle_guard_system_dialog.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_ollama_cleanup.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_ollama_cleanup.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a7320a8..0000000 Binary files a/tests/unit/__pycache__/test_ollama_cleanup.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_path_overwriting.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_path_overwriting.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index da3f33b..0000000 Binary files a/tests/unit/__pycache__/test_path_overwriting.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_physics_humanized.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_physics_humanized.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 6ebdd3a..0000000 Binary files a/tests/unit/__pycache__/test_physics_humanized.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_profile_interaction_edges.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_profile_interaction_edges.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8965925..0000000 Binary files a/tests/unit/__pycache__/test_profile_interaction_edges.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_profile_interaction_sync.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_profile_interaction_sync.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 43fcaaf..0000000 Binary files a/tests/unit/__pycache__/test_profile_interaction_sync.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_qdrant_memory.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_qdrant_memory.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 3a7d368..0000000 Binary files a/tests/unit/__pycache__/test_qdrant_memory.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_qdrant_vector_dims.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_qdrant_vector_dims.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4667f50..0000000 Binary files a/tests/unit/__pycache__/test_qdrant_vector_dims.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_sae_tesla_upgrade.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_sae_tesla_upgrade.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d8f6e14..0000000 Binary files a/tests/unit/__pycache__/test_sae_tesla_upgrade.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_sae_unlearn.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_sae_unlearn.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 0ca58bc..0000000 Binary files a/tests/unit/__pycache__/test_sae_unlearn.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_sae_zero_maintenance.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_sae_zero_maintenance.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 952472c..0000000 Binary files a/tests/unit/__pycache__/test_sae_zero_maintenance.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_screen_identity_profile.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_screen_identity_profile.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9a35d3b..0000000 Binary files a/tests/unit/__pycache__/test_screen_identity_profile.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_screen_topology.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_screen_topology.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4800992..0000000 Binary files a/tests/unit/__pycache__/test_screen_topology.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_self_healing_memory.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_self_healing_memory.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 427b057..0000000 Binary files a/tests/unit/__pycache__/test_self_healing_memory.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_session_limits_evaluation.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_session_limits_evaluation.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 71cfafb..0000000 Binary files a/tests/unit/__pycache__/test_session_limits_evaluation.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_structural_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_structural_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 0084151..0000000 Binary files a/tests/unit/__pycache__/test_structural_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_structural_hardening.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_structural_hardening.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 538e2a4..0000000 Binary files a/tests/unit/__pycache__/test_structural_hardening.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_telepathic_brevity_bonus.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_telepathic_brevity_bonus.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 9d0c6c5..0000000 Binary files a/tests/unit/__pycache__/test_telepathic_brevity_bonus.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_telepathic_confidence.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_telepathic_confidence.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 679ec70..0000000 Binary files a/tests/unit/__pycache__/test_telepathic_confidence.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_telepathic_container_filtering.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_telepathic_container_filtering.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8069105..0000000 Binary files a/tests/unit/__pycache__/test_telepathic_container_filtering.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_unfollow_engine.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_unfollow_engine.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7a04df5..0000000 Binary files a/tests/unit/__pycache__/test_unfollow_engine.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_unfollow_engine_autonomy.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_unfollow_engine_autonomy.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b464e77..0000000 Binary files a/tests/unit/__pycache__/test_unfollow_engine_autonomy.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/__pycache__/test_verify_success_reels.cpython-311-pytest-8.3.5.pyc b/tests/unit/__pycache__/test_verify_success_reels.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index b35727c..0000000 Binary files a/tests/unit/__pycache__/test_verify_success_reels.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_ad_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_ad_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index de9448c..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_ad_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_anomaly_handler.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_anomaly_handler.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 6fd9fe4..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_anomaly_handler.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_carousel_browsing.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_carousel_browsing.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a42e39c..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_carousel_browsing.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_close_friends_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_close_friends_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 77d2b23..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_close_friends_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_comment.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_comment.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 87f5885..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_comment.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_comment_plugin.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_comment_plugin.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 513902a..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_comment_plugin.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_darwin_dwell.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_darwin_dwell.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 1eb6d1e..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_darwin_dwell.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_follow.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_follow.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a0342b2..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_follow.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_grid_like.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_grid_like.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index aed7a55..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_grid_like.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_like.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_like.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 7f38862..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_like.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_obstacle_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_obstacle_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 1562820..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_obstacle_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_perfect_snapping.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_perfect_snapping.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index e5254bf..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_perfect_snapping.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_plugin_registry_config.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_plugin_registry_config.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8ae3690..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_plugin_registry_config.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_post_data_extraction.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_post_data_extraction.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4a92910..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_post_data_extraction.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_post_interaction.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_post_interaction.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 01dbef1..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_post_interaction.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_profile_guard.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_profile_guard.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 2c13571..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_profile_guard.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_profile_visit.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_profile_visit.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index aaa8444..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_profile_visit.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_rabbit_hole.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_rabbit_hole.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index a6f5e22..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_rabbit_hole.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_repost.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_repost.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index d9253ea..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_repost.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_resonance_evaluator.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_resonance_evaluator.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 4cb6aa4..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_resonance_evaluator.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/behaviors/__pycache__/test_story_view.cpython-311-pytest-8.3.5.pyc b/tests/unit/behaviors/__pycache__/test_story_view.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8407e6d..0000000 Binary files a/tests/unit/behaviors/__pycache__/test_story_view.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/perception/__pycache__/test_action_memory.cpython-311-pytest-8.3.5.pyc b/tests/unit/perception/__pycache__/test_action_memory.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8f1af11..0000000 Binary files a/tests/unit/perception/__pycache__/test_action_memory.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/perception/__pycache__/test_intent_resolver.cpython-311-pytest-8.3.5.pyc b/tests/unit/perception/__pycache__/test_intent_resolver.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 8807a5c..0000000 Binary files a/tests/unit/perception/__pycache__/test_intent_resolver.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/perception/__pycache__/test_screen_identity.cpython-311-pytest-8.3.5.pyc b/tests/unit/perception/__pycache__/test_screen_identity.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 27a0876..0000000 Binary files a/tests/unit/perception/__pycache__/test_screen_identity.cpython-311-pytest-8.3.5.pyc and /dev/null differ diff --git a/tests/unit/perception/__pycache__/test_spatial_parser.cpython-311-pytest-8.3.5.pyc b/tests/unit/perception/__pycache__/test_spatial_parser.cpython-311-pytest-8.3.5.pyc deleted file mode 100644 index 34b50b7..0000000 Binary files a/tests/unit/perception/__pycache__/test_spatial_parser.cpython-311-pytest-8.3.5.pyc and /dev/null differ