← All docs changelog/2026-W14.md

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)

  • e57698a Fix WAL compaction failure and move compaction to background thread

Apr 2 (2 commits)

  • c342495 Replace Litestream VFS with plain SQLite + S3 download/upload (Phase 1)
  • 75bf216 Fix storage paths, stub out silent mode, add rpc calls for start/end room inventory

Apr 3 (8 commits)

  • d4d97a3 Add ML pipeline service for model fine-tuning/distillation
  • fc5b484 Export ML symbols from core/init.py
  • 6060e12 Add Bruno tests for ML API with test source to skip logging
  • e9f43a6 Set ML endpoint min_containers=1 to avoid cold-start 303s
  • 86ed283 Add telemetry module to mlImage for core.models import chain
  • ec9b3c8 Add synthetic data generator for model distillation
  • 9c34e63 Add format converters for model-specific chat templates
  • 02ab9a1 Add evaluation framework (Phase 2)
  • 177cb62 Add data inspection endpoints for reviewing captured training data

Apr 4 (6 commits)

  • 3e2c662 Add ML pipeline dashboard at /dashboard
  • d67ef1a Render markdown/JSON output as formatted HTML in dashboard
  • e294ed6 Fix dashboard output rendering — remove broken truncation parse
  • 010fe70 Fix inline numbered list rendering and strip noisy UUIDs
  • df80b15 Add question answering + plan generation flow to dashboard
  • ceb3f99 Add error diagnostics for generate-plan failures

Apr 6 (8 commits)

  • 540330a Surface gateway error details in generate-plan response
  • 96fc388 Fix Gemini 400 INVALID_ARGUMENT: fully define array item schemas
  • fa45b2b Polish mobile session page: auto-poll, thumbnails, progress bar, Done button
  • 8ed3777 Add collapsible sections to dashboard output panel
  • e6b5238 Add comprehensive Bruno tests for all ML API endpoints
  • 71daa44 Add model proxy endpoint for on-prem model servers (model.grizzlebear.io)
  • b6dd069 Clean up unused WireGuard secret keys from model proxy config