Repository navigation
browser: never pinned; the image takes the newest release and the engine reads the server it finds - #1454
Merged
Conversation
…ine reads the server it finds A Dot keeps the golden image it was made from and boots every new runtime disk, so the engine already talked to servers other than the one its pinned copy of the interface described. The engine now reads the interface from the installed server when it starts (nanobot/dots/server_interface.py, server_capture.py run as dot by the server's own python): the page tools are what that server serves, a page tool it does not serve is not offered (GET /tools says so), and a Dot whose server cannot be read offers no page tool and its launches say why. With nothing in the engine tied to a version, the image no longer pins one: each build asks PyPI for the newest invisible-playwright-mcp, the newest invisible-playwright it accepts and the invisible-core that one pins (browser-release.ts). The three enter the inputs digest, pins.env and the manifest, which records what was installed. mcp-requirements.lock and capture-mcp-interface.py go; the copy of the interface becomes a test fixture. The owner's no-other-browser rule is checked at build on what was actually installed (builder/other-browsers.txt), and the golden image workflow runs every six hours so a new release is published as a prebuilt image.
…ture runs on the server's python The engine smoke found its stand-in by fake_mcp_server.py on the command line; installed the way the real server is, it runs as `python -I -B -m invisible_playwright_mcp`, and that command line is what the checks look for. test_dependencies names server_capture.py as a module another interpreter runs: its invisible_playwright_mcp import is the installed server's, not a dependency of the engine.
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.
The Dot's browser is never pinned: each image build takes the newest invisible-playwright-mcp, and the engine reads the interface of the server installed in each Dot.
Why
A Dot keeps the golden image it was made from but boots every new runtime disk. The engine read the server's tools from a copy pinned in its own source, so it could already disagree with the server a Dot actually had, and every release needed a relock.
What changes
nanobot/dots/server_interface.py,server_capture.py)OPENED/NOT_OPEN/GONEsentences from the installed server.server_capture.pydoes this, run as dot by the server's own python.GET /toolssays so.guest/image-builder/src/browser-release.ts)image buildasks PyPI for the newestinvisible-playwright-mcp, the newestinvisible-playwrightit accepts, and theinvisible-corethat version pins.pins.envand the manifest. The manifest records the versions actually installed.mcp-requirements.lockandcapture-mcp-interface.pyare removed.builder/other-browsers.txt).golden-image.ymlruns every 6 hours, so a new release is published as a prebuilt image.Verified
server_capture.pyreads installed 0.72.1 and 0.72.2 correctly.OPENEDexport (added in 0.71.2). A Dot on a golden image that old gets no browser and is told why; recreate it on a current image.