From 3ce6a2ec8ab4e93e3c2ae2ec6d3abc153142899a Mon Sep 17 00:00:00 2001 From: Ed_ Date: Fri, 6 Mar 2026 15:05:36 -0500 Subject: [PATCH] nice --- .../plan.md | 64 +++++++++++++------ .../spec.md | 28 ++++---- 2 files changed, 61 insertions(+), 31 deletions(-) diff --git a/conductor/tracks/conductor_path_configurable_20260306/plan.md b/conductor/tracks/conductor_path_configurable_20260306/plan.md index 629e3d6..7cfb89f 100644 --- a/conductor/tracks/conductor_path_configurable_20260306/plan.md +++ b/conductor/tracks/conductor_path_configurable_20260306/plan.md @@ -2,36 +2,62 @@ ## Phase 1: Centralized Path Resolver - [ ] Task: Create path resolver module - - WHERE: src/orchestrator_pm.py or new module - - WHAT: Single function to get conductor path - - HOW: Check env var, then config, then default + - WHERE: src/orchestrator_pm.py or new module (src/paths.py) + - WHAT: Single function to get all configurable paths + - HOW: Check env vars, then config, then defaults - SAFETY: Immutable after first call -## Phase 2: Update Modules +## Phase 2: Define Config Schema +- [ ] Task: Define path configuration schema + - WHERE: src/paths.py + - WHAT: Define default paths and env var names + - HOW: Constants for each path + - SAFETY: None + +## Phase 3: Update Orchestrator - [ ] Task: Update orchestrator_pm.py - WHERE: src/orchestrator_pm.py - WHAT: Use centralized resolver - - HOW: Import and use get_conductor_path() + - HOW: Import and use get_path('conductor') - [ ] Task: Update project_manager.py - WHERE: src/project_manager.py - - WHAT: Use centralized path - - HOW: Import from orchestrator_pm + - WHAT: Use centralized paths + - HOW: Import from paths module + +## Phase 4: Update App Controller - [ ] Task: Update app_controller.py - WHERE: src/app_controller.py - - WHAT: Use centralized path - - HOW: Import from orchestrator_pm + - WHAT: Use paths for logs, conductor + - HOW: Import from paths module -## Phase 3: Config Support -- [ ] Task: Add to config.toml +## Phase 5: Update GUI +- [ ] Task: Update gui_2.py + - WHERE: src/gui_2.py + - WHAT: Use centralized paths + - HOW: Import from paths module + +## Phase 6: Update Other Modules +- [ ] Task: Update aggregate.py + - WHERE: src/aggregate.py + - WHAT: Use config path from resolver + - HOW: Import from paths module +- [ ] Task: Update session_logger.py + - WHERE: src/session_logger.py + - WHAT: Use scripts_dir from resolver + - HOW: Import from paths module +- [ ] Task: Update other files with hardcoded paths + +## Phase 7: Config & Env Vars +- [ ] Task: Add paths to config.toml - WHERE: config.toml - - WHAT: conductor_path option - - HOW: toml key -- [ ] Task: Add env var support - - WHERE: src/orchestrator_pm.py - - WHAT: CONDUCTOR_DIR env var - - HOW: os.environ.get() + - WHAT: Add path configuration section + - HOW: toml section [paths] +- [ ] Task: Document environment variables + - WHERE: docs/ or README + - WHAT: Document all path env vars -## Phase 4: Verification -- [ ] Task: Test with different paths +## Phase 8: Verification +- [ ] Task: Test with custom paths - [ ] Task: Test default behavior +- [ ] Task: Run test suite - [ ] Task: Conductor - Phase Verification diff --git a/conductor/tracks/conductor_path_configurable_20260306/spec.md b/conductor/tracks/conductor_path_configurable_20260306/spec.md index c7a640a..9da24d4 100644 --- a/conductor/tracks/conductor_path_configurable_20260306/spec.md +++ b/conductor/tracks/conductor_path_configurable_20260306/spec.md @@ -1,32 +1,36 @@ # Track Specification: Conductor Path Configuration (conductor_path_configurable_20260306) ## Overview -Eliminate hardcoded paths in the application. Make the conductor directory path configurable via config.toml or environment variable, allowing the running app to use a different directory from the development tracks. +Eliminate all hardcoded paths in the application. Make directory paths configurable via config.toml or environment variables, allowing the running app to use different directories from development setup. ## Current State Audit ### Already Implemented - CONDUCTOR_PATH in orchestrator_pm.py is hardcoded to Path(\"conductor\") - project_manager.py uses Path(base_dir) / \"conductor\" / \"tracks\" - app_controller.py hardcodes \"conductor\" and \"conductor/tracks\" +- logs/sessions hardcoded in app_controller.py, gui_2.py +- config.toml hardcoded in aggregate.py (but models.py has SLOP_CONFIG env var) +- scripts/generated hardcoded in session_logger.py ### Gaps to Fill -- No config-based path override -- No environment variable support +- No config-based path overrides +- No environment variable support for most paths ## Goals -- Make conductor path configurable -- Support config.toml and environment variable -- Backward compatible (default to ./conductor) +- Make all directory paths configurable +- Support config.toml and environment variables +- Backward compatible (defaults remain) +- Centralized path resolver ## Functional Requirements -- Config file support in config.toml -- Environment variable support (CONDUCTOR_DIR) +- Config file support in config.toml for all paths +- Environment variable support for all paths - Runtime path resolution - All modules use centralized path resolver ## Acceptance Criteria -- [ ] config.toml has conductor_path option -- [ ] CONDUCTOR_DIR env var works -- [ ] Default remains ./conductor -- [ ] All modules use resolved path +- [ ] config.toml has options for: conductor_dir, logs_dir, config_file, scripts_dir +- [ ] Environment variables work: CONDUCTOR_DIR, LOGS_DIR, SLOP_CONFIG, SCRIPTS_DIR +- [ ] Default paths remain unchanged +- [ ] All modules use resolved paths - [ ] Backward compatible