This commit is contained in:
2026-03-06 15:05:36 -05:00
parent 4599e38df2
commit 3ce6a2ec8a
2 changed files with 61 additions and 31 deletions

View File

@@ -2,36 +2,62 @@
## Phase 1: Centralized Path Resolver ## Phase 1: Centralized Path Resolver
- [ ] Task: Create path resolver module - [ ] Task: Create path resolver module
- WHERE: src/orchestrator_pm.py or new module - WHERE: src/orchestrator_pm.py or new module (src/paths.py)
- WHAT: Single function to get conductor path - WHAT: Single function to get all configurable paths
- HOW: Check env var, then config, then default - HOW: Check env vars, then config, then defaults
- SAFETY: Immutable after first call - 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 - [ ] Task: Update orchestrator_pm.py
- WHERE: src/orchestrator_pm.py - WHERE: src/orchestrator_pm.py
- WHAT: Use centralized resolver - WHAT: Use centralized resolver
- HOW: Import and use get_conductor_path() - HOW: Import and use get_path('conductor')
- [ ] Task: Update project_manager.py - [ ] Task: Update project_manager.py
- WHERE: src/project_manager.py - WHERE: src/project_manager.py
- WHAT: Use centralized path - WHAT: Use centralized paths
- HOW: Import from orchestrator_pm - HOW: Import from paths module
## Phase 4: Update App Controller
- [ ] Task: Update app_controller.py - [ ] Task: Update app_controller.py
- WHERE: src/app_controller.py - WHERE: src/app_controller.py
- WHAT: Use centralized path - WHAT: Use paths for logs, conductor
- HOW: Import from orchestrator_pm - HOW: Import from paths module
## Phase 3: Config Support ## Phase 5: Update GUI
- [ ] Task: Add to config.toml - [ ] 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 - WHERE: config.toml
- WHAT: conductor_path option - WHAT: Add path configuration section
- HOW: toml key - HOW: toml section [paths]
- [ ] Task: Add env var support - [ ] Task: Document environment variables
- WHERE: src/orchestrator_pm.py - WHERE: docs/ or README
- WHAT: CONDUCTOR_DIR env var - WHAT: Document all path env vars
- HOW: os.environ.get()
## Phase 4: Verification ## Phase 8: Verification
- [ ] Task: Test with different paths - [ ] Task: Test with custom paths
- [ ] Task: Test default behavior - [ ] Task: Test default behavior
- [ ] Task: Run test suite
- [ ] Task: Conductor - Phase Verification - [ ] Task: Conductor - Phase Verification

View File

@@ -1,32 +1,36 @@
# Track Specification: Conductor Path Configuration (conductor_path_configurable_20260306) # Track Specification: Conductor Path Configuration (conductor_path_configurable_20260306)
## Overview ## 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 ## Current State Audit
### Already Implemented ### Already Implemented
- CONDUCTOR_PATH in orchestrator_pm.py is hardcoded to Path(\"conductor\") - CONDUCTOR_PATH in orchestrator_pm.py is hardcoded to Path(\"conductor\")
- project_manager.py uses Path(base_dir) / \"conductor\" / \"tracks\" - project_manager.py uses Path(base_dir) / \"conductor\" / \"tracks\"
- app_controller.py hardcodes \"conductor\" and \"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 ### Gaps to Fill
- No config-based path override - No config-based path overrides
- No environment variable support - No environment variable support for most paths
## Goals ## Goals
- Make conductor path configurable - Make all directory paths configurable
- Support config.toml and environment variable - Support config.toml and environment variables
- Backward compatible (default to ./conductor) - Backward compatible (defaults remain)
- Centralized path resolver
## Functional Requirements ## Functional Requirements
- Config file support in config.toml - Config file support in config.toml for all paths
- Environment variable support (CONDUCTOR_DIR) - Environment variable support for all paths
- Runtime path resolution - Runtime path resolution
- All modules use centralized path resolver - All modules use centralized path resolver
## Acceptance Criteria ## Acceptance Criteria
- [ ] config.toml has conductor_path option - [ ] config.toml has options for: conductor_dir, logs_dir, config_file, scripts_dir
- [ ] CONDUCTOR_DIR env var works - [ ] Environment variables work: CONDUCTOR_DIR, LOGS_DIR, SLOP_CONFIG, SCRIPTS_DIR
- [ ] Default remains ./conductor - [ ] Default paths remain unchanged
- [ ] All modules use resolved path - [ ] All modules use resolved paths
- [ ] Backward compatible - [ ] Backward compatible