Compare commits

...

9 Commits

Author SHA1 Message Date
Ed_
129cc33d01 conductor(plan): Mark phase 'Phase 1 - Dead Code Removal' as complete [be7174c] 2026-03-02 15:35:26 -05:00
Ed_
be7174ca53 conductor(checkpoint): Checkpoint end of Phase 1 — feature_bleed_cleanup_20260302
Phase 1: Dead Code Removal
- Deleted dead _render_comms_history_panel duplicate (33 lines, stale 'type' key)
- Deleted 4 duplicate __init__ state assignments
- 32 tests passed, gui_2.py import clean
- Comms History panel visually verified by user
2026-03-02 15:34:48 -05:00
Ed_
763bc2e734 conductor(plan): Mark task 1.4 complete — Comms History panel verified visually 2026-03-02 14:32:25 -05:00
Ed_
10724f86a5 conductor(plan): Mark task 1.3 complete — 32 passed, import ok, 2 pre-existing failures unrelated 2026-03-02 14:29:57 -05:00
Ed_
535667b51f conductor(plan): Mark task 1.2 complete — e28f89f 2026-03-02 14:25:15 -05:00
Ed_
e28f89f313 fix(bleed): remove duplicate __init__ state assignments (lines 308-311)
ui_conductor_setup_summary, ui_new_track_name, ui_new_track_desc, ui_new_track_type
were each assigned twice in __init__. Second assignments (308-311) were identical
to the correct first assignments (218-221). Duplicate removed, first assignments kept.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 14:24:57 -05:00
Ed_
21c74772f6 conductor(plan): Mark task 1.1 complete — 2e9c995 2026-03-02 14:23:47 -05:00
Ed_
2e9c995bbe fix(bleed): remove dead duplicate _render_comms_history_panel (lines 3040-3073)
Dead version used stale 'type' key (current model uses 'kind'), called nonexistent
_cb_load_prior_log (correct name: cb_load_prior_log), and had begin_child('scroll_area')
ID collision. Python silently discarded it at import time. Live version at line 3400.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 14:23:26 -05:00
Ed_
e72d512372 docs: sync Claude Tier 2 skill with Gemini — add atomic commits and sanity check rules
Port two responsibilities from Gemini's mma-tier2-tech-lead SKILL.md (b4de62f, 7afa3f3)
to Claude's equivalent command file:
- ATOMIC PER-TASK COMMITS: enforce per-task commit discipline
- Meta-Level Sanity Check: ruff + mypy post-track verification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:18:31 -05:00
6 changed files with 39 additions and 75 deletions

View File

@@ -15,6 +15,8 @@ Read at session start: `conductor/tech-stack.md`, `conductor/workflow.md`
- Break down tasks into specific technical steps for Tier 3 Workers
- Maintain PERSISTENT context throughout a track's implementation phase (NO Context Amnesia)
- Review implementations and coordinate bug fixes via Tier 4 QA
- **CRITICAL: ATOMIC PER-TASK COMMITS**: You MUST commit your progress on a per-task basis. Immediately after a task is verified successfully, you must stage the changes, commit them, attach the git note summary, and update `plan.md` before moving to the next task. Do NOT batch multiple tasks into a single commit.
- **Meta-Level Sanity Check**: After completing a track (or upon explicit request), perform a codebase sanity check. Run `uv run ruff check .` and `uv run mypy --explicit-package-bases .` to ensure Tier 3 Workers haven't degraded static analysis constraints. Identify broken simulation tests and append them to a tech debt track or fix them immediately.
## Delegation Commands (PowerShell)

View File

@@ -4,26 +4,26 @@ Architecture reference: [docs/guide_architecture.md](../../../docs/guide_archite
---
## Phase 1: Dead Code Removal
## Phase 1: Dead Code Removal [checkpoint: be7174c]
Focus: Delete the two confirmed dead code blocks — no behavior change, pure deletion.
- [ ] Task 1.1: In `gui_2.py`, delete the first `_render_comms_history_panel` definition.
- [x] Task 1.1: In `gui_2.py`, delete the first `_render_comms_history_panel` definition. 2e9c995
- **Location**: Lines 3041-3073 (use `py_get_code_outline` to confirm current line numbers before editing).
- **What**: The entire method body from `def _render_comms_history_panel(self) -> None:` through `imgui.end_child()` and the following blank line. The live version begins at ~line 3435 after this deletion shifts lines.
- **How**: Use `set_file_slice` to delete lines 3041-3073 (replace with empty string). Then run `py_get_code_outline` to confirm only one `_render_comms_history_panel` remains.
- **Verify**: `grep -n "_render_comms_history_panel" gui_2.py` should show exactly 2 hits: the `def` line and the call site in `_gui_func`.
- [ ] Task 1.2: In `gui_2.py` `__init__`, delete the duplicate state variable assignments.
- [x] Task 1.2: In `gui_2.py` `__init__`, delete the duplicate state variable assignments. e28f89f
- **Location**: Second occurrences of `ui_conductor_setup_summary`, `ui_new_track_name`, `ui_new_track_desc`, `ui_new_track_type`. Currently at lines 308-311 (grep to confirm exact lines before editing: `grep -n "ui_conductor_setup_summary" gui_2.py`).
- **What**: Delete these 4 lines. The first correct assignments remain at lines 218-221.
- **How**: Use `set_file_slice` to remove lines 308-311 (replace with empty string).
- **Verify**: Each variable should appear exactly once in `__init__` (grep to confirm).
- [ ] Task 1.3: Write/run tests to confirm no regressions.
- [x] Task 1.3: Write/run tests to confirm no regressions. 535667b
- Run `uv run pytest tests/ -x -q` and confirm all tests pass.
- Run `uv run python -c "from gui_2 import App; print('import ok')"` to confirm no syntax errors.
- [ ] Task 1.4: Conductor — User Manual Verification
- [x] Task 1.4: Conductor — User Manual Verification
- Start the app with `uv run python gui_2.py` and confirm it launches without error.
- Open "Operations Hub" → "Comms History" tab and confirm the comms panel renders (color legend visible).

View File

@@ -1,6 +1,6 @@
[ai]
provider = "gemini_cli"
model = "gemini-2.0-flash"
model = "gemini-3-flash-preview"
temperature = 0.0
max_tokens = 8192
history_trunc_limit = 8000

View File

@@ -305,10 +305,6 @@ class App:
agent_tools_cfg = self.project.get("agent", {}).get("tools", {})
self.ui_agent_tools: dict[str, bool] = {t: agent_tools_cfg.get(t, True) for t in AGENT_TOOL_NAMES}
self.tracks: list[dict[str, Any]] = []
self.ui_conductor_setup_summary = ""
self.ui_new_track_name = ""
self.ui_new_track_desc = ""
self.ui_new_track_type = "feature"
self._show_add_ticket_form = False
self.ui_new_ticket_id = ""
self.ui_new_ticket_desc = ""
@@ -3037,40 +3033,6 @@ class App:
imgui.separator()
imgui.end_child()
def _render_comms_history_panel(self) -> None:
imgui.text_colored(vec4(200, 220, 160), f"Status: {self.ai_status}")
imgui.same_line()
if imgui.button("Clear##comms"):
ai_client.clear_comms_log()
self._comms_log.clear()
imgui.same_line()
if imgui.button("Load Log"):
self._cb_load_prior_log()
if self.is_viewing_prior_session:
imgui.same_line()
if imgui.button("Exit Prior Session"):
self.is_viewing_prior_session = False
self.prior_session_entries.clear()
self.ai_status = "idle"
imgui.separator()
imgui.text_colored(vec4(255, 200, 100), "VIEWING PRIOR SESSION")
imgui.separator()
imgui.begin_child("scroll_area")
clipper = imgui.ListClipper()
clipper.begin(len(self._comms_log))
while clipper.step():
for i in range(clipper.display_start, clipper.display_end):
entry = self._comms_log[i]
imgui.text_colored(C_KEY, f"[{entry.get('direction')}] {entry.get('type')}")
imgui.same_line()
if imgui.button(f"[+]##c{i}"):
self.show_text_viewer = True
self.text_viewer_title = f"Comms Entry #{i}"
self.text_viewer_content = json.dumps(entry.get("payload"), indent=2)
imgui.text_unformatted(str(entry.get("payload"))[:200] + "...")
imgui.separator()
imgui.end_child()
def _render_mma_dashboard(self) -> None:
# Task 5.3: Dense Summary Line
track_name = self.active_track.description if self.active_track else "None"

View File

@@ -79,7 +79,7 @@ DockId=0x0000000F,2
[Window][Theme]
Pos=0,17
Size=32,824
Size=197,824
Collapsed=0
DockId=0x00000005,1
@@ -89,14 +89,14 @@ Size=900,700
Collapsed=0
[Window][Diagnostics]
Pos=34,17
Size=596,326
Pos=199,17
Size=606,326
Collapsed=0
DockId=0x00000010,1
[Window][Context Hub]
Pos=0,17
Size=32,824
Size=197,824
Collapsed=0
DockId=0x00000005,0
@@ -107,26 +107,26 @@ Collapsed=0
DockId=0x0000000D,0
[Window][Discussion Hub]
Pos=632,17
Size=1048,592
Pos=807,17
Size=633,592
Collapsed=0
DockId=0x00000012,0
[Window][Operations Hub]
Pos=34,17
Size=596,326
Pos=199,17
Size=606,326
Collapsed=0
DockId=0x00000010,0
[Window][Files & Media]
Pos=0,843
Size=32,357
Size=197,357
Collapsed=0
DockId=0x00000006,1
[Window][AI Settings]
Pos=0,843
Size=32,357
Size=197,357
Collapsed=0
DockId=0x00000006,0
@@ -136,14 +136,14 @@ Size=416,325
Collapsed=0
[Window][MMA Dashboard]
Pos=632,611
Size=1048,589
Pos=807,611
Size=633,589
Collapsed=0
DockId=0x00000013,0
[Window][Log Management]
Pos=632,17
Size=1048,592
Pos=807,17
Size=633,592
Collapsed=0
DockId=0x00000012,1
@@ -153,26 +153,26 @@ Size=262,209
Collapsed=0
[Window][Tier 1: Strategy]
Pos=632,611
Size=1048,589
Pos=807,611
Size=633,589
Collapsed=0
DockId=0x00000013,1
[Window][Tier 2: Tech Lead]
Pos=366,763
Size=264,437
Pos=644,763
Size=161,437
Collapsed=0
DockId=0x00000017,0
[Window][Tier 4: QA]
Pos=34,763
Size=330,437
Pos=199,763
Size=443,437
Collapsed=0
DockId=0x00000016,0
[Window][Tier 3: Workers]
Pos=34,345
Size=596,416
Pos=199,345
Size=606,416
Collapsed=0
DockId=0x00000014,0
@@ -212,24 +212,24 @@ Column 3 Weight=1.0000
DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y
DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A
DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,17 Size=1680,1183 Split=Y
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,17 Size=1440,1183 Split=Y
DockNode ID=0x0000000C Parent=0xAFC85805 SizeRef=1362,1041 Split=X Selected=0x5D11106F
DockNode ID=0x00000003 Parent=0x0000000C SizeRef=2056,1183 Split=X
DockNode ID=0x00000003 Parent=0x0000000C SizeRef=805,1183 Split=X
DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=Y Selected=0xF4139CA2
DockNode ID=0x00000002 Parent=0x0000000B SizeRef=1029,1119 Split=X Selected=0xF4139CA2
DockNode ID=0x00000007 Parent=0x00000002 SizeRef=728,858 Split=Y Selected=0x8CA2375C
DockNode ID=0x00000007 Parent=0x00000002 SizeRef=197,858 Split=Y Selected=0x8CA2375C
DockNode ID=0x00000005 Parent=0x00000007 SizeRef=295,824 Selected=0xF4139CA2
DockNode ID=0x00000006 Parent=0x00000007 SizeRef=295,995 CentralNode=1 Selected=0x7BD57D6A
DockNode ID=0x0000000E Parent=0x00000002 SizeRef=1326,858 Split=Y Selected=0x418C7449
DockNode ID=0x00000010 Parent=0x0000000E SizeRef=868,447 Selected=0xB4CBF21A
DockNode ID=0x0000000E Parent=0x00000002 SizeRef=606,858 Split=Y Selected=0x418C7449
DockNode ID=0x00000010 Parent=0x0000000E SizeRef=868,447 Selected=0x418C7449
DockNode ID=0x00000011 Parent=0x0000000E SizeRef=868,1171 Split=Y Selected=0x655BC6E9
DockNode ID=0x00000014 Parent=0x00000011 SizeRef=1469,570 Selected=0x655BC6E9
DockNode ID=0x00000015 Parent=0x00000011 SizeRef=1469,599 Split=X Selected=0x5CDB7A4B
DockNode ID=0x00000016 Parent=0x00000015 SizeRef=736,599 Selected=0x5CDB7A4B
DockNode ID=0x00000017 Parent=0x00000015 SizeRef=588,599 Selected=0x390E7942
DockNode ID=0x00000016 Parent=0x00000015 SizeRef=443,599 Selected=0x5CDB7A4B
DockNode ID=0x00000017 Parent=0x00000015 SizeRef=161,599 Selected=0x390E7942
DockNode ID=0x00000001 Parent=0x0000000B SizeRef=1029,775 Selected=0x8B4EBFA6
DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6
DockNode ID=0x00000004 Parent=0x0000000C SizeRef=1048,1183 Split=Y Selected=0x2C0206CE
DockNode ID=0x00000004 Parent=0x0000000C SizeRef=633,1183 Split=Y Selected=0x2C0206CE
DockNode ID=0x00000012 Parent=0x00000004 SizeRef=905,811 Selected=0x6F2B5B04
DockNode ID=0x00000013 Parent=0x00000004 SizeRef=905,807 Selected=0x3AEC3498
DockNode ID=0x0000000F Parent=0xAFC85805 SizeRef=1362,451 Selected=0xDD6419BC

View File

@@ -8,5 +8,5 @@ active = "main"
[discussions.main]
git_commit = ""
last_updated = "2026-03-02T13:16:02"
last_updated = "2026-03-02T14:28:49"
history = []