refactor(sdm): Global pass with refined 'External Only' SDM tags. Pruned redundant internal references and fixed indentation logic in injector. Verified full project compilation.

This commit is contained in:
2026-05-09 14:32:44 -04:00
parent 696c08692e
commit 8c06c1767b
142 changed files with 2352 additions and 990 deletions
+25 -9
View File
@@ -4,14 +4,18 @@ from pathlib import Path
from typing import Optional, Dict
def get_file_hash(content: str) -> str:
"""Returns SHA256 hash of the content."""
"""
Returns SHA256 hash of the content.
[C: tests/test_summary_cache.py:test_get_file_hash, tests/test_summary_cache.py:test_summary_cache]
"""
return hashlib.sha256(content.encode("utf-8")).hexdigest()
class SummaryCache:
"""
A hash-based cache for file summaries to avoid redundant processing.
Invalidates when content hash changes.
"""
A hash-based cache for file summaries to avoid redundant processing.
Invalidates when content hash changes.
"""
def __init__(self, cache_file: Optional[str] = None, max_entries: int = 1000):
if cache_file:
self.cache_file = Path(cache_file)
@@ -23,7 +27,10 @@ class SummaryCache:
self.load()
def load(self) -> None:
"""Loads cache from disk."""
"""
Loads cache from disk.
[C: src/tool_presets.py:ToolPresetManager._read_raw, src/workspace_manager.py:WorkspaceManager._load_file, tests/test_gui_phase3.py:test_create_track, tests/test_history_management.py:test_save_separation, tests/test_saved_presets_sim.py:test_preset_manager_modal, tests/test_session_logging.py:test_open_session_creates_subdir_and_registry, tests/test_visual_sim_gui_ux.py:test_gui_track_creation]
"""
if self.cache_file.exists():
try:
with open(self.cache_file, "r", encoding="utf-8") as f:
@@ -41,7 +48,10 @@ class SummaryCache:
pass
def get_summary(self, file_path: str, content_hash: str) -> Optional[str]:
"""Returns cached summary if hash matches, otherwise None."""
"""
Returns cached summary if hash matches, otherwise None.
[C: tests/test_summary_cache.py:test_summary_cache, tests/test_summary_cache.py:test_summary_cache_lru]
"""
entry = self.cache.get(file_path)
if entry and entry.get("hash") == content_hash:
# LRU: move to end
@@ -51,7 +61,10 @@ class SummaryCache:
return None
def set_summary(self, file_path: str, content_hash: str, summary: str) -> None:
"""Stores summary in cache and saves to disk."""
"""
Stores summary in cache and saves to disk.
[C: tests/test_summary_cache.py:test_summary_cache, tests/test_summary_cache.py:test_summary_cache_lru]
"""
if file_path in self.cache:
self.cache.pop(file_path)
self.cache[file_path] = {
@@ -66,7 +79,10 @@ class SummaryCache:
self.save()
def clear(self) -> None:
"""Clears the cache both in-memory and on disk."""
"""
Clears the cache both in-memory and on disk.
[C: tests/conftest.py:reset_ai_client]
"""
self.cache.clear()
if self.cache_file.exists():
try:
@@ -85,4 +101,4 @@ class SummaryCache:
return {
"entries": len(self.cache),
"size_bytes": size_bytes
}
}