Skip to content

Publish the Cloudflare terminal and documentation

The trading backend was retired on September 14, 2026. There is no trading API or daemon deployment target. Cloudflare hosts a separate workspace authentication API. Hosting and retirement status is the current source of truth; old runtime runbooks are historical.

Supported publication paths

  1. Validate changes locally using the repository virtualenv: Ruff lint and format, the CI strict-mypy module subset, and the hermetic pytest suite. Exclude paper and integration tests; do not load broker credentials.
  2. For web/auth changes, run the Worker tests in qgtm_edge and the frontend lint/static build in qgtm_web using their checked-in lockfiles. Use a fresh branch and PR; hosted CI is the authoritative check.
  3. After the approved merge, web/edge changes publish the private authentication Worker, preserve its founder-hash secrets, and publish Pages with QGTM_API bound to qgtm-terminal-api. Docs changes publish qgtm-docs. These workflows cannot restart trading.
  4. Verify qgtmai.com (or www.qgtmai.com): /health reports Cloudflare auth availability and an offline trading runtime; an anonymous session GET returns
  5. Sign in, reload, open Research/Learn, sign out and verify the protected route requires sign-in again. The qgtm-trading.pages.dev asset host is not an allowed login origin. A valid session must not imply an active trading engine or display fabricated account data. Do not probe historical destructive endpoints.
  6. Preserve the Pages Functions Fail closed quota setting in the Cloudflare dashboard. Do not bypass authentication when a service is unavailable.
  7. Verify qgtm-docs.pages.dev and its current hosting-status page load.

The web workflow retains its historical filename deploy-web-self-hosted.yml, but now uses ubuntu-latest. The docs and PR-logger workflows also use hosted runners. No self-hosted runner or DigitalOcean account resource is needed to publish these Cloudflare surfaces.

Retired controls

Droplet API deploy, start/stop/restart, monitoring deployment, forced rebalance, runner restart/reboot, and broker-backed reports/backtests cannot execute: every legacy job has a literal false job condition. Manual attempts receive a retirement error without secrets, checkout, SSH, or broker calls. Do not rerun historical workflow runs: they use their original YAML.

Cloudflare Pages rollback can restore an earlier compatible, verified web deployment if publication is broken. Check its service binding and authentication Worker compatibility; Pages rollback does not roll back Durable Object session state or Worker secrets. Do not restore a frontend that routes authentication or account requests to the removed droplet.