Skip to content

CI hygiene: job timeouts + action version bumps#36

Merged
vahid-ahmadi merged 1 commit into
mainfrom
deploy-timeout
Jul 18, 2026
Merged

CI hygiene: job timeouts + action version bumps#36
vahid-ahmadi merged 1 commit into
mainfrom
deploy-timeout

Conversation

@vahid-ahmadi

Copy link
Copy Markdown
Contributor

Follow-up from yesterday's end-to-end test, which found a Modal deploy job that hung for the full 6-hour GitHub ceiling (run 29576363133) and a Node 20 deprecation warning on every workflow.

  • timeout-minutes on all four jobs, sized to observed runtimes: deploy-mcp 25 (healthy run ~4 min) with a tighter 15-min cap on the modal deploy step itself, contract 45, test-integration 20; validate-deployment already had 35.
  • Actions bumped off Node 20: checkout v4→v7, setup-python v5→v6, setup-uv v5→v8.

Without the cap a hung deploy blocks the deploy-mcp concurrency group indefinitely, which is what happened yesterday — the manual dispatch only succeeded after the stuck run was cancelled.

🤖 Generated with Claude Code

A hung modal deploy ran to GitHub's 6-hour ceiling on 2026-07-17 and held the
deploy-mcp concurrency group. Every job now has a timeout sized to its observed
runtime, and the deploy step has its own tighter cap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
macromod Building Building Preview Jul 18, 2026 5:47pm

Request Review

@vahid-ahmadi
vahid-ahmadi merged commit 73c9ebd into main Jul 18, 2026
3 checks passed
@vahid-ahmadi
vahid-ahmadi deleted the deploy-timeout branch July 18, 2026 17:48
vahid-ahmadi added a commit that referenced this pull request Jul 19, 2026
#42)

The hosted tool surface was only ever checked as a SUBSET
(`EXPECTED_TOOLS <= names`), and the in-process check lived in a
slow-marked test that PR CI skips entirely. Adding, removing or renaming
a tool could therefore ship to clients with a fully green pipeline.

- tests/tool_surface.py: single golden list of the 10 published tool
  names, shared by the in-process, stdio and live-deployment tests, with
  an assert_surface() helper that reports added/removed names.
- tests/test_tool_surface.py: fast, PolicyEngine-free contract on exact
  names, exact count, no duplicates, per-tool description/schema, plus a
  regression guard that country/people stay schema-optional (#38).
- test_remote_mcp.py / test_mcp_server.py: subset checks upgraded to
  exact-surface equality against the same golden list.
- test_remote_mcp.py: reform-input validation (#38) now asserted AS
  SERVED — date-range rejection, missing country, empty reform, and a
  valid dated reform that must be accepted and score correctly.
- test-integration.yml: the tool-surface and reform-input suites run as
  named hard gates before the general suite.
- validate-deployment.yml: weekly Sunday deep run so the slow
  investment-closure and OBR bridge legs are exercised on a schedule
  instead of only on a manual dispatch.

Also fixes a genuinely broken job: contract.yml pinned
astral-sh/setup-uv@v8, but that action publishes no moving `v8` tag, so
the nightly contract run had been failing in ~5s at "Set up job" since
the action bump in #36. Pinned to v8.3.2.

Verified: fast suite and the full live remote suite (14 passed) run
locally against the deployed server.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant