Two bugs in tonic were found while adding an audio reference checkpoint. Drafts are written and sitting in plans/upstream/; they have not been filed.
1. tonic-hsd-float16-timestamps.md — the serious one. SHD and SSC store spikes/times as float16, and HSD.__getitem__ scales by 1e6. Under NumPy 2's NEP 50 promotion the multiply stays in float16, where 1e6 does not fit — so the scale factor becomes inf, every product is inf or NaN, and the cast to int64 yields INT64_MIN for every timestamp in every sample. Downstream binning then collapses the whole recording into one time step, so a spiking network trains on a single static frame and reports a plausible accuracy.
SHD and SSC are the standard spiking-audio benchmarks and temporal structure is the entire point of using them. Anyone who trained on them through tonic on NumPy 2 may have single-bin data and not know. The fix is one line (np.asarray(..., dtype=np.float64)), and the draft carries a copy-pasteable reproduction plus the before/after bin distributions.
2. tonic-nmnist-dead-download-url.md. The pinned Mendeley URLs for N-MNIST return HTTP 404, so the dataset cannot be fetched on a cold cache. Also notes that the figshare-hosted DVS datasets answer HTTP 202 with an empty body, which tonic reports as "File not found or corrupted" — accurate but it sends people hunting for a cache problem they do not have.
Keep each draft in plans/upstream/ after filing and add the issue link to the table in its README, so the evidence stays next to the report.
Two bugs in tonic were found while adding an audio reference checkpoint. Drafts are written and sitting in
plans/upstream/; they have not been filed.1.
tonic-hsd-float16-timestamps.md— the serious one. SHD and SSC storespikes/timesasfloat16, andHSD.__getitem__scales by1e6. Under NumPy 2's NEP 50 promotion the multiply stays infloat16, where1e6does not fit — so the scale factor becomesinf, every product isinforNaN, and the cast toint64yieldsINT64_MINfor every timestamp in every sample. Downstream binning then collapses the whole recording into one time step, so a spiking network trains on a single static frame and reports a plausible accuracy.SHD and SSC are the standard spiking-audio benchmarks and temporal structure is the entire point of using them. Anyone who trained on them through tonic on NumPy 2 may have single-bin data and not know. The fix is one line (
np.asarray(..., dtype=np.float64)), and the draft carries a copy-pasteable reproduction plus the before/after bin distributions.2.
tonic-nmnist-dead-download-url.md. The pinned Mendeley URLs for N-MNIST returnHTTP 404, so the dataset cannot be fetched on a cold cache. Also notes that the figshare-hosted DVS datasets answerHTTP 202with an empty body, which tonic reports as "File not found or corrupted" — accurate but it sends people hunting for a cache problem they do not have.Keep each draft in
plans/upstream/after filing and add the issue link to the table in its README, so the evidence stays next to the report.