Correctness release. The Bank Inspector now delivers the archive-inspection workflow the
3.2/3.3 UI described but did not fully reach — no new search or analysis primitive; every
change closes a gap between a claim the plugin made and what the reachable UI actually did.
The vendored core is unchanged from 3.3.0 (same VENDORED_VERSION.txt).
Added
- Visible "Open Archive…" actions on both the primary and second-bank slots. A
serialized scratch archive can be opened, replaced, and closed from the widget. The
vendored core'sPeekScratchArchiveruns first, so the archive's geometry (rows, dims,
metric, quantization, and the exactarchiveBytesa load consumes) and any
trailing-data or validation failure are shown before the load commits; a failed open
leaves the current source untouched. - Novelty and channel-scoped analysis now run over archive sources, not asset banks
only, with the same tombstone exclusion and named-channel slicing the asset path applies. - Archive metadata in the shared source header — live/published rows, metric,
quantization, dimensions, channels, and filename — read from the inspection source
rather than only a selected asset. - A claims-vs-code capability matrix (
SuperFAISSInspectorTrustGapTests.cpp, SF34-007) —
three data-driven automation-suite assertions that the archive-source novelty path, the
channel-scoped archive path, and the second-slot archive path are each genuinely reachable
from the UI. It runs with the rest of theSuperFAISS.*suite, checked locally before a
release is tagged; it is not a CI gate, and it does not parse README, changelog, or tooltip
prose. - A "Documentation" link on the Correspondence panel, opening the Bank Inspector README
section that documents the correspondence margin threshold's calibration basis — the
doc-URL half of SF34-007's tooltip + doc URL acceptance criterion. USuperFAISSScratchBank::MeasureChannelFrameBytes(Data, Len, ExpectedChannelCount)
(public C++ API) — measures the host-side channel-name frameSaveToBytesappends after
the core archive, crediting a frame only when its parsed channel count agrees with the
archive header, the same agreementLoadFromBytesrequires. Backs the Bank Inspector's
trailing-data disclosure.
Changed
- The correspondence classification threshold now ships a calibrated default (
0.375,
previously a0.0fplaceholder) with a written fixture-population basis. (Non-finite
configuration already resolved to defined behavior; unchanged.)
Fixed
- Archive row identity now uses the original published source index in the Structure
view's tree and PCA-scatter tooltip — previously it fell back to the sample position
when no asset was selected, so a pruned archive's rows now stay addressable by the
identity the archive published. (The Correspondence view's match list already reported
source indices directly from the core.) - Plugin claims reconciled with the reachable UI, checked by a new claims-vs-code
capability matrix in the automation suite that asserts each advertised inspection
capability has a reachable path and a test — a local pre-release check, not a CI
gate or a prose parser.