Week 14 — Mar 31 - Apr 6, 2026
Summary
Foundation week for the ML pipeline: built the gateway, data capture, synthetic data generator, evaluation framework, and ML dashboard. Also added the model proxy for on-prem inference, replaced Litestream VFS with plain SQLite + S3, and polished the mobile session page.
27 commits (excluding merges)
Highlights
ML Pipeline Service (Apr 3)
Stood up the core ML subsystem: gateway that mirrors Vertex AI call structure, data capture logging all LLM request/response pairs to S3 JSONL, synthetic data generator for distillation, format converters for model-specific chat templates, and an evaluation framework.
ML Dashboard (Apr 4)
Web UI at /dashboard for ML pipeline operations: question answering, plan generation, data inspection. Renders markdown/JSON output as formatted HTML with collapsible sections.
Model Proxy (Apr 6)
Reverse proxy at model-{env}.grizzlebear.io routes traffic to on-prem vLLM/Ollama on Mac Mini. Uses Modal's static egress IP allowlisted on UDM firewall. JWT auth validation before forwarding.
Litestream Removal — Phase 1 (Apr 2)
Replaced Litestream VFS with plain SQLite + S3 download/upload. This was the first phase of the Litestream architecture decision: drop it now, reintroduce properly when DBs grow.
Mobile Session Polish (Apr 6)
Auto-poll for session updates, thumbnail previews, progress bar, and a Done button. Fixed Gemini 400 errors by fully defining array item schemas.
Daily Breakdown
Apr 1 (1 commit)
e57698aFix WAL compaction failure and move compaction to background thread
Apr 2 (2 commits)
c342495Replace Litestream VFS with plain SQLite + S3 download/upload (Phase 1)75bf216Fix storage paths, stub out silent mode, add rpc calls for start/end room inventory
Apr 3 (8 commits)
d4d97a3Add ML pipeline service for model fine-tuning/distillationfc5b484Export ML symbols from core/init.py6060e12Add Bruno tests for ML API with test source to skip logginge9f43a6Set ML endpoint min_containers=1 to avoid cold-start 303s86ed283Add telemetry module to mlImage for core.models import chainec9b3c8Add synthetic data generator for model distillation9c34e63Add format converters for model-specific chat templates02ab9a1Add evaluation framework (Phase 2)177cb62Add data inspection endpoints for reviewing captured training data
Apr 4 (6 commits)
3e2c662Add ML pipeline dashboard at /dashboardd67ef1aRender markdown/JSON output as formatted HTML in dashboarde294ed6Fix dashboard output rendering — remove broken truncation parse010fe70Fix inline numbered list rendering and strip noisy UUIDsdf80b15Add question answering + plan generation flow to dashboardceb3f99Add error diagnostics for generate-plan failures
Apr 6 (8 commits)
540330aSurface gateway error details in generate-plan response96fc388Fix Gemini 400 INVALID_ARGUMENT: fully define array item schemasfa45b2bPolish mobile session page: auto-poll, thumbnails, progress bar, Done button8ed3777Add collapsible sections to dashboard output panele6b5238Add comprehensive Bruno tests for all ML API endpoints71daa44Add model proxy endpoint for on-prem model servers (model.grizzlebear.io)b6dd069Clean up unused WireGuard secret keys from model proxy config