Commit Graph

13 Commits

Author SHA1 Message Date
0e43996ccd feat(orchestrator): wire GoalDecomposer into bot_flow.py
Replace the old dual-path orchestrator (abstract goals vs legacy desires)
with unified GoalDecomposer-driven task routing:

1. GoalDecomposer reads mission.strategy + plugins config
2. Generates weighted Task objects (verb, target_screen, budget)
3. GrowthBrain.select_task() picks one probabilistically
4. Selected Task's target_screen routes through existing nav_graph
5. Feed loops + PluginRegistry handle the actual interactions

The abstract goals path (goal_executor.achieve('Nurture community'))
that caused infinite scrolling is now eliminated entirely.

Legacy desire fallback preserved for configs without plugins.

22/22 tests passing.
2026-04-29 17:20:04 +02:00
b6846ab0fe feat(brain): add GrowthBrain.select_task() + kill abstract goals config
- GrowthBrain.select_task() uses weighted random from concrete Task objects
- Removed self.goals from Config (no longer reads goals: from config.yml)
- Mission + plugins are now the SSOT for bot behavior

The bot no longer receives abstract strings like 'Nurture my community' that
the LLM Brain can't operationalize. Instead, the GoalDecomposer generates
Task(browse_feed, HomeFeed, budget=7) which routes to concrete feed loops.

18/18 TDD tests passing.
2026-04-29 17:17:39 +02:00
6db579f45b feat(goals): add GoalDecomposer — pure-logic task planner from mission+plugins
Introduces the GoalDecomposer class that bridges mission.strategy + plugin
capabilities into concrete, weighted Task objects. Each Task has a target
screen, budget, weight, and human-readable intent.

Key design decisions:
- Pure logic, zero LLM/device dependencies
- Strategy weights (aggressive_growth, community_builder, etc.) drive selection
- Plugins declare which screens they operate on (multi-screen map)
- Screens need BOTH an action route AND active plugin to be viable
- Frozen dataclass ensures Task immutability

12/12 TDD tests passing.
2026-04-29 17:15:17 +02:00
a7449a1db3 chore(test): Ruthless deletion of ALL remaining MagicMocks and patches across the entire test suite 2026-04-27 16:50:26 +02:00
42eabb7bda fix: implement wipe_all_ai_caches, harden blank_start imports, purge root garbage
- Implement wipe_all_ai_caches() in qdrant_memory.py (was a phantom function
  referenced but never created, causing ERROR on every blank_start)
- Move imports OUT of try/except in bot_flow.py blank_start block so that
  ImportError/NameError crash loudly instead of being silently swallowed
- Add Production Integrity Guard (check_production_integrity) to detect
  MagicMock poisoning at startup
- Add missing TelepathicEngine import in bot_flow.py
- Fix conftest.py: move sys.modules monkeypatching into session fixture
  to prevent global environment poisoning on test import
- Add TDD test test_wipe_all_ai_caches.py proving importability and
  correct wipe behavior across all 8 global Qdrant collections
- Delete root garbage: patch_sae_tests.py, test_debug.py, test_mock.py,
  tmp_bot_flow.py, test_e2e_output*.txt
2026-04-25 21:43:53 +02:00
144d6401b5 feat: complete modular plugin refactor with 100% E2E coverage for interactions 2026-04-25 20:58:07 +02:00
30724d3c03 chore: FSD stabilization, strict TDD enforcement, and unlearn mechanism
- implemented self-healing unlearn for Qdrant false positives
- centralized testing logic in conftest
- documented core rules, ai standards, and goap philosophy
- purged old dev scratchpads
2026-04-24 13:28:32 +02:00
75009d91a2 feat(navigation): Implement 100% autonomous Blank Start architecture; purge heuristics 2026-04-22 00:05:03 +02:00
0a02e901b6 fix(feed): resolve home feed back-button scroll-to-top trap
- Separated obstacle detection from feed marker validation
- Prevented blind BACK button presses when markers are missing mid-scroll
- Added TDD verification for feed navigation stability
- Cleaned up debug artifacts and temporary test output
2026-04-21 02:00:01 +02:00
2c6404f387 feat: stabilize autonomous instagram bot suite (100% green)
Summary of work:
- Resolved mass SystemExit: 2 failures by hardening Config against pytest CLI args.
- Fixed state leakage in test suite by implementing aggressive cache wiping in conftest.py.
- Fixed TypeErrors and UnboundLocalErrors in TelepathicEngine and bot_flow.
- Aligned MockTelepathicEngine signatures to resolve Mock Drift.
- Achieved 100% pass rate across 498 tests.
2026-04-20 15:11:49 +02:00
fc3209bdc1 test: stabilize E2E coverage and GOAP fallback logic
- Refactored 'test_navigation_resilience.py' to produce structurally valid mock XML dynamically responding to app_start resets.
- Patched 'bot_flow.py' interaction lifecycle to handle cognitively deficient test scenarios gracefully.
- Migrated 'device_facade_full.py' assertions to shell-first interaction schemas (adb shell input).
- Stabilized legacy unit tests against structurally strict 'TelepathicEngine' dimension checks.
2026-04-20 00:33:27 +02:00
ba4d7ffda2 chore: migrate autonomous navigation to GOAP and finalize 100% E2E test stabilization
- Delegate legacy BFS navigation to structure-based GOAP system
- Harden Situational Awareness Engine (SAE) for modal and obstacle clearance
- Fix device sizing calculations during mocked humanized scrolls
- Remove deprecated V8 test stubs and legacy debug entrypoints
- Stabilize Telepathic Engine context parsing thresholds
Result: 66/66 E2E and integration tests passing
2026-04-19 22:14:56 +02:00
0aeed11186 Hardening autonomous navigation: Implemented Modal Guards, Transient Drift Protection (WhatsApp fix), and Aggressive Recovery paths. Cleaned up diagnostic artifacts. 2026-04-17 12:57:12 +02:00