May 22, 2026
Commits
2ab08e4 — user_data_app: replace HTTP self-calls with in-process dispatch (Phase 4-fix)
Fixes a regression from the user_data_app consolidation: sync.py and auth.py were making HTTP round-trips to endpoints now in the same process. Replaces these with direct function calls, eliminating unnecessary network hops and the self-referential URL construction.
Changed:
dev/data/data_endpoint.py— expose internal helpers (+35/-10)dev/data/sync.py— direct calls instead of HTTP (+39/-25)dev/users/auth.py— direct calls instead of HTTP (+53/-25)
0fcfc05 — bruno tests: move credentials out of git into dev/.env (Phase A)
Removes hardcoded test credentials (email/password) from per-environment Bruno .bru files and sources them from dev/.env at runtime via test_app.sh. The .env.template documents the required variables.
Changed:
bruno/.../environments/*.bru— remove credentials (7 files, -2 each)dev/.env.template— add test credential vars (+11/-1)dev/test_app.sh— inject credentials from env (+32/-2)
c69113c — test_app.sh: parallel tier-aware runner + pool warming (Phase B)
Rewrites test_app.sh to run Bruno test folders in parallel with tier-awareness: tier-1 (critical path) tests run first, tier-2 (secondary) in parallel after. Adds worker pool warming to reduce cold-start latency.
Changed:
dev/test_app.sh— parallel tier-aware execution (+278/-116)
c12eb70 — ci/bruno_in_modal.py: parallel tier-aware runner + Modal Secret creds (Phase C)
Mirrors the local test_app.sh tier-aware parallel runner inside Modal. Test credentials are now sourced from Modal Secrets instead of environment files.
Changed:
ci/bruno_in_modal.py— parallel tiers + Modal Secret creds (+284/-52)
cb63ae9 — ci: fix just promote when destination branch shares name with a path
Fixes an ambiguity where git checkout beta fails because beta matches both a branch and a directory path. Uses git checkout -B with explicit ref to resolve.
Changed:
ci/_git_in_modal.py— unambiguous branch checkout (+9/-2)
a940d95 — ci/bruno_in_modal.py: split clone (proxied) from tests (no proxy)
Splits the Bruno-in-Modal flow into two phases: the git clone runs through the GitLab proxy (for auth), while the actual test execution runs without the proxy (for direct API access to the test target).
Changed:
ci/bruno_in_modal.py— two-phase clone/test (+62/-16)
8486f21 — ci/bruno_in_modal: handle main's bare hostnames in _hostname helper (Phase G)
Fixes the hostname helper to handle production's bare hostnames (no -env suffix). Adds a diagnose_tls_in_modal.py diagnostic script for debugging TLS issues from inside Modal containers.
Added:
ci/diagnose_tls_in_modal.py— TLS diagnostic tool (+457)
Changed:
Justfile—diagnose-tlsrecipe (+7)ci/bruno_in_modal.py— bare hostname handling (+6)
efcaea3 — ci: split dev_push into dev_test + dev_to_beta + add dashboard helpers (Dashboard 2.0 Phase 1+3)
Splits the monolithic dev_push webhook handler into dispatch_dev_test (deploy + test dev) and dispatch_dev_to_beta (merge dev→beta + deploy + test beta). Adds dashboard-facing helpers for test results, deploy states, and branch comparisons.
Changed:
.gitlab-ci.yml— webhook trigger updates (+16/-1)ci/_git_in_modal.py— branch comparison, test results, deploy state helpers (+184)ci/bruno_in_modal.py— result persistence + dashboard queries (+99)ci/scheduled_cleanup.py— result persistence (+80)ci/webhook.py— split handlers + dashboard API (+165/-35)
ee5fa2f — deploy-dashboard: per-card chips, promote/test buttons, gated approve-prod, failed-test drill-down (Dashboard 2.0 Phase 2+4)
Major dashboard overhaul: each env card shows status chips (last deploy SHA, last test pass/fail, commit delta), action buttons (promote, run tests), and a gated approve-prod button (only enabled when beta tests pass on the current tip). Failed-test drill-down shows per-test-folder results.
Changed:
CLAUDE.md— document dashboard workflow (+19/-1)Justfile—approve-prodrecipe (+21)dev/static_site/deploy_dashboard.py— expanded API surface (+148/-1)dev/static_site/templates/deploy-dashboard/index.html— full dashboard redesign (+578/-1)dev/test_app.md— document test runner options (+16/-1)