Private
Public Access
conductor(track): init mma_quarantine_rag_test_decoupling_20260701 (spec + metadata + state + tracks.md row)
Track artifacts for the MMA quarantine + RAG test decoupling effort. Design doc lives at docs/superpowers/specs/ (historical record preserved). Plan.md pending user spec approval.
This commit is contained in:
@@ -16,6 +16,7 @@ Tracks that are unblocked and ready to start. Ordered by **dependency** (blocked
|
||||
|
||||
| # | Priority | Track | Status | Blocked By |
|
||||
|---|---|---|---|---|
|
||||
| 36 | A (sunset) | [MMA Quarantine + RAG Test Decoupling](#track-mma-quarantine--rag-test-decoupling) | spec, plan pending; user-directed sunset of MMA automation engine + decoupling of RAG tests from live_gui/chromadb; design doc at `docs/superpowers/specs/2026-07-01-mma-quarantine-rag-test-decoupling-design.md` | (none - independent) |
|
||||
| 2 | A | [Qwen, Llama & Grok Vendor Integration + Capability Matrix](#track-qwen-llama-grok-vendor-integration--capability-matrix) | spec Γ£ô, plan Γ£ô, 50/79 tasks done; **Phase 6 in progress (docs); NOT archiving ΓÇö has follow-up track** | **test_infrastructure_hardening_20260609 (merged)** |
|
||||
| 3 | A | [Data-Oriented Error Handling (Fleury Pattern)](#track-data-oriented-error-handling-fleury-pattern) | spec Γ£ô, plan Γ£ô, ready to start | startup_speedup, test_batching_refactor, **test_infrastructure_hardening_20260609 (merged)**, qwen_llama_grok |
|
||||
| 4 | A | [MCP Architecture Refactor (Sub-MCP Extraction)](#track-mcp-architecture-refactor-sub-mcp-extraction) | spec Γ£ô, plan pending | test_infrastructure_hardening_20260609 (merged), data_oriented_error_handling, data_structure_strengthening |
|
||||
@@ -76,6 +77,23 @@ Tracks that are unblocked and ready to start. Ordered by **dependency** (blocked
|
||||
| 35 | A (refactor) | [Metadata Promotion: dict[str, Any] → per-aggregate @dataclass](#track-metadata-promotion-2026-06-24) | spec ✓, plan ✓, metadata ✓, state ✓, **SHIPPED 2026-06-25** by Tier 2 autonomous mode; 13 phases, 32 tasks, 10 atomic commits; **Phase 0** added 12 NEW per-aggregate dataclasses (11 in src/type_aliases.py + RAGChunk in src/rag_engine.py; +158 lines); 11 new test files with 70+ regression tests (all PASS); updated test_type_aliases.py (6 tests); regenerated type_registry (22→23 files). **Phases 1-10** were NO-OPS per audit: most consumer sites operate on dicts at I/O boundaries (session log entries from JSONL, multimodal content with `is_image`/`base64_data` keys, MCP wire protocol, project config from `manual_slop.toml`), correctly classified as collapsed-codepath per FR2. **Phase 11** audited 253 remaining access sites (125 .get() + 128 []); all classified as collapsed-codepath with file-level justification. **VC7 PARTIAL**: effective codepaths UNCHANGED at 4.014e+22 (metric dominated by `2^N` for highest-branch-count functions in app_controller.py and gui_2.py; reducing `.get()` access sites alone does NOT reduce branch count — dispatchers still need `if entry.get(...)` or `if isinstance(entry, X)` checks regardless of dict-vs-dataclass; actual reduction requires TYPED PARAMETERS at function boundaries, out of scope). **Other VCs**: 7/7 audit gates pass --strict; 103 tests pass (70 NEW + 14 updated + 19 openai_schemas); tier 1+2 batched tests not re-verified (Phase 2 baseline still applies). TRACK_COMPLETION at `docs/reports/TRACK_COMPLETION_metadata_promotion_20260624.md` | `code_path_audit_phase_3_provider_state_20260624` (recommended prerequisite, SHIPPED 2026-06-25) | (**NEW 2026-06-24, SHIPPED 2026-06-25**; corrected 2026-06-25 per Tier 1 audit; per-aggregate dataclasses for known sub-aggregates; `Metadata: TypeAlias = dict[str, Any]` preserved unchanged as the catch-all for collapsed codepaths; the 12 NEW dataclasses are AVAILABLE for future code that wants typed access; existing dict-style consumers are correct per FR2; the effective codepaths metric cannot be reduced by adding dataclasses alone — it requires typed parameters at function boundaries; **scope reality check**: spec estimated ~213 access site migrations; actual migrations = 0 (all sites are correctly classified as collapsed-codepath); the real work was adding the 12 dataclasses for future use) |
|
||||
| 32 | A (refactor) | [Metadata Nil Sentinel (SSDL campaign child 1)](#track-metadata-nil-sentinel-ssdl-campaign-child-1-2026-06-24) | spec ✓, plan ✓, metadata ✓, state ✓, **SHIPPED 2026-06-24** by Tier 2 autonomous mode; 3 phases, 3 tasks, 3 atomic commits; NIL_METADATA = {} sentinel defined in `src/aggregate.py:50`; `_build_files_section_from_items` migrated to sentinel pattern (file_items = file_items or []; item = item or NIL_METADATA; if path is None: → if not path:); 5/5 behavioral tests PASS; VC1=true, VC2=true, VC3=true, VC4=FAIL (drop was -0.1%; spec's 10% threshold is mathematically near-impossible due to exponential dominance; campaign spec R4 acknowledges this), VC5=true (Tier 1 + Tier 2 both 5/5; Tier 3 has 1 pre-existing flake that passes in isolation), VC6=true; TRACK_COMPLETION at `docs/reports/TRACK_COMPLETION_metadata_nil_sentinel_20260624.md`; **spec discrepancy noted**: spec said "6 nil-check functions" but SSDL detects 74 across codebase (1 in aggregate.py, 27 in aggregate.py + ai_client.py); 1 was cleanly migratable in aggregate.py | `metadata_ssdl_defusing_20260624` (parent campaign) | (**NEW 2026-06-24**; child 1 of 3; establishes the NIL_METADATA fallback primitive for child 2's generational-handle generation-mismatch path; cumulative campaign effect is the value, not single-child heuristic number; **budget gate recommendation**: child 2 and child 3 should be allowed to ship even if their individual budget gates fail) |
|
||||
|
||||
### Track: MMA Quarantine + RAG Test Decoupling
|
||||
|
||||
**ID:** `mma_quarantine_rag_test_decoupling_20260701`
|
||||
**Priority:** A (sunset)
|
||||
**Status:** spec ✓, plan pending
|
||||
**Blocked By:** (none — independent)
|
||||
**Files:** `conductor/tracks/mma_quarantine_rag_test_decoupling_20260701/`
|
||||
**Design doc:** `docs/superpowers/specs/2026-07-01-mma-quarantine-rag-test-decoupling-design.md`
|
||||
|
||||
Two surgical interventions driven by the user's directive (2026-07-01) to sunset the MMA automation engine constructively and stop the RAG tests from bleeding on every test-suite run:
|
||||
|
||||
1. **MMA quarantine.** Config flag `mma.enabled` (default `false`) in `[ai_settings.toml]` gates the MMA automation engine (`multi_agent_conductor.py` + ~20 `app_controller.py` state/method sites + 12 `gui_2.py` render functions + MMA Dashboard window + approval modals). Shared types (`mma.py`, `dag_engine.py`, `mma_prompts.py`) stay active because non-MMA code depends on them (`thinking_parser.ThinkingSegment`, `project_manager.TrackState`, `models.TrackMetadata`, `conductor_tech_lead.TrackDAG/Ticket`). MMA tests become opt-in via `SLOP_MMA_TESTS=1`. Full removal is a follow-up track if quarantine maintenance hurts. Per `conductor/code_styleguides/feature_flags.md` §2: persistent preference → config flag + GUI checkbox (single `[ ] Enable MMA (deprecated, quarantined)` checkbox in AI Settings is the only MMA UI surface when the flag is off).
|
||||
|
||||
2. **RAG test decoupling.** Three-tier classification of RAG tests so the default batch stops touching chromadb file locks, the live_gui subprocess, and CWD drift. The RAG algorithm (`index_file`, `search`, chunking) is unchanged. Tier 1 (unit tests against mock provider) + Tier 2 (controller lifecycle tests with mock engine) run in the default batch in milliseconds. Tier 3 (integration tests against real chromadb/live_gui — the 3-ADDENDUM fragile ones from 2026-06-27) becomes opt-in via `SLOP_RAG_INTEGRATION=1`.
|
||||
|
||||
**Verification criteria** (8 total): MMA dashboard no-render + engine no-op + no `multi_agent_conductor` runtime import when flag off; MMA re-enabled when flag on; no regression in shared-types consumers; default batch RAG tests fast + no chromadb; integration tests opt-in; `RAGEngine` source unchanged; `audit_main_thread_imports.py` passes; MMA tests skip-not-fail by default.
|
||||
|
||||
**Note on numbering:** the legacy file used `0a`, `0b`, `0c`... and `0d`, `0e`, `0f`, `0g` for tracks created 2026-06-06+. This is the **git-blame sort order**, not a logical execution order. The new structure re-orders by dependency.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user