Repository navigation
OTTO v5.0.0-beta: From Heuristics to Real Learning
Pre-release
Pre-release
·
11 commits
to master
since this release
What's New in v5.0.0-beta
OTTO's cognitive routing pipeline now genuinely learns from outcomes. The trail->routing feedback loop that existed as dead code has been activated, outcome tracking added for all 7 modes, and heuristic weights replaced with UCB1 (a deterministic bandit algorithm with provable regret bounds).
Highlights
Feedback Loop Activated (Phase A)
compute_trail_adjustments()was defined but never called in production — now wired into both CLInudgeand the background scheduler- Plasticity amplification (2x during RED burnout) wired into trail deposits for
doneandparkcommands - 200+ lines of existing dead code activated with ~20 lines of new wiring
Honest Naming (Phase B)
_kahan_decay->_exponential_decay(no Kahan summation was involved)- "pheromone trail" -> "outcome trail" everywhere
- "stigmergic learning" -> "trail-based preference learning"
- Zero behavior change, pure credibility improvement
Outcome Tracking (Phase C)
- New
mode_outcomesSQLite table records empirical mode effectiveness record_outcome(),get_mode_stats(),get_success_rate(),get_total_outcomes()API- CLI
done-> success,park-> mixed,nudge-> activated outcomes
UCB1 Mode Weighting (Phase D)
- New
learner.py: Upper Confidence Bound algorithm (Auer et al. 2002) - Deterministic: same outcome data -> same scores (He2025 compatible)
- Exploration bonus rewards under-tested modes
- Safety floors NEVER overridden — adjustments clamped to +/-0.2
Metrics Visibility (Phase E)
- New
otto metricscommand shows outcome counts, success rates, UCB adjustments, trail stats
Test Results
- 600 tests passing (up from 519 baseline)
- 0 regressions
- Python 3.11+ (developed on 3.14)
Breaking Changes
_kahan_decay()renamed to_exponential_decay()(internal API, unlikely to affect consumers)- Trail docstrings changed from "pheromone" to "outcome" terminology
Architecture
MESSAGE IN -> DETECT -> STORE -> SCHEDULE -> NUDGE
|
[UCB1 Learning]
outcome_data -> compute_ucb_adjustments()
|
trail_adjustments -> route_and_execute()
|
[Constitutional Gate] <- safety floors NEVER modified
|
OUTPUT (or suppress)
What's Next (v5.1)
- WhatsApp outbound transport
- Optional LLM-powered response generation
- User study: does self-suppression improve outcomes?
Full Changelog: v4.0.0...v5.0.0-beta