Fix planner UI whitespace and workspace logs directory
Resolve two critical issues in planner mode that persisted through multiple fix attempts: 1. Remove excessive whitespace between tool call displays by replacing direct println!() calls with ui_writer methods and eliminating redundant newlines in agent response streaming. 2. Ensure all log files (errors, sessions, tool calls, context dumps) are written to <workspace>/logs instead of codepath by properly initializing G3_WORKSPACE_PATH from --workspace argument.
This commit is contained in:
179
g3-plan/completed_requirements_2025-12-10_16-17-02.md
Normal file
179
g3-plan/completed_requirements_2025-12-10_16-17-02.md
Normal file
@@ -0,0 +1,179 @@
|
||||
{{CURRENT REQUIREMENTS}}
|
||||
|
||||
# Planner Mode UI Output Fixes - Fourth Attempt
|
||||
|
||||
## Critical Notes
|
||||
|
||||
This is the **FOURTH ATTEMPT** to fix these issues. Previous attempts have failed because:
|
||||
1. Changes were made but the implementer did not actually run the app to verify the fixes
|
||||
2. The root cause was not properly identified - only symptoms were addressed
|
||||
3. Debugging information was not added to track down the actual problem
|
||||
|
||||
**MANDATORY**: The implementer MUST:
|
||||
- Run the actual app in planning mode using: `cargo run --bin g3 -- --planning --codepath ~/RustroverProjects/g3 --workspace /tmp/g3_test_workspace`
|
||||
- Observe the actual terminal output with their own eyes
|
||||
- Check the actual file locations on disk using `find` or `ls` commands
|
||||
- Include debugging statements to trace execution flow
|
||||
- Not submit the implementation until visual confirmation that both issues are resolved
|
||||
|
||||
---
|
||||
|
||||
## Issue 1: Tool Call Display Has Excessive Whitespace
|
||||
|
||||
### Problem Statement
|
||||
Despite three previous fix attempts, tool calls in planner mode still display with excessive vertical whitespace (multiple blank lines between each tool call).
|
||||
It is possible that the superfluous newlines come from something else, for example streamed blocks triggering a newline or similar. Please
|
||||
investigate all calls to UiWriter and `print` /`println!` calls throughout the task execution loop.
|
||||
### Current Behavior
|
||||
```
|
||||
🔧 [1] shell
|
||||
|
||||
|
||||
|
||||
🔧 [2] read_file
|
||||
|
||||
|
||||
|
||||
🔧 [3] shell
|
||||
|
||||
|
||||
```
|
||||
|
||||
### Expected Behavior
|
||||
```
|
||||
🔧 [13] read_file {"file_path":"/Users/jochen/RustroverProjects/g3/g3-plan/planner_history.txt"}
|
||||
🔧 [14] shell {"command":"find /Users/jochen/RustroverProjects/g3 -type f -name \"*.rs\" | hea
|
||||
```
|
||||
|
||||
### Root Cause Investigation Required
|
||||
|
||||
The implementer MUST investigate:
|
||||
|
||||
1. **Check `PlannerUiWriter::print_tool_header()` in `crates/g3-planner/src/llm.rs` (line ~240-262)**
|
||||
- Current code uses `println!()` directly - this is WRONG per the user's previous feedback
|
||||
- User explicitly stated: "YOU MUST USE UI_WRITER, NOT PRINT COMMANDS"
|
||||
- The method has access to `self` which is a `UiWriter` - should call `self.println()` not `println!()`
|
||||
|
||||
2. **Check if there are other places printing newlines**
|
||||
- Search for `print!` or `println!` patterns that might be clearing lines
|
||||
- Check `print_agent_prompt()` method (line ~283) which explicitly prints a newline
|
||||
- Check `print_agent_response()` method (line ~289-295) for newline issues
|
||||
|
||||
3. **Check the Agent's tool execution flow in g3-core**
|
||||
- File: `crates/g3-core/src/lib.rs`, around line 4016 where `print_tool_header()` is called
|
||||
- Check if there are any `println!()` or `print!("\n")` calls around the tool execution loop
|
||||
- Check if there are status messages being printed that add extra lines
|
||||
|
||||
|
||||
|
||||
### Testing Requirements
|
||||
|
||||
The implementer MUST:
|
||||
|
||||
1. **Run the app**: `cargo run --bin g3 -- --planning --codepath ~/RustroverProjects/g3 --workspace /tmp/g3_test_workspace`
|
||||
2. **Trigger refinement**: Press Enter when prompted to review requirements
|
||||
3. **Watch the terminal output** as the LLM makes tool calls
|
||||
4. **Count the blank lines** between each `🔧` tool call line
|
||||
5. **Take a screenshot or copy/paste the actual output** as proof that it's fixed
|
||||
6. **If there are still extra blank lines**, review the debug output to see what's being called
|
||||
|
||||
**Success Criteria**:
|
||||
- Each tool call appears on exactly ONE line
|
||||
- NO blank lines between consecutive tool calls or other output
|
||||
- Tool call format: `🔧 [N] tool_name {truncated_args}`
|
||||
|
||||
---
|
||||
|
||||
## Issue 2: Logs Written to Wrong Directory
|
||||
|
||||
### Problem Statement
|
||||
Despite setting `G3_WORKSPACE_PATH` environment variable in planner mode, log files are still being written to the current working directory or codepath root instead of `<workspace>/logs/`.
|
||||
Double-check that the workspace is correctly via the `--workspace` commandline arg when in planning mode.
|
||||
|
||||
### Critical Files
|
||||
These log files MUST be written to `<workspace>/logs/`:
|
||||
- `logs/errors/*.txt` - Error logs
|
||||
- `logs/g3_session_*.json` - Session history
|
||||
- `logs/tool_calls_*.log` - Tool call logs
|
||||
- `logs/context_window_*.txt` - Context window dumps
|
||||
- identify other logs and whether they go to `<workspace>/logs/`
|
||||
|
||||
|
||||
### Testing Requirements
|
||||
|
||||
The implementer MUST:
|
||||
|
||||
1. **Clean up any existing logs**:
|
||||
```bash
|
||||
rm -rf /tmp/logs
|
||||
rm -rf ~/RustroverProjects/g3/logs/*
|
||||
```
|
||||
|
||||
2. **Run the app from a different directory**:
|
||||
```bash
|
||||
cd /tmp
|
||||
cargo run --bin g3 -- --planning --codepath ~/RustroverProjects/g3 --workspace /tmp/g3_test_workspace
|
||||
```
|
||||
|
||||
3. **Check whether logs are written to /tmp or the codepath**:
|
||||
```bash
|
||||
find /tmp -name "*.log" -o -name "*.json" -o -name "*.txt" | grep -E "logs|g3_session|tool_calls|context_window"
|
||||
find ~/RustroverProjects/g3/logs -name "*.log" -o -name "*.json" -o -name "*.txt" | head -20
|
||||
```
|
||||
|
||||
4. **Verify the debug output** shows:
|
||||
- `G3_WORKSPACE_PATH` being set correctly
|
||||
- `get_logs_dir()` returning the correct path
|
||||
- No files being written to `/tmp/g3_test_workspace`
|
||||
|
||||
**Success Criteria**:
|
||||
- NO log files are in `~/RustroverProjects/g3/logs/`
|
||||
- ALL log files exist in `/tmp/g3_test_workspace`
|
||||
- Debug output confirms `G3_WORKSPACE_PATH` is set and being used
|
||||
|
||||
|
||||
This attempt MUST include:
|
||||
- Actual execution of the app
|
||||
- Visual verification of the fixes
|
||||
- Debug output to prove the changes work
|
||||
- Testing from different working directories
|
||||
|
||||
{{ORIGINAL USER REQUIREMENTS -- THIS SECTION WILL BE IGNORED BY THE IMPLEMENTATION}}
|
||||
|
||||
|
||||
*Bad tool output*
|
||||
|
||||
The output via UI writer is numbering tool calls, but adding A LOT of whitespace. Change the code to
|
||||
write only a single line without any additional newline or anything, include on the line the first 50 chars of the
|
||||
tool command, but make SURE it's only going to be a single line. Also make SURE there are no newlines displayed
|
||||
between tool output.
|
||||
|
||||
Despite MANY attempts to fix it, this is still not working.
|
||||
|
||||
Please RUN THE ACTUAL APP in planning mode and observe how many empty lines are written to the display during and
|
||||
after tool calls. TRY AS MANY solutions, including adding new functions to UiWriter to make sure only a single line
|
||||
is written to the output. YOU MUST USE UI_WRITER, NOT PRINT COMMANDS. Make sure to run the app and get the output
|
||||
to ensure there are no newlines between each tool output.
|
||||
|
||||
I had explicitly specified " ui_writer.println("🔧 [{}] {} {}", count, tool_name, args_display);" previously,
|
||||
and that was ignored!
|
||||
|
||||
Also add debug context to the non-tool outputs from the llm responses, maybe that is printing empty lines?
|
||||
|
||||
desired behaviour (NO NEWLINES BETWEEN OUTPUT)
|
||||
```
|
||||
🔧 [13] read_file {"file_path":"/Users/jochen/RustroverProjects/g3/g3-plan/planner_history.txt"}
|
||||
🔧 [14] shell {"command":"find /Users/jochen/RustroverProjects/g3 -type f -name \"*.rs\" | hea
|
||||
```
|
||||
|
||||
*Logs directory*
|
||||
|
||||
A previous fix attempted to fix where logs are written, but that didn't work in my last experiment.
|
||||
The logs were STILL written to the codepath or PWD, instead of to <workspace>/logs. Please debug and fix this
|
||||
THIS IS CRITICAL.
|
||||
Add debugging to where conversation history, tool calls and the context window are written in g3-core.
|
||||
i.e. `logs/errors/`, `logs/g3_session*.json`, `logs/tool_calls*.log`, `logs/context_window*.txt`.
|
||||
DO NOT APPROVE A SOLUTION WHERE RUNNING THE APP PRODUCES LOG FILES IN THE CODEPATH. They must be at
|
||||
<workspace>/logs (as specified by the commandline argument `--workspace`).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user