Private
Public Access
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.
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user