Independent filtered-index review — 2026-10-20

ACCEPT commit 3613e8afe93525fbf37cbeb2ebd4eae261a82c12 for its bounded all-nonkey opaque P8 filtered rejection repair. No production changes or main integration performed by this review.

Remote main independently read as f5b447ebbc2b047451926053a33b367d578b4a36, the candidate's direct parent. The exact diff contains only src/09ab-handlers-d3dim-core.wat and docs/re-notes/d3d-filtered-index-identity-20261020.{js,md}. Baseline 63d22caf879ca77d891d284f7926416a210136c2 to current main adds five contract report/helper files only; core, GL sampler and compiler are identical. The full three-file diff, sampler closure and adapters were inspected.

Findings

The new membership check reads original P8 bytes, not reverse-mapped palette RGB. It restores eligibility only after the old color-key test rejects, only for filtered opaque P8 without GL border addressing, and only if none of the four fetched indices equals the native key. All four fetched taps count, including zero-weight neighbours. This is an absence guard, not an any-key rejection policy. Mixed/all-key footprints retain the old decision.

Its float32 multiplication, half-texel subtraction, floor, saturating conversion, wrapping i32 neighbour increment and addressing match the actual sampler. NaN and infinities are canonicalized before footprint arithmetic; finite multiplication overflow retains the sampler's existing behavior. GL's non-border route calls that same prepared sampler. Border paths remain excluded. The helper executes after the sample using the same coordinates, dimensions, pitch and backing pointer.

The point path still uses native index equality; filtered paths still use the old RGB comparison followed by this guard. TRUE bypasses rejection and uses existing per-tap substitution; draw is initialized to one before the key test, so the new restoration cannot resurrect a TRUE rejection or any earlier alpha/depth failure. Alpha/stencil/depth tests occur afterwards. Palette-alpha exclusion and explicit TRUE+alpha trap remain. The 16-bit fast/general selection and arithmetic are untouched.

The regression genuinely compiles and calls the production span and sampler closure. Format/palette metadata are fixture-side adapters, g2w is identity for a valid test depth buffer, extent bookkeeping is a no-op. Other omitted paths trap; globals disable them. This isolates key/sample/output logic but does not qualify real surface side tables, allocation, guest translation, clipping, fog, blending, second texture, stencil, border sampling or 16-bit render-target encoding. The 16-bit cases exercise textures, with a 32-bit render target. No adapter supplies the expected key result.

Executed evidence

All 16 seals in the original run directory were verified in place without modification, including its receipt, patch, harness errors and four compiled closures. The independent rerun's complete JSON equals the original JSON. Node v24.18.1, vendored compiler production mode:

SHA256 identities:

Artifact SHA256
Candidate core 8c6433b755581e6705e87051770b1301074b234cabdffef1551b938c4186c184
Baseline/main core a5a62fc84ba7c7bff1763db07cd9cdd9c288c11fa28d266440219177d895091a
GL raster source f7f637d3cb4dc21931346c58927bc501d7e061bbbe3006bcdc11717096374bbe
Fixed Wasm cb0480a0849330a29944a51627c211c0514dec2da6d129757f97cc124993699d
Baseline Wasm dc32c5948c93fecfc527d94403aafbc55d20d2f5744c08e0bd375299e5dac18a
Forced-general Wasm 4a31c6ebffc5f3e5bcbe811a74ff4716b32e8cc36ebd4a0e7bacab7f24fec273
Guard-removed Wasm ed036441ad4ae27920883ecfae604228e68324aac254eda783c977a0a59680d7
Independent footprint trace Wasm a86757df60a2c08a39ce2ea73b18976f0878b4d1372341eddb16e75f12c99fed

Evidence: scratch/runs/20261020-d3d-index-independent-review-oct20/. tests.json records full compiler hashes, retained functions/adapters and observations; independent.json records trace identities/counts; original-seals.json, preflight.json, receipt.json, remote.txt and SHA256SUMS.json preserve provenance. Recreate compiled artifacts by running the candidate helper with an existing absolute evidence directory, then this review's JS helper with that same directory. Both commands run from repository root. No full build is necessary.

Limits and operational boundary

No GPU shader/upload/cache execution, full VM, browser, native runtime or whole-module build was performed. Full-VM draw/depth integration and GPU agreement still need separate qualification. FALSE mixed/zero-weight rules, state144 default, Device3 compatibility and alpha/key precedence remain unknown. The documented all-key nonblack raw-key decoder bug reproduces unchanged; it is neither fixed nor counted as native conformance.

This review used a fresh independent repository borrowing read-only Git objects, with exact sparse patterns verified before the first checkout and fail-fast setup. Checkout, metadata and evidence remain below 8 MiB; disk admission reserves floor 2,210,398,208 B plus 32 MiB and 24 MiB concurrent reservations. Shared HEAD/index/config are checked against preflight. Only the dedicated report/helper are committed. Original evidence, unrelated WIP, laptop HeroesII/WarcraftIII, other workers' files and held ScreenSaver diagnostic remain untouched. No workers, runtime access or main push.