Commit Graph
11 Commits
Author SHA1 Message Date
ed 27f2c25f1c codebase: cleaning cruft part 1 2026-07-05 13:46:35 -04:00
ed b3aeaa4376 fix(post_de_cruft_iter2): fix 3 pre-existing test failures + lazy tomli_w imports
1. tier-1-unit-core::test_audit_script_exits_zero
   - audit_main_thread_imports.py failed with 3 heavy top-level imports
   - Made tomli_w lazy in src/personas.py, src/tool_presets.py, src/workspace_manager.py
   - Made 'from scripts import py_struct_tools' lazy inside src/mcp_client.py:dispatch()
   - Audit now exits 0 (28 files in main-thread import graph, no heavy top-level imports)

2. tier-2-mock-app-headless::test_status_endpoint_authorized
   - /status endpoint goes through _api_status() which returns controller.ai_status (default 'idle'),
     not the literal 'ok' string the test expected
   - Updated test to expect 'idle' (the actual ai_status default for a fresh controller)

3. tier-3-live_gui::test_auto_switch_sim
   - _capture_workspace_profile() in src/gui_2.py referenced 'WorkspaceProfile' as a bare name,
     but the module had only 'from src import workspace_manager' (the module, not the class)
   - Added 'from src.workspace_manager import WorkspaceProfile' to fix the NameError
   - Profile save/load round-trip now works; auto-switch fires Tier 3 bound profile

Additional test fixes (uncovered by full run):
- tests/test_cruft_removal.py: patch 'src.mcp_client.py_struct_tools' no longer works
  (lazy import means the attribute doesn't exist). Patched 'scripts.py_struct_tools.py_remove_def'
  and '.py_move_def' directly at the source module.
- tests/test_command_palette_sim.py: 'from src.command_palette' was deleted in
  module_taxonomy_refactor; updated to 'from src.commands' (which now hosts _close_palette,
  _execute, and Command after the merge).

Production fix:
- src/presets.py:save_preset now raises ValueError when scope='project' but
  project_root is None (fail-fast per error_handling.md, prevents silent
  write to '.').

Type registry regenerated to reflect new line numbers.
2026-06-27 10:17:51 -04:00
ed 91a612887c Merge origin/tier2/module_taxonomy_refactor_20260627: bring in v2 SHIPPED work
Per post_module_taxonomy_de_cruft_20260627 Phase 0 prerequisite.
Master is at 6344b49f (pre-merge of v2 SHIPPED). This merge brings in
the 18 v2 SHIPPED commits that define the destination modules
(src.mma, src/project.py, src/project_files.py, src.tool_presets,
src.tool_bias, src.external_editor, src.personas,
src.workspace_manager, src.mcp_client) needed by the Phase 2
consumer migration in commit 8f11340b.

Conflicts resolved (all were import-block re-orderings between my
migration's update and v2 SHIPPED's update of the same files):
 - src/external_editor.py: took v2 SHIPPED version (class definitions
                                    + the no-alias import pattern)
 - src/personas.py: took v2 SHIPPED version
 - src/tool_bias.py: took v2 SHIPPED version
 - src/tool_presets.py: took v2 SHIPPED version
 - src/workspace_manager.py: took v2 SHIPPED version
 - src/ai_client.py: took v2 SHIPPED version (removes the 'as _FIC'
                              alias; uses 'from src.project_files import
                              FileItem' directly per the v2 SHIPPED style)
 - conductor/tracks/module_taxonomy_refactor_20260627/spec.md: took
                              HEAD version (my Phase 1 VC2 + VC10
                              corrections; the v2 SHIPPED version was
                              the pre-correction spec)
2026-06-26 13:51:05 -04:00
ed 6b0668f1a9 fix(consumers): remove self-imports from migration
The migration commit (8f11340b) replaced 'from src.models import X'
with 'from src.<destination> import X' in EVERY file including the
destination files themselves. This created self-imports like
'from src.external_editor import ExternalEditorConfig' in
src/external_editor.py (which defines ExternalEditorConfig locally).

This fix removes the spurious self-imports from the 5 destination
files that were affected:
 - src/external_editor.py (3 lines removed: 1 top-level + 2 in
                                 function bodies that my migration
                                 missed on the first pass)
 - src/personas.py (1 line removed)
 - src/tool_bias.py (1 line removed)
 - src/tool_presets.py (1 line removed)
 - src/workspace_manager.py (1 line removed)

The migration in non-destination files is correct and unchanged.

After this fix, the next merge of origin/tier2/module_taxonomy_refactor_20260627
(bringing in the v2 SHIPPED work) will not conflict on these files
because the self-imports are gone; the merge will apply v2's class
definitions cleanly.

The fix was performed by
scripts/tier2/artifacts/post_module_taxonomy_de_cruft_20260627/fix_self_imports.py
which removes 'from src.<module> import X' lines from files where
<module> matches the file's destination module name.
2026-06-26 13:35:24 -04:00
ed 8f11340b38 refactor(consumers): migrate 85 'from src.models import' sites to direct subsystem imports
Per post_module_taxonomy_de_cruft_20260627 Phase 2 (FR7). Each
'from src.models import X' for a moved class is rewritten to
'from src.<destination> import X':

  Ticket, Track, WorkerContext, TrackState, TrackMetadata,
    ThinkingSegment, EMPTY_TRACK_STATE            -> src.mma
  ProjectContext, ProjectMeta, ProjectOutput, ProjectFiles,
    ProjectScreenshots, ProjectDiscussion, EMPTY_PROJECT_CONTEXT -> src.project
  FileItem, Preset, ContextPreset, ContextFileEntry,
    NamedViewPreset                                -> src.project_files
  Tool, ToolPreset                                 -> src.tool_presets
  BiasProfile                                      -> src.tool_bias
  TextEditorConfig, ExternalEditorConfig,
    EMPTY_TEXT_EDITOR_CONFIG                       -> src.external_editor
  Persona                                          -> src.personas
  WorkspaceProfile                                -> src.workspace_manager
  MCPServerConfig, MCPConfiguration, VectorStoreConfig,
    RAGConfig, load_mcp_config                      -> src.mcp_client

NOT touched (kept on src.models; Phase 3 or Phase 4 will move them):
  GenerateRequest, ConfirmRequest, DEFAULT_TOOL_CATEGORIES, Metadata, PROVIDERS

Migration was performed by the one-time script
scripts/tier2/artifacts/post_module_taxonomy_de_cruft_20260627/migrate_imports.py
which uses a class-to-module map and re.sub() to rewrite each
'from src.models import X' line.

Total: 85 import lines rewritten across 71 files.

Note: this commit depends on the v2 SHIPPED work
(origin/tier2/module_taxonomy_refactor_20260627) being merged into
this branch NEXT. On master (without the v2 SHIPPED commits), the
destination modules do not exist and these imports would fail.
2026-06-26 13:34:03 -04:00
ed 0d2a9b5eed refactor(workspace_manager): merge WorkspaceProfile from models.py into workspace_manager.py
Per the 4-criteria decision rule: WorkspaceProfile fails C1 (only used
by the workspace subsystem), fails C2 (no state machine), fails C3 (no
dedicated test file), borderline C4. MERGE into the existing
src/workspace_manager.py which already has WorkspaceManager.

This commit:
 1. Adds WorkspaceProfile class definition to src/workspace_manager.py
    at the top.
 2. Removes the same class def from src/models.py.
 3. Adds lazy re-export via the existing __getattr__ in src/models.py.
 4. Updates workspace_manager.py imports to no longer import from
    models (the class def is now local).

Verification: VC8 (WorkspaceProfile)
  from src.workspace_manager import WorkspaceProfile  # OK
  from src.models            import WorkspaceProfile  # OK (lazy)
  identity check: True

Tests verified (3/3 PASS):
  tests/test_workspace_manager.py (3 tests)

Side effect: also restored the MCPServerConfig class header that was
inadvertently removed by a too-wide set_file_slice in the previous
Phase 3h edit. Added the missing @dataclass + class MCPServerConfig:
declaration + the fields. The class body (to_dict + from_dict) was
already in models.py; only the header was missing.
2026-06-26 10:14:13 -04:00
ed 053f5d867a some organization pass, still need to review a bunch 2026-06-06 00:21:36 -04:00
ed 873edf42cf began to go through the files and organize imports and gui_2.py's new context defs
still a bunch to sift through after the last ai passes
2026-06-05 21:44:41 -04:00
ed b5e512f483 feat(sdm): inject structural dependency mapping tags across codebase
Adds [C: caller] tags to functions/methods and [M: mutation] / [U: usage] tags to class variables based on cross-module call analysis.
2026-05-13 22:35:52 -04:00
ed 8c06c1767b refactor(sdm): Global pass with refined 'External Only' SDM tags. Pruned redundant internal references and fixed indentation logic in injector. Verified full project compilation. 2026-05-09 15:00:35 -04:00
ed 5b3173a1ae feat(workspace): implement WorkspaceManager and path resolution 2026-05-05 20:50:55 -04:00