Deployment and release
How to settle deployment intent, get approval, build, deploy and publish backends and frontends, and verify a release.
Step-by-step guidance.
Before you start
- A verified application in development. See Verification protocol.
Settle deployment intent first
Before devising an implementation plan, ask whether the task stays in development or deploys after verification, and wait for the answer. Keep it across Plan and Build and across reconnects. Greetings and explanations are exempt.
- A production-ready brief or an approved plan does not answer this question. Silence and defaults do not authorize publication.
- Keep mixed intent per component: one piece can deploy while another stays in development.
- Development components get no public endpoints or schedules.
- Private workflow publication for backend integration is an internal runtime step. Explain it, keep access private, and omit cron.
- Never publish just to test development or to bypass private development access.
Get release approval
- Finish development and verification.
- Show the actual release: website address, backend services, workflow versions and triggers, and recurring cost.
- Wait for approval of those concrete items. Renew approval for material changes.
- Publish, then verify each part separately.
Deploy a backend
- Call `configureBackendService`, then `runBackendServiceAction`.
- For repository source, run `build` and inspect completion before `deploy`. Prebuilt images deploy directly.
- Inspect `getBackendService` until the deployment is ready or failed.
- Verify a representative operation with `debugBackendRequest`. For a worker, confirm results through its persisted task or status evidence.
- Verify state survival when persistence is required.
A saved configuration, a successful build or a running development process is not publication.
Choose a runtime policy
| Service | Policy |
|---|---|
| HTTP API | `sleep_when_idle` by default. A real request wakes it. |
| Background worker with `port: null` | `always_on`, or `stop_after_duration` for a fixed run. A worker receives no requests, so `sleep_when_idle` would stop it with nothing to wake it. |
| Continuous HTTP service | `always_on`, when the user requests it. |
Publish a frontend
- Inspect `getFrontendDeployment` after required backends and workflows are ready.
- Call `publishFrontend`. The `workspace` source captures the current or explicitly reviewed retained workspace; `repository` requires the configured factory repository source. Check the source mode and resolved revision before publishing.
- Poll the retained deployment status and build logs. A queued response is not a release.
- Request the returned public URL and verify the real website.
- Report frontend and backend status separately.