Skip to content

Releases: dansupergameprogrammer/superfaiss-unreal

SuperFAISS For Unreal Engine v3.3.1

Choose a tag to compare

@github-actions github-actions released this 26 Jul 23:29
b3fb291

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's PeekScratchArchive runs first, so the archive's geometry (rows, dims,
    metric, quantization, and the exact archiveBytes a 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 the SuperFAISS.* 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 frame SaveToBytes appends after
    the core archive, crediting a frame only when its parsed channel count agrees with the
    archive header, the same agreement LoadFromBytes requires. Backs the Bank Inspector's
    trailing-data disclosure.

Changed

  • The correspondence classification threshold now ships a calibrated default (0.375,
    previously a 0.0f placeholder) 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

Choose a tag to compare

@dansupergameprogrammer dansupergameprogrammer released this 23 Jul 01:38
c92817a

[3.3.0] — 2026-07-21

Changed

  • Vendored core bumped to v3.3.0 (see Source/ThirdParty/SuperFAISS/CHANGELOG.md and
    VENDORED_VERSION.txt for the full delta) — adds PeekScratchArchive/
    ScratchArchiveInfo (header-peek geometry + trailer-byte-offset read for a serialized
    scratch archive, not yet consumed by this plugin); fixes ScratchBank::Load's retention
    validation, a segmented-scan/whole-row-scan kernel-selection disagreement at several
    paddedDims, an int64 arena-size overflow in ScratchBank::Create/Grow when
    geometry ceilings were not enforced first, and a Cosine channel bank with zero rows
    being unrepresentable; and lets MeanNNCrossDeviceChannel/MaxNNCrossDeviceChannel
    return OutOfMemory.
  • ComputePrincipalComponents's scratch parameter is now double* (was float*)
    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> to TArray<double> to match; no other behavior change.

Fixed

  • Channel-table Offset + Length arithmetic widened to int64 before every bounds
    check
    , in USuperFAISSVectorBank::InitFromSource,
    USuperFAISSVectorBank::RebuildChannelTable, USuperFAISSScratchBank::InitWithChannels,
    and USuperFAISSScratchBank::Relabel — all four BlueprintCallable entry points. The
    caller-supplied int32 sum 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's ValidateBank already 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 in ScratchBank::Create
    and Grow.