v0.14.1 — the trim + harden patch
PLAN previews and the PROVE ledger now tell the whole truth — and keep secrets out of both.
A 10-cluster sweep landing 57 verified fixes (+74 pinning tests, suite 5,153 green, ruff + pyright clean):
Hardened
- Secrets out of PLAN previews: guest-config plans mask cloud-init secrets (e.g.
cipassword); ACME DNS-plugin plans no longer capture provider credential data; notification-endpoint plans disclose/redact the fields actually applied.pve_tfa_deleteno longer sends the password where a PVE error echo could leak it. - Disclosure gaps closed on four planes: all 12 PMG RuleDB update tools,
pve_network_iface_create, SDN zone/vnet/subnet create/update, storage-backend create/delete (plans now say plainly whencleanup=Truewipes disks), andpve_replication_createnow render the actual field values being changed into the dry-run preview and the executed-mutation ledger entry. - Fail-closed: the PROVE ledger's symlink guard re-checks on every append/read; envelope-resolution failures refuse and record instead of raising unaudited; PBS
remotes_list/traffic_control_upsertrefuse unexpected shapes; backup storage names get the path-traversal guard; role/realm/group free-text rejects control characters; A2A non-stringskillis a clean audited rejection. - Envelope RATE fix: caps rank by effective sustained rate (count/window), so a short-window sanity ceiling can't outrank a stricter long-window budget.
- Startup warning when
PROXIMO_LEDGER_REDACTis off (parity with the other permissive-default warnings). - doctor: the spine report — the four structural pillars (PLAN·PROVE·UNDO·DIAGNOSE) and the two operator sockets (CONSENT·CONTAIN) with erection recipes; configured state reported yes/no only, never the paths.
Trimmed — ~35 verified-identical duplication sites collapsed into shared helpers; dead code removed. Zero behavior change, pinned by the suite.
Honesty note: risk ratings remain an advisory heuristic, not a sandbox; UNDO covers the snapshottable surface, not every mutation; the opt-in controls stay inert until configured — see SECURITY.md for what each control honestly holds.
No new tools (352), no new env vars, no breaking changes. Full details in CHANGELOG.md.