All notable changes to cato-daemon are documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
Major feature release. Adds 20+ new subsystems across 6 phases of the Cato roadmap (Phases A, B, H, I, J, and gap fixes). All 1271 tests pass. Four independent Kraken audits: 94%, 91%, 90%, 98% confidence — all APPROVED.
- HOT/COLD skill file split:
<!-- COLD -->delimiter in all skill.mdfiles; context builder only loads HOT section (≤300 tokens) by default - Query tier classifier (
cato/orchestrator/query_classifier.py): routes queries to TIER_A (cheapest), TIER_B (mid), or TIER_C (fan-out all) based on keywords, token count, code blocks, file paths, and confidence - Memory distiller (
cato/core/distiller.py): compresses conversation history every 20 turns into 400-token SQLite chunks with semantic embeddings - SlotBudget (
cato/core/context_builder.py): explicit token allocation across 4 tiers (identity 2000, memory 4000, workspace 4000, overflow 2000) - HybridRetriever (
cato/core/retrieval.py): BM25 + cosine similarity hybrid search over MemorySystem chunks (0.4 BM25 + 0.6 semantic) - ContextGate (
cato/core/context_gate.py): admission control that enforces slot budgets before context is assembled
- SchedulerDaemon (
cato/core/schedule_manager.py): YAML-based cron scheduler with per-schedule asyncio tasks, overlap prevention, hot-reload - SessionCheckpoint (
cato/core/session_checkpoint.py): token-aware context anchoring — checkpoints session state when usage > 80% of limit - MemorySystem (
cato/core/memory.py): hybrid BM25 + sentence-transformer long-term memory with ANN index (hnswlib) opt-in at 5000+ chunks - Mem0 Fact Store:
store_fact/load_top_facts/apply_decayon MemorySystem — persistent fact store with confidence decay - Knowledge Graph (
cato/core/memory.py):kg_nodes/kg_edgesSQLite tables, entity extraction (files, @mentions, CamelCase, ALLCAPS), multi-hop traversal via recursive CTE - WebSearchTool (
cato/tools/web_search.py): query classifier (code / academic / news / general), multi-engine routing, result deduplication - GitHubTool (
cato/tools/github_tool.py): REST API wrapper for issues, PRs, file content, repo search — all read-only, no auth required for public - PythonExecutor (
cato/tools/python_executor.py): sandboxed subprocess execution with dangerous-pattern blocking, timeout, matplotlib capture - SkillImprovementCycle (
cato/orchestrator/skill_improvement_cycle.py): correction detection, structured ledger, versioned skill backups with SHA-256 - ClawFlows (
cato/orchestrator/clawflows.py): declarative multi-step workflow engine with step chaining, variable substitution, retry logic - ContextPool (
cato/core/context_pool.py): pre-warmed context assembly for low-latency skill invocations
- ReversibilityRegistry (
cato/audit/reversibility_registry.py): singleton registry of tool reversibility scores (0.0 reversible → 1.0 irreversible), blast radius classification, custom tool registration - ActionGuard (
cato/audit/action_guard.py): pre-action gate that enforces confirmation rules based on reversibility × autonomy level thresholds - LedgerMiddleware (
cato/audit/ledger.py): hash-chained, Ed25519-signed tamper-evident record of every agent action;verify_chain()detects bothprev_hashlinkage breaks and field-level mutations (re-hash verification) - DelegationToken / TokenStore (
cato/auth/token_store.py): SQLite-backed scoped delegation tokens with spending ceilings, expiry, revocation - TokenChecker (
cato/auth/token_checker.py): pre-action scope check against active delegation tokens with wildcard category matching - AuditLog (
cato/audit/audit_log.py): SHA-256 hash-chained append-only audit log (migrated fromcato/audit.pytocato/audit/package)
- EpistemicMonitor (
cato/orchestrator/epistemic_monitor.py): premise extraction from agent reasoning, confidence tracking, gap detection, interrupt budget enforcement, unresolved gap persistence - DisagreementSurfacer (
cato/orchestrator/disagreement_surfacer.py): multi-model output comparison via Jaccard distance + confidence stdev, 4-way disagreement classification, consensus/minority view identification - ContradictionDetector (
cato/memory/contradiction_detector.py): Jaccard-gated fact contradiction detection (TEMPORAL / SOURCE / PREFERENCE / FACTUAL), duplicate pair prevention, resolution tracking, health summary
- DecisionMemory (
cato/memory/decision_memory.py): structured decision record with premises, confidence, ledger linkage, outcome quality scoring, overconfidence profile, reliable pattern extraction - OutcomeObserver (
cato/memory/outcome_observer.py): background asyncio task that polls open decisions and applies timeout outcomes; configurable per-action-type observation windows - HabitExtractor (
cato/personalization/habit_extractor.py): passive interaction observer that infers soft constraints from rejection/acceptance patterns;get_soft_constraints()for skill prompt injection - VolatilityMap (
cato/context/volatility_map.py): URL/resource type to volatility score mapping; domain override support - TemporalReconciler (
cato/context/temporal_reconciler.py): wake-up protocol that identifies stale dependencies and generates a structuredWakeupBriefingon daemon restart - AnomalyDetector (
cato/monitoring/anomaly_detector.py): multi-domain weak-signal monitor with baseline tracking, cross-source anomaly detection, self-calibrating false-positive suppression, prediction record keeping
verify_chain()field re-hash (Kraken 2A Issue 1):verify_chain()now re-computes each row's hash from all fields and compares against storedrecord_hash, detecting any field-level mutation (not justprev_hashbreaks)OutcomeObserverconfigurable windows (Kraken 2B Issue 1): constructor now accepts optionalobservation_windows: dict[str, float]parameter; backward-compatible (defaults to module-level_OBSERVATION_WINDOWS)
- Total: 1271 passed, 1 skipped, 0 failed
- New test files: 30 (covering all new subsystems)
- New E2E smoke test:
tests/test_e2e_full_pipeline.py(108 tests covering all Phase A–J integrations end-to-end withtmp_pathisolation)
- Initial release
- Core agent loop with asyncio WebSocket streaming
- Encrypted vault (AES-256-GCM) with
cato vault set/get - Hard spend caps ($1 session / $20 monthly)
- Telegram and WhatsApp adapters
- Patchright browser automation (Conduit)
- Multi-model coding agent (Claude + Codex + Gemini fan-out)
- Talk Page UI (
cato/ui/coding_agent.html) - Basic audit logging
- CLI process pool for warm model invocations
- 445 tests passing