phi-drift / scratch /check_isolation.py
crexs's picture
Upload folder using huggingface_hub
a5acf49 verified
Raw
History Blame Contribute Delete
2.18 kB
import os
import shutil
import sys
from pathlib import Path
# Add project root to sys.path
project_root = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(project_root))
from core.plugins.goals import GoalsDB
from core.brain import DriftBrain
def self_check_data_isolation():
print("--- INITIATING SYSTEM CHECK: MULTI-TENANT ISOLATION ---")
# Define test session paths
test_dir = Path("./test_sessions")
session_a_path = test_dir / "session_A" / "goals.db"
session_b_path = test_dir / "session_B" / "goals.db"
try:
# PLUG 1: Verify GoalsDB Isolation
print("\n[TEST 1] GoalsDB Data Bleed Check")
db_a = GoalsDB(db_path=session_a_path)
db_b = GoalsDB(db_path=session_b_path)
# Write to A
gid = db_a.add_goal(title='Session A Goal')
# Read from B
goals_b = db_b.list_goals()
result = next((g for g in goals_b if g.id == gid), None)
if result is None:
print("[OK] Complete isolation confirmed. Session B cannot see Session A's goals.")
else:
print("[ERROR] Data bleed detected! Session B read Session A's data.")
print("Fix: Ensure self.db_path is strictly used in all SQL executions inside goals.py.")
# PLUG 2: Verify DriftBrain Injection
print("\n[TEST 2] DriftBrain Dependency Injection")
mock_evaluator_a = "Evaluator_A"
mock_evaluator_b = "Evaluator_B"
brain_a = DriftBrain(evaluator=mock_evaluator_a)
brain_b = DriftBrain(evaluator=mock_evaluator_b)
if brain_a.evaluator != brain_b.evaluator:
print("[OK] DriftBrain successfully holds isolated evaluator instances.")
else:
print("[ERROR] DriftBrain instances are sharing the same evaluator.")
print("Fix: Check the initialization logic in brain.py to ensure 'evaluator=None' defaults correctly.")
finally:
# Cleanup test directories
if test_dir.exists():
shutil.rmtree(test_dir)
print("\n[SYSTEM] Test environment cleaned up.")
if __name__ == "__main__":
self_check_data_isolation()