-
Greg Zuro authored
Controllers are now pluggable by type with per-backend discovery: - vxi11 backend (Tektronix AD007) via pyvisa-py, single-link discipline to avoid wedging the gateway; NetFinder stays the Prologix discovery. - bench_discover aggregates all backends; discovery.scan_vxi11 (RPC/portmap). Instruments live in a persistent pool (pool.toml + learned pool-state.json), addressed by logical name and decoupled from the bridge: - resolve() = pinned -> learned -> (opt-in) scan; auto-relocate OFF by default so normal reads never sweep a fragile gateway. - named, savable sessions (sessions.json). - MCP server reworked to 15 flat tools (pool_*, session_*, instrument_*). Fluke 8840A driver: - decode G0/G5/G6/G7 status (G7 '10nn' error codes); _status_query rejects a free-running measurement that races a status read. - self_test: clear errors, fire Z0, wait silently ~30s, read G7 once (any command during Z0 is itself error 60). Verified against the front panel. This unit has no AC option (F2/F5/F6 are no-ops). Entire-Checkpoint: eab5a5a181e9
b9a4231e