Repository navigation
Conversation
deploy_entrypoint now captures the stable service state and resolves the candidate metadata with cloud-run-simulation-entry-stable-state.sh and cloud-run-simulation-entry-candidate.sh. Their bodies are the former inline shell unchanged, except that the service name comes from the step's env: instead of an interpolated expression; the $GITHUB_OUTPUT names and values, step ids and job outputs are unchanged. Tests run them against fake gcloud output with the real jq. Building and pushing the image become two single-line steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
update_routing now runs modal-publish-routing.sh with the Modal environment as its argument, as the other Modal scripts do; its body is the former inline shell, so the publisher receives the same arguments and --force-latest only when FORCE_LATEST is true. Tests assert on the exact publisher calls. The UK private-data credential sync was one backslash-continued command and is now one line. The executor app name step substitutes the version inside its single echo instead of through a temporary variable; the output is the same for any version string. The workflow-text tests now look for the force-latest flag in the script and keep the routing publisher out of the Stage 12 jobs by script name too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
deploy_stage12_v2 now selects the v2 application name and validates the deployed workers with stage12-v2-application-name.sh and stage12-validate-v2-workers.sh, and stage12_v2_ready checks the job results with stage12-deployment-ready.sh. Their bodies are the former inline shell, so they write the same name= and file= outputs, and a failing bundle lookup or validation still fails the step before anything is written. Tests cover the outputs, the exact uv calls, the failure paths and every combination of requested and skipped Stage 12 jobs. The packaged-bundle validation and the v2 manifest publication were one backslash-continued command each and are now one line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
deployment_ready now runs simulation-deployment-ready.sh, the former inline checks unchanged: every phase must succeed, and the promotion must succeed when requested and be skipped otherwise. Tests cover each combination; the existing guard test now finds the result checks in the script and the results in the step's env:. The deployment summary call was one backslash-continued command and is now one line. That removes the last multi-line run: block, so sim.ci.multiline-run-is-script is enforced with an empty baseline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
anth-volk
added this pull request to stack #755
October 12, 2026 20:30
2 tasks done
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #761
Same-Repository Draft PR Check
PolicyEngine/policyengine-sim-api, not a personal fork.Summary
Phase 1 step 1.7, part 2: the production deploy pipelines (
simulation-deploy.reusable.yml,simulation-deploy.yml). Stacked on the part 1 PR.The remaining 13 multi-line blocks are fixed.
Moved into tested scripts:
cloud-run-simulation-entry-stable-state.shcloud-run-simulation-entry-candidate.shmodal-publish-routing.shstage12-v2-application-name.shstage12-validate-v2-workers.shstage12-deployment-ready.shsimulation-deployment-ready.shOther changes:
echo.Behaviour is unchanged. A PyYAML comparison of the old and new workflows shows identical job
if/needs/env/outputs/permissions/environmentand identical stepid/if/working-directory. The onlyenv:change addsENTRYPOINT_SERVICE: ${{ inputs.entrypoint_service }}to the two Cloud Run steps. Each script body equals the old inline code, with${{ inputs.* }}replaced by a variable.Points to review:
set -u; every variable they read comes fromenv:or the runner.#!/bin/bash, because an existing executor test requires it formodal-*/simulation-*scripts.The multi-line baseline is now empty, so
sim.ci.multiline-run-is-scriptmoves to enforced. Every workflowrun:step is now a single line.Testing
tests/test_deploy_workflow_scripts.py: 39 tests using fakegcloud/uvand the realjq. They assert exact arguments, the full$GITHUB_OUTPUTtext and exit codes, including failure paths and every combination of job results.test_modal_scripts.py: 60 pass, or 77 including the manifest and package-update tests.guard --base-ref ci-scripts-exceptionspasses.🤖 Generated with Claude Code