Theme: Adaptive Intelligence
The router learns from every turn. The pipeline owns its own crate.
Added
- Pipeline decomposition:
run_pipeline(), core inference engine, stage functions, decomposition, heuristics, and task state moved toroboticus-pipelinecrate (50 source files, ~6,500 lines). - Capability traits:
PipelineSecurity,InferenceRunner,PipelineDeps— trait-scoped dependency injection replaces&AppStateacross the entire inference path. - Shadow routing predictions: Live recording of metascore vs heuristic routing decisions for offline outcome evaluation.
- Metascore routing fitness tests: 16 profile-level + 4 end-to-end routing tests verifying metascore overrides, breaker exclusion, cost weight, session penalty, accuracy floor.
- Startup baselining fitness tests: 5 tests verifying cold-start model quality seeding and its influence on routing.
- Architecture fitness tests: 14 tests enforcing connector thinness, dependency direction, no
AppStatein pipeline/core/stages. - Dashboard markdown rendering: Consistent
##,###,*italic*,**bold**rendering across memory page entries.
Changed
PipelineRequestusesPipelineDeps(trait refs) instead of&AppState.PipelineErrorusesu16status codes (framework-agnostic).- Bot command dispatch moved from pipeline to connector pre-pipeline step.
- Nickname refinement uses
InferenceRunnertrait instead of direct provider key resolution.
Fixed
- Degraded response on follow-up requests: Cache discard falls through to fresh inference; protocol rescue tries stripping before fallback.
- Migration 31+33 crash on fresh databases: Guard
has_table()beforeALTER TABLE pipeline_traces. - All
#[ignore]classifier tests: Fixed to pass with n-gram fallback. - MSRV compliance:
is_multiple_of()replaced with modulo for Rust 1.85.