Skip to content

Write Stage 5 release promotion contract#1039

Merged
anth-volk merged 1 commit into
mainfrom
agent/stage-5/pr-5-4-release-promotion-contract
May 22, 2026
Merged

Write Stage 5 release promotion contract#1039
anth-volk merged 1 commit into
mainfrom
agent/stage-5/pr-5-4-release-promotion-contract

Conversation

@anth-volk
Copy link
Copy Markdown
Collaborator

@anth-volk anth-volk commented May 19, 2026

Fixes #1037

Summary

  • Add ReleasePromotionContractBuilder and helpers for Stage 5 release_promotion_contract.json.
  • Write the contract during promote_run after the full promotion transaction succeeds and record it as a Stage 5 manifest output.
  • Carry validation/diagnostics references into the production contract candidate, use typed promotion result paths for public refs, refresh generated pipeline docs, and bump policyengine-us to 1.703.2.

Validation

  • ruff check modal_app/pipeline.py policyengine_us_data/release_promotion/__init__.py policyengine_us_data/release_promotion/contract.py policyengine_us_data/release_promotion/results/__init__.py policyengine_us_data/release_promotion/results/full.py tests/unit/release_promotion/test_contract.py tests/unit/release_promotion/test_results.py tests/unit/test_pipeline.py tests/unit/test_pipeline_source_contracts.py
  • ruff format --check modal_app/pipeline.py policyengine_us_data/release_promotion/__init__.py policyengine_us_data/release_promotion/contract.py policyengine_us_data/release_promotion/results/__init__.py policyengine_us_data/release_promotion/results/full.py tests/unit/release_promotion/test_contract.py tests/unit/release_promotion/test_results.py tests/unit/test_pipeline.py tests/unit/test_pipeline_source_contracts.py
  • uv run --no-sync pytest tests/unit/release_promotion/test_contract.py tests/unit/release_promotion/test_results.py tests/unit/test_pipeline_source_contracts.py tests/unit/test_pipeline_docs_extractor.py tests/unit/test_pipeline_doc_guards.py (40 passed)
  • uv run --no-sync python .github/scripts/check_policyengine_us_dependency.py --mode fail
  • uv lock --check
  • uv run --no-sync --with pyyaml python scripts/extract_pipeline_docs.py
  • git diff --check origin/main...HEAD

Note: tests/unit/test_pipeline.py remains Modal-gated locally; without modal installed, pytest collects 0 items / 1 skipped and exits with code 5. The subprocess-result parser is covered through the non-Modal Stage 5 result tests plus a source-contract test that ensures the Modal helper delegates to the pure parser.

@anth-volk anth-volk force-pushed the agent/stage-5/pr-5-3-typed-promotion-results branch 6 times, most recently from 3c424fe to 77458c0 Compare May 22, 2026 12:47
Base automatically changed from agent/stage-5/pr-5-3-typed-promotion-results to main May 22, 2026 13:23
@anth-volk anth-volk force-pushed the agent/stage-5/pr-5-4-release-promotion-contract branch 6 times, most recently from e76a4b9 to cdab9c2 Compare May 22, 2026 15:42
@anth-volk anth-volk force-pushed the agent/stage-5/pr-5-4-release-promotion-contract branch from cdab9c2 to 3bb4445 Compare May 22, 2026 16:11
@anth-volk anth-volk marked this pull request as ready for review May 22, 2026 16:49
@anth-volk anth-volk merged commit 40e9734 into main May 22, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Write Stage 5 release promotion contract

1 participant