Repository navigation
feat(website): sync the clock of, snapshot, and configure a multi env's websites as its MCP servers (FD-4683) - #427
Open
williamloo-scale wants to merge 7 commits into
Open
williamloo-scale wants to merge 7 commits into
williamloo-scale wants to merge 7 commits into
Conversation
…'s websites as its MCP servers (FD-4683) sync_env_clock reaches a website env's site, and a multi env's websites beside its MCP servers; a site that doesn't follow the clock is tolerated. snapshot_env exports each website child through its data plane and skips, with a warning, one that has none. A config broadcast to every service reaches websites too, and skips one without a card or the extension, so a multi env with an older site behaves as before. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # src/agent_env/task_step/task_steps/snapshot_env.py
Brings in main's sync_env_clock timezone (#442) beside this branch's websites: every synced server, MCP server or website, is told the zone, and a website that follows the clock but can't take it fails the step as an MCP server does. A website sharing an MCP server's name, synced with no record so its card is read live, now gets the env's control headers instead of reading them off the missing record. #442's tests stub _backing_servers, which replaced _service_names here. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
williamloo-scale
marked this pull request as ready for review
November 2, 2026 23:27
# Conflicts: # tst/unit/providers/env_providers/env_gateway_provider_test.py
…ead of being skipped (FD-4683) Without a stored card, v1_base_url probed a website with supports_v1, which reads a timeout, a 5xx or a connection error as "legacy", so snapshot_env skipped the website as one serving no data plane and the snapshot could succeed without its state. A website's live probe is now a card read that is None only on a 404 and raises otherwise, so export_one fails that website and the snapshot with it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #392.
A website env, and a multi env's websites, now get the same harness treatment as MCP servers:
sync_env_clocksyncs a website env's site and a multi env's websites; a site that doesn't follow the clock is tolerated. With main'stimezone(feat(sync_env_clock): an optional timezone reads virtual_time in the zone and tells every synced server (FD-5003) #442), every synced server, website or MCP server, is told the zone, and a site that follows the clock but can't take the zone fails the step, as an MCP server does.snapshot_envexports each website child through its data plane; one without a data plane is skipped with a warning, and the step fails only if nothing is exported.apply_server_configwith"*") reaches websites, and skips one without a card or the extension, even in strict mode, so a multi env with an older site behaves as before.legacy_protocol.backing_servers(env)lists MCP servers then websites; on a name clash the MCP server wins.Test
Unit suite and protocol tests: 12,607 passed, lint clean.
tst/unit/task_step,tst/unit/env,tst/unit/providers: 5303 passed (one timing test inchild_sessions_test.py, untouched here, flaked once and passes on rerun).🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge; the previous snapshot finding is fixed and no new actionable issues were found.Summary
Gives websites the same clock, snapshot, and config steps as MCP servers.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Enumerate backing servers] --> B[MCP servers] A --> C[Websites] B --> D[Sync clock and apply config] C --> D B --> E[Export state] C --> F{Website card available?} F -->|Yes| E F -->|HTTP 404| G[Warn and skip website] F -->|Request fails| H[Fail snapshot] E --> I{Any state exported?} G --> I I -->|Yes| J[Save snapshot] I -->|No| HReviews (4) · Last reviewed commit: "fix(website): a website whose card read ..." · Reviewed by Greptile