Skip to content

v0.14.0 — scoped registration (PROXIMO_SURFACES)

Choose a tag to compare

@john-broadway john-broadway released this 03 Jul 03:59

Scoped registration — load only the planes you use.

PROXIMO_SURFACES=pve,exec registers just those surfaces' tools (that pair = 194 of 352; pbs,exec = 38) — unpicked planes are pruned from the MCP registry before serving, so they never reach your client's context window at all. A structural gate, not a runtime refusal.

  • Surfaces: pve · pbs · pmg · pdm · exec (comma-separated, case-insensitive)
  • Unset = all 352 tools, zero behavior change — the same opt-in contract as every Proximo control
  • audit_verify is never scopeable away — PROVE stays
  • A typo'd surface name refuses startup (exit 1, names the valid set) rather than silently serving a surface you didn't pick
  • A completeness test fails CI if a future tool falls outside every surface

Also in this release:

  • The README now leads with a live demo — recorded against a real PVE 9.2 host with a read-only token (doctor preflight → a destructive delete returning its PLAN with named blast radius, nothing executed → audit_verify green). Reproducible: scripts/demo/demo.py.
  • A mutation-checked regression test pinning that the proximo doctor report never carries secret values (the CodeQL #75 dismissal, backed by proof).
  • Dependency floors raised to the versions the suite actually tests (starlette ≥1.3.1, cryptography ≥49, pytest-asyncio ≥1.4).

Full suite 5,079 green (3 by-design skips), ruff + pyright clean. Tool count unchanged: 352.

Honesty note, as always: the suite is mock/in-process — it proves shapes; the live-Proxmox proofs are a separate by-hand harness (see README "Status — the arena record"). PROXIMO_SURFACES is context hygiene and surface reduction, not an authorization control — your token's ACL remains the real boundary.