May 18, 2026
Commits
945e6d4 — ci: migrate promotion DAG to Modal-driven pipeline (Phase 4)
Major CI overhaul: the entire promotion DAG (dev→beta→main) moves from GitLab CI shell scripts to Modal-driven functions. New modules ci/webhook.py (HTTP dispatch), ci/deploy_in_modal.py (remote deploys), ci/bruno_in_modal.py (remote test execution), ci/_git_in_modal.py (git operations inside Modal), and ci/scheduled_cleanup.py (cron for non-prod app cleanup + canary tests). The Justfile gains deploy-remote, test-remote, promote, and approve-prod recipes. deploy.sh shrinks as deploy logic moves server-side.
Added:
ci/webhook.py— HTTP webhook dispatcher for CI actions (+215)ci/deploy_in_modal.py— remote Modal deploy function (+138)ci/bruno_in_modal.py— remote Bruno test runner in Modal (+213)ci/_git_in_modal.py— git operations (merge, branch tips, env states) inside Modal (+245)ci/_net_diag.py— network diagnostic helper (+54)ci/_smoketest_in_modal.py— post-deploy smoke test (+76)ci/scheduled_cleanup.py— scheduled non-prod cleanup + canary cron (+131)ci/ShellScripts/run_bruno.sh— Bruno runner shell wrapper (+70)
Changed:
.gitlab-ci.yml— simplify to webhook triggers (+149/-?)Justfile— add remote deploy/test/promote/approve recipes (+116)dev/deploy.sh— extract deploy logic to Modal (+205/-?)dev/.justfiles/setup-worktree.sh— CI env setup (+4).gitignore— CI artifacts (+1)