Repository navigation
v2.32.4
v2.32.4 (2026-07-27)
This release is published under the Apache-2.0 License.
Bug Fixes
- Resolve not-slow ripple regressions (RF table, data-alias marker, hygiene) (
0de238c)
Fixes the reproducible ripple failures the re-enabled not-slow gate surfaced:
-
RF status table returned raw strings instead of ReceptiveFieldStatus enums.
-
The .data-write diagnostic marker was over-broad (warning-as-error on
constant/scalar/view/buffer alias writes); narrowed to the labeled-RHS
input-derived case, with the independent UNVERIFIABLE ceiling unchanged. -
Removed a bare .detach() outside the training guard; ArgSpec lookup-table,
record-field policy, and inert-RNG reachability reconciled. The cross-thread deadlock, .data-alias ceiling, raw-hook dispatch-scoped accounting, collapse, and exotic-model capture fixes are preserved. -
capture: Attribute raw hook gaps to boundary ops (
1474940)
Wrap raw forward hooks and exhaustive module forwards in witness ownership tokens, then mark those tokens accounted only when model_prep synthesizes an intervention-replacement or internal-source boundary op. This attributes the raw aten zeros, gelu, and relu dispatches without witness exemptions while preserving genuine top-level raw-dispatch gaps.
-
capture: Ceiling data-alias writes after getter capture (
aa56e70) -
capture: Fail closed for indirect numpy-2 host RNGs (
3f7108e) -
capture: Make dynamic-parameter capture torch-2.1 compatible (
45f9300) -
capture: Reconcile exotic validation dispatch gaps (
62b626c)
Capture temporary Parameter initializer mutations from modules created during forward while retaining fail-closed handling for registered state mutations.
Treat torch.autograd.grad engine dispatch as an exact audited backward boundary, and capture Tensor.data getters as canonical detach operations for replay-safe provenance.
-
capture: Release sealed session payload snapshots (
5525971) -
capture: Scope raw-hook accounting to dispatch granularity (
a2629bf)
The prior raw-hook boundary accounting credited the whole forward token, which masked a co-occurring observable mutation (e.g. aten.mul_) that shares the forward with an untraceable-output boundary. Credit is now dispatch-scoped: only the dispatches the synthesized internal_source/intervention_replacement boundary actually represents are accounted, while every value-affecting mutation stays an unaccounted owner_not_captured gap and fails closed (capture_verified=False). Restores child-level negative controls (untraceable-output + mutation still trips; a boundaryless child gap still trips) alongside the legitimate internal_source case.
- capture: Stop recursive cross-thread storage deadlock (
97a7b24)
Use the current-session label anchor directly in completeness_witness.py's non-owner membership check instead of entering _tl.py's storage-validation gate. This keeps captured-tensor touch detection fail-closed, including rebound objects, while avoiding recursive patched untyped_storage observation on worker threads.
Keep the r41 typed-storage witness assertion reachable under warnings-as-errors by filtering only PyTorch's expected TypedStorage deprecation warning.
-
capture: Witness numpy-2 cyfunction RNG receivers (
baf308b) -
io: Reconcile runnable callable aliases (
2d1e706) -
io: Scrub derived gradient payloads portably (
453af66) -
receptive_field: Handle rank-one empty concat inputs (
316516f) -
receptive_field: Map InstanceNorm state parents (
28adcc1) -
receptive_field: Preserve rank-changing full rules (
b5e5317) -
receptive_field: Separate fallback axis state (
df4b8b8) -
viz: Index collapse adjacency labels (
ba0cacd)
Continuous Integration
- tests: Defer the not-slow gate re-enable (
69de516)
Ship the sprint's correctness fixes on the smoke matrix (2.32.3 posture) now. The full not-slow leg is a ~5h run (a per-op witness-accounting perf regression) and still has a few lower-severity failures (a field-order golden, an arg-spec coverage-list reconcile, a buffer-write model, an arg-positions case). Re-enabling it now would block the release on a 5h gate that can't yet pass, so the not-slow CI gate re-enable + those failures + the perf clawback move to a follow-up; the correctness fixes (two hang fixes, the failure backlog, and four false-VERIFIED tripwire closures) all ship in this release.
- tests: Re-enable the not-slow gate on the canonical leg (
e77509c)
Restores the canonical py3.11/torch-2.8 leg to the full -m "not slow" suite (reverting the temporary smoke-only scope from b538324) now that the pre-existing not-slow backlog is fixed. Excludes tests/test_menagerie_*.py: the menagerie is a separate reference corpus, excluded from the wheel and maintained independently, so the torchlens package gate does not run its tests. Keeps the canonical render byte-oracle.
Performance Improvements
- capture: Scope numpy-2 rng digest off internal frames (
5148a4f)
Testing
-
capture: Assert stable facade and factory semantics (
30d186a) -
imports: Track receptive field child collision (
30d6eea) -
intervention: Patch resolver module directly (
e15d1e1) -
toy-models: Mark stacked SSM slow (
c59dc52) -
viz: Contain collapse schedule regressions (
5815ffd) -
viz: Prove collapse adjacency equivalence (
706449e)
Detailed Changes: v2.32.3...v2.32.4