SIGN IN SIGN UP

fix(vault): no empty path in Failed, no silently dropped models

Two faults found by re-reading the module, not by any test.

`VaultStatus::Failed` carried `PathBuf::new()` when `VaultConfig::new()`
failed — an empty path, which is the exact defect `NotInstalled` was added
to remove. It had simply survived in a different arm, so a caller asking
where simon looked got "". It now reports the directory the `installed()`
probe found, which is the honest answer to that question.

A model the vault lists with no versions was skipped with a comment saying
that inventing a 0-byte entry would be worse. True, and dropping it silently
reports a vault with fewer models than it has, which is the answer this
crate says must never be given. They are now named in
`VaultReport::versionless`, counted in neither total because nothing about
their size was read, and printed by `simon ai models` — a field nothing
prints is a field that was dropped with extra steps.

Verified against the real vault on this machine: three models, versionless
empty, JSON carries the field rather than omitting it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A
Adam Erickson committed
919736876486daec1eac0bb6d72cf7b129f21437
Parent: 4e45c00