feat(vault): read an IronVault model vault; correct the MSRV
`simon ai models` lists what a vault holds — name, format, version count, stored and compressed size, checksum and metadata — as a table or JSON, behind an optional `vault` feature that is off by default. Read-only, and verified as such rather than asserted. simon never stores, fetches, decrypts or deletes; it reads the metadata index, which IronVault exposes without a passphrase. Checked against a real vault holding two models across three versions with `"unlocked": false`, and the vault directory is byte-identical across two consecutive reads. `VaultStatus` keeps `not_installed`, `absent`, `present` and `failed` distinct once serialised. The first version collapsed the first two and printed an empty path, which is the shape of answer this crate exists to avoid. Two defects found while testing this, neither caused by it: The declared MSRV was 1.70 and had been false since 5.0.0. Restoring the egui GUI pulled in `image` and `home`, which declare 1.88 themselves, and `image` reaches an edition-2024 crate that pre-1.85 cargo cannot parse. Two releases shipped a floor nothing had ever built against. It is now 1.88, established by building against every installed toolchain. Raising it also un-gated ten clippy lints that `incompatible_msrv` had been suppressing at 1.70; those are fixed. `virtualization::detect::cpuid` needed its `unsafe` block back — removed once as a no-op, true only on compilers newer than any this project claims to support. The Peripherals tab waited 24s for data it does not display. One thread ran seven WMI queries and sent nothing until all seven finished, and two of them dominate: `get_driver_versions` 20.3s and `get_system_temperatures` 2.9s, against 0.7s for `get_peripherals`. Headless reads gave up at 30s and returned a bare title in three runs out of five. The collector now sends two instalments split by cost, and the tab returns in 8.8s with 192 lines instead of two. The test that should have caught this did catch it — just not reliably enough for anyone to believe it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A
Adam Erickson committed
8fbde97dc65c05636a8e63e05c0b348667dba82c
Parent: 0d7057a