Week 21 — May 19 – 25, 2026
Summary
Two big themes: the deploy dashboard went from zero to a production-ready pipeline visualization, and the app topology was consolidated from many small Modal functions into three groups. The deploy dashboard (static.grizzlebear.io/deploy-dashboard/) gained env cards with status chips, promote/test/approve-prod buttons, live polling with adaptive intervals, pipeline stage toasts, and test progress streaming. On the infrastructure side, eight services were consolidated into three Modal functions (user_data_app, low_priority_app, existing ML/LiveKit), unused services (billing, devices) were deprecated, and the test infrastructure was overhauled with parallel tier-aware Bruno runners and credentials moved out of git.
23 code commits | 116 unique files changed | +3,755 / -856 lines
Highlights
Deploy Dashboard (May 19, 22)
Built from scratch across 14 commits. Phase 5 (read + trigger) established the shell+JSON pattern with env cards and /api/envs. Progressive enhancements added: deploy state per environment, live polling with countdown, fast-forward merge detection, in-flight stage indicators, feature-commit walk, cicd worker state awareness, self-healing dev pushes, and a landing-page card. Dashboard 2.0 (May 22) added per-card status chips (SHA, test pass/fail, commit delta), promote/test action buttons, a gated approve-prod button (only active when beta tests pass on current tip), and failed-test drill-down showing per-folder results.
App Topology Consolidation (May 21)
Eight services were grouped into three Modal functions: low_priority_app (voices + geocoding + capture + static_site), user_data_app (users + data), and the existing ML and LiveKit functions. Billing was deprecated (Stripe moving elsewhere) and the devices API was removed as unused. dev/not_yet/ was renamed to dev/_archived/. HTTP self-calls introduced by the consolidation were replaced with in-process dispatch.
Parallel Tier-Aware Test Infrastructure (May 22)
test_app.sh was rewritten for parallel tier-aware execution: tier-1 (critical path) tests run first, tier-2 (secondary) in parallel after. The same pattern was implemented in ci/bruno_in_modal.py for CI runs. Test credentials were moved from per-environment .bru files into dev/.env. The just promote recipe was fixed for branch/path name ambiguity.
CI Pipeline Hardening (May 22)
dev_push was split into dispatch_dev_test (deploy + test dev) and dispatch_dev_to_beta (merge + deploy + test beta). Dashboard helpers for test results, deploy states, and branch comparisons were added. A TLS diagnostic tool (diagnose_tls_in_modal.py) was created for debugging connectivity from Modal containers.
Daily Breakdown
May 19 (8 code commits)
5d484ecci: move CI infrastructure to dedicated cicd env (+28/-13)87be532deploy-dashboard: Phase 5 tier 1+2 — read + trigger (+626/-1)3ca5f36deploy-dashboard: shell+JSON pattern, match site auth shape (+110/-24)5c1c7f5deploy-dashboard: env card row + per-env deploy state (+564/-28)597f055deploy-dashboard: live polling with countdown indicator (+181/-14)8b1f302static-site landing: add Deploy dashboard card (+4/-0)766726cdeploy-dashboard: better initial render + cicd state + self-healing dev push (+96/-17)31b877bdeploy-dashboard: ff-merges + in-flight stages + feature-commit walk (+227/-39)
May 20 (1 code commit)
5d777afIMPROVE.md: 2026-05-20 review — 9 new findings (+61/-11)
May 21 (8 code commits)
b6b23cfarchive cleanup: rename dev/not_yet → dev/_archived (+10/-5)b5ca2b5billing: deprecate and archive (+1/-5)90b79becore/livekit-server/ml: pre-bake remaining heavy bases to ECR (+320/-107)5c743c8livekit-agent: pre-bake heavy layers to ECR (+176/-71)813eef5core/data/model_proxy: fold images into shared bases (+27/-81)d9a7e9elow_priority_app: consolidate voices+geocoding+capture+static_site (+114/-109)8f10753user_data_app: consolidate users + data (+104/-63)79391acdevices: deprecate and archive (+9/-86)
May 22 (9 code commits)
2ab08e4user_data_app: replace HTTP self-calls with in-process dispatch (+57/-70)0fcfc05bruno tests: move credentials out of git into dev/.env (+40/-17)c69113ctest_app.sh: parallel tier-aware runner + pool warming (+278/-116)c12eb70ci/bruno_in_modal.py: parallel tier-aware runner + Modal Secret creds (+284/-52)cb63ae9ci: fix just promote when branch shares name with path (+9/-2)a940d95ci/bruno_in_modal.py: split clone from tests (+62/-16)8486f21ci/bruno_in_modal: handle main's bare hostnames (+470/-0)efcaea3ci: split dev_push + add dashboard helpers (+509/-35)ee5fa2fdeploy-dashboard: per-card chips, promote/test, gated approve-prod (+756/-26)
May 23–25 (no commits)
Modified Files (key changes)
CI Pipeline
ci/webhook.py— split dispatch handlers, dashboard API, action outcome persistenceci/_git_in_modal.py— branch comparisons, deploy states, merge detection, commit walksci/bruno_in_modal.py— parallel tier-aware runner, Modal Secret creds, two-phase cloneci/deploy_in_modal.py— deploy state recordingci/scheduled_cleanup.py— result persistence, deploy state integrationci/diagnose_tls_in_modal.py— new: TLS diagnostic toolci/ShellScripts/ensure_cicd_fresh.sh— new: cicd staleness check
App Topology
dev/user_data_app/__init__.py— new: consolidated users + datadev/low_priority_app/__init__.py— new: consolidated voices + geocoding + capture + static_sitedev/billing/→dev/_archived/billing/— deprecateddev/not_yet/→dev/_archived/— renamed
Deploy Dashboard
dev/static_site/deploy_dashboard.py— dashboard backend (new + expanded)dev/static_site/templates/deploy-dashboard/index.html— dashboard frontend (new + expanded)
Test Infrastructure
dev/test_app.sh— parallel tier-aware rewritebruno/.../environments/*.bru— credentials removeddev/.env.template— test credential vars added