SAVANT-BOT v0.0.1 - Initial Public Release
SAVANT-BOT v0.0.1 — Initial Public Release
Sister project to SAVANT-TRADING under the SAVANT umbrella, built under SAVANT-PROTOCOL (ECHO) v0.1.3.
Highlights
- Rust-native Discord bot on Poise 0.6 + Serenity 0.12 + Tokio
- 3 commands:
/ping(smoke test),/ask(LLM chat),/mute(moderation, requiresMODERATE_MEMBERS) - LLM features (OpenRouter-backed): defer-then-edit, token-bucket rate limiting, exponential backoff on 429, sliding-window context
- Moderation features: SQLite poller for temp-punishments (restart-survival)
- 25 unit tests, all 6 validation commands PASS
- ~1,800 lines of Rust across 18 files in
src/+ 1 SQL migration
Implementation (10 FIDs)
All FIDs implemented and archived to dev/fids/archive/. Highlights:
- FID-008 (Provider):
Providertrait +OpenRouterProvider+MockProviderfor tests. UsesX-OpenRouter-Titleheader perdev/docs/openrouter-llms.md. - FID-005 (Defer):
defer_and_runhelper using Poise 0.6'sctx.defer()+ctx.say()pattern. - FID-006 (Rate Limit):
governortoken-bucket (GCRA) + exponential backoff with ±20% jitter. - FID-007 (Context): Sliding-window LLM context, 20 messages/channel/1h TTL.
- FID-004 (Poller): SQLite
moderation_cases+ 60s background poller. - FID-010 (Skeleton): Cargo baseline + Poise framework setup.
Audit Results (release-time)
- All 6 validation commands PASS:
cargo build,cargo check,cargo clippy --all-targets -- -D warnings,cargo fmt --check,cargo test(25/25),cargo clean - Zero
unwrap()/expect()in non-test code - Zero
TODO/FIXME/todo!/unimplemented!insrc/ - Zero secrets in tracked files (
.envproperly gitignored) - All
pub fnwired to consumers (FID-151 call-graph reachability verified)
Configuration (verified at release)
| Field | Value | Source |
|---|---|---|
project.version |
0.0.1 |
Cargo.toml, protocol.config.yaml |
protocol.version |
0.1.3 |
matches VERSION file |
language |
rust |
config |
quality.max_file_lines |
300 |
coding-standards/rust.md |
quality.max_function_lines |
50 |
coding-standards/rust.md |
quality.max_line_length |
100 |
coding-standards/rust.md |
perfection_loop.max_iterations |
10 |
ECHO.md Rule #5 |
perfection_loop.change_threshold |
0.10 |
ECHO.md Rule #1 |
perfection_loop.convergence_threshold |
0.02 |
ECHO.md Rule #3 |
session.autonomy_level |
3 (Autonomous) |
ECHO default |
Known Limitations → v1.0
/muterecords the case but does NOT call the Discord API to actually apply the mute (schema hasrole_idready for v2)- LLM context is in-process only; lost on bot restart (SQLite persistence is v1.1)
- Process-wide rate limiter (per-user keyed limiting is v1.1)
- No streaming SSE for long LLM responses (v2)
Roadmap (per README)
- v1.1:
/muteactually mutes, context persistence, more moderation commands, per-user rate limiting - v2.0: Full SAVANT memory integration (CortexaDB), soul/personality system, A2A delegation, multi-server sharding, voice channel support, custom skills