fix: all imports updated to cortex.xxx namespace — 405 tests green
Some checks failed
Tests / test (push) Failing after 5s

- Fixed bare 'from governance.' imports in source + tests
- Fixed bare 'from intelligence.' imports in tests
- Fixed mock.patch targets to use full cortex.xxx paths
- All 405 tests passing
This commit is contained in:
Claudia 2026-02-12 08:47:45 +01:00
parent fd7d75c0ed
commit c5e5ce9dc0
12 changed files with 41 additions and 41 deletions

View file

@ -45,20 +45,20 @@ def _build_context(args: argparse.Namespace) -> dict:
def _get_engine(): def _get_engine():
from governance.policy import PolicyEngine from cortex.governance.policy import PolicyEngine
return PolicyEngine(policies_dir=DEFAULT_POLICIES_DIR) return PolicyEngine(policies_dir=DEFAULT_POLICIES_DIR)
def _get_scorer(): def _get_scorer():
from governance.risk_scorer import RiskScorer from cortex.governance.risk_scorer import RiskScorer
return RiskScorer() return RiskScorer()
def _get_enforcer(): def _get_enforcer():
from governance.enforcer import Enforcer from cortex.governance.enforcer import Enforcer
from governance.policy import PolicyEngine from cortex.governance.policy import PolicyEngine
from governance.risk_scorer import RiskScorer from cortex.governance.risk_scorer import RiskScorer
from governance.evidence import EvidenceCollector, ControlMapping from cortex.governance.evidence import EvidenceCollector, ControlMapping
return Enforcer( return Enforcer(
policy_engine=PolicyEngine(policies_dir=DEFAULT_POLICIES_DIR), policy_engine=PolicyEngine(policies_dir=DEFAULT_POLICIES_DIR),
@ -150,8 +150,8 @@ def cmd_status(args: argparse.Namespace) -> None:
def cmd_report(args: argparse.Namespace) -> None: def cmd_report(args: argparse.Namespace) -> None:
"""Generate compliance report (placeholder — needs live evidence).""" """Generate compliance report (placeholder — needs live evidence)."""
from governance.evidence import EvidenceCollector, ControlMapping from cortex.governance.evidence import EvidenceCollector, ControlMapping
from governance.report_generator import ReportGenerator from cortex.governance.report_generator import ReportGenerator
collector = EvidenceCollector( collector = EvidenceCollector(
control_mapping=ControlMapping(DEFAULT_CONTROLS_MAPPING) control_mapping=ControlMapping(DEFAULT_CONTROLS_MAPPING)

View file

@ -10,9 +10,9 @@ import logging
from dataclasses import dataclass from dataclasses import dataclass
from typing import Any from typing import Any
from governance.evidence import EvidenceCollector from cortex.governance.evidence import EvidenceCollector
from governance.policy import PolicyEngine from cortex.governance.policy import PolicyEngine
from governance.risk_scorer import RiskResult, RiskScorer from cortex.governance.risk_scorer import RiskResult, RiskScorer
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View file

@ -13,7 +13,7 @@ from dataclasses import dataclass
from datetime import datetime, timezone from datetime import datetime, timezone
from typing import Any from typing import Any
from governance.evidence import EvidenceCollector, EvidenceRecord from cortex.governance.evidence import EvidenceCollector, EvidenceRecord
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View file

@ -8,10 +8,10 @@ import pytest
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
from governance.enforcer import Enforcer, Decision from cortex.governance.enforcer import Enforcer, Decision
from governance.policy import PolicyEngine from cortex.governance.policy import PolicyEngine
from governance.risk_scorer import RiskScorer from cortex.governance.risk_scorer import RiskScorer
from governance.evidence import EvidenceCollector, ControlMapping from cortex.governance.evidence import EvidenceCollector, ControlMapping
def _make_enforcer(tmp_path, rules=None): def _make_enforcer(tmp_path, rules=None):

View file

@ -9,7 +9,7 @@ import pytest
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
from governance.evidence import EvidenceCollector, EvidenceRecord, ControlMapping from cortex.governance.evidence import EvidenceCollector, EvidenceRecord, ControlMapping
class TestControlMapping: class TestControlMapping:

View file

@ -6,8 +6,8 @@ from pathlib import Path
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
from governance.evidence import EvidenceCollector, ControlMapping from cortex.governance.evidence import EvidenceCollector, ControlMapping
from governance.report_generator import ReportGenerator from cortex.governance.report_generator import ReportGenerator
class TestReportGenerator: class TestReportGenerator:

View file

@ -5,7 +5,7 @@ from pathlib import Path
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
from governance.risk_scorer import RiskScorer, RiskResult, _classify_level from cortex.governance.risk_scorer import RiskScorer, RiskResult, _classify_level
class TestClassifyLevel: class TestClassifyLevel:

View file

@ -9,7 +9,7 @@ from unittest.mock import patch, MagicMock
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
import knowledge_cleanup as kc import cortex.intelligence.knowledge_cleanup as kc
class TestBackup: class TestBackup:
@ -107,28 +107,28 @@ class TestScoreRelationships:
class TestClassifyUnknowns: class TestClassifyUnknowns:
@patch("knowledge_cleanup.ollama_generate") @patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
def test_no_unknowns(self, mock_ollama): def test_no_unknowns(self, mock_ollama):
entities = {"albert": {"type": "person"}} entities = {"albert": {"type": "person"}}
result = kc.classify_unknowns(entities, dry_run=False) result = kc.classify_unknowns(entities, dry_run=False)
mock_ollama.assert_not_called() mock_ollama.assert_not_called()
assert result == entities assert result == entities
@patch("knowledge_cleanup.ollama_generate") @patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
def test_classifies_unknowns(self, mock_ollama): def test_classifies_unknowns(self, mock_ollama):
mock_ollama.return_value = '{"1": "person"}' mock_ollama.return_value = '{"1": "person"}'
entities = {"albert": {"type": "unknown"}} entities = {"albert": {"type": "unknown"}}
result = kc.classify_unknowns(entities, dry_run=False) result = kc.classify_unknowns(entities, dry_run=False)
assert result["albert"]["type"] == "person" assert result["albert"]["type"] == "person"
@patch("knowledge_cleanup.ollama_generate") @patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
def test_dry_run_no_change(self, mock_ollama): def test_dry_run_no_change(self, mock_ollama):
mock_ollama.return_value = '{"1": "person"}' mock_ollama.return_value = '{"1": "person"}'
entities = {"albert": {"type": "unknown"}} entities = {"albert": {"type": "unknown"}}
result = kc.classify_unknowns(entities, dry_run=True) result = kc.classify_unknowns(entities, dry_run=True)
assert result["albert"]["type"] == "unknown" assert result["albert"]["type"] == "unknown"
@patch("knowledge_cleanup.ollama_generate") @patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
def test_handles_llm_failure(self, mock_ollama): def test_handles_llm_failure(self, mock_ollama):
mock_ollama.side_effect = Exception("timeout") mock_ollama.side_effect = Exception("timeout")
entities = {"albert": {"type": "unknown"}} entities = {"albert": {"type": "unknown"}}

View file

@ -6,7 +6,7 @@ from unittest.mock import patch
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
from knowledge_extractor import importance_heuristic, parse_since from cortex.knowledge_extractor import importance_heuristic, parse_since
class TestImportanceHeuristic: class TestImportanceHeuristic:

View file

@ -7,7 +7,7 @@ from unittest.mock import patch, MagicMock
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
from llm_extractor import ( from cortex.intelligence.llm_extractor import (
_parse_json_response, _parse_json_response,
_normalize_entities, _normalize_entities,
extract_entities_llm, extract_entities_llm,
@ -83,26 +83,26 @@ class TestNormalizeEntities:
class TestExtractEntitiesLlm: class TestExtractEntitiesLlm:
@patch("llm_extractor._call_ollama") @patch("cortex.intelligence.llm_extractor._call_ollama")
def test_empty_text(self, mock_ollama): def test_empty_text(self, mock_ollama):
assert extract_entities_llm("") == {} assert extract_entities_llm("") == {}
assert extract_entities_llm("short") == {} assert extract_entities_llm("short") == {}
mock_ollama.assert_not_called() mock_ollama.assert_not_called()
@patch("llm_extractor._call_ollama") @patch("cortex.intelligence.llm_extractor._call_ollama")
def test_ollama_unavailable(self, mock_ollama): def test_ollama_unavailable(self, mock_ollama):
mock_ollama.return_value = None mock_ollama.return_value = None
result = extract_entities_llm("This is a test about Albert and Mondo Gate AG") result = extract_entities_llm("This is a test about Albert and Mondo Gate AG")
assert result is None # signals fallback assert result is None # signals fallback
@patch("llm_extractor._call_ollama") @patch("cortex.intelligence.llm_extractor._call_ollama")
def test_successful_extraction(self, mock_ollama): def test_successful_extraction(self, mock_ollama):
mock_ollama.return_value = '{"albert": {"type": "person", "context": "mentioned"}}' mock_ollama.return_value = '{"albert": {"type": "person", "context": "mentioned"}}'
result = extract_entities_llm("Albert discussed the project with the team members today") result = extract_entities_llm("Albert discussed the project with the team members today")
assert "albert" in result assert "albert" in result
assert result["albert"]["type"] == "person" assert result["albert"]["type"] == "person"
@patch("llm_extractor._call_ollama") @patch("cortex.intelligence.llm_extractor._call_ollama")
def test_truncates_long_text(self, mock_ollama): def test_truncates_long_text(self, mock_ollama):
mock_ollama.return_value = "{}" mock_ollama.return_value = "{}"
extract_entities_llm("x" * 3000) extract_entities_llm("x" * 3000)
@ -112,19 +112,19 @@ class TestExtractEntitiesLlm:
class TestExtractEntitiesLlmBatch: class TestExtractEntitiesLlmBatch:
@patch("llm_extractor._call_ollama") @patch("cortex.intelligence.llm_extractor._call_ollama")
def test_empty_list(self, mock_ollama): def test_empty_list(self, mock_ollama):
assert extract_entities_llm_batch([]) == {} assert extract_entities_llm_batch([]) == {}
mock_ollama.assert_not_called() mock_ollama.assert_not_called()
@patch("llm_extractor._call_ollama") @patch("cortex.intelligence.llm_extractor._call_ollama")
def test_filters_short_texts(self, mock_ollama): def test_filters_short_texts(self, mock_ollama):
mock_ollama.return_value = "{}" mock_ollama.return_value = "{}"
result = extract_entities_llm_batch(["hi", "yo", ""]) result = extract_entities_llm_batch(["hi", "yo", ""])
assert result == {} assert result == {}
mock_ollama.assert_not_called() mock_ollama.assert_not_called()
@patch("llm_extractor._call_ollama") @patch("cortex.intelligence.llm_extractor._call_ollama")
def test_batch_extraction(self, mock_ollama): def test_batch_extraction(self, mock_ollama):
mock_ollama.return_value = '{"python": {"type": "technology", "context": "language"}}' mock_ollama.return_value = '{"python": {"type": "technology", "context": "language"}}'
result = extract_entities_llm_batch(["Python is a great programming language for data science"]) result = extract_entities_llm_batch(["Python is a great programming language for data science"])
@ -132,7 +132,7 @@ class TestExtractEntitiesLlmBatch:
class TestIsAvailable: class TestIsAvailable:
@patch("llm_extractor.urllib.request.urlopen") @patch("cortex.intelligence.llm_extractor.urllib.request.urlopen")
def test_available(self, mock_urlopen): def test_available(self, mock_urlopen):
mock_resp = MagicMock() mock_resp = MagicMock()
mock_resp.status = 200 mock_resp.status = 200
@ -141,7 +141,7 @@ class TestIsAvailable:
mock_urlopen.return_value = mock_resp mock_urlopen.return_value = mock_resp
assert is_available() is True assert is_available() is True
@patch("llm_extractor.urllib.request.urlopen") @patch("cortex.intelligence.llm_extractor.urllib.request.urlopen")
def test_unavailable(self, mock_urlopen): def test_unavailable(self, mock_urlopen):
mock_urlopen.side_effect = Exception("connection refused") mock_urlopen.side_effect = Exception("connection refused")
assert is_available() is False assert is_available() is False

View file

@ -9,7 +9,7 @@ from unittest.mock import patch, MagicMock
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
import loop as darkplex_loop import cortex.intelligence.loop as darkplex_loop
class TestImportance: class TestImportance:
@ -101,19 +101,19 @@ class TestLoopState:
class TestCheckNewEvents: class TestCheckNewEvents:
@patch("loop.subprocess.run") @patch("cortex.intelligence.loop.subprocess.run")
def test_returns_pending(self, mock_run): def test_returns_pending(self, mock_run):
mock_run.return_value = MagicMock( mock_run.return_value = MagicMock(
returncode=0, stdout=json.dumps({"num_pending": 42}) returncode=0, stdout=json.dumps({"num_pending": 42})
) )
assert darkplex_loop.check_new_events() == 42 assert darkplex_loop.check_new_events() == 42
@patch("loop.subprocess.run") @patch("cortex.intelligence.loop.subprocess.run")
def test_returns_negative_on_failure(self, mock_run): def test_returns_negative_on_failure(self, mock_run):
mock_run.return_value = MagicMock(returncode=1, stdout="") mock_run.return_value = MagicMock(returncode=1, stdout="")
assert darkplex_loop.check_new_events() == -1 assert darkplex_loop.check_new_events() == -1
@patch("loop.subprocess.run") @patch("cortex.intelligence.loop.subprocess.run")
def test_handles_exception(self, mock_run): def test_handles_exception(self, mock_run):
mock_run.side_effect = Exception("nats not found") mock_run.side_effect = Exception("nats not found")
assert darkplex_loop.check_new_events() == -1 assert darkplex_loop.check_new_events() == -1

View file

@ -9,7 +9,7 @@ import pytest
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence")) sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
from temporal import TemporalEntry, TemporalQuery, TemporalContext from cortex.intelligence.temporal import TemporalEntry, TemporalQuery, TemporalContext
class TestTemporalEntry: class TestTemporalEntry: