conductor(tracks): add metadata_promotion_20260624 row (35)
Added tracks.md row 35 for metadata_promotion_20260624. SHIPPED 2026-06-25 by Tier 2 autonomous mode. 13 phases, 32 tasks, 10 atomic commits. Phase 0 added 12 NEW per-aggregate dataclasses (+158 lines type_aliases.py + RAGChunk in rag_engine.py + 70+ regression tests). Phases 1-10 were NO-OPS per audit (most consumer sites operate on dicts at I/O boundaries, correctly classified as collapsed-codepath per FR2). Phase 11 audited 253 remaining access sites; all classified as collapsed-codepath. Effective codepaths metric UNCHANGED at 4.014e+22 (reducing .get() access sites alone does not reduce branch count; requires typed parameters at function boundaries).
This commit is contained in:
@@ -73,6 +73,7 @@ Tracks that are unblocked and ready to start. Ordered by **dependency** (blocked
|
||||
| 31 | A (bugfix) | [Fix 14 Test Failures (post-polish merge)](#track-fix-14-test-failures-post-polish-merge-2026-06-24) | spec ✓, plan ✓, metadata ✓, state ✓, **SHIPPED 2026-06-24** by Tier 2 autonomous mode; 4 phases, 4 tasks, 8 atomic commits (3 task commits + 3 plan updates + state + TRACK_COMPLETION); 14 originally-failing tests now pass (12 NormalizedResponse dual-signature + 1 test_auto_whitelist + 3 palette tests); VC1=true, VC2=true, VC3=true, VC4=PARTIAL (6 pre-existing failures NOT in spec), VC5=true, VC6=true; TRACK_COMPLETION at `docs/reports/TRACK_COMPLETION_fix_test_failures_20260624.md` | `code_path_audit_polish_20260622` (parent; shipped 2026-06-24 and merged) | (**NEW 2026-06-24**; small surgical test-fix; 3 root causes: 1) NormalizedResponse __init__ signature mismatch (Phase 2 refactor left 12 tests using legacy flat kwargs; fix: added init=False + custom __init__ accepting both nested usage: UsageStats AND legacy usage_input_tokens=...); 2) test_auto_whitelist mutated a frozen Session via dict assignment (fix: use dataclasses.replace); 3) 3 palette tests depended on toggle + session-scoped fixture state (fix: force-close preamble that guarantees closed state via conditional toggle + poll); **VC4 PARTIAL**: 6 pre-existing failures remain (5 in tests/test_openai_compatible.py with `'ToolCall' object is not subscriptable` from Phase 2 dataclass refactor; 1 in tests/test_extended_sims.py::test_execution_sim_live which is a known flake); all 6 verified to exist in origin/master HEAD BEFORE this fix; **recommended follow-up track** to fix the 5 openai_compatible tests (1-line fixes per test: `tool_calls[0].function.name` instead of `tool_calls[0]["function"]["name"]`)) |
|
||||
| 33 | A (refactor) | [Code Path Audit Phase 2 (the actual followup)](#track-code-path-audit-phase-2-the-actual-followup-2026-06-24) | spec ✓, plan ✓, metadata ✓, state ✓, **SHIPPED 2026-06-24** by Tier 2 autonomous mode; 10 phases, 11 tasks, 11 atomic commits; NG1+NG2 fixed (4+7=11 audit violations → 0); 14 module globals removed from src/ai_client.py (re-bound as provider_state.get_history() instances); MCP_TOOL_SPECS: list[dict[str, Any]] deleted from src/mcp_client.py (-778 lines); NormalizedResponse backward-compat __init__ removed (canonical usage=UsageStats(...) API); 6/6 audit gates pass --strict (weak_types 102<=112, type_registry 23 files, main_thread_imports OK, no_models_config_io OK, optional_in_3_files 0 violations, exception_handling 0 violations); Tier 2 batched 5/5 PASS; 101 targeted unit tests pass (4 pre-existing skips); VC5 PARTIAL: effective codepaths metric unchanged at 4.014e+22 (metric dominated by 2^N where N is largest branch count; the migration reduced branch counts in only 1 function which is invisible to the exponential sum; campaign R4 acknowledges this); TRACK_COMPLETION at `docs/reports/TRACK_COMPLETION_code_path_audit_phase_2_20260624.md` | `code_path_audit_20260607` (the parent audit; superseded the failed `metadata_ssdl_defusing_20260624` campaign) | (**NEW 2026-06-24**; **the actual followup to code_path_audit_20260607**; 3 surviving modules from any_type_componentization_20260621 (mcp_tool_specs, openai_schemas, provider_state) now actually used; the 48 call-site migrations from the parent plan are applied; the 11 pre-existing audit violations (4 NG1 + 7 NG2) are fixed; the 4.01e22 combinatoric explosion is real and remains (the structural improvement is real but invisible to the branch-count heuristic metric); **Phase 0 prerequisite**: SSDL campaign cancelled by Tier 1 (per post-mortem: SSDL premise was wrong; combinatoric explosion is from `dict[str, Any]` type-dispatch, not from nil-checks; the fix is type promotion, not nil sentinels)) |
|
||||
| 34 | A (refactor) | [Code Path Audit Phase 3 (provider state call-site migration)](#track-code-path-audit-phase-3-provider-state-migration-2026-06-24) | spec ✓, plan ✓, metadata ✓, state ✓, **SHIPPED 2026-06-25** by Tier 2 autonomous mode; 9 phases, 11 tasks, 16 atomic commits; 12 module-level aliases removed from src/ai_client.py (6 _X_history + 6 _X_history_lock); 26 call sites migrated across 6 per-provider phases (anthropic 13, deepseek 11, grok 8, minimax 9, qwen 6, llama 16); 1 new regression-guard test file (tests/test_provider_state_migration.py, 14 tests); 2 pre-existing tests updated to patch provider_state.get_history (test_ai_loop_regressions_20260614, test_token_viz); 7/7 audit gates pass --strict (weak_types 102<=112, type_registry 22 files in sync, main_thread_imports 17 files OK, no_models_config_io 0 violations, code_path_audit_coverage 0 violations, exception_handling 0 violations, optional_in_3_files 0 violations); 64 per-provider regression tests pass; Tier 1 + Tier 2 batched 10/10 PASS (live_gui not re-verified; pre-existing RAG flake out of scope); VC7: effective codepaths unchanged at 4.014e+22 (migration removes 1 branch from cleanup() only; combinatoric reduction is the parent any_type_componentization_20260621 track's scope); TRACK_COMPLETION at `docs/reports/TRACK_COMPLETION_code_path_audit_phase_3_provider_state_20260624.md` | `code_path_audit_phase_2_20260624` (parent) | (**NEW 2026-06-24**; **the actual followup to code_path_audit_phase_2**; completes the 27 alias-based call-site migration that Phase 2 left deferred; each per-provider migration is atomic + regression-tested; the critical RLock re-entrance in deepseek's `_send_deepseek` (the deadlock-prone site that prompted `cc7993e5`) is verified by `test_lock_acquisition_no_deadlock`; net diff: src/ai_client.py +63/-68 lines + tests + report; the 4 NG1 + 7 NG2 violations are now fully cleared; the 4.01e22 combinatoric explosion is the same; deferred: the 4 `T | None` legacy wrappers (technically compliant per audit)) |
|
||||
| 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) |
|
||||
|
||||
**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