This PR addresses the "memory poisoning paradox" during blank_start, strictly following TDD (Red -> Green -> Refactor).
TDD Execution
Red Phase: Wrote two unit tests:
test_delete_point_logging.py: Proved that qdrant_memory.py unconditionally logs fake deletion successes even when vectors didn't exist.
test_bot_flow_singleton.py: Proved the initialization leak where QNavGraph instantiated GoalExecutor without a username, causing PathMemory to latch onto goap_paths_v1 instead of the user-specific collection.
Green Phase:
bot_flow.py: Pre-initialized GoalExecutor.get_instance(device, username) to lock in the correct username.
qdrant_memory.py: Added client.retrieve() validation inside delete_point before running .delete().
All tests pass perfectly.
This PR addresses the "memory poisoning paradox" during `blank_start`, strictly following TDD (Red -> Green -> Refactor).
### TDD Execution
1. **Red Phase**: Wrote two unit tests:
- `test_delete_point_logging.py`: Proved that `qdrant_memory.py` unconditionally logs fake deletion successes even when vectors didn't exist.
- `test_bot_flow_singleton.py`: Proved the initialization leak where `QNavGraph` instantiated `GoalExecutor` without a username, causing `PathMemory` to latch onto `goap_paths_v1` instead of the user-specific collection.
2. **Green Phase**:
- `bot_flow.py`: Pre-initialized `GoalExecutor.get_instance(device, username)` to lock in the correct username.
- `qdrant_memory.py`: Added `client.retrieve()` validation inside `delete_point` before running `.delete()`.
All tests pass perfectly.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR addresses the "memory poisoning paradox" during
blank_start, strictly following TDD (Red -> Green -> Refactor).TDD Execution
test_delete_point_logging.py: Proved thatqdrant_memory.pyunconditionally logs fake deletion successes even when vectors didn't exist.test_bot_flow_singleton.py: Proved the initialization leak whereQNavGraphinstantiatedGoalExecutorwithout a username, causingPathMemoryto latch ontogoap_paths_v1instead of the user-specific collection.bot_flow.py: Pre-initializedGoalExecutor.get_instance(device, username)to lock in the correct username.qdrant_memory.py: Addedclient.retrieve()validation insidedelete_pointbefore running.delete().All tests pass perfectly.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.