fix(hub): let Intel Macs install the gaia and email agents - #4291
kovtcharov wants to merge 1 commit into
Conversation
Intel Macs were refused by `gaia hub install gaia` and `gaia hub install email` even though every release builds and publishes a darwin-x64 binary for both. The manifests now declare darwin-x64, the email README lists Intel macOS (best-effort, matching SPEC.md), and a unit test fails whenever a binary hub agent's declared platforms drift from its binaries.lock.json. Fixes amd#4218
|
Verdict: Approve This unblocks Intel Mac users who were turned away from installing the One thing worth confirming rather than changing: for the email agent the Intel binary is explicitly best-effort, and a release is allowed to drop it. On such a release Intel users will now get past the install check and hit a clear "no Intel binary for this version" error at download instead of being refused up front. That's the tradeoff the README and the release pipeline already describe, so it looks intentional — just make sure it's the behaviour you want. Real-world evidenceN/A — manifest, docs, and tests only; no evidence bundle was produced for this PR. The one surface a user touches (the install gate) only changes once each agent republishes its manifest, and it can only be exercised on an Intel Mac, which the test plan leaves unchecked with that reason stated. I verified the change statically instead: both lock files list the Intel platform, the platform name is one the manifest schema accepts, and the install check compares against exactly the list this PR edits. The new test's logic reproduces as passing for both agents: 🔍 Technical detailsVerification performed
Notes (non-blocking) 🟢 Best-effort Intel vs. an unconditional manifest ( 🟢 Same refusal still applies to the pure-Python agents. 🟢 Strengths
|
|
Replicated as #4367 on a branch we can push to — fork push access (kovtcharov/gaia) was revoked mid-review, so this PR could no longer be refreshed against main. Same content, cherry-picked cleanly onto current main with no conflicts. Closing in favor of the replacement. |
Replicates amd#4291 (kovtcharov/gaia fork, push access blocked) onto a branch this session can push to. Original review: **Verdict: Approve**, no blocking findings — the reviewer verified statically that both lock files list `darwin-x64`, that the platform name is one the manifest schema accepts, and that the install gate compares against exactly the list this PR edits. No content changes beyond replication onto current main. Intel Mac users running `gaia hub install gaia` or `gaia hub install email` were refused before any download, even though both agents' releases build and publish a darwin-x64 binary and both lock files list it. The manifests now declare `darwin-x64`, so the install gate matches what ships; the email README also lists Intel macOS (best-effort, as SPEC.md already says). A new unit test fails whenever a binary hub agent's declared platforms drift from its `binaries.lock.json`, in either direction. No version bump: manifest-only fixes land under Unreleased, as amd#3866 did. The live hub picks this up on each agent's next publish. ## Test plan - [x] `python -m pytest tests/unit/test_hub_agent_platforms.py -q` — 3 passed - [x] `python -m pytest hub/agents/gaia/python/tests/test_publish_to_r2_by_reference.py hub/agents/gaia/python/tests/test_capability_matrix.py -q` — 30 passed - [x] `python -m pytest tests/unit/ -q -k "hub or manifest or compat or platform"` — 834 passed, 3 failed, 17 collection errors; all failures and errors reproduce identically on clean `main` (see note below) - [x] `python util/lint.py --black --isort` clean - [ ] On an Intel Mac: `gaia hub install email` passes the compatibility check (needs a republished manifest) Cherry-picked cleanly onto current `main` with no conflicts, so the diff is identical to the approved one. > [!NOTE] > Two pre-existing `main` breakages surfaced while running the suite, both unrelated to this PR and present on a clean `e9dfc3e7a` checkout: `src/gaia/ui/agent_loop.py:465` passes `device=session.get("device")` twice in one call, a `SyntaxError` that fails collection for 17 UI/router test modules; and 3 unrelated tests fail on main (`test_sh_parses_under_dash`, a `test_memory_discovery` Outlook-registry case, `test_hub_installed_wheel_agent_importable_in_fresh_process`). Fixes amd#4218 Co-authored-by: Kalin Ovtcharov <kalin@Kalins-Mac-mini.local>
Intel Mac users running
gaia hub install gaiaorgaia hub install emailwere refused before any download, even though both agents' releases build and publish a darwin-x64 binary and both lock files list it. The manifests now declaredarwin-x64, so the install gate matches what ships; the email README also lists Intel macOS (best-effort, as SPEC.md already says). A new unit test fails whenever a binary hub agent's declared platforms drift from itsbinaries.lock.json, in either direction.No version bump: manifest-only fixes land under Unreleased, as #3866 did. The live hub picks this up on each agent's next publish.
Test plan
python -m pytest tests/unit/test_hub_agent_platforms.py -q: 2 failed on origin/main (darwin-x64 in the lock, not in the manifest), 3 passed with the fixpython -m pytest tests/unit/ -q -k "hub or manifest or compat or platform": 864 passedpython -m pytest hub/agents/gaia/python/tests/test_publish_to_r2_by_reference.py hub/agents/gaia/python/tests/test_capability_matrix.py -q: 30 passedgaia hub install emailpasses the compatibility check (needs a republished manifest)Fixes #4218