Releases: dansupergameprogrammer/superfaiss-unreal
Releases · dansupergameprogrammer/superfaiss-unreal
Release list
SuperFAISS For Unreal Engine v3.3.1
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.
v3.3.0
[3.3.0] — 2026-07-21
Changed
- Vendored core bumped to v3.3.0 (see
Source/ThirdParty/SuperFAISS/CHANGELOG.mdand
VENDORED_VERSION.txtfor the full delta) — addsPeekScratchArchive/
ScratchArchiveInfo(header-peek geometry + trailer-byte-offset read for a serialized
scratch archive, not yet consumed by this plugin); fixesScratchBank::Load's retention
validation, a segmented-scan/whole-row-scan kernel-selection disagreement at several
paddedDims, anint64arena-size overflow inScratchBank::Create/Growwhen
geometry ceilings were not enforced first, and a Cosine channel bank with zero rows
being unrepresentable; and letsMeanNNCrossDeviceChannel/MaxNNCrossDeviceChannel
returnOutOfMemory. ComputePrincipalComponents'sscratchparameter is nowdouble*(wasfloat*)
in the vendored core. This plugin's one call site
(SSuperFAISSBankInspector::ComputeProjection, the PCA scatter-plot projection behind
the Bank Inspector's Structure/Novelty views) updated its scratch buffer from
TArray<float>toTArray<double>to match; no other behavior change.
Fixed
- Channel-table
Offset + Lengtharithmetic widened toint64before every bounds
check, inUSuperFAISSVectorBank::InitFromSource,
USuperFAISSVectorBank::RebuildChannelTable,USuperFAISSScratchBank::InitWithChannels,
andUSuperFAISSScratchBank::Relabel— all fourBlueprintCallableentry points. The
caller-suppliedint32sum could overflow before comparison, defeating the channel's own
bounds and ascending-order checks. A malformed table was never actually accepted or
stored — the vendored core'sValidateBankalready rejects it downstream with
BadFormat— but the plugin's own channel-rules guard was inert for the overflowing
input, so the caller received a generic downstream failure instead of the specific
diagnosis, and the signed overflow was undefined behavior regardless of reachability.
Matches the core library's own fix for the same defect class inScratchBank::Create
andGrow.