Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
# The pip ecosystem watches pyproject.toml. When mcp 3.0.0 lands, Dependabot
# opens a PR widening the pin — that PR is the alert. Do not auto-merge it:
# widening the pin is exactly the change that needs the release gate run first.
#
# This only works while pyproject.toml keeps an UPPER bound on mcp. Dependabot
# raises a PR when a new release falls outside the declared constraint; against
# an open `>=` it sees nothing to do and says nothing. Confirmed the hard way on
# 2026-08-23: with an unbounded `mcp>=2.0.0` the first pip run opened zero PRs
# while the github-actions run opened three. If the ceiling is ever removed,
# this file stops being alerting and becomes decoration.
version: 2
updates:
- package-ecosystem: "pip"
Expand Down
28 changes: 20 additions & 8 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,26 @@ classifiers = [
"Programming Language :: Python :: 3.13",
]
dependencies = [
# server.py was migrated to the mcp 2.0 API in 0.5.0 — the decorators this
# server used to register with (Server.list_tools / Server.call_tool) were
# removed in 2.0.0 and are gone for good (#2). 1.x is therefore no longer
# supported: the floor, not a ceiling, is what's load-bearing now.
# An upper bound goes back the moment mcp 3.0 is on the horizon —
# Dependabot opens that PR (.github/dependabot.yml); do not merge it
# without running the selenium-mcp-test gate first.
"mcp>=2.0.0",
# Both bounds are load-bearing, and for different reasons.
#
# Floor: server.py speaks the mcp 2.0 API as of 0.5.0 — the decorators it
# used to register with (Server.list_tools / Server.call_tool) were removed
# in 2.0.0, so 1.x cannot run this code at all (#2).
#
# Ceiling: this is the bound whose absence caused #2, and it is NOT
# temporary. Two things depend on it:
# 1. Users never silently resolve to a major that removed our API. That
# is the 25-day outage, exactly.
# 2. It is what makes dependency alerting work. Dependabot only opens a
# PR when the constraint *excludes* the new release; against an open
# `>=` it has nothing to say and stays silent. Verified 2026-08-23 —
# the first pip run against an unbounded `mcp>=2.0.0` completed
# successfully and opened zero PRs.
#
# So when mcp 3.0 ships, Dependabot proposes widening this line, and that
# PR *is* the alert. Do not merge it without running the selenium-mcp-test
# gate against the new major first.
"mcp>=2.0.0,<3.0.0",
"selenium>=4.6.0",
]

Expand Down