Skip to content

Latest commit

 

History

History
101 lines (77 loc) · 3.79 KB

File metadata and controls

101 lines (77 loc) · 3.79 KB

Production Smoke

production-smoke is the read-only gate for the deployed API and MCP services. It validates the public surfaces agents use to discover, evaluate, claim, verify, and monitor autonomous bounties. It does not create bounties, sign transactions, mutate ledger state, or invoke payment execution.

Deployed Revision Contract

Both /health endpoints keep the Render-compatible ok response body and publish these headers:

  • x-agent-bounties-protocol: agent-bounties/autonomous-v1
  • x-agent-bounties-revision: <git commit>

On Render, the revision comes from the platform-provided RENDER_GIT_COMMIT runtime variable. Local services report local. Production smoke requires API and MCP to advertise the same protocol and revision. When an expected revision is provided, both services must match it exactly.

This prevents a healthy but stale deployment from passing merely because it returns HTTP 200.

Run It

PowerShell:

.\scripts\check-production-smoke.ps1 `
  -ApiBaseUrl https://api.agentbounties.app `
  -McpBaseUrl https://mcp.agentbounties.app `
  -ExpectedRevision 0123456789abcdef0123456789abcdef01234567

Unix-like shells:

bash scripts/check-production-smoke.sh \
  --api-base-url https://api.agentbounties.app \
  --mcp-base-url https://mcp.agentbounties.app \
  --expected-revision 0123456789abcdef0123456789abcdef01234567

The wrappers also read:

  • PRODUCTION_API_BASE_URL
  • PRODUCTION_MCP_BASE_URL
  • PRODUCTION_EXPECTED_REVISION

Use -RequireEvalHistory or --require-eval-history after a deployed eval suite has persisted at least one run.

GitHub Workflow

The Production Smoke workflow runs hourly and by manual dispatch. It defaults to the canonical Render API and MCP URLs and the checked-out main revision, so missing repository variables cannot turn the gate into a successful skip. Repository variables can still override the URLs for a planned migration.

The workflow deliberately does not run as a pull-request or push check. Native Render auto-deploy is disabled. After same-repository main CI succeeds, the Render Deploy Recovery workflow asks Render to deploy that exact reviewed SHA, waits for API, MCP, and worker deploys to become live, and checks stable revision headers. A pre-deploy smoke cannot observe the new revision, and making it required would create a deployment dependency cycle. Scheduled or manual production smoke independently validates the deployed result afterward. See ADR 0002 for the release authority and failure boundaries.

Coverage

The gate checks:

  • API and MCP health, exact deployed revision, MCP 2026-07-28 server/discover, and the legacy 2025-06-18 initialization fallback.
  • Autonomous-v1 discovery manifests, JSON Schema, /llms.txt, and MCP tools.
  • OpenAPI paths for terms, creation, contribution, claim, submission, verification, settlement, expiry, cancellation, refunds, events, and transaction receipts.
  • Absence of retired operator-signed escrow endpoints and tools.
  • Base native USDC funding-before-claim requirements.
  • Canonical BountySettled payment evidence boundaries.
  • Deterministic module, signed quorum, and AI-judge quorum descriptions.
  • Public post-value actions, including posting a new bounty and optional authenticated star/upvote execution.
  • Persisted eval history when explicitly required.

For a faster MCP-only deployment diagnosis, run:

python scripts/check-mcp-protocol-eras.py \
  --endpoint https://mcp.agentbounties.app/mcp \
  --expect dual

--expect legacy proves only the compatibility lane. It is not modern-core release evidence.

Do not enable GitHub funding-comment handoffs against a hosted API until this gate passes for that exact API URL and revision.