Files
manual_slop/conductor/edit_workflow.md
T
2026-05-10 20:31:18 -04:00

3.6 KiB

Manual Slop Edit Tool Workflow

The Problem

The manual-slop_edit_file tool requires exact string matches (character-for-character). Whitespace differences cause failures. The Python file uses 1-space indentation.

The Rules

1. ALWAYS Use Small, Incremental Edits

WRONG: Replace large blocks (50+ lines) RIGHT: Replace 3-10 lines at a time, verify, repeat

2. Verify Before Editing

Before ANY edit to a function you haven't touched recently:

1. Run: git checkout -- src/gui_2.py
2. Run: py_check_syntax on src/gui_2.py
3. Get current state with get_file_slice

3. Reading Before Editing (CRITICAL)

  • Use get_file_slice to get the EXACT text including all whitespace
  • Copy text directly from the tool output - do NOT reformat
  • If using get_definition, verify the text matches before editing

4. The Edit Tool Parameters (snake_case)

{
  "path": "src/gui_2.py",      # Required: file path
  "old_string": "exact text",    # Required: must match EXACTLY
  "new_string": "replacement",  # Required: replacement text
  "replace_all": false           # Optional: replace all occurrences
}

5. 1-Space Indentation in Python

  • Class methods: def (0 spaces, then 1)
  • Method body: (2 spaces total)
  • Nested blocks: (3 spaces total)
  • NO 4-space indentation anywhere in this file

Step-by-Step Workflow for gui_2.py

Before ANY edit:

git checkout -- src/gui_2.py

Check current state:

py_check_syntax path=src/gui_2.py
get_file_slice path=src/gui_2.py start_line=X end_line=Y

For each edit:

  1. Make the smallest possible change (3-10 lines)
  2. Run py_check_syntax to verify
  3. If syntax error, immediately git checkout -- src/gui_2.py
  4. Only proceed if syntax is OK

If edit fails with "old_string not found":

  • The text you're trying to replace doesn't EXACTLY match
  • Use get_file_slice to get the exact text
  • Copy it character-for-character including whitespace
  • Try again with exact match

If syntax error after edit:

git checkout -- src/gui_2.py

Then try again with smaller edit.

Alternative: Update Definition Approach

For large function rewrites, use py_update_definition:

name: function_name
path: src/gui_2.py
new_content: complete new function source

This replaces the entire function at once using AST detection.

Context Composition Requirements

Current Broken State

Files & Media works. Context Composition needs:

  1. Add state tracking at start of function:
if not hasattr(self, 'ctx_files_open'):
  self.ctx_files_open = True
if not hasattr(self, 'ctx_shots_open'):
  self.ctx_shots_open = True
  1. Files section with collapsing header and child window:
if imgui.collapsing_header("Files", self.ctx_files_open):
  imgui.begin_child("ctx_files_child", imgui.ImVec2(-1, 200), True)
  # table code here
  imgui.end_child()
  1. Screenshots section with collapsing header and child window:
if imgui.collapsing_header("Screenshots", self.ctx_shots_open):
  imgui.begin_child("ctx_shots_child", imgui.ImVec2(-1, 100), True)
  # screenshot list here
  imgui.end_child()
  1. Fixed presets bar with push_item_width(150) on the combo

  2. Remove the batch action bar entirely (Full/Agg/Sig/Def/None/Sel All/Del buttons)

Key Files

  • src/gui_2.py - Main GUI (1-space indentation, CRLF)
  • src/models.py - Data models including FileItem
  • Context Composition function: line ~2748

Test Command

uv run sloppy.py

If Everything Goes Wrong

git checkout -- src/gui_2.py
git checkout -- src/models.py