Skip to content

feat(website): a website env is one server image, checked at its health path (FD-4683) - #390

Merged
williamloo-scale merged 7 commits into
mainfrom
wloo/web-app-contract
Nov 3, 2026
Merged

williamloo-scale merged 7 commits into
mainfrom
wloo/web-app-contract

Conversation

@williamloo-scale

@williamloo-scale williamloo-scale commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Implements the website env item of M5 in CUA Env: Computer Envs and Computer App Envs (Websites in the computer, agreed Oct 26), extending the existing WebsiteEnv. A website env is one server image that serves the site's pages and API, so it no longer needs a separate frontend image. An env with one still deploys, put warns that it's deprecated, and a bundle may leave it out. The env declares the health path that answers once it's usable. Existing envs keep loading: the server image is written as server_docker_image_artifact beside backend_docker_image_artifact, which an older document holds and is read as the server image, and backend_image in an env.toml names it. Declared domains wait for the M5 site proxy that routes by them.

Validation: unit suite passes, with tests for one-image envs, health-path refusals, reading an older document, the frontend deprecation warning, and an optional image key in a bundle.

🤖 Generated with Claude Code

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; the numbered previous finding is fixed and no new blocking issues remain.

Summary

Makes a website env one server image, keeps older two-image envs readable, and checks whether each site is ready.

  • Website envs can use one server image for pages and APIs.
  • Website deploys wait for each site to report ready.
  • The public site route blocks its framework endpoints and env card.
  • Tasks can check state from named sessions on deployed websites.

Reviews (13) · Last reviewed commit: "chore(website): drop the Notes page's no..." · Reviewed by Greptile

@williamloo-scale
williamloo-scale marked this pull request as ready for review October 29, 2026 21:03
@williamloo-scale
williamloo-scale requested a review from a team as a code owner October 29, 2026 21:03
Comment thread src/agent_env/env/envs/web_apps/env.py Resolved
@williamloo-scale williamloo-scale changed the title feat(web-apps): web app artifacts and the web_apps env, keyed by what they compose feat(web-apps): web app artifacts and the web_apps env, keyed by what they compose (FD-4683) Oct 29, 2026
@williamloo-scale williamloo-scale changed the title feat(web-apps): web app artifacts and the web_apps env, keyed by what they compose (FD-4683) feat(web-app): web app artifacts and the web_app env, one website keyed by what it composes (FD-4683) Oct 30, 2026
@williamloo-scale williamloo-scale changed the title feat(web-app): web app artifacts and the web_app env, one website keyed by what it composes (FD-4683) feat(website): a website env is one server image, at its domains, checked at its health path (FD-4683) Oct 30, 2026
Comment thread src/agent_env/env/envs/website.py Resolved
Comment thread src/agent_env/env/envs/website.py Resolved
Comment thread src/agent_env/env/envs/website.py Resolved
…th path (FD-4683)

A site's server image serves its pages and API, so a website env no longer needs a separate frontend image: one
still deploys, put warns that it's deprecated, and a bundle may leave it out. The env declares the path that answers
once it's usable, which holds only plain path characters. The server image is stored as
server_docker_image_artifact beside backend_docker_image_artifact, which an older document holds and is read as it,
and backend_image in an env.toml names it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@williamloo-scale williamloo-scale changed the title feat(website): a website env is one server image, at its domains, checked at its health path (FD-4683) feat(website): a website env is one server image, checked at its health path (FD-4683) Oct 30, 2026
… plane off the site's route (FD-4683) (#391)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
williamloo-scale and others added 2 commits November 3, 2026 10:18
…s path (FD-4683)

website/v1 reserves /.well-known/agent-env.json for the env card, and
conformance's required reserved-paths check already fails a server
that answers it with a page. A deploy waiting for such a site (a
single-page app answering every path with index.html) failed to read
the card on each poll and timed out. It now refuses the site at once
with WebsiteContractError, naming the path and what answered it. Any
answer but 200 there is still no card, which falls back to the health
path.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
AGENTS.md: main's rows, with this branch's website env, the gateway's
site route and the website state verifier added back in.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ke, and ignore node_modules (FD-4683)

They were installed to build the page for a browser check and swept
into 7756096 with the rest of its change.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@williamloo-scale
williamloo-scale merged commit 5d6705a into main Nov 3, 2026
25 checks passed
@williamloo-scale
williamloo-scale deleted the wloo/web-app-contract branch November 3, 2026 21:27
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.

2 participants