1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
"""
Every package in this repository carries the same version.
They are built, deployed and updated together — hub, node, common and the
desktop client — so a version that differs is not a statement about that
package, it is a mistake nobody has noticed yet.
**Found on 2026-09-09, on the MNP 3.0 flag day.** `meshbay-client`'s
`package.json` had drifted to `1.0.0` while every Python package was on
`0.12.0`. That was invisible until the hub started publishing a minimum client
version and the client started comparing itself against it — at which point an
installed client announcing `1.0.0` sorted *above* a minimum of `0.13.0` and
walked straight through the gate meant to stop it. A version nobody reads is
free to be wrong; the moment something compares it, it is load-bearing.
"""
import json
import re
from pathlib import Path
import pytest
ROOT = Path(__file__).resolve().parents[3]
PACKAGES = ROOT / "packages"
def _python_versions() -> dict[str, str]:
found = {}
for pyproject in sorted(PACKAGES.glob("*/pyproject.toml")):
m = re.search(r'^version = "([^"]+)"', pyproject.read_text(), re.M)
if m:
found[f"{pyproject.parent.name}/pyproject.toml"] = m.group(1)
for init in sorted(PACKAGES.glob("*/src/*/__init__.py")):
m = re.search(r'^__version__ = "([^"]+)"', init.read_text(), re.M)
if m:
found[f"{init.parent.name}/__init__.py"] = m.group(1)
return found
def _client_version() -> str | None:
pkg = PACKAGES / "meshbay-client" / "package.json"
if not pkg.exists():
return None
return json.loads(pkg.read_text()).get("version")
@pytest.mark.skipif(not PACKAGES.is_dir(), reason="package layout not present")
def test_every_package_carries_the_same_version():
versions = _python_versions()
assert versions, "no package versions found at all — has the layout moved?"
client = _client_version()
if client is not None:
versions["meshbay-client/package.json"] = client
distinct = sorted(set(versions.values()))
assert len(distinct) == 1, (
"packages disagree about the version: "
+ ", ".join(f"{k}={v}" for k, v in sorted(versions.items())))
@pytest.mark.skipif(not PACKAGES.is_dir(), reason="package layout not present")
def test_the_hub_will_not_refuse_the_client_it_ships_with():
"""`MIN_CLIENT_VERSION` is compared against a client's own version, so a
minimum above the version being built would lock out the very build being
released — the one failure this field can cause that nobody would think to
test for by hand."""
from meshbay_hub.api.hub import MIN_CLIENT_VERSION
client = _client_version()
if client is None:
pytest.skip("desktop client sources not present")
as_numbers = lambda v: [int(n) for n in v.split(".")] # noqa: E731
assert as_numbers(MIN_CLIENT_VERSION) <= as_numbers(client), (
f"the hub requires client {MIN_CLIENT_VERSION} but this tree builds "
f"{client}")
|