Codebase Review Backlog — First-Principles & Co-Design Findings¶
Dated evidence ledger. Counts, paths, and code quotations below retain the original
review snapshots; subsequent extractions and deletions may have removed cited files.
Re-verify an OPEN finding against the current tree before implementing it. The
Roadmap owns the consolidated execution register.
Purpose: Persistent, cross-session tracker for architecture/code-design improvement
findings. Each finding has a stable ID, status, evidence pointers, and rationale so work
can be resumed across sessions without re-deriving context.
Convention:
- Status ∈ OPEN / IN-PROGRESS / DONE / WONTFIX / INVALID
- Update the Changelog at the bottom on every edit.
- Every evidence line cites a real path/symbol/count from a prior tool check. Do not
restate a finding without verifying its evidence still holds.
Review basis (snapshot):
- Total: 666,897 LOC / 1,892 files / 22,573 functions / 5,145 classes (code metrics victor/).
- Doc-vs-code drift: CLAUDE.md claims "25 providers / 34 tools"; actual ls = 49 providers / 79 tools.
Legend — Impact/Effort ratio¶
HH= very high ROI (do first) ·HL= high impact, low effort ·HM= high impact, medium effortML= medium impact, low effort ·MH= medium impact, high effort
TIER 1 — High Impact, Low/Medium Effort¶
F-001 · Reconcile doc-vs-code count drift — HL¶
- Status: DONE (provider/tool counts verified correct; gate coverage extended to instruction files)
- Evidence (re-verified 2026-04):
- A CI gate ALREADY EXISTS:
.github/workflows/ci-fast.yml:110runsscripts/ci/check_docs_drift.py(passed green in PR #433). It auto-derivesprovidersfromvictor/providers/*_provider.py(excl base/compat) and pinsCANON_TOOL_MODULES=34,CANON_VERTICALS=9. - Original backlog evidence was partly WRONG: CLAUDE.md:113 "25 LLM provider adapters" and :114 "34 tool modules" are CORRECT (match the derived canon
providers=24,tool_modules=34). The rawls *.py=49/79 counts include__init__.py/base.py/utils, not real adapters — not comparable. - Genuine gap found: the gate's scan set (
DOC_GLOB/EXTRA_FILES) only covereddocs/**/*.md+mkdocs.yml+docs/conf.py— it did NOT scan the root instruction files (CLAUDE.md, .victor/init.md, AGENTS.md) that F-001 flagged. A future drift there would be silently missed. - Action taken: Extended
EXTRA_FILESto includeCLAUDE.md,AGENTS.md,.victor/init.md. Verified bidirectionally (wrong count "25" → gate fails with.victor/init.md:37 provider count 25 != 24; restored → passes). Added regression testtest_instruction_files_are_scanned. - WONTFIX scope (subclass counts): CLAUDE.md:215 "55 BaseTool / 36 BaseProvider / 46 slash commands" vs init.md:37 "42 / 39 / 54" disagree, but these cite graph-index transitive counts, not grep-derivable direct-inheritance counts (grep gives 16/23/55). Making these self-enforcing would require a graph-index count query in CI — out of scope for a docs gate. Left as-is.
- Effort: Low. Impact: Medium.
F-002 · Orchestrator holds 13 _initialize_* methods despite Facade contract — HM¶
- Status: DONE — FEP-0016 Implemented. Scoping found the intended fix (
InitializationPhaseManager) already existed but was dead code (zero callers) — and a phase (credit_runtime) registered only on it never ran in production (fixed: #464). Wired the manager to drive all 9_initialize_*phases viarun_phaseat their existing sites (#466 readiness, #477 wiring). The manager now owns the phase contract (order/criticality/dependency-skip/timing); a guard test asserts no raw_initialize_*call site remains, so a phase can't be silently lost again. Grouped design was revised to per-phase in-place after implementation showed the phases are finely interleaved with construction. - Evidence:
victor/agent/orchestrator.py= 4,704 LOC;grep -c "_initialize_"= 13; service-delegation refsself._<svc>_service= 51.- Docstring
victor/agent/orchestrator.py:438-445promises delegation "without containing business logic". _initialize_provider_runtime(L459) and_initialize_memory_runtime(L479) embed construction logic directly.- Rationale: A facade that also owns 13 lifecycle phases is a lifecycle owner wearing a delegation mask.
InitializationPhaseManageralready exists (per CLAUDE.md) — the orchestrator should not retain_initialize_*bodies. - Action: Move each
_initialize_*intoOrchestratorServiceProvider/InitializationPhaseManager; orchestrator keeps only wiring. - Effort: Medium. Impact: High (testability, merge-conflict reduction).
F-003 · Compaction logic fragmented across 7 files, no unified strategy protocol — HM¶
- Status: DOWNGRADED / largely INVALID — scoping (2026-07) falsified the premise. A
CompactionSummaryStrategyProtocol already exists (victor/agent/compaction_summarizer.py:32) and every summarizer (rule_based/hybrid/llm/keyword/ledger-aware) implements it — so "no unified strategy protocol" is false. The finding also undercounted (actually 9 files / ~5,718 LOC; the "strategies"adaptive_compaction/emergency_compaction/continuation_bonus/hierarchyare helpers, not strategies).context_compactor.py(1,827 LOC) IS a real god-object but is a separate subsystem from the router, works, and isn't a proven bottleneck. Action taken: added a hotspot ratchet oncontext_compactor.py(1827) to prevent further god-object growth; decomposition deferred as low-ROI. The one real spun-off finding → F-015 (orphaned router). No FEP. - Evidence:
context_compactor.py(1,827),compaction_router.py(721),compaction_hybrid.py(593),compaction_rule_based.py(563),compaction_summarizer.py(148),compaction_continuation_bonus.py(187),compaction_hierarchy.py(168) — 4,207 LOC total.- Rationale:
router+hybrid+rule_based+summarizerstrongly implies a strategy pattern never unified behind oneCompactionStrategyinterface. Each new strategy added a file rather than a class. Compaction is a hot latency path. - Action: Define
CompactionStrategyprotocol;routerselects; fold god-objectcontext_compactor.py. - Effort: Medium-High. Impact: High.
F-004 · tool_selection split into 8 files but core still 2,878 LOC — HM¶
- Status: DONE (package-ify scope; parent-extraction deferred) — scoping corrected the premise: the 6 satellites are genuine, tested delegations (each called at a real pipeline point, each with a dedicated unit test), not false splits — folding them back would create a ~3,300-LOC monolith. Instead (#484): moved the flat
tool_selection*.pyfiles into avictor/agent/tool_selection/package (parent →selector.py, git renames preserved) with an__init__re-export shim (public API unchanged), and added a hotspot ratchet onselector.py(2882) so it can't grow. The parent's big undelegated methods (_filter_tools_for_stage336 LOC,get_adaptive_threshold135 LOC) were deliberately not extracted — the file isn't hotspot-critical and works; ~25h of hot-path churn wasn't worth it. - Evidence:
tool_selection.py(2,878) +tool_selection_assembler.py(56),_cache_key.py(27),_cache.py(64),_policy.py(103),_postprocessor.py(144),_recorder.py(21),tool_selector_factory.py(351) = 3,747 LOC.- Rationale: 7 satellites averaging <150 LOC are too-granular splits where the 2,878-line parent still owns the logic — worst of both worlds. Either commit to a
tool_selection/package with coherent stages (policy → cache → selector → postprocess → record), or fold satellites back. - Action: Promote to
tool_selection/package OR consolidate; ensure core shrinks proportionally. - Effort: Medium. Impact: Medium-High.
F-011 · Same-name enum collisions across domains (ApprovalMode, AgentMode) — HL¶
- Status: DONE (PR #447) — renamed the lower-usage variant of each pair:
config.pyAgentMode→AgentLifecycleMode(1 importer) andsafety.pyApprovalMode→WriteApprovalMode(0 external importers). Members/values preserved; canonicalmode_controller.AgentMode/tool_approval.ApprovalModeuntouched. - Evidence (verified 2026-07):
ApprovalModedefined twice with incompatible members:victor/agent/safety.py:97(OFF/… write-operation approval) vsvictor/agent/tool_approval.py:21(AUTO/DANGEROUS/ALL, tool-approval workflow).AgentModedefined twice:victor/agent/mode_controller.py:32(canonical, 12 importers — coding workflow modes) vsvictor/agent/config.py:65(1 importer — agent lifecycle). Different concepts, same name.- Rationale: Importing the wrong
ApprovalMode/AgentModetype-checks fine but silently yields wrong behavior — a latent correctness footgun, not dead code (both variants have live consumers, so neither can simply be deleted). This is why the duplication audit's "delete the obsolete one" recommendation was rejected. - Action: Rename by domain (e.g.
WriteApprovalModevsToolApprovalMode;AgentLifecycleModevsAgentMode); migrate the minority-importer side first (config.pyAgentMode: 1 site). Behavior-touching → own reviewed PR, not a sweep. - Effort: Low-Medium. Impact: Medium-High (silent-miswire prevention).
TIER 2 — High Impact, High Effort¶
F-005 · 23 *_runtime.py service twins beside 6 canonical services — MH¶
- Status: DOWNGRADED / premise OVER-STATED — batch re-triage (2026-07) classified all 23. They are not service twins: the runtimes are the extracted implementations the six canonical services delegate into (the intended decomposition, not a parallel layer), and only 2 are thin shells worth folding — the other 21 own distinct, live behavior. There is no
chat_service.py↔chat_stream_runtime.py"shell vs runner" duplication of the kind alleged; the_service/_runtimesplit is the deliberate facade→implementation boundary. Action taken: none — no anti-pattern to fix. Corrected premise recorded so this isn't re-scoped. - Original evidence (context):
victor/agent/services/*_runtime.py= 23 files. - Residual (low-ROI): 2 thin-shell runtimes could be inlined; not worth a PR on its own — fold opportunistically if either file is touched.
F-006 · 164 singleton files vs guard ceiling of 68 — MH¶
- Status: DOWNGRADED / premise OVER-STATED — the "164 vs 68" gap was a grep artifact, not a guard breach. The re-triage found the guard (
test_singleton_guard.py) already scopes its count to genuine stateful singletons and passes (73/74 in-scope, not 164); the 164 is the broad grep pattern matching_NATIVE_AVAILABLEmodule constants,__new__overrides on dataclasses, and localget_instancehelpers that aren't process-wide singletons. The real singleton population is already inside the guard's ceiling. Action taken: none — no ceiling to tighten; the guard already contains the class. Corrected premise recorded. - Original evidence (context): broad grep = 164 files; guard ceiling = 68 (different denominators).
F-007 · 49-provider / 79-tool flat registries, no taxonomy — MH¶
- Status: DOWNGRADED / premise OVER-STATED — the "flat registries scale poorly / force import-all" rationale is false here. Providers are lazily loaded (double-checked-locking registry; nothing imports all 49), and tools already auto-register through
SharedToolRegistrywith an existing category taxonomy — so discoverability and registry-awareness are solved without a directory move. A physical re-org intoproviders/cloud|local/would churn 128 files + every import path for no functional gain and real merge cost. Action taken: none — the scaling problem the finding assumes doesn't exist. Corrected premise recorded. - Original evidence (context): 49 provider files, 79 tool files, flat dirs (but lazy-loaded + registry-categorized).
F-008 · Conversation store* sharded into 6 files, store.py still 2,855 LOC — MH¶
- Status: DOWNGRADED / premise OVER-STATED — the shards are not premature decomposition of one store:
store_messages/_schema/_session/_trace.pyare distinct repository concerns (message CRUD, DDL/migrations, session lifecycle, trace persistence) with their own boundaries, andstore.pyis the coordinating facade over them, not a monolith that "failed to shrink." The finding inferred a problem from the file count + the facade's LOC without checking that each shard owns a cohesive concern. Consolidating back into one package would re-merge the boundaries the split created. Action taken: none. Corrected premise recorded. - Original evidence (context): 6
store*files;conversation.storeimported by 21 files.
F-012 · Validation/metrics types fragmented into divergent same-name variants — MH¶
- Status: DONE — FEP-0014 Implemented. Phase 1 (#453 canonical
ValidationSeverity/ValidationResult+severity_rank+MetricsCollectorProtocol+ guard). Phase 2: #459 (severity re-export ×3), #460 (the four divergentValidationResults renamed to distinct types — ground truth showed merge would lose domain data), #458 (5 collectors conform via adapter methods), #457 (pickle_cacherename). Guard allowlist empty for both names. Phase 3 absorbed (re-exports are the end state; results renamed, no shims). F-012 footgun eliminated. - Evidence (verified 2026-07):
ValidationSeverity× 4:config/validation.py:26,core/validation.py:82,framework/middleware.py:89,framework/capabilities/validation.py:53. Three are{ERROR,WARNING,INFO};framework/middleware.py:89uniquely addsCRITICAL→ a severity comparison silently means different things by layer.ValidationResult× 5 with incompatible fields:tools/tool_call_validator.py:17,config/connection_validation.py:54,workflows/protocols.py:759(nested),framework/requirement_validator.py:88,framework/capabilities/validation.py:62.MetricsCollector× 5, no shared protocol:observability/metrics.py:607,integrations/api/event_bridge.py:139,agent/metrics_collector.py:162,experiments/ab_testing/metrics.py:45,framework/observability/metrics.py:1124.- Rationale: Same names, no canonical, no shared protocol → cannot be treated polymorphically, and the
CRITICAL-only variant is a genuine cross-layer incompatibility. This is real design fragmentation but not clutter — every impl has live consumers and the framework/core ones are public surface (FEP territory). - Action: Define canonical
ValidationSeverity/ValidationResultincoreand aMetricsCollectorProtocolincore/protocols.py; deprecate variants behind them. Requires a design/FEP pass — do not blind-merge. - Effort: High. Impact: High (correctness + polymorphism).
TIER 3 — Quick Wins¶
F-009 · Root-level stray test/verify scripts — ML¶
- Status: DONE (F-009a/b/c done; F-009d done — dead verify script deleted)
- Evidence:
- Root files:
test_performance_improvements.py,test_planning_integration.py,test_shell_limits.py,verify_phase4_implementation.sh,verify_service_layer_default.py. grepacrossMakefile,pyproject.toml,.github/,scripts/,mkdocs.yml= 0 references.git ls-files= onlyverify_phase4_implementation.sh,verify_service_layer_default.pywere tracked; the 3test_*.pywere untracked.pyproject.toml:661testpaths = ["tests"]meant the 3 roottest_*.pywere never collected by pytest → orphaned/dead.scripts/already has 55 scripts.- Sub-findings discovered during execution:
- F-009a (DONE):
verify_service_layer_default.py:15referencedFeatureFlag.USE_SERVICE_LAYER_FOR_AGENTwhich no longer exists invictor/core/feature_flags.py(removed in W3 cleanup). Relocated toscripts/verify_service_layer_default.pyviagit mv(history preserved). Dead-flag reference rewrite → F-009d. - F-009b (DONE):
verify_phase4_implementation.shrelocated toscripts/viagit mv. - F-009c (DONE):
test_shell_limits.pyhad unique coverage (no canonical test checksstdout_limit/stderr_limit). Rewrote astests/unit/tools/test_shell_limits.py— removed hardcodedsys.path.insert(0, "/Users/vijaysingh/code/codingagent")hack +__main__runner; split into 5 focused async tests. 5 passed in 1.41s. test_performance_improvements.pyDELETED — timeout-config coverage already exists intests/unit/core/test_timeouts.py; it also hardcoded/Users/vijaysingh/code/codingagentpaths and used aFileWatcherRegistry.get_instance()singleton.test_planning_integration.pyDELETED — importedfrom victor.agent.coordinators.planning_coordinator import PlanningCoordinator, a removed module (victor/agent/coordinators/planning_coordinator.pydoes not exist);PlanningConfignow lives invictor/config/groups/agent_config.py. Dead-on-collection.- F-009d (DONE): Deleted
scripts/verify_service_layer_default.py— its sole purpose was verifying theUSE_SERVICE_LAYER_FOR_AGENTflag, which no longer exists (service layer is now unconditional), so the script was dead and would crash on import. Only the backlog referenced it. The suggested.gitignoreguard for roottest_*.py/verify_*was declined: a broad root glob risks ignoring legitimate files, and the strays were already relocated (F-009a/b/c). - Effort: Low. Impact: Low-Medium.
F-010 · 306 files carry legacy/deprecation markers — triage needed — ML¶
- Status: DOWNGRADED / premise OVER-STATED — the "306 files" (re-measured ~612 on the broader grep) is ~85% noise: the pattern matches the word "legacy" in comments/docstrings describing handled backward-compat,
legacy=kwargs that are live API, and deprecation machinery (the@deprecateddecorator's own definition + tests). Spot-audit found no meaningful population of abandoned-but-not-removed surface that isn't already tracked by a specific finding (F-013 export shim, F-014 backoff dupes, F-015 done). There is no undifferentiated "dead surface" backlog to reap. Action taken: none — a blanket triage would burn effort re-confirming live code. Corrected premise recorded; real dead code is caught per-subsystem, not by marker grep. - Original evidence (context): marker grep = 306 files (~16% of source), dominated by compat-describing prose.
F-013 · framework/step_handlers.py exports internal-only symbols — FEP-gated — ML¶
- Status: PHASE 1 DONE — FEP-0015 Phase 1 landed (#454: unexported both symbols,
_ExtensionHandlerrename,__getattr__deprecation shim, guard). Phase 2 (remove shim) is release-gated — deferred until one minor release elapses so out-of-tree importers had their deprecation window. FEP staysAccepteduntil then. - Evidence (verified 2026-07):
victor/framework/step_handlers.py:2629__all__includesCapabilityConfigStepHandler(class L968) andExtensionHandler(class L2047), but neither is imported anywhere outside this module.ExtensionHandleris heavily used internally (instantiated L2346–2361), so it is not dead — only its__all__export is unused.- Rationale: Exporting an internal implementation detail widens the framework public API with zero consumers. But
framework/__all__is the public API — removing/renaming needs a FEP per CLAUDE.md. Flag-only; do not delete. - Action: Via FEP — drop from
__all__(optionally renameExtensionHandler→_ExtensionHandler) once confirmed no external consumer relies on the lazy import. - Effort: Low (mechanical) + FEP overhead. Impact: Low-Medium.
F-014 · Ad-hoc retry/backoff + pickle-cache logic bypasses existing canonicals — ML¶
- Status: DONE (partial, conservative) — F-014a: PR #448; F-014b: PR #449. Migrated where behavior is provably identical; behaviorally-divergent sites deliberately left (documented below).
- Evidence (verified 2026-07):
- Canonical retry EXISTS:
victor/core/retry.py:156ExponentialBackoffStrategy(+with_retryL498). Yet 3 sites reimplement2 ** attemptbackoff inline:agent/subagents/base.py:533,workflows/batch_executor.py:599&:663,storage/embeddings/service.py:284. - Pickle load-validate-save duplicated across 4 files:
tools/semantic_selector.py,storage/embeddings/collections.py,agent/prompt_corpus_registry.py,agent/services/decision_cache.py. - Rationale: Real duplication, but each copy has subtly different jitter/exception/validation semantics — consolidation is behavior-sensitive, not a mechanical de-dup. Medium ROI.
- Action: Migrate the 3 backoff sites to
ExponentialBackoffStrategy(audit jitter/exception handling per-site); extractvalidate_and_load_pickle_cache(path, validators)for the 4 cache sites. One focused PR each; verify behavior parity. - Effort: Medium. Impact: Medium.
F-015 · Orphaned hybrid-compaction subsystem — built but never wired to production — DONE (PR #487)¶
- Status: DONE — deleted (2026-07). Scoping proved the whole hybrid-compaction slice, not just the router, was fully unwired: the router is instantiated only in tests,
ConversationController'scompaction_routerparam was never supplied in production,context_compactor.pyusesLLMCompactionSummarizerdirectly, and the backing config (CompactionStrategySettings/CompactionFeatureFlags) had zero production consumers — read only by the dead cluster and its tests. Unlike F-002 (wiring fixed a live bug), nothing depended on this, so delete was correct over wire. - Removed (~2,082 LOC of feature code + tests):
victor/agent/compaction_router.py(721),compaction_rule_based.py(563),compaction_hybrid.py(593),victor/config/compaction_strategy_settings.py(205), plustests/unit/agent/test_compaction_{router,hybrid,rule_based}.pyandtests/integration/agent/test_hybrid_compaction.py. - Surgery: excised the dead
compaction_routerparam/attribute/TYPE_CHECKING import and the never-reached router branch inconversation/controller.py::_generate_compaction_summary(legacy summarizer + keyword fallback retained); stripped the deadstrategy/compaction_feature_flagsfields + 3 getters fromconfig/compaction_settings.py(legacy +adaptive_thresholdfields kept); refreshed a stale field-collision comment inconfig/settings.py. - Noted (not actioned — out of scope): the remaining
CompactionSettingslegacy fields (compaction_enabled,compaction_preserve_recent,compaction_max_estimated_tokens,compaction_auto_compact) also have no production consumers — a separate config-hygiene question, left intact to keep this PR to the approved hybrid-compaction feature.
COMPLETED THIS CYCLE (2026-07)¶
F-C1 · Provider capability surface collapsed to supports_*() methods — DONE (PR #442)¶
- Removed 3 unused
@runtime_checkableprotocols + 5is_*_provider/has_*helpers fromvictor/providers/base.py; added the missingBaseProvider.supports_vision()default (closed a Liskov/ISP gap whereprovider.supports_vision()couldAttributeError); retargeted callers/tests/docs; de-flakedtest_score_resources_local_without_gpu. Net −284 LOC. Verified: 2523 provider/service tests green.
F-C2 · Verified-dead code removed — DONE (PR #443)¶
- Deleted orphan module
victor/core/typed_models.py(12 types, zero importers), the deadStreamingProvider/StreamChatProviderprotocols inproviders/stream_adapter.py, and the unusedModeConfigSchema/ModeDefinitionSchema/VerticalModeConfigSchema+validate_*_dictcluster incore/validation.py. Net −566 LOC. Verified: full-suite collection-check clean, 173 targeted tests green. - Provenance note: Originated from a 4-agent duplication audit whose majority of raw findings were rejected on verification — e.g. the "414
to_dictcopies → mixin" was a mischaracterization (mostly legitimately-distinct types), and a claim that a test imports thestream_adapterprotocols was false. Only independently-verified-dead items were removed; the surviving design issues became F-011..F-014.
F-C3 · F-011 enum-collision renames — DONE (PR #447)¶
config.pyAgentMode→AgentLifecycleMode,safety.pyApprovalMode→WriteApprovalMode(lower-usage variant of each pair). Pure rename; members preserved; canonical variants untouched. Implemented via a worktree-isolated parallel agent, diff-reviewed, CI-green.
F-C4 · F-014 backoff + pickle-cache consolidation — DONE partial (PRs #448, #449)¶
- F-014a (#448): added pure
compute_backoff_delay()tocore/retry.py; migrated 3 inline sites (subagents/base.py,batch_executor.py×2) with proven numeric equivalence. Leftstorage/embeddings/service.py:284— multiplicative jitter[0.75,1.25]the additive-jitter helper cannot reproduce. - F-014b (#449): extracted
victor/core/pickle_cache.py(validator-based load/validate/save, +8 tests); migratedsemantic_selector.pyandcollections.pypreserving exact validation order and delete-vs-keep flags. Leftprompt_corpus_registry.py(never deletes on failure) anddecision_cache.py(bare-dict pickle, no metadata wrapper) — helper cannot express their semantics. - Both implemented via worktree-isolated parallel agents, independently diff-reviewed, CI-green.
Blocker cleared this cycle — vertical CI unblock (PR #451)¶
- An external main→develop sync (PR #446) deleted core
victor/storage/vector_stores/chromadb_provider.pybut left a vertical test importing it →test-verticalscollection error blocked all PRs into develop. Fixed by removing the stale import + orphanedTestChromaDBProvider(PR #450 independently removed chromadb from verticals around the same time).
F-016 · Call-graph audit — silently-broken / unwired capabilities (2026-07)¶
Why this audit exists. The two highest-value finds of the whole review — F-002 (credit_runtime: an opt-in RL feature that silently no-op'd because its runtime was registered only on dead code) and F-015 (a config-backed hybrid-compaction subsystem with zero consumers) — were both the same class: a capability that is constructed / registered / config-gated but never actually invoked in a production path. Count-based audits structurally miss this class (the code exists and looks wired). So we ran a dedicated call-graph hunt: three parallel verify-first agents (config opt-ins that no code reads; components registered but never invoked; optional constructor params never supplied → dead branches). Each was required to trace the call graph and reject any finding with a live consumer. The discipline paid off — agents self-rejected ~3 false positives (missed aliasing / live alternate wiring), and every disposition below was independently re-verified before action.
Meta: unlike the original count-based backlog (majority over-stated), this call-graph method landed real findings. This is the recommended lens for future dead-code / dead-feature sweeps.
DELETED — verified-dead, merged¶
- F-016a ·
WorkflowOptimizationComponentsbundle — DONE (PR #494). A 6-object optimization bundle (task_completion_detector,read_cache,time_aware_executor,thinking_detector,resource_manager,mode_completion_criteria) constructed on every orchestrator init and read by nothing (the only.workflow_optimizationreference was an unimplemented protocol stub). Removed the bundle + itsOrchestratorComponentsfield + factory method + bootstrapper assignment + protocol stub + 6 now-dead wrapper builders incoordination_builders.py. Underlying component classes KEPT (alive via other paths). −333 LOC, deletion-only. - F-016b ·
HybridDecisionServicecluster — DONE (PR #493). Built only byExtendedModelSelectorLearner, which is referenced nowhere (dead parent). Deleted the service +HybridDecisionServiceConfig/HybridMetrics, its dead parent, and its exclusively-ownedConfidenceCalibrator+DecisionCache, plus exclusive tests. Preserved shared extended-learner test files (surgical case removal) and the independentlearn_confidence_thresholdcode. ~−4,325 LOC. - F-016c · Team credit-attribution mixins — DONE (PR #489).
CreditAssignmentMixin/CreditAwareTeamCoordinator— the productionUnifiedTeamCoordinatorinheritsObservabilityMixin, RLMixin, never these; not even re-exported. Deleted both + exclusive test + example. (Distinct from the LIVE frameworkCreditTrackingService, which was left untouched.) - F-016d · Unregistered capability step-handlers — DONE (PR #492).
CapabilityNegotiationStepHandler/CapabilityAwareToolStepHandler— never inStepHandlerRegistry.default()'s 10 handlers, never supplied ascustom_handlers; module imported nowhere. Deleted the whole file (317 LOC). Livenegotiate_capabilities()untouched. Not a FEP (no public__all__membership).
IN PROGRESS¶
- F-016e · Tool-config mis-wires — DONE (PR #501). The uncommitted worktree changes were recovered after that session's agent process died, verified correct, rebased onto develop, and merged. (1)
tool_builders.pynow routesgeneric_result_cache_enabled/_ttlthrough the nested_tool_setting()resolver and thehttp_connection_pool_*flags through a new_cache_setting()resolver, so configured nested values actually apply (the flatgetattr(Settings(), …)returned the default). (2) Deleted the unreaddeduplication_strict_modeaffordance (ToolSettingsfield +DeduplicationConfig.strict_mode+ registry pass-through). (3) Deletedenable_provider_optimization+get_tools_with_levels_provider_optimized()(zero readers/callers). Tests updated for the removed fields.
QUEUED — re-verified 2026-07-12 against develop a10a3ee3 (post #483–#497 cascade)¶
- F-016f · Credit-assignment feedback loop — DONE (PR #505), verdict was wire. Re-verified:
assign_turn_credit()(framework/rl/credit_tracking_service.py) had zero production callers;auto_assign_at_turn_boundary: bool = Truewas never read anywhere;_turn_countadvanced only insideassign_turn_credit, sogenerate_tool_guidance()always returnedNonedespite live wiring in the prompt pipeline. Wired viaCreditTrackingService.assign_turn_credit_at_boundary()— a thin, exception-safe wrapper honoring the flag (its first reader, threaded throughfrom_settings) — called from the orchestrator's universal per-turn teardown (_teardown_chat_service_turn_runtime), covering streaming, non-streaming, and planning turns alike. Two competing implementations raced (#504/#505); #505 won on the hotspot policy — logic lives in the owning service, the call site is a 2-line delegation, whereas #504 grew theturn_execution_runtime.pyhotspot past its ratchet cap. Sibling of F-002. Tests: boundary advances turn / disabled flag leaves signals intact / errors swallowed. - F-016g · Post-switch hooks — DONE (PR #503), verdict was wire → DELETE. New provenance (re-verify 2026-07-12): the dispatching
ProviderSwitchCoordinatorwas already deleted ind50ec336(v0.7.0) —post_switch_hooks.py(316 LOC; its comments still reference the removedAgentOrchestrator._apply_post_switch_hooks()) was an orphaned leftover of a deleted subsystem, not an unwired feature. The wire seam already exists elsewhere:ProviderService.register_post_switch_hook()(:596) /_notify_post_switch_hooks()(:615) — zero registrants — and the live switch path already re-inits tool adapter + capabilities + model switcher (provider_manager.py:446-459). Deleted:post_switch_hooks.py+provider/switch_contracts.py(theSwitchContext/HookPriority/PostSwitchHooktrio was consumed only by the dead module) + the three re-exports fromprovider/__init__.py. The unrelatedProviderServicecallback seam is untouched. Residual (tracked separately): exploration/tool-budget are still not re-derived from new-model caps on a mid-session switch — a narrow directprovider_manager.pyfix if wanted, not a reason to keep the hook classes. - F-016i ·
Extended*Learnerresidue — DONE (PR #500).ExtendedModeTransitionLearner(framework/rl/learners/mode_transition_extended.py, 207 LOC) andExtendedToolSelectorLearner(tool_selector_extended.py, 240 LOC): zero production importers, not exported bylearners/__init__.py(which exports 7 other learners); only consumers were 2 integration-test files. Unlike F-016b there were no exclusively-owned dependencies (PhaseDetector/ToolPredictor/CooccurrenceTracker/UsageAnalyticsare all shared + live). Deleted both source modules + both test files (clean, zero surgical test edits).context_phase_detector.pybecomes production-consumer-less but is directly unit-tested standalone — left in place, tracked separately. - F-016j · Predictive-tools flags +
create_step_aware_selector— PARTIAL (PR #508): factory deleted, flags RE-SCOPED (premise was wrong). Verify-first (2026-07-12) corrected the claim on two points: (1)enable_tool_predictoris NOT read nowhere — it's read atfeature_flag_settings.py:141insideget_effective_settings(); (2) the other three flags are NOT sole-read by the factory — all three are also read byget_effective_settings()(L142-144), andenable_predictive_toolsis genuinely load-bearing (should_use_predictive_for_request+ the liveStepAwareToolSelectorpath). Done: deleted the dead factorycreate_step_aware_selector()(zero real callers — everyStepAwareToolSelectoris built directly) + its__all__entry + the now-unusedimport time.ToolPredictor/CooccurrenceTracker/StepAwareToolSelectoruntouched (all live). Re-scoped follow-up: the 4 flags can only go together withget_effective_settings()(itself production-caller-less, asserted only bytest_rollout_manager.py+test_predictive_enhancements_e2e.py) — a coupled change, tracked separately, NOT a clean "delete 4 dead flags." - F-016k · Provider pool inert — DONE (PR #508), verdict delete. Verified: the flag-built pool instance only ever received
.shutdown(), never.acquire()/.release()(the claim's.route()doesn't exist onProviderPool). Deleted: theuse_provider_poolingflag (feature_flag_settings.py) + its flat-key alias (settings.py) + the flag-gated construction block (provider_runtime.py) + the dead.shutdown()teardown (orchestrator.py). Kept: theProviderPoolclass (providers/factory.py— live viaManagedProviderFactory, has its own contract tests) and the inertpool=DI seam oncreate_provider_runtime_components(matches the existing no-op-kwarg pattern there). Tests: deletedTestProviderRuntimePoolWiring, dropped the flag attr intest_provider_runtime.py. - F-016l · Unread config groups — DONE (PR #508), config-hygiene delete. Verified zero production readers for all 8 fields and deleted them: 4 graph-profiling fields (
GraphSettingsinconfig/search_settings.py) + 4CompactionSettingslegacy fields (config/compaction_settings.py). Precision notes recorded: theenable_profilinghits inbenchmark/capabilities.pyare a lookalike (a_PERFORMANCE_DEFAULTSkey, unrelated toGraphSettings) — left untouched;CompactionSettings.adaptive_thresholdand the runtime adaptive machinery are live and out of scope. No YAML/env/test/serialization references (both models areextra="ignore", parentSettingsisextra="allow", so no stale-config risk).
RESOLVED BY VERIFICATION — no code change (2026-07-12)¶
- F-016h · Recovery/health wiring — SPLIT verdict. (a)
RecoveryService: the None-guards are intentional graceful degradation, not a bug — the sole production bind explicitly hardcodesrecovery_integration=None(agent/service_provider.py:1174), and the two-tier fallback chain (integration → coordinator → safe default with logged "Recovery coordinator unavailable") is designed behavior across all ~7 guarded methods (recovery_service.py:690-979). Downgraded; no action. (b)ProviderService.health_checkerwas genuine dead capability — DONE (PR #508), deleted. Never supplied at either prod construction site (orchestrator.py:472,core/bootstrap_services.py:317); every read was behind an always-falseif self._health_checker:guard. Removed thehealth_checkerparam +self._health_checker+ the 4 dead branches (switch_providervalidate/health gate,check_provider_health, start/stop health monitoring), preserving each method and its existing non-health fallback as the sole path (switch proceeds unconditionally;check_provider_healthuses theget_model()probe; start/stop delegate to provider_manager/registry). Tests: deleted the one dead-branch unit test, droppedhealth_checker=from 5 integration-test constructions. RecoveryService (part a) untouched.
NEW — surfaced while scoping F-016g's exploration residual (2026-07-12)¶
- F-016m ·
tool_calling_capsis never re-derived on a mid-session provider/model switch — STALE-STATE bug — DONE. Fixed via the invalidation seamProviderManagementRuntime._resync_model_derived_state()called from_sync_runtime_provider_state(kept out of the cappedorchestrator.pygod-object). On every switch it re-reads the already-refreshedprovider_manager.capabilities, refreshesorchestrator.tool_calling_caps, recomputestool_budget, and re-pushes exploration settings + budget to the tracker/pipeline via the existing setters (set_model_exploration_settings/set_tool_budget, which already honour a sticky user override). Duck-typed/best-effort so a bare host never raises into the switch path. Tests assert caps/budget/exploration refresh end-to-end (red-verified); streaming + non-streaming parity batteries green. Original analysis below. Verified:tool_calling_capsis a construction-time field onOrchestratorComponents(orchestrator_factory.py:165), built once from the initial model; the switch path never re-syncs the orchestrator's cached copy (provider_management_runtime.py::switch_provider/switch_model→_sync_runtime_provider_stateupdates onlyprovider/provider_name/model;provider_service.switch_*does not touch the orchestrator's caps). Note the fix is cheaper than "re-run capability discovery":provider_manager.capabilities(provider_manager.py:249-252, sameToolCallingCapabilitiestype) is already refreshed on every switch (initialize_tool_adapter()at:447-448/:515-518) — only the orchestrator holds a stale duplicate, so the fix is a re-read + re-push, not a re-discovery. So after a mid-session switch,orchestrator.tool_calling_capsreflects the OLD model. This is why F-016g's "exploration-refresh" residual can't be a clean 3-liner: readingtool_calling_caps.exploration_multiplierpost-switch yields the stale (old-model) value, so the refresh would be a no-op. The staleness is broader than exploration — the same never-refreshed caps backnative_tool_calls(orchestrator.py:487),tool_budget(:1031viainitialize_tool_budget), andthinking_disable_prefix(:3074). Impact is bounded (heuristic tuning + switch is not the hot path), so deferred by decision (2026-07-12) rather than hacked. Proper fix (own scoped PR if pursued): add an invalidation seam at_sync_runtime_provider_statethat re-reads the already-refreshedprovider_manager.capabilities, refreshesorchestrator.tool_calling_caps, and re-pushes the derived state (exploration on the tracker +tool_budget) via the existing setters; do NOT ship an exploration-only refresh that reads stale caps. Supersedes the "Residual" note under F-016g.
F-017 · Vestigial orchestrator_factory.py component-bundle layer — DONE (2026-07-19)¶
- Status: DONE — deleted (~120 LOC). Surfaced by the Probe-A (FEP-0021) dead-bundle-field probe: a coarse AST guard flagged 6 distinctively-named fields, and scoping revealed the entire transfer-object layer was dead. The 8
*Components/CoreServicesdataclasses (ProviderComponents,CoreServices,ConversationComponents,ToolComponents,StreamingComponents,AnalyticsComponents,RecoveryComponents,OrchestratorComponents) had zero production references outside the file that defined them — only test references + one docstring mention. OnlyCoreServiceshad a builder (create_core_services), and it was called only from a test; the other 7 had no builder at all. The module docstrings described afactory.create_all_components()→AgentOrchestrator._from_components()build path that never existed (grep "def create_all_components|def _from_components"= 0) — an aspirational SOLID-refactoring design (historical SOLID report) that was never wired; the real orchestrator builds via the individualcreate_*builder methods. - Verification: adversarial verify-first pass (default-keep) checked dynamic access (
getattr/globals/string names),__all__/re-exports, entry points, subclassing, live type-hints, the realOrchestratorFactorybuild path (orchestrator.py:909,framework/_internal.py,background_agent.py), and serialization — all clean. Thefactory/__init__.py:31"re-export" was a docstringUsage:line, not executable. - Action taken: deleted the 8 dataclasses +
create_core_services+ the now-unusedfrom dataclasses import dataclass, field; removed the two test classes (TestCreateCoreServices,TestDataClasses) and their imports intest_orchestrator_factory.py; corrected the misleading module docstring. Kept every live individualcreate_*builder +CoreServices's field-builder methods (create_sanitizeretc. are live).test_bootstrap_services.py::TestMockToolComponentsleft untouched (coincidental name). Tests: factory suite green (47), bootstrap green (15), import/mypy/ruff/black clean. Same class as F-002/F-015/F-016a — delete over wire (nothing depended on it). - Note: F-016m's
orchestrator_factory.py:165reference (tool_calling_capsfield onProviderComponents) is now historical — the livetool_calling_capsis sourced from the factory tuple (orchestrator.py:936-943), never from the deleted dataclass, so the F-016m fix is unaffected.
F-018 · Dead factory-builder methods — DONE (2026-07-19)¶
- Status: DONE — deleted 6 methods (~120 LOC). A follow-on F-016/F-017-class sweep (adversarial verify-first, default-keep) found
create_*methods on theOrchestratorFactorybuilder mixins with zero production callers — the live init path (component_assembler.py/bootstrapper.py/orchestrator.py) calls each live builder by explicit name; these were not in that set. Two were self-labeled dead (create_streaming_loop_coordinator= "ARCHIVED… never integrated",raise NotImplementedError;create_streaming_tool_adapter= "OBSOLETE - NOT IN USE - DEAD CODE"). Deleted: those two +create_response_processor,create_tracers,create_exploration_coordinator(method),create_streaming_chat_executor(dead wrapper) + the 2 test cases that were their only callers. - Scope correction (CI caught it): the first cut also deleted
create_referential_intent_resolver/create_tool_result_deduplicatorand their modules — but CI failed becausereferential_intent_resolver.pyandtool_result_deduplicator.pyeach have a dedicated unit-test suite + an integration test (test_context_management_e2e.pyconstructs and exercisesToolResultDeduplicator/ReferentialIntentResolver— file-read dedup + anaphora resolution, real behavioral capability). That makes them a wire-or-delete decision, not a silent sweep → REVERTED / KEPT. They are built-but-unwired (their only construction path was the now-caller-less factory methods, which are also kept as the wire seam). Tracked as F-018b: referential/dedup are tested-but-unwired capabilities — decide wire (into the context-management path the e2e test implies) vs delete-with-tests. Lesson: a dead production wiring ≠ dead code when a maintained behavioral test suite exists. - Verification: each deleted method — 0 production callers (grep across
victor/excl. def + tests) and no behavioral test (onlyresponse_processor.pyhad a text-migration guard, which still passes as the file remains). Adversarial traps ruled out:create_compaction_summarizerKEPT — invoked viagetattr(factory, ..., None)incomponent_assembler.py:347(false-positive shape).create_tracersdeletion is behavior-preserving — consumers readgetattr(self, "_execution_tracer", None)and it was never called, so they already sawNone(tracing wires viavictor/observability/tracing).build_exploration_coordinator(live module fn viacoordinator_factory.py) andservices.create_streaming_chat_executor(viachat_stream_runtime.py) are distinct namesakes — KEPT.response_processor.pymodule deferred → DONE (2026-07-19, follow-on): deleted (~200 LOC). Rigorously re-verified after the referential/dedup near-miss — no test imports or constructs theResponseProcessorclass (theparse_and_validate/parse_tool_calls_with_adaptertest+prod hits are namesake methods on the liveorchestrator/ToolServiceparse path, not this class), no Protocol/getattr/DI consumer, only 2 dead TYPE_CHECKING imports. The class was an old orchestrator extraction superseded byToolService.parse_and_validate_tool_calls. Removed the module + 2 imports + the moot text-migration guard test. Tests: factory suite (52) green; import/mypy(victor/)/ruff/black clean. Tests: factory suite (53 incl. e2e) + referential/dedup suites (28) green; bootstrap smoke green; import/mypy(victor/)/ruff/black clean.
Refined execution order (2026-07-12)¶
F-016e— ✅ DONE (#501, recovered + merged).- F-016i, F-016j, F-016l — verified-dead deletions, low effort, no design decision needed; one PR each (or i+j batched — both RL-flag adjacent). (F-016i DONE #500.)
F-016g— ✅ DONE (#503, deleted). Exploration residual promoted to F-016m (deferred — blocked on caps staleness).F-016f— ✅ DONE (#505, wired at the universal turn teardown).- F-016k + health_checker — delete-vs-wire decisions; default delete per F-015 precedent unless pooling/health-gating is on a roadmap.
- F-016m — deferred stale-caps-on-switch bug; own scoped PR only if pursued (do not ship exploration-only refresh).
INVALIDATED FINDINGS (kept for audit trail)¶
F-❌-A · Delete ghost victor_sdk/ package — INVALIDATED¶
victor_sdk/ package- Original claim:
victor_sdk/is a 1-file ghost that should be deleted. - Correction (verified 2026-04):
victor_sdkis an intentional backward-compatibility shim, not a ghost. victor-contracts/victor_sdk/__init__.py:15-22: "Backward-compatibility shim:victor_sdkwas renamed tovictor_contracts." — re-exports via_VictorSdkRedirectmeta-path finder soisinstance/identity stay consistent.victor-contracts/pyproject.toml:72-73: explicitly documented + packaged:# victor_sdk* is a deprecation shim re-exporting victor_contracts (old package name)./include = ["victor_contracts*", "victor_sdk*"].- Disposition: WONTFIX / DO NOT DELETE. Deleting would break external consumers pinned to the old import name. Keep until the documented future removal cycle.
F-❌-B · Committed MagicMock dirs — INVALIDATED¶
- Original claim:
MagicMock/andrust/MagicMock/dirs are committed artifacts. - Correction:
git ls-files MagicMock/ rust/MagicMock/= 0 tracked files. They are local untracked test-run artifacts. Not a real issue. Optionally.gitignorethem.
Execution Order (Impact ÷ Effort)¶
| # | Finding | Effort | Impact |
|---|---|---|---|
| 1 | F-001 doc-count drift + CI guard | Low | Med |
| 2 | F-009 relocate root stray scripts | Low | Low-Med |
| 3 | F-002 orchestrator _initialize_* → container |
Med | High |
| 4 | F-003 unify compaction behind CompactionStrategy |
Med-Hi | High |
| 5 | F-004 tool_selection package consolidation | Med | Med-Hi |
*_runtime.py twins |
High | High | |
| High | High | ||
| Med | Med | ||
| Med | Med | ||
| Med | Med | ||
| Low | Low-Med | ||
| Low-Med | Med-High | ||
| Med | Med | ||
| 13 | F-013 step_handlers __all__ cleanup — ⏳ FEP-0015 Phase 1 DONE (#454); Phase 2 release-gated |
Low+FEP | Low-Med |
| High | High |
Changelog¶
- 2026-04 review: Initial findings F-001..F-010 written; F-❌-A (victor_sdk) and F-❌-B (MagicMock) recorded as INVALIDATED after verification.
- F-009 execution (2026-04): F-009a/b done via
git mvtoscripts/; F-009c recovered 5 shell-limit tests intotests/unit/tools/test_shell_limits.py(all passing); deleted 2 dead/duplicate root tests (test_performance_improvements.py,test_planning_integration.py— the latter imported a removedplanning_coordinatormodule). F-009d (rewrite deadUSE_SERVICE_LAYER_FOR_AGENTverify script) still OPEN. - F-001 execution (2026-07): Extended
scripts/ci/check_docs_drift.pyEXTRA_FILES to scan CLAUDE.md/.victor/init.md/AGENTS.md (the exact files F-001 flagged); added regression test; verified bidirectionally. Provider/tool-module counts confirmed already correct (original evidence misread raw file count vs adapter count). - 2026-07 audit cycle: Landed F-C1 (PR #442, provider capability-surface collapse) and F-C2 (PR #443, verified-dead-code removal) — ~850 LOC removed, both CI-green. Added F-011..F-014 from the same 4-agent duplication audit, each recorded only after independently verifying its evidence (the majority of the audit's raw findings were rejected as unverified or mischaracterized). F-012/F-013 are FEP-gated (framework/core public surface); F-011 is a correctness footgun (colliding enums with live consumers, so rename — not delete).
- F-011/F-014 execution (2026-07): Implemented in parallel via three worktree-isolated agents, each diff-reviewed independently before PR. F-011 → PR #447 (enum renames); F-014a → PR #448 (
compute_backoff_delayhelper, ¾ sites migrated); F-014b → PR #449 (core/pickle_cache.pyhelper + tests, 2/4 sites migrated). Divergent-semantics sites deliberately skipped and documented (F-C3/F-C4). Mid-flight, an external main-sync (PR #446) broketest-verticalsby deleting a core module a vertical test imported; fixed via PR #451 to unblock the cascade. All four squash-merged CI-green. - F-012/F-013 FEP drafts (2026-07): Authored FEP-0014 (canonical validation/metrics contracts) and FEP-0015 (framework export hygiene) → PR #452, awaiting review. Backlog statuses moved OPEN → FEP DRAFTED; implementation gated on FEP acceptance.
-
F-012/F-013 acceptance + implementation (2026-07): Both FEPs accepted (#452). FEP-0015 Phase 1 landed (#454); its Phase 2 (shim removal) is release-gated. FEP-0014 fully implemented across Phase 1 (#453) + Phase 2 (#457/#458/#459/#460, doc #462) — F-012 → DONE. Key course-correction during Phase 2: the four divergent
ValidationResults carry domain-specific fields, so they were renamed to distinct types (not lossy-merged into the canonical) — the accepted plan's "Tier A migrate" was revised to "rename" after ground-truthing (the F-011 lesson). Both guard-allowlist sets emptied; the guard now rejects any new duplicate. Also fixed a repo-wide CI flake mid-cascade:hotspot-size-guardhadtimeout-minutes: 2on a 2min+ cold-cache install → intermittentcancelled→ false red (#455, raised to 10). -
F-002 execution (2026-07): FEP-0016 accepted (#465) + implemented. Discovery: the
InitializationPhaseManagerthat would centralize init was dead code (never wired), andcredit_runtime(registered only on it) never ran in production — an opt-in RL feature silently broken; fixed by #464. Wired the manager to drive all 9 phases viarun_phaseat their existing sites (#466 readiness, #477 wiring), with a guard test so no phase can be lost again. Grouped design revised to per-phase in-place when implementation showed the phases are finely interleaved with construction; CI caught two real gaps (a bare test orchestrator; a hotspot-cap overrun) that local async-env noise had masked — both fixed before merge. -
F-009d execution (2026-07): Deleted the dead
scripts/verify_service_layer_default.py(verified only the removedUSE_SERVICE_LAYER_FOR_AGENTflag → crashes on import; service layer is now unconditional). F-009 → DONE. -
F-004 execution (2026-07): Package-ified tool_selection (#484); premise corrected (satellites are sound). Parent-method extraction deferred as low-ROI on non-hotspot working code.
-
F-003 downgrade + F-015 spin-off (2026-07): F-003 scoping falsified its premise (a CompactionSummaryStrategy protocol already exists; the router is orphaned; undercounted files). Downgraded F-003 and added a hotspot ratchet on the 1827-LOC context_compactor god-object (growth-prevention; decomposition deferred as low-ROI). Spun off F-015 for the orphaned CompactionRouter (built-but-unwired, F-002-like). Meta: two consecutive originally-audited findings (F-004, F-003) were over-stated — the audit flagged 'fragmentation' from file/LOC counts without checking for existing abstractions; remaining OPEN items warrant the same skeptical scoping.
-
Batch re-triage of the final 6 + F-015 execution (2026-07): Re-scoped the remaining backlog against ground-truth code. Five of six were over-stated and downgraded with corrected premises recorded (so they aren't re-scoped): F-005 (
*_runtime.pyare the intended impl layer the 6 services delegate into, not parallel twins; only 2 thin shells), F-006 (164 was a broad-grep artifact — the singleton guard already contains the real stateful singletons, 73/74 in-scope), F-007 (providers lazy-load + tools registry-categorize; the flat-registry scaling problem doesn't exist), F-008 (thestore_*shards are cohesive repository concerns behind a facade, not a premature split), F-010 (~85% of the marker grep is compat-describing prose + deprecation machinery; no undifferentiated dead surface). F-015 was the one real item → DELETED (~2,082 LOC): verification showed the entire hybrid-compaction slice was unwired — router + rule_based + hybrid summarizers + theCompactionStrategySettings/CompactionFeatureFlagsconfig (zero production consumers, read only by the dead cluster and its tests). Removed the 4 modules + 4 test files, excised the never-suppliedcompaction_routerparam/branch fromConversationController, and surgically stripped the dead strategy fields/getters fromCompactionSettings(kept its live legacy +adaptive_thresholdfields). Delete over wire because — unlike F-002'scredit_runtime— nothing depended on it. Meta: the audit's failure mode is now unmistakable — it infers problems from file/LOC/grep counts without checking for the abstraction that already solves them; every count-based finding must be ground-truthed before action. The backlog now has no OPEN high-ROI item — remaining OPEN work is FEP-gated release timing (F-013 Phase 2) and documented low-ROI residue. -
F-016 re-verification + plan refresh (2026-07-12): After the #483–#497 cascade merged (incl. the four F-016 deletions), re-grounded every queued item on develop
a10a3ee3via four parallel verify agents, per the doc's own "never restate without re-verifying" rule. Corrections: F-016e has no PR (the doc's "PR open" was aspirational — work is uncommitted in another session's locked worktree; the flat-getattrmis-wire is still live on develop); F-016g moved wire → delete (its dispatching coordinator was already deleted at v0.7.0 — the hooks are orphaned remains, andProviderServicealready carries an unused post-switch callback seam); F-016h split (recovery None-binds are intentional graceful degradation — no action;health_checkeris genuine dead capability — fold into delete-vs-wire). F-016f re-confirmed with the wire point pinned (turn boundary inturn_execution_runtime.py;auto_assign_at_turn_boundaryflag exists but is read nowhere). The four follow-up threads were promoted to scoped items F-016i–l (Extended*Learner 447 LOC test-only w/ no exclusive deps; predictive-tools flags whose only reader is a zero-caller factory; inert provider pool; 8 unread config fields). Refined execution order recorded in the F-016 section. -
F-016e/f execution + F-016m surfaced (2026-07-12): Recovered the F-016e tool-config fix after its authoring agent's process died mid-run (edits verified, rebased, merged as #501). Wired F-016f (credit-feedback loop, #505) — during implementation the wire point was corrected from
turn_execution_runtime.py(bypassed by streaming + planning turns) to the universal per-turn teardown_teardown_chat_service_turn_runtime, with behavior placed in the owningCreditTrackingService(opt-in, default-off; orchestrator held at its 4704 hotspot cap). Scoping F-016g's "exploration-refresh" residual surfaced F-016m:tool_calling_capsis construction-time and never re-derived on a mid-session switch, so an exploration-only refresh would read stale (old-model) caps — a no-op. Broader than exploration (also backs tool_budget / native_tool_calls / thinking-prefix). Deferred by decision rather than shipping a stale-data hack — recorded for a proper scoped fix. Discipline note: verify the data a fix reads is fresh before shipping it. -
F-016 call-graph audit — the "built-but-never-invoked" class (2026-07): Pivoted from the exhausted count-based backlog to a call-graph hunt for the exact class behind the two best finds (F-002, F-015): capabilities constructed/registered/config-gated but never invoked in production. Three parallel verify-first agents (dead config opt-ins / registered-but-uncalled / DI dead-end params). Deleted four verified-dead subsystems (all merged, all CI-green):
WorkflowOptimizationComponentsbundle (#494),HybridDecisionServicecluster incl. dead-parentExtendedModelSelectorLearner(#493, ~4.3k LOC), team credit-attribution mixins (#489), unregistered capability step-handlers (#492). In progress: tool-config mis-wires (F-016e). Queued to wire (real capabilities silently off): the credit-assignment feedback loop (F-016f —assign_turn_credit()never called → tool-guidance always None; independently verified as the F-002 sibling) and the post-switch hook subsystem (F-016g — model switches never refresh prompt/budget). Follow-up threads: theExtended*Learnerfamily (2 more consumer-less siblings), inert predictive-tools flags, an unused provider-pool. Meta: unlike the count-based backlog (majority over-stated), the call-graph method landed real findings, and the agents self-rejected ~3 false positives — this is the recommended lens for future dead-code/dead-feature sweeps. -
2026-09-08: Clarified snapshot evidence versus the canonical execution register; original findings and statuses preserved.