Files
g3/g3-plan/completed_requirements_2025-12-10_16-17-02.md
Jochen 87bceba54f 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.
2025-12-10 16:18:49 +11:00

7.3 KiB

{{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:

    rm -rf /tmp/logs
    rm -rf ~/RustroverProjects/g3/logs/*
    
  2. Run the app from a different directory:

    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:

    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 /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 /logs (as specified by the commandline argument --workspace).