Commit Graph
100 Commits
Author SHA1 Message Date
ed 8bb9287dfe refactor(ui): cull unused UI helpers and redundant modules 2026-05-10 11:50:00 -04:00
ed 31177c7611 conductor(plan): Mark task 'Remove unused aggregation and AI helpers' as complete 2026-05-10 11:44:24 -04:00
ed c888e78691 refactor(ai_client): remove unused history management and bleed stats helpers 2026-05-10 11:43:50 -04:00
ed 05d0121e71 fixes 2026-05-10 11:33:07 -04:00
ed f89f8d4fd7 fix(gui): repair flaky simulation tests by adding ui_focus_agent to settables and removing invalid assertions 2026-05-10 10:46:54 -04:00
ed 9a68373bef conductor(plan): Mark task 'Run full test suite' as complete 2026-05-10 10:28:46 -04:00
ed 9a13ce2685 conductor(plan): Mark task 'Consolidate build_markdown and build_markdown_from_items' as complete 2026-05-10 10:14:34 -04:00
ed 76f4e1be4f refactor(aggregate): consolidate build_markdown and remove redundant file building 2026-05-10 10:13:56 -04:00
ed 6e62b4867f conductor(plan): Mark task 'Refactor build_tier3_context to use standard formatting' as complete 2026-05-10 10:00:41 -04:00
ed bcb0216ad9 refactor(aggregate): use standard formatting in build_tier3_context 2026-05-10 10:00:02 -04:00
ed 1416f69826 conductor(plan): Mark task 'Remove unused build_tier1_context' as complete 2026-05-09 17:44:52 -04:00
ed c4a738c8ba refactor(aggregate): remove deprecated build_tier1_context and build_tier2_context 2026-05-09 17:44:15 -04:00
ed 5160287047 docs(phase5): Final Phase 5 Stabilisation report and test suite hardening. All 32 test batches verified PASS. 2026-05-09 17:36:07 -04:00
ed b958fa2819 refactor(phase5): Comprehensive stabilisation pass. De-duplicated App/Controller state, hardened session reset, and updated integration tests with deterministic polling. 2026-05-09 16:55:45 -04:00
ed d1cc019640 docs(conductor): Synchronize docs for track 'Decouple GUI Log Loading' 2026-05-09 15:24:10 -04:00
ed 9992f675eb conductor(plan): Mark track 'Decouple GUI Log Loading' as complete 2026-05-09 15:23:06 -04:00
ed 7b7f53fff9 feat(gui): Implement cb_load_prior_log wrapper in App class 2026-05-09 15:13:24 -04:00
ed 04ce727718 refactor(controller): Remove Tkinter and hide_tk_root from AppController 2026-05-09 15:13:13 -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 696c08692e refactor(sdm): Refine SDM tags to 'External Only' and update core files. Pruned internal references to conserve tokens. 2026-05-09 14:55:06 -04:00
ed e9ebcb859a conductor(plan): Mark Phase 1 as complete 2026-05-09 13:00:40 -04:00
ed 88073fd004 conductor(checkpoint): Checkpoint end of Phase 1: Convention & Documentation 2026-05-09 13:00:03 -04:00
ed b075ce1e77 conductor(plan): Mark Phase 1 documentation tasks as complete 2026-05-09 12:58:45 -04:00
ed 3267928c26 docs(guidelines): Define Structural Dependency Mapping (SDM) convention 2026-05-09 12:56:56 -04:00
ed 7fb5d9d3b0 move track to phase 5 (ai oops) 2026-05-09 12:55:11 -04:00
ed 14d8a2e849 chore(conductor): Add new track 'Structural Dependency Mapping (SDM) Docstrings' 2026-05-09 12:50:13 -04:00
ed 4b11363f6b Finished encapsualte track. 2026-05-09 12:43:49 -04:00
ed e313802a15 fix(serialization): Fix Path serialization in events and thread-local fallback in ai_client 2026-05-09 12:35:58 -04:00
ed c6e77f2b99 conductor(plan): Mark task 'Replace all legacy _set_status calls' as complete 2026-05-09 08:36:48 -04:00
ed b3065b0b17 refactor(controller): Replace legacy _set_status calls with direct property assignment 2026-05-09 08:36:33 -04:00
ed 406b822477 conductor(plan): Mark task 'Implement @property and @setter' as complete 2026-05-09 08:32:52 -04:00
ed 6bec4b86ef feat(controller): Implement @property and @setter for ai_status and mma_status 2026-05-09 08:32:28 -04:00
ed 13373f88df conductor(plan): Mark task 'Add private _ai_status and _mma_status' as complete 2026-05-09 08:19:21 -04:00
ed 04eff51eb9 feat(controller): Add private _ai_status and _mma_status attributes to AppController 2026-05-09 08:19:01 -04:00
ed 9f18497786 chore(conductor): Mark track 'Curate Provider Registries' as complete. Includes critical fixes for RecursionError, NoneType Hook API responses, and plurality mismatches. 2026-05-08 22:01:15 -04:00
ed b89abb2670 archieve codebase curation (spit to smaller tracks) 2026-05-08 18:13:25 -04:00
ed 712e235699 chore(conductor): Replace monolithic curation with 5 granular tracks 2026-05-08 18:11:33 -04:00
ed d04e33ea06 stricter curation track 2026-05-07 23:45:11 -04:00
ed e12c34b8fe progression. 2026-05-07 23:39:52 -04:00
ed c036ac80a8 le docs 2026-05-07 23:32:17 -04:00
ed 77e892d316 chore(conductor): Complete Source-Wide Redundancy Audit 2026-05-07 23:27:40 -04:00
ed ba1d5c76c0 chore(conductor): Complete Controller State Mutation Matrix track 2026-05-07 23:11:26 -04:00
ed 1b5f51a17b chore(conductor): Complete Comprehensive Path Mapping & Tooling 2026-05-07 22:59:26 -04:00
ed 2d48c07760 second attempt in call graph track 2026-05-07 22:32:09 -04:00
ed 12439ac639 WIP: last attempt at call graph stuff 2026-05-07 22:28:55 -04:00
ed 8c7522fc89 mv pipeline analysis to docs 2026-05-07 22:14:12 -04:00
ed d8022d841e chore(conductor): Archive strategic overview and split into granular tracks 2026-05-07 22:06:13 -04:00
ed 822d803ad8 chore(conductor): Complete Code Path & Data Pipeline Analysis 2026-05-07 22:01:25 -04:00
ed aff88bd151 archive pahse 4 (remove from tracks) 2026-05-07 21:49:23 -04:00
ed e2dea144bc chore(conductor): Initialize Phase 5 and curation tracks 2026-05-07 21:49:06 -04:00
ed 89736ebf5a chore(conductor): Archive track 'Phase 4 Track Archival' 2026-05-07 21:40:15 -04:00
ed 8670d6f3b6 chore(conductor): Mark track 'Phase 4 Track Archival' as complete 2026-05-07 21:39:38 -04:00
ed 9f2390d6bd conductor(checkpoint): Checkpoint end of Phase 2 (Registry Update) 2026-05-07 21:39:30 -04:00
ed 2065dd8559 conductor(checkpoint): Checkpoint end of Phase 1 (Directory Migration) 2026-05-07 21:37:58 -04:00
ed 49acb884e1 chore(conductor): Add new track 'Review and archive all completed from phase 4.' 2026-05-07 21:35:39 -04:00
ed 86fa1dd67d feat(gui): track VSCode diff process, close it when patch modal closes
- Store _vscode_diff_process after launching external editor
- Add _close_vscode_diff() helper to terminate the process
- Call _close_vscode_diff() when Apply Patch or Reject is clicked
2026-05-07 21:30:23 -04:00
ed a6c569fb69 test: fix external editor test to use real temp file that exists 2026-05-07 21:21:05 -04:00
ed 6a615a2d20 test: simplify external editor GUI tests, fix process detection 2026-05-07 21:15:45 -04:00
ed f137295e92 fix(external_editor): only auto-detect when no editors configured 2026-05-07 21:08:07 -04:00
ed fa0026371d fix(external_editor): rewrite corrupted file, proper function ordering 2026-05-07 21:04:55 -04:00
ed ca4719687a fix(external_editor): cache auto-detect result, avoid hitting registry on every UI frame 2026-05-07 21:00:41 -04:00
ed 93f6bcbd67 test(conftest): Add VSCode config to live_gui fixture, update external editor tests
- conftest.py: Include tools.text_editors.vscode in live_gui workspace config
- gui_2.py: Add btn_open_external_editor to _clickable_actions
- test_external_editor_gui.py: Tests for external editor GUI integration

Note: Due to process boundaries (GUI runs in subprocess), full VSCode launch
verification requires manual testing. The test infrastructure verifies config,
command format, and button wiring. Manual verification recommended.
2026-05-07 20:50:05 -04:00
ed b70b837885 test: Add GUI integration tests for external editor with live_gui fixture
Note: Due to process boundaries (GUI runs in subprocess), monkeypatch doesn't
cross to GUI subprocess. Manual verification requires configuring
config.toml in project root with VSCode path.
2026-05-07 20:42:36 -04:00
ed fbd9e07f68 test: Add opt-in/opt-out tests for external editor GUI 2026-05-07 20:29:35 -04:00
ed 153b790f31 test: Add GUI integration tests for external editor 2026-05-07 20:27:16 -04:00
ed 47fa02f4dd update config 2026-05-07 20:16:08 -04:00
ed e536495cc6 test: Add integration tests for external editor with real VSCode 2026-05-07 19:51:47 -04:00
ed f78042969d fix(gui): Use theme colors in External Editor panel 2026-05-07 19:48:06 -04:00
ed 630c9abd3a feat(gui): Improve External Editor panel with combo selector
- Add dropdown combo to select default editor
- Add _set_external_editor_default method to save selection to config
- Clean up layout and improve visual hierarchy
- Add better color coding for configured vs default editors
2026-05-07 19:35:49 -04:00
ed 8fe366e041 fix(external-editor): Fix TextEditorConfig parsing and add error handling
- TextEditorConfig.from_dict no longer requires 'name' field since name comes from dict key
- Added try/except around _render_external_editor_panel to prevent tab bar mismatch
2026-05-07 19:30:45 -04:00
ed 0948cae5a0 fix(external-editor): Move panel to Operations Hub, fix config key lookup
- Moved External Editor panel from AI Settings to External Tools tab in Operations Hub
- Fixed default_editor lookup to use nested [tools.default_editor] structure
- Added example entries for vscode, notepadpp, 10xEditor, rider, sublime
- Improved panel UI with section header and clearer formatting
2026-05-07 19:27:07 -04:00
ed 6c8c8516c8 conductor(tracks): Mark External Editor Integration as complete 2026-05-07 19:13:17 -04:00
ed d2beb79563 feat(gui): Add External Editor configuration panel to AI Settings
- Added _render_external_editor_panel method to display configured editors
- Shows default editor marker and diff args
- Displays config file locations for user reference
- Integrated as 'External Editor' section in AI Settings
2026-05-07 19:12:28 -04:00
ed c711d26eac feat(gui): Add 'Open in External Editor' button to patch modal
- Added button to launch external editor for reviewing agent proposed changes
- Added _open_patch_in_external_editor method to handle the launch logic
- Integrated with ExternalEditorLauncher and create_temp_modified_file
2026-05-07 19:10:13 -04:00
ed 414d2ab561 feat(external-editor): Add TextEditorConfig and ExternalEditorConfig models
- Add TextEditorConfig and ExternalEditorConfig dataclasses to models.py
- Create src/external_editor.py with ExternalEditorLauncher class
- Add tests for configuration and launcher functionality
- Support for config.toml [tools.text_editors] and manual_slop.toml default_editor
2026-05-07 19:07:05 -04:00
ed 87bcd698bb chore(conductor): Archive track 'Fix Concurrent MMA Live GUI Tests' 2026-05-07 18:53:32 -04:00
ed b043d06771 chore: add standard STATUS markers to worker streams and optimize test polling
This fixes the 'stuck' behavior in concurrent tests by ensuring the tests look for standard completion markers and don't wait for unnecessary timeouts.
2026-05-07 18:37:19 -04:00
ed d4b4312dd2 chore: remove debug logging and fix closure bug in test hooks 2026-05-07 15:02:00 -04:00
ed 7d12806ce6 finally? 2026-05-07 13:42:31 -04:00
ed 40f0c04a91 chore(conductor): Mark track 'Fix Concurrent MMA Live GUI Tests' as complete
Fixes UI flickering between tracks in app_controller.py and an indentation bug in multi_agent_conductor.py that caused workers to crash silently.
2026-05-07 13:30:42 -04:00
ed 6f2f539362 conductor(track): Update spec and plan with complete bug analysis
Document all 4 bugs found:
1. self.engine overwritten (FIXED)
2. active_tickets not initialized (FIXED)
3. _start_track_logic uses None.active_track (FIXED)
4. _cb_start_track overwrites active_track (PARTIALLY FIXED)

Current status: Track B works, Track A reload path triggered but worker never visible.
2026-05-07 09:05:46 -04:00
ed b0a837d235 fix(mma): Add explicit reload logic when _cb_load_track fails in _cb_start_track
The test clicks btn_mma_start_track twice with different track_ids.
When _cb_load_track fails for track_a, self.active_track remains None or wrong.
Then track_b loads but we can't distinguish if a later call is for track_a retry
or track_b (which already has an engine). This adds an explicit reload path
when loaded track doesn't match requested track.
2026-05-07 08:41:08 -04:00
ed f3585cb5a1 fix(mma): Use track.id instead of self.active_track.id in _start_track_logic
active_track was None when _start_track_logic was called from _cb_accept_tracks
because active_track is only set when loading a track via _cb_load_track.
_start_track_logic creates a new track locally and should use that track's id.
2026-05-07 08:28:20 -04:00
ed cab733abc6 debug: Add logging to _cb_start_track 2026-05-07 08:19:05 -04:00
ed 6f2a2c2eea fix(gui): Initialize active_tickets in AppController.init_state
The AppController.__getattr__ delegation was returning controller.active_tickets
but init_state() never initialized self.active_tickets, causing an
AttributeError when gui_2.py tried to access self.active_tickets before
controller state was fully loaded.

Fixes live_gui fixture crash in test_mma_concurrent_tracks_stress_sim.py
2026-05-07 08:05:58 -04:00
ed b44ee29ab1 conductor(plan): Mark task complete 2026-05-07 07:55:51 -04:00
ed ac0b564c02 fix(mma): Change self.engine to self.engines dict for concurrent track support
- self.engine was a single ConductorEngine reference that got overwritten
  when multiple tracks ran concurrently, orphaning the first track's engine
- Now uses self.engines: Dict[str, ConductorEngine] keyed by track.id
- Updated _spawn_worker, kill_worker, pause_mma, resume_mma, approve_ticket,
  _load_active_tickets, and _update_ticket_depends_on to use engines.get(track_id)

Fixes concurrent MMA track execution bug where only one worker ever appeared.
2026-05-07 07:54:39 -04:00
ed 9099b02002 conductor(track): Document real bug - self.engine gets overwritten 2026-05-07 07:39:14 -04:00
ed afef5b5791 conductor(plan): Update concurrent MMA test investigation findings 2026-05-07 07:30:01 -04:00
ed 885bb1395b feat(track): Add fix_concurrent_mma_tests_20260507 track 2026-05-06 22:15:40 -04:00
ed c36e691b8d fix(api): Include tracks list in get_mma_status response 2026-05-06 21:19:55 -04:00
ed bd37aa731b fix(aggregate): Handle string path in _build_files_section_from_items 2026-05-06 21:11:10 -04:00
ed 80afa4894b fix(conductor): Always recompute ready_tasks each tick to fix stale cache bug 2026-05-06 21:05:26 -04:00
ed b0a75fcd6b test: Fix incorrect assertions in conductor tests 2026-05-06 20:37:48 -04:00
ed 2f20f69b61 conductor(plan): Mark Phase 5 verification complete 2026-05-06 20:27:04 -04:00
ed 923ffe8a74 conductor(plan): Complete Phase 5 Entropy Audit findings 2026-05-06 20:26:42 -04:00
ed f55b5d8fbc docs(track): Add continuation guide for entropy audit 2026-05-06 20:20:56 -04:00
ed 2b5185a78f perf(entropy): Fix nested imports in hot paths
Hoisted imports from inside frequently-called functions to module level:

app_controller.py:
- Added traceback and inspect at module level
- Removed 3 nested traceback imports from exception handlers

gui_2.py:
- Added traceback at module level
- Removed nested traceback import from _gui_func exception handler
- Kept uvicorn lazy-loaded (only for --headless mode)

multi_agent_conductor.py:
- Removed unused 'import sys' from run()
- Removed redundant nested imports (already at module level)

Also adds audit scripts and entropy findings documentation.
2026-05-06 20:18:30 -04:00
ed 54afbb9365 chore(entropy): Phase 5 start - fix duplicate line bug and document findings
- Fix duplicate line bug in rag_emb_provider.setter (app_controller.py)
- Add entropy_findings.md documenting audit results
- Update plan.md with Phase 5 tasks and findings
- Note: Property getter/setter 'duplicates' are false positives - proper Python patterns
2026-05-06 19:59:06 -04:00
ed f6feab9243 fix(gui): Correct indentation bug in _render_mma_dashboard that caused crash
The code after the 'prior session' return block was incorrectly indented
at 1 space, placing it inside the 'if is_viewing_prior_session' block
instead of after it. This caused 'total_cost' and 'perc' to be undefined
when viewing an active session, triggering an IM_ASSERT error.

Fix: Moved 'track_name', 'track_stats', and 'total_cost' to the
correct 2-space indentation (method body level).
2026-05-06 19:41:22 -04:00