Remove legacy logs/ directory, consolidate all data under .g3/

This change removes the legacy logs/ directory and consolidates all
session data, error logs, and discovery files under the .g3/ directory.

New directory structure:
- .g3/sessions/<session_id>/session.json - session logs
- .g3/errors/ - error logs (was logs/errors/)
- .g3/background_processes/ - background process logs
- .g3/discovery/ - planner discovery files (was workspace/logs/)

Changes:
- paths.rs: Remove get_logs_dir()/logs_dir(), add get_errors_dir(),
  get_background_processes_dir(), get_discovery_dir()
- session.rs: Anonymous sessions now use .g3/sessions/anonymous_<ts>/
- error_handling.rs: Errors now saved to .g3/errors/
- project.rs: Remove logs_dir() and ensure_logs_dir() methods
- feedback_extraction.rs: Remove logs_dir field and fallback logic
- planner: Use .g3/ for workspace data and .g3/discovery/ for reports
- flock.rs: Look for session metrics in .g3/sessions/
- coach_feedback.rs: Remove fallback to logs/ path
- Update all tests to use new paths
- Update README.md and .gitignore
This commit is contained in:
Dhanji R. Prasanna
2026-01-12 18:20:08 +05:30
parent 43a5d27149
commit c2aa80647a
68 changed files with 744 additions and 159 deletions

View File

@@ -29,7 +29,7 @@ echo "Done!"
fs::set_permissions(&script_path, fs::Permissions::from_mode(0o755)).unwrap();
}
let log_dir = test_dir.join("logs");
let log_dir = test_dir.join(".g3").join("background_processes");
let manager = BackgroundProcessManager::new(log_dir);
println!("\n=== Background Process Demo ===");

View File

@@ -53,7 +53,7 @@ done
fs::set_permissions(&script_path, fs::Permissions::from_mode(0o755)).unwrap();
}
let log_dir = test_dir.join("logs");
let log_dir = test_dir.join(".g3").join("background_processes");
let manager = BackgroundProcessManager::new(log_dir);
// Start the process
@@ -116,7 +116,7 @@ sleep 30
fs::set_permissions(&script_path, fs::Permissions::from_mode(0o755)).unwrap();
}
let log_dir = test_dir.join("logs");
let log_dir = test_dir.join(".g3").join("background_processes");
let manager = BackgroundProcessManager::new(log_dir);
// Start a process
@@ -151,7 +151,7 @@ sleep 30
let _ = fs::remove_dir_all(&test_dir);
fs::create_dir_all(&test_dir).unwrap();
let log_dir = test_dir.join("logs");
let log_dir = test_dir.join(".g3").join("background_processes");
let manager = BackgroundProcessManager::new(log_dir);
// Getting a process that doesn't exist should return None

View File

@@ -91,7 +91,7 @@ fn test_save_and_load_continuation() {
"save_load_test".to_string(),
None,
Some("Test summary content".to_string()),
"/logs/g3_session_save_load_test.json".to_string(),
"/.g3/sessions/save_load_test/session.json".to_string(),
35.5,
Some("- [ ] Pending task".to_string()),
temp_dir.path().to_string_lossy().to_string(),
@@ -321,9 +321,9 @@ fn test_has_valid_continuation_with_existing_session_log() {
let (temp_dir, original_dir) = setup_test_env();
// Create a fake session log file
let logs_dir = temp_dir.path().join("logs");
fs::create_dir_all(&logs_dir).expect("Failed to create logs dir");
let session_log_path = logs_dir.join("g3_session_valid_test.json");
let session_dir = temp_dir.path().join(".g3").join("sessions").join("valid_test");
fs::create_dir_all(&session_dir).expect("Failed to create session dir");
let session_log_path = session_dir.join("session.json");
fs::write(&session_log_path, "{}").expect("Failed to write session log");
// Create a continuation pointing to the existing session log