Private
Public Access
0
0
Commit Graph

26 Commits

Author SHA1 Message Date
ed 4ab7c732b5 refactor(src): Phase 12.6.2-12.6.13 - migrate 16 small files to Result[T]
Migrated 27 silent-fallback/UNCLEAR sites across 16 sub-track 2 files:
- src/diff_viewer.py (1: apply_patch_to_file)
- src/presets.py (2: load_all global/project preset parsing)
- src/theme_models.py (2: load_themes_from_dir, load_themes_from_toml)
- src/summarize.py (3: _summarise_python, summarise_file x2)
- src/command_palette.py (1: _execute)
- src/markdown_helper.py (2: _on_open_link, render table fallback)
- src/commands.py (2: generate_md_only, save_all)
- src/conductor_tech_lead.py (1: topological_sort)
- src/orchestrator_pm.py (1: generate_tracks JSON parse)
- src/project_manager.py (1: get_git_commit)
- src/session_logger.py (1: log_tool_call write_ps1)
- src/shell_runner.py (1: run_powershell error)
- src/multi_agent_conductor.py (4: run, run_worker_lifecycle x3)
- src/aggregate.py (4: is_absolute_with_drive, build_file_items x2, build_tier3_context)
- src/warmup.py (1: _warmup_one indirect Result)
- src/models.py (2: from_dict discussion.ts, load_mcp_config)

Each migration follows the data-oriented convention:
- try/except body constructs a Result dataclass with ErrorInfo
- Pattern matches Heuristic A (Result-returning recovery)
- The Result carries the error info for telemetry/debugging

Added Result imports to: diff_viewer, presets, theme_models, summarize,
command_palette, markdown_helper, commands, conductor_tech_lead,
project_manager, shell_runner, multi_agent_conductor, models.

Audit post-fix: 0 violations, 0 UNCLEAR in sub-track 2 scope.
The remaining 152 violations are in sub-track 3 (mcp_client, app_controller)
+ sub-track 4 (gui_2) + sub-track 5 (ai_client, rag_engine baseline).
2026-06-18 10:21:24 -04:00
ed 89ce7ad770 refactor(src): Phase 10.2 batch 3 - project_manager + orchestrator_pm Result migration
project_manager.py (3 sites):
- get_all_tracks returns list[dict[str, Any]] where each dict now
  has an 'errors' field (list[ErrorInfo]) capturing per-track
  metadata recovery. The 3 SILENT_SWALLOW sites (state.from_dict,
  metadata.json, plan.md) now append to this list instead of
  silently passing.

orchestrator_pm.py (2 sites):
- get_track_history_summary returns Result[str]. The 2 SILENT_SWALLOW
  sites (metadata.json + spec.md reads) append to a scan_errors list
  that's threaded through the Result.

Tests updated to check result.ok and use result.data.
2026-06-17 22:33:57 -04:00
ed f383dae0dd fix(src): defensive try/except in load_track_state for TOMLDecodeError
A malformed state.toml in conductor/tracks/<track>/state.toml (e.g.,
from an interrupted previous run) caused tomllib.load() to raise
TOMLDecodeError, which propagated up and crashed App.__init__
during init_state() -> _load_active_project() -> _refresh_from_project()
-> get_all_tracks() -> load_track_state().

This manifested as test failures in tests/test_layout_reorganization.py,
tests/test_auto_slices.py, tests/test_hooks.py, and the tier-3-live_gui
batch (all triggered by the same malformed mcp_architecture_refactor_20260606
state.toml).

The fix wraps tomllib.load() in a try/except for (OSError,
tomllib.TOMLDecodeError) and returns None (matching the file-not-found
behavior). This is consistent with the data-oriented convention:
corrupt state is a recoverable failure, not a programmer error.

Tests verified:
- tests/test_track_state_persistence.py (1 test) PASS
- tests/test_layout_reorganization.py (4 tests) PASS
- tests/test_auto_slices.py (3 tests) PASS
- tests/test_hooks.py (3 tests) PASS
2026-06-17 19:34:18 -04:00
ed 7298fbd62b refactor(src): narrow exception types in startup_profiler + project_manager (6 sites)
Migrates the 6 try/except sites by narrowing the exception types
from broad 'except Exception' to specific stdlib/known exceptions.
This converts the sites from INTERNAL_BROAD_CATCH to BOUNDARY_IO /
INTERNAL_COMPLIANT per the audit's heuristics.

1. src/startup_profiler.py:40 (1 site) - sys.stderr.write/flush
   except Exception -> except OSError

2. src/project_manager.py:32 (1 site) - datetime.strptime
   except Exception -> except (ValueError, TypeError)

3. src/project_manager.py:98 (1 site) - subprocess.run for git command
   except Exception -> except (OSError, subprocess.SubprocessError,
                               subprocess.TimeoutExpired)

4. src/project_manager.py:363 (1 site) - state.from_dict in get_all_tracks
   except Exception -> except (OSError, AttributeError, KeyError, TypeError)

5. src/project_manager.py:375 (1 site) - metadata.json read
   except Exception -> except (OSError, json.JSONDecodeError, UnicodeDecodeError)

6. src/project_manager.py:390 (1 site) - plan.md read
   except Exception -> except (OSError, UnicodeDecodeError, re.error)

This is a 'narrowing migration' rather than a Result[T] migration
because the public API (Optional[datetime], str, list[dict]) is
preserved and no callers need updating. The behavior is unchanged.

Tests verified:
- tests/test_project_manager_tracks.py (4 tests) PASS
- tests/test_project_manager_modes.py (2 tests) PASS
2026-06-17 19:11:35 -04:00
ed 339b062913 more organization 2026-06-06 11:08:07 -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 59fa495a20 fix(gui): Resolve discussion compression error and improve entry tinting visibility
- Implement missing format_discussion in project_manager.py.
- Fix malformed escape characters in compression AI prompt.
- Ensure discussion compression updates the entry list in-place for immediate GUI refresh.
- Refactor discussion entry tinting using channels to draw backgrounds reliably behind text.
- Standardize Files & Media inventory layout and management buttons.
2026-06-02 03:00:45 -04:00
ed e3d84bc4da feat(presets): Implement ContextPresetManager and integrate with AppController 2026-05-16 11:04:38 -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 45a3664f85 refactor: remove dead main_context field from Project Settings
The main_context field in Project Settings was stored but never used.
Nothing reads it to inject into AI context. System Prompt in AI Settings
already serves this purpose.

Removed:
- app_controller.py: ui_project_main_context state variable and all refs
- gui_2.py: Main Context File UI section from Projects panel
- project_manager.py: main_context from default_project()
- project.toml, manual_slop.toml, gencpp_manual_slop_template.toml: main_context entries
2026-05-10 16:23:21 -04:00
ed ff29e20873 refactor(infra): cull unused infrastructure and file cache helpers 2026-05-10 11:53:14 -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 2b66f3569b feat(beads): integrate Beads Mode backend, MCP tools, and GUI support 2026-05-06 13:48:47 -04:00
ed fefa06beb0 feat(backend): Implement discussion branching and take promotion 2026-03-19 19:00:56 -04:00
ed 8ee8862ae8 checkpoint: track complete 2026-03-18 18:39:54 -04:00
ed 93a590cdc5 feat(backend): Implement storage functions for context presets 2026-03-17 23:30:55 -04:00
ed 5470f2106f fix(gui): fix missing thinking_segments parameter persistence across sessions 2026-03-15 16:11:09 -04:00
ed 5a8a91ecf7 more fixes 2026-03-12 19:51:04 -04:00
ed 3999e9c86d feat(conductor): Use project-specific conductor directory in project_manager and app_controller 2026-03-12 16:38:01 -04:00
ed 94598b605a checkpoint dealing with personal manager/editor 2026-03-10 23:47:53 -04:00
ed d7a6ba7e51 feat(ui): Enhanced context control with per-file flags and Gemini cache awareness 2026-03-07 12:13:08 -05:00
ed 87902d82d8 feat(mma): Implement track progress calculation and refactor get_all_tracks 2026-03-07 11:24:05 -05:00
ed f580165c5b feat(conductor): Implement configurable paths and mark track 'Conductor Path Configuration' as complete 2026-03-06 16:43:11 -05:00
ed 8784d05db4 WIP: PAIN3 2026-03-05 15:10:53 -05:00
ed a0276e0894 feat(src): Move core implementation files to src/ directory 2026-03-04 09:55:44 -05:00