Adds the weekly sovereignty retrain cycle — Timmy improves himself
without cloud AI in the decision path.
Components:
- `timmy_automations/retrain/trajectory_exporter.py` — reads session
JSONL logs and segments them into discrete conversation trajectories
- `timmy_automations/retrain/quality_filter.py` — scores trajectories
(multi-step tasks, successful tool calls, decision points) and keeps
only HIGH/MEDIUM quality examples
- `timmy_automations/retrain/training_dataset.py` — appends filtered
trajectories to a chat-format JSONL training file with deduplication
- `timmy_automations/retrain/lora_trainer.py` — triggers mlx_lm.lora
fine-tune and registers the resulting adapter in Ollama; degrades
gracefully when mlx-lm is unavailable
- `timmy_automations/retrain/training_log.py` — records per-cycle
metrics (iteration count, train loss, skill accuracy) to JSONL + MD
- `timmy_automations/retrain/retrain.py` — main orchestrator; runs the
full pipeline and is registered as a `weekly_sunday` automation
Automation registered in `automations.json` as `retrain` with
`schedule: weekly_sunday` pointing to `hermes4-14b` as the base model.
49 new unit tests covering all components.
Fixes#1105
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>