From 3d239fbefd69af8c5eb6e1b9faf32837962f528d Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 25 Jun 2026 14:58:23 -0400 Subject: [PATCH] conductor(plan): Mark Phase 1 (Ticket migration) as no-op complete Phase 1 audit confirmed no Ticket dataclass access sites need migration: - Ticket dataclass consumers in _spawn_worker, mutate_dag, and multi_agent_conductor.run already use direct field access - The t.get('id', '') style sites operate on dicts (self.active_tickets: list[Metadata], topological_sort returns list[dict]) - These dict sites are correctly classified as Metadata collapsed-codepath per spec FR2 35/35 tests pass. No code changes needed. --- .../tracks/metadata_promotion_20260624/plan.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/conductor/tracks/metadata_promotion_20260624/plan.md b/conductor/tracks/metadata_promotion_20260624/plan.md index 9d491274..e3af2a92 100644 --- a/conductor/tracks/metadata_promotion_20260624/plan.md +++ b/conductor/tracks/metadata_promotion_20260624/plan.md @@ -66,21 +66,23 @@ **Focus:** `Ticket` is already a dataclass (`src/models.py:302`); just migrate the consumers from `t.get('id', '')` to `t.id`. The legacy `Ticket.get(key, default)` method can be removed at the end of this phase once no consumer calls it. -- [ ] **Task 1.1** [Tier 3]: Migrate `src/gui_2.py` Ticket consumers. +- [x] **Task 1.1** [Tier 3]: Migrate `src/gui_2.py` Ticket consumers. - WHERE: `src/gui_2.py:1366-1438,1682` (the `_cb_*_ticket` and ticket-list rendering sites) - WHAT: For each `t.get('id', '')`, `t.get('depends_on', [])`, `t.get('manual_block', False)`, `t.get('status')` → `t.id`, `t.depends_on`, `t.manual_block`, `t.status` - HOW: `manual-slop_edit_file` per site - SAFETY: Run `tests/test_ticket_queue.py` + `tests/test_per_ticket_model.py` + `tests/test_manual_block.py` + the new per-aggregate test files -- [ ] **COMMIT:** `refactor(gui_2): migrate Ticket access sites to direct field access` (Tier 3) -- [ ] **GIT NOTE:** Migrated ~15 Ticket access sites in `src/gui_2.py`. Verified by the ticket test files. + - **RESULT:** No-op. Audit confirmed `self.active_tickets` is `list[Metadata]` (dicts, NOT Ticket dataclass) per `src/app_controller.py:1110` and the comment at `:3276` "Keep dicts for UI table". The gui_2.py sites operate on dicts and are correctly classified as Metadata collapsed-codepath per spec FR2. No migration needed. +- [x] **COMMIT:** No commit (no code changes). [no-op] +- [x] **GIT NOTE:** Audit-only. 35/35 tests pass. No migration needed. -- [ ] **Task 1.2** [Tier 3]: Migrate `src/conductor_tech_lead.py` and `src/app_controller.py` Ticket consumers. +- [x] **Task 1.2** [Tier 3]: Migrate `src/conductor_tech_lead.py` and `src/app_controller.py` Ticket consumers. - WHERE: `src/conductor_tech_lead.py:125`; `src/app_controller.py:4810-4868` (the ticket-list mutation sites) - WHAT: Same pattern as 1.1 - HOW: `manual-slop_edit_file` per site - SAFETY: Same as 1.1 -- [ ] **COMMIT:** `refactor(app_controller,conductor_tech_lead): migrate Ticket access sites` (Tier 3) -- [ ] **GIT NOTE:** Migrated ~15 Ticket access sites across 2 files. Verified. + - **RESULT:** No-op. Audit confirmed all Ticket dataclass consumers (in `_spawn_worker`, `mutate_dag`, `multi_agent_conductor.run`) already use direct field access (`t.id`, `t.status`, `t.depends_on`, etc.). The `t.get('id', '')` style sites operate on dicts (from `conductor_tech_lead.topological_sort` returning `list[dict[str, Any]]` and from `self.active_tickets: list[Metadata]`), which are correctly classified as Metadata collapsed-codepath per spec FR2. +- [x] **COMMIT:** No commit (no code changes). [no-op] +- [x] **GIT NOTE:** Audit-only. 35/35 tests pass. No migration needed. - [ ] **Task 1.3** [Tier 2]: Remove the legacy `Ticket.get(key, default)` method. - WHERE: `src/models.py` (the `get` method on `Ticket`) - WHAT: After all consumers have migrated, remove the `get` method