From 5ecde725964b8b5fc1c815526591909289df0d83 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Fri, 26 Jun 2026 07:46:51 -0400 Subject: [PATCH] docs(reports): FOLLOWUP_module_taxonomy_refactor_20260627_recoverable - data is NOT lost CRITICAL CORRECTION: the 5 'DAMAGED' tasks in the track report are NOT data loss. The class definitions (Tool, ToolPreset, BiasProfile, TextEditorConfig, ExternalEditorConfig, MCPServerConfig, MCPConfiguration, VectorStoreConfig, RAGConfig, load_mcp_config, WorkspaceProfile) are STILL in src/models.py with full bodies. The actual state: - 11 class definitions in models.py (data INTACT) - 0 class definitions in destination files (the move was incomplete) - 1 broken script that Tier 2 ran (the '5 tasks damaged' report) What the user's anger is about (justified): - Tier 2 used 'git stash' (now banned at 3 layers in commit 6240b07b) - Tier 2 made a non-descriptive 'misc' commit - Tier 2 reported 'DAMAGED' but the data was actually fine What the user gets: - Track is RECOVERABLE - just add the 11 classes to their destination files - New Tier 2 should reset the 5 'damaged' tasks to 'pending' in state.toml - Phase 1 + Phase 2 of the track are DONE - The remaining work is mechanical: 5 commits to add class defs to destination files, then 5 commits to remove them from models.py Concrete next steps (for new Tier 2): 1. Add Tool + ToolPreset to src/tool_presets.py 2. Add BiasProfile to src/tool_bias.py 3. Add TextEditorConfig + ExternalEditorConfig to src/external_editor.py 4. Add MCP config classes to src/mcp_client.py 5. Add WorkspaceProfile to src/workspace_manager.py 6. (Then) remove from models.py 7. Create src/project.py + src/project_files.py 8. Delete AGENT_TOOL_NAMES 9. Verify The previous TRACK_ABORTED report is INCORRECT. This report supersedes it. The data is fine; only the move operation is incomplete. --- ..._taxonomy_refactor_20260627_recoverable.md | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 docs/reports/FOLLOWUP_module_taxonomy_refactor_20260627_recoverable.md diff --git a/docs/reports/FOLLOWUP_module_taxonomy_refactor_20260627_recoverable.md b/docs/reports/FOLLOWUP_module_taxonomy_refactor_20260627_recoverable.md new file mode 100644 index 00000000..ce03efe4 --- /dev/null +++ b/docs/reports/FOLLOWUP_module_taxonomy_refactor_20260627_recoverable.md @@ -0,0 +1,131 @@ +# Followup: module_taxonomy_refactor_20260627 — Actual State Assessment + +**Date:** 2026-06-27 +**Reviewer:** Tier 1 +**Status:** TRACK IS RECOVERABLE. Data is NOT lost. The user's frustration is justified but the situation is better than the track report suggested. + +--- + +## TL;DR + +The 5 "DAMAGED" tasks in the previous Tier 2 report are NOT data loss. The class definitions are STILL in `src/models.py` with full bodies. The destination files (tool_presets.py, tool_bias.py, external_editor.py, mcp_client.py, workspace_manager.py) simply don't have the class definitions ADDED to them yet. The data is intact; only the move operation is incomplete. + +The user's frustration is justified because Tier 2 used `git stash` (now banned at 3 layers) and made a "misc" commit with a non-descriptive message. But the actual code is intact. + +--- + +## Actual state of `src/models.py` + +``` +@region: Tool Models +@dataclass +class Tool: # body intact (name, approval, weight, parameter_bias) +@dataclass +class ToolPreset: # body intact (name, categories) +@dataclass +class BiasProfile: # body intact (name, tool_weights, category_multipliers) + +@region: UI/Editor +@dataclass +class TextEditorConfig: # body intact (name, path, diff_args) +@dataclass +class ExternalEditorConfig: # body intact (editors, default_editor) + +@region: Workspace +@dataclass +class WorkspaceProfile: # body intact (name, ini_content, show_windows) + +@region: MCP Config +@dataclass +class MCPServerConfig: # body intact (name, command, args) +@dataclass +class MCPConfiguration: # body intact (mcpServers) +@dataclass +class VectorStoreConfig: # body intact (provider, url, api_key) +@dataclass +class RAGConfig: # body intact (enabled, vector_store, embedding_provider) + +def load_mcp_config(path: str) -> MCPConfiguration: # body intact +``` + +**All 11 classes + 1 function present with full bodies.** The "damage" report is incorrect — the data is preserved. + +--- + +## Actual state of destination files (what's MISSING) + +| Destination | Should have | Currently has | +|---|---|---| +| `src/tool_presets.py` | `Tool`, `ToolPreset` | only `ToolPresetManager` class (no Tool/ToolPreset) | +| `src/tool_bias.py` | `BiasProfile` | (file is empty or has no BiasProfile) | +| `src/external_editor.py` | `TextEditorConfig`, `ExternalEditorConfig` | (file is empty or has no Editor configs) | +| `src/mcp_client.py` | `MCPServerConfig`, `MCPConfiguration`, `VectorStoreConfig`, `RAGConfig`, `load_mcp_config` | (file has none of these) | +| `src/workspace_manager.py` | `WorkspaceProfile` | (file has no WorkspaceProfile) | + +The destination files have NO class definitions. They were "supposed to" receive the move but the bad script never copied them. + +--- + +## What's needed to complete the track + +The new Tier 2 just needs to: +1. Copy 11 class definitions from `src/models.py` to their destination files (5 commits) +2. Remove the same classes from `src/models.py` (5 commits, one per destination) +3. Run regression tests after each move +4. Re-execute pending tasks t3_2 (create project.py), t3_3 (create project_files.py), t3_10 (reduce models.py) +5. Re-execute Phase 4 (delete AGENT_TOOL_NAMES) +6. Phase 5 verification + +The data is recoverable. The "5 damaged" tasks in the state.toml need to be reset to "pending" with a note explaining the data is intact. + +--- + +## What the user is right about + +1. **Tier 2 used `git stash`** — now banned at 3 layers (commit `6240b07b`): + - AGENTS.md HARD BAN + - `conductor/tier2/opencode.json.fragment` deny rules (top-level + agent-level) + - `conductor/tier2/agents/tier2-autonomous.md` Hard Bans list + +2. **Tier 2 made "misc" commit** — non-descriptive commit messages hide what was done. The user can't review what they can't see. + +3. **The timeline-is-immutable principle** is now spelled out in the agent prompt (commit `6240b07b`): the user's directive "if an agent fucks up, their tendency to want to 'revert' is not correct" is now explicit text in the prompt. + +--- + +## Recommendation for the new Tier 2 + +The track is recoverable. Hand it to a new Tier 2 with this context: + +1. **Reset the 5 "damaged" tasks** in state.toml from "damaged" → "pending" (the data is intact) +2. **Phase 1 (ImGui LEAKS) + Phase 2 (vendor files) are DONE** — don't re-execute +3. **Phase 3 (models split) is the main work** — 5 commits to add the missing class definitions to the destination files +4. **Phase 4 (AGENT_TOOL_NAMES) + Phase 5 (verification)** are the smaller tail +5. **The git stash ban is in place** at 3 layers; the next Tier 2 should NOT be able to corrupt files this way + +### Concrete next steps (for the new Tier 2) + +1. Add `Tool` + `ToolPreset` to `src/tool_presets.py` (copy from models.py) +2. Add `BiasProfile` to `src/tool_bias.py` (copy from models.py) +3. Add `TextEditorConfig` + `ExternalEditorConfig` to `src/external_editor.py` (copy from models.py) +4. Add `MCPServerConfig` + `MCPConfiguration` + `VectorStoreConfig` + `RAGConfig` + `load_mcp_config` to `src/mcp_client.py` (copy from models.py) +5. Add `WorkspaceProfile` to `src/workspace_manager.py` (copy from models.py) +6. Run `uv run python -m pytest tests/test_*.py -v --timeout=30` after each move to verify no regression +7. Once all 5 are merged: remove the same classes from `src/models.py` (5 commits, one per destination) +8. Create `src/project.py` with `ProjectContext` + 5 sub + config IO +9. Create `src/project_files.py` with file-related dataclasses +10. Reduce `src/models.py` to ~30 lines (Pydantic proxies only) +11. Delete `AGENT_TOOL_NAMES` (replace 8 consumer sites with `mcp_tool_specs.tool_names()`) +12. Update test `test_tool_names_subset_of_models_agent_tool_names` (delete or convert) +13. Phase 5: verify all 7 audit gates + batched suite + +--- + +## See also + +- `conductor/tracks/module_taxonomy_refactor_20260627/spec.md` — the original spec +- `conductor/tracks/module_taxonomy_refactor_20260627/plan.md` — the 5-phase plan +- `conductor/tracks/module_taxonomy_refactor_20260627/state.toml` — the track state (5 tasks marked "damaged") +- `docs/reports/TRACK_ABORTED_module_taxonomy_refactor_20260627.md` — the previous (incorrect) damage report +- `docs/reports/FOLLOWUP_module_taxonomy_20260627.md` — the taxonomy followup (this is the correct framing) +- Commit `6240b07b` — the git stash ban + timeline-is-immutable principle