Skip to content

Changelog

All notable changes to the sc-neurocore project will be documented in this file.

[Unreleased]

NIR Bridge

  • Roundtrip tests for all 18/18 NIR primitives (was 7/18)
  • Auto-broadcast scalar neuron params to input size (Norse/snnTorch export 0-dim tensors)
  • Threshold fix: >= to > matching NIR spec and snnTorch behavior
  • reset_mode="subtract" for snnTorch compatibility (subtract-reset vs zero-reset)
  • IF subtract-reset test and unknown reset_mode fallback handling
  • Cross-framework interop tests: Sinabs LIF/IAF/ExpLeak, Rockpool LIF/CubaLIF/LI, snnTorch RSynaptic subgraph
  • Cross-framework r-encoding test documenting per-framework dt conventions
  • SpikingJelly NIR roundtrip demo (examples/spikingjelly_nir_roundtrip.py)
  • Norse NIR roundtrip demo with real Norse weights (examples/norse_nir_roundtrip.py)
  • NIR roundtrip demo: stronger input to produce visible spikes
  • Documentation: added SpikingJelly, Rockpool, Sinabs, snnTorch RSynaptic sections to docs/guides/nir_integration.md
  • Documentation: framework dt/r quick reference table
  • Documented Norse tau observation (export/import roundtrip discrepancy in Norse code)
  • Removed unverified "first FPGA backend" claim from 6 files

ANN-to-SNN Conversion Engine

  • sc_neurocore.conversion.convert(): automated PyTorch ANN to rate-coded SNN conversion
  • QCFS activation (Quantization-Clip-Floor-Shift): ReLU replacement for conversion-aware training
  • Threshold normalization from calibration data activation statistics
  • ConvertedSNN.run() and .classify() for inference with Poisson rate coding

Learnable Delay Training

  • DelayLinear: PyTorch module with trainable per-synapse delays via linear interpolation
  • Differentiable delays: gradients flow through fractional delay positions
  • Export to integer delays for hardware deployment via delays_int and to_nir_delay_array()
  • DCLS (Dilated Convolutions with Learnable Spacings) principle for fully-connected SNN layers

One-Command FPGA Deploy

  • sc-neurocore deploy model.nir --target artix7: NIR/PyTorch → Verilog → project in one command
  • Target presets: ice40, ecp5 (Yosys Makefile), artix7, zynq (Vivado project.tcl)
  • Copies 19 HDL library modules, generates neuron SystemVerilog, build script, README

Network Engine

  • Per-synapse delays in Projection: delay=array for heterogeneous axonal/synaptic delays
  • Spike-gating: Population.step_all(spike_gating=True) skips idle neurons, compute proportional to active count
  • Weight sparsity: Projection(weight_threshold=0.01) skips near-zero synapses during propagation

Compiler

  • Per-layer adaptive bitstream length: assign_lengths() with Hoeffding or sensitivity-based allocation
  • Mixed-precision SC networks: shallow layers use short L (fast), deep layers use long L (precise)

Event-Driven FPGA RTL

  • sc_aer_encoder.v: spike vector → AER packets via priority encoder, idle neurons consume zero power
  • sc_event_neuron.v: Q8.8 LIF that computes only on input events or periodic leak ticks
  • sc_aer_router.v: distributes AER events to target neurons using connectivity lookup table
  • Total HDL modules: 19 (was 16)

Performance

  • Lazy-load 109 neuron models: import time 200s → 57s
  • Deferred scipy imports (stats.qmc, sparse): import time 57s → 10s

Infrastructure

  • Coverage fixes: test second model access, pragma Rust-only branch
  • Coverage for lazy-load path, sparse guard mock path
  • Ruff F401 re-export fixes, format vectorized_layer

[3.13.3] - 2026-03-20

SC Arithmetic

  • CORDIV division circuit: Python sc_divide() + Verilog sc_cordiv.v (Li et al. 2014)
  • Adaptive bitstream length: Hoeffding/Chebyshev/variance bounds via adaptive_length()
  • Sobol/Halton multi-dimensional decorrelation for per-synapse independent streams
  • Chaotic RNG mode in BitstreamEncoder (logistic map)
  • Sobol bitstream attention: StochasticAttention.forward_bitstream() with LDS variance reduction

Learning Rules

  • BCM metaplasticity with sliding threshold (Bienenstock-Cooper-Munro 1982)
  • Voltage-based STDP (Clopath et al. 2010)
  • Truncated BPTT for long sequences (TBPTTLearner, Williams & Peng 1990)
  • EWC penalty implemented (was no-op stub) — Kirkpatrick et al. 2017
  • Learnable beta/threshold on all 10 SNN cell types (ExpIF, AdEx, Lapicque, Alpha, SecondOrderLIF, IF, Synaptic)
  • ConvSpikingNet now works with train_epoch() via flatten_input=False

Biological Circuits

  • Tripartite synapse: astrocyte ↔ synapse bidirectional coupling (Araque et al. 1999)
  • Rall branching dendrite: compartmental tree with 3/2 power rule
  • Canonical cortical microcircuit: 5-population column (L2/3 exc/inh, L4, L5, L6)
  • Astrocyte adapter: AstrocyteNeuron wraps Li-Rinzel model for Population/Network

Theoretical Depth

  • SC→quantum circuit compiler: Ry encoding, statevector simulator, layer compilation
  • Zero-multiplication predictive coding SC layer (Conjecture C9: XOR=error, popcount=magnitude)
  • Topological observables: winding number, Ollivier-Ricci curvature, sheaf defect
  • Phi* integrated information estimation (Barrett & Seth 2011, IIT)
  • Goldstone mode verification for Knm coupling spectrum
  • Fault tolerance benchmark: SC vs fixed-point degradation curves
  • Hardware-aware SC layer with memristive defect injection
  • Noisy quantum simulation via HeronR2NoiseModel Kraus channels

NIR Bridge

  • Recurrent edge handling via unit-delay insertion (LSTM-like feedback)
  • Multi-port subgraph support (SCMultiPortSubgraphNode)

Compiler

  • IR type checker: Bitstream/Rate/Spike mismatch detection before emission
  • SV/MLIR emission for GraphForward, SoftmaxAttention, KuramotoStep (was error stub)
  • Weight quantizer exported in compiler __init__.py

Hardware Stack

  • AXI-Stream interface for bulk bitstream I/O (sc_axis_interface.v)
  • DMA controller for weight upload and output readback (sc_dma_controller.v)
  • Parameterized AXI-Lite register file (sc_axil_cfg_param.v)
  • Clock domain crossing primitives: 2-FF sync, Gray counter, async FIFO (sc_cdc_primitives.v)
  • NEON scalar-equivalence tests (13 tests for popcount, dot, max, sum, scale)

Infrastructure

  • Rust engine wheel publishing in PyPI release workflow
  • SpikeInterface/Neo adapter for experimental data import
  • Static CycloneDX SBOM (v1.6)
  • JAX autodiff fix: straight-through estimator for spike reset
  • IIT added to typos allowlist

[3.13.2] - 2026-03-19

Equation → Verilog RTL Compiler

  • equation_compiler.py: compile any EquationNeuron to synthesizable Q8.8 fixed-point Verilog
  • equation_to_fpga(): one-liner from Brian2-style ODE string to Python neuron + Verilog RTL
  • AST-to-Verilog expression emitter handles +, -, , /, *, unary minus, comparisons
  • Multi-variable ODE support (FitzHugh-Nagumo, Izhikevich, Hodgkin-Huxley)
  • Threshold and reset logic auto-generated

NIR Bridge (Phase 1)

  • nir_bridge package: import NIR graphs into SC-NeuroCore (FPGA backend for NIR)
  • Maps 11 NIR primitives (LIF, IF, LI, Integrator, Affine, Linear, Scale, Threshold, Flatten, Input, Output)
  • Recursive graph parser with topological sort, fan-in summation, nested subgraph support
  • NIR integration guide, API docs, notebook (05_nir_bridge.ipynb)

Packaging & Release

  • Restored sc-neurocore as the only PyPI product package and removed the unintended runtime dependency on a separate sc-neurocore-engine publish
  • Publish automation now pushes only sc-neurocore to PyPI while keeping the Rust engine on the existing crate / source / CI wheel paths
  • Tag pushes still trigger publish directly, so release creation no longer depends on a downstream release.published event

[3.13.1] - 2026-03-19

Packaging & Install

  • Top-level sc-neurocore now requires the matching sc-neurocore-engine release, and sc-neurocore info reports engine version mismatches explicitly instead of silently mixing versions
  • Dense-layer example and getting-started/docs packaging guidance now match the current public API and distinguish wheel-shipped modules from source-only modules

NIR Bridge

  • Nested NIR subgraphs now execute through a dedicated subgraph node wrapper and reset cleanly inside SCNetwork
  • Flatten now respects start_dim / end_dim, and bridge coverage is enforced instead of being omitted
  • Added regression coverage for nested graphs, fan-in, cycle detection, orphan nodes, flatten edge cases, and file-based import/export

CI & Release

  • CI now builds and installs the local engine wheel before editable/package installs, so unreleased versions no longer fail dependency resolution
  • Build smoke installs both the engine wheel and the top-level wheel from local artifacts
  • Publish workflow now runs from tag pushes, builds engine sdist+wheels, publishes the engine package before sc-neurocore, and keeps manual dispatch build-only unless publish is explicitly enabled
  • Release workflow now attaches both the pure-Python wheel and sdist to GitHub Releases

Bug Fixes

  • StochasticTransformerBlock: clamp residual and FFN intermediate values to [0, 1] — MAC output from VectorizedSCLayer can exceed 1.0, triggering the new input validation
  • Optional dependency introspection in sc-neurocore info no longer crashes on broken NumPy/JAX imports

Tests

  • Full preflight now passes at 2112 passed, 38 skipped, 12 xfailed, with 100.00% coverage
  • Added audit validation tests for VectorizedSCLayer/EquationNeuron, CLI fallback coverage, dense-layer example smoke coverage, and expanded NIR bridge regressions

Documentation

  • Replace stale black references with ruff format in VALIDATION.md and CONTRIBUTING.md
  • Sync the packaging/install docs with the released product surface
  • Package naming and install guidance were corrected in 3.13.2; 3.13.1 incorrectly treated sc-neurocore-engine as a separate PyPI runtime dependency

[3.13.0] - 2026-03-18

Python 3.14 Support

  • CI test matrix, wheel builds, and publish workflow now include Python 3.14
  • All 1 776 Python tests pass on 3.14; all dependencies compatible
  • pyproject.toml classifier added

Bridge Wiring

  • 12 missing Rust symbols exported from bridge __init__.py: NetworkRunner, BitstreamAverager, Izhikevich, ArcaneNeuron, 8 AI-optimized models, ContinuousAttractorNeuron
  • Parity test name mapping for RustContinuousAttractorNeuron

CI Fixes

  • Black formatting for identity/ files; pre-commit ruff upgraded v0.9.7 → v0.15.6
  • Clippy: PopulationRunner::is_empty() added
  • TraceEncoder: deterministic hash (byte-based, not Python hash())
  • Synapse test tolerance widened for short bitstream noise
  • Notebook trailing newline for end-of-file-fixer
  • Removed deleted ruff rule UP038

Documentation

  • JOSS paper rewrite: pipeline + spike raster figures, Availability section, McCulloch-Pitts/Hodgkin-Huxley citations, tightened to ~1200 words
  • All docs synced: test counts (1 776/336), 111 NetworkRunner, 17 HDL, Python 3.14
  • Neuron explorer notebook (04_neuron_explorer.ipynb): 5 sections, 117 models

Infrastructure

  • .gitattributes: eol=lf (suppress CRLF warnings on Windows)
  • Single-directory migration: 03_CODE/sc-neurocore/ is canonical repo
  • PyPI deployment branch policy fixed (main added)
  • 12 known Rust/Python parity divergences tracked as xfail
  • 5 phase test version assertions updated

[3.12.0] - 2026-03-17

ArcaneNeuron + 8 AI-Optimized Models

  • ArcaneNeuron: unified self-referential cognition model with 5 coupled subsystems (fast/working/deep/gate/predictor)
  • 8 novel AI-optimized spiking neuron models: MultiTimescaleNeuron, AttentionGatedNeuron, PredictiveCodingNeuron, SelfReferentialNeuron, CompositionalBindingNeuron, DifferentiableSurrogateNeuron, ContinuousAttractorNeuron, MetaPlasticNeuron
  • Total neuron count: 122 Python (113 bio + 9 AI), 111 Rust (including Arcane)
  • ArcaneNeuron included in Rust NetworkRunner (111-model fused loop, was 80)

Identity Substrate

  • sc_neurocore.identity package: persistent spiking network for identity continuity
  • IdentitySubstrate: 3-population network (HH cortical + WB inhibitory + HR memory) with STDP
  • TraceEncoder: LSH-based reasoning trace to spike pattern encoding
  • StateDecoder: PCA + attractor extraction + priming context generation
  • Checkpoint: Lazarus protocol save/restore/merge of complete network state (.npz)
  • DirectorController: L16 cybernetic closure with monitor/diagnose/correct feedback loop

Network Simulation Engine

  • Population-Projection-Network architecture with 3 backends: Python (NumPy), Rust (NetworkRunner), MPI (mpi4py)
  • 6 topology generators: random, small-world, scale-free, ring, grid, all-to-all
  • 12 visualization plots: raster, voltage, ISI, cross-correlogram, PSD, firing rate, phase portrait, population activity, instantaneous rate, spike train comparison, network graph, weight matrix
  • 7 advanced plasticity rules: BPTT, e-prop, R-STDP, MAML, homeostatic, STP, structural
  • MPI distributed simulation for billion-neuron scale via mpi4py

Rust NetworkRunner

  • 111-model fused simulation loop with Rayon-parallel population stepping (was 80)
  • CSR-sparse projection propagation
  • Scales to 100K+ neurons with near-linear speedup

Model Zoo

  • 10 pre-built network configurations: Brunel balanced, cortical column, CPG, decision-making, working memory, visual cortex V1, auditory processing, MNIST classifier, SHD speech, DVS gesture
  • 3 pre-trained weight sets: MNIST (784-128-10), SHD (700-256-20), DVS gesture (256-256-11)

conda-forge

  • Recipe ready for conda-forge distribution

Analysis Toolkit

  • 126 spike train analysis functions across 23 modules (22 spike_stats + 1 explainability)
  • Covers: basic stats, variability, rate estimation, distance metrics, correlation, spectral, temporal, stimulus, LFP coupling, surrogates, information theory, causality, dimensionality, decoding, network, point process, sorting quality, waveform, statistics, patterns, SPADE, GPFA
  • Pure NumPy, zero external dependencies
  • Tests: 1 776 Python total, 336 Rust total

Neuron Model Library (122 Python / 111 Rust)

  • 108 individual model files in neurons/models/ (one file per model)
  • 108 individual model files across 14 families: IF variants, Biophysical, Adaptive, Oscillatory, Bursting, Synaptic, Multi-compartment, Map-based, Stochastic, Population, Hardware, Modern/ML, Rate, Other
  • Notable additions: TraubMiles, WilsonHR, Pospischil (5 cortical types), ConnorStevens, WangBuzsaki, PinskyRinzel, Destexhe, HuberBraun, GolombFS, MainenSejnowski
  • Historical coverage from McCulloch-Pitts (1943) to Gated LIF (2022)
  • 10 PyTorch training cells: LIF, IF, Synaptic, ALIF, RecurrentLIF, ExpIF, AdEx, Lapicque, Alpha, SecondOrderLIF

MNIST 99.49% Accuracy

  • examples/mnist_conv_train.py — ConvSpikingNet with learnable beta/threshold
  • Architecture: Conv(1->32)->LIF->Pool->Conv(32->64)->LIF->Pool->FC->LIF->FC->LIF
  • Techniques: FastSigmoid surrogate, cosine LR schedule, data augmentation, membrane readout
  • Trained on RTX 6000, 30 epochs, 25 minutes
  • Model checkpoint: examples/mnist_conv_train/results/conv_spiking_net_best.pt

Intel Lava/Loihi Bridge

  • integrations/lava_bridge.py — SCtoLavaConverter, export_weights_loihi
  • SCDenseProcess + PySCDenseModel for Lava CPU simulation
  • Weight conversion: SC probability [0,1] -> Loihi fixed-point

Rust Engine 100% Parity (v3.8/v3.9 carry-forward)

  • Sobol bitstream (M1): Gray-code Sobol quasi-random encoder in Rust (sobol.rs)
  • HomeostaticLIF: adaptive threshold neuron with EMA spike rate tracking
  • DendriticNeuron: XOR-nonlinearity compartmental model
  • RewardStdpSynapse: eligibility trace + reward-modulated STDP
  • Conv2DLayer: im2col + SC multiply-accumulate convolution
  • RecurrentLayer: echo state network with state feedback
  • LearningLayer: online STDP-integrated dense layer
  • FusionLayer: weighted stochastic multiplexing across modalities
  • MemristiveLayer: dense layer with stuck-at faults and write noise
  • SpikeRecorder: buffered spike recording with firing rate and ISI stats
  • ConnectomeGenerator: Watts-Strogatz and Barabási-Albert topology generators
  • FaultInjector: bit-flip and stuck-at fault injection on packed bitstreams
  • MLIR emitter: CIRCT hw/comb dialect IR emission (ir/emit_mlir.rs)
  • Static synapse: completed with excitatory/inhibitory polarity
  • Surrogate gradient: added Triangular and PiecewiseLinear variants
  • Rust neuron models callable from Python: 111 (of 122 Python total)

SIMD Hardening (v3.8 carry-forward)

  • Fused softmax_inplace_f64_dispatch with SIMD max/sum/scale
  • Hamming distance dispatch for all backends (AVX2, SVE, RVV)
  • SVE/RVV softmax portable fallbacks
  • Attention softmax refactored to use fused dispatch

Quantum Backend Stabilisation (v3.9 carry-forward)

  • IBM Heron r2 noise model: depolarizing, amplitude/phase damping, readout asymmetry
  • Parameter-shift gradient rule for variational quantum circuits
  • Hybrid quantum-classical VQE pipeline with scipy optimizer
  • QEC noise integration with surface code threshold comparison

Holonomic Adapter Ecosystem (v3.9 carry-forward)

  • L1-L16 adapters registered in ComponentRegistry with create_adapter() factory
  • Per-adapter benchmark suite: latency, memory, throughput (with/without JAX JIT)
  • Plugin discovery via importlib.metadata entry points

Type Safety Cleanup (M2)

  • Removed 235 unnecessary type: ignore comments (260 -> 25)
  • Remaining 25 are justified: CuPy type aliases, optional imports, private method access

GPU SNN Training with Surrogate Gradients

  • sc_neurocore.training — PyTorch-based differentiable SNN training module
  • 3 surrogate gradient functions: FastSigmoid (Zenke 2018), SuperSpike (Zenke 2021), ATan (Fang 2021)
  • LIFCell, RecurrentLIFCellnn.Module LIF neurons with autograd through spikes
  • SpikingNet — multi-layer feedforward SNN with spike-count and membrane readout
  • to_sc_weights() — export trained float weights to [0,1] range for SC bitstream deployment
  • 3 loss functions: spike count cross-entropy, membrane cross-entropy, spike rate MSE
  • train_epoch() / evaluate() — training loops with temporal unrolling
  • examples/mnist_surrogate/train.py — MNIST benchmark (~95% accuracy, 10 epochs)
  • 31 tests covering surrogates, modules, and training loops
  • Requires pip install sc-neurocore[training] or sc-neurocore[research]

[3.10.0] - 2026-03-09

MNIST-on-FPGA Demo

  • End-to-end pipeline: examples/mnist_fpga/demo.py — train (sklearn digits), PCA 64→16, quantise Q8.8, stochastic computing inference, Verilog weight export
  • Float 94.2%, Q8.8 94.2%, SC 94.0% (L=1024, sign-magnitude encoding)
  • Resource estimate: 16→10 config = ~56K LUTs (fits Artix-7 100T)
  • hdl/sc_dense_matrix_layer.v — per-neuron weight dense layer for classification

Vivado Tooling

  • tools/vivado_impl.tcl — non-project flow: synth → place → route (250 MHz default)
  • tools/vivado_report.py — parse timing/utilization/power reports to JSON

Tutorial

  • docs/tutorials/fpga_in_20_minutes.md — 6-section FPGA deployment tutorial

Paper

  • JOSS paper updated to submission-ready state (paper/paper.md)
  • 12 references with DOIs, MNIST demo results, Brian2 comparison, formal verification

Documentation Overhaul

  • README: benchmarks section (Rust SIMD, Brian2 comparison, Yosys synthesis)
  • README: all 10 HDL modules listed with descriptions
  • Zenodo DOI updated to 10.5281/zenodo.18906614
  • CITATION.cff, .zenodo.json: DOI, version, author corrections
  • CONTRIBUTING.md, VALIDATION.md, getting-started.md: test counts, Python version
  • Yosys MODULES list updated (10 modules)

Fixes

  • Zenodo author list corrected (sole author: Miroslav Šotek)
  • DOI badge in README points to latest Zenodo record

[3.9.1] - 2026-03-08

Benchmarks

  • 20-variant Brunel translator suite: comprehensive characterization of SC-NeuroCore against Brian2 across neuron models (LIF, Izhikevich, homeostatic), timing variants, synapse types (STDP, dot product, Sobol bitstream), layer architectures (JAX, recurrent, memristive), and acceleration backends (Numba JIT, PyTorch CUDA GTX 1060, vectorized NumPy)
  • V18 Numba JIT: 9.5× speedup over per-neuron Python loop
  • V19 PyTorch CUDA: 8.7× speedup on GTX 1060 6GB
  • V14 Sobol bitstream: 1.04× Brian2 ratio (closest match)
  • 19 translator unit tests (test_brunel_translator.py)
  • Fix BENCHMARKS.md CPU: i5-11600K @ 3.9 GHz (AVX-512, DL Boost)
  • Fix 3 delta-PSC wiring bugs: v_reset omission, RIdt dilution, Poisson-as-current
  • Comprehensive BENCHMARKS.md with 13+ sections and measured numbers
  • Rust Criterion: 31 benchmarks captured (AVX-512)
  • Brian2 2.10.1 SNN comparison: Brunel balanced network head-to-head
  • NeuroBench-aligned metrics: 4 configurations, up to 847 MOP/s
  • v2 vs v3 PyO3 speedup: 7.3× on large dense forward (128→64)
  • Advanced module benchmarks: quantum hybrid, GNN, S-Former, BCI, DVS, chaos RNG
  • Yosys synthesis tooling (tools/yosys_synth.py, tools/yosys_synth.tcl)
  • CuPy 14.0.1 installed for GPU VectorizedSCLayer

Paper

  • Updated JOSS paper with measured Criterion numbers (41.3 Gbit/s pack, 224 Mstep/s LIF)
  • Replaced estimated FPGA claim with Yosys tooling reference

[3.9.0] - 2026-03-06

SCPN Layers

  • L8-L16 pure NumPy layers: 9 new layer files completing the full 16-layer SCPN stack (scpn/layers/l8_phase_field.py through l16_director.py)
  • 16-layer registry: LAYER_REGISTRY dict, create_full_stack() now returns all 16 layers
  • Full integrated step: run_integrated_step() chains L1→L16 with inter-layer coupling

Quantum Error Correction

  • SurfaceCodeShield: d=3 rotated surface code with X/Z stabilizers, syndrome measurement, lookup-table decoding — corrects arbitrary single-qubit errors
  • Extensible to d=5 (encode/decode/syndrome paths support arbitrary odd distance)

Benchmarks

  • Fixed double-step bug in benchmarks/snn_comparison.py (neurons were advanced twice per timestep)
  • Fixed Lava stub notes (requires Loihi 2 hardware)
  • Fixed benchmark_suite.py output path → benchmarks/results/
  • SNN comparison results recorded in docs/benchmarks/BENCHMARKS.md

Formal Verification

  • LIF neuron: hdl/formal/sc_lif_neuron.sby + sc_lif_neuron_formal.v — 5 properties (reset, spike-reset, refractory clamp, counter bound, spike reachability)
  • Bitstream synapse: hdl/formal/sc_bitstream_synapse.sby + sc_bitstream_synapse_formal.v — 4 properties (AND correctness, zero propagation, full-high, input coverage)

Testing

  • 6 cross-layer coupling integration tests (test_scpn_cross_layer.py)
  • 9 surface code QEC tests (test_qec_surface.py)
  • Test count: 945 → 960+

Documentation

  • JOSS paper: updated test count (960), qualified LUT claim, added Brunel/NeuroBench/LFSR bib entries

[3.8.2] - 2026-03-06

Documentation & Adoption

  • BENCHMARKS.md: Populated with 14 real benchmark entries (i5-11600K, NumPy 1.26.4), Rust engine Criterion numbers, comparison context, reproduction instructions
  • JOSS paper draft: paper/paper.md + paper.bib (6 references) — statement of need, architecture, key features, QA
  • End-to-end notebook: notebooks/03_end_to_end_pipeline.ipynb — 7-cell walkthrough (encode→synapse→neuron→VectorizedSCLayer→accuracy analysis)

Testing

  • 18 Hypothesis property-based tests: Bitstream encoding roundtrip, LFSR determinism, neuron output constraints, layer shape invariants, RNG range/shape, recorder accumulation, encoder binary output
  • Test count: 887 → 911 tests passing, 98.41% coverage

Issues Closed

  • 30: Property-based testing with Hypothesis

  • 33: JOSS paper draft

[3.8.1] - 2026-03-06

Enterprise Hardening

  • 11 CI workflows: ci, v3-engine, v3-wheels, benchmark, docs, pre-commit, codeql, scorecard, stale, release, publish — all SHA-pinned, concurrency-grouped
  • Supply chain: Every GitHub Action SHA-pinned (30+ refs), pypa/gh-action-pypi-publish pinned, dependabot groups GH Actions PRs
  • Security: Bandit SAST in CI, dependabot security updates enabled, private vulnerability reporting enabled, CodeQL weekly schedule
  • Branch protection: 6 required status checks (lint, test×2, spdx-guard, build, pre-commit)
  • Dockerfile: Multi-stage build, Python 3.12, non-root user, OCI labels, healthcheck
  • Preflight gate: tools/preflight.py (black + bandit + spdx-guard + pytest), .githooks/pre-push hook
  • Release pipeline: publish.yml (PyPI OIDC trusted publisher, 12 platform wheels), release.yml attaches sdist to GitHub Releases
  • Repo hygiene: .dockerignore, .editorconfig, .gitattributes, CONTRIBUTORS.md, CODEOWNERS, PR template, issue templates (YAML forms), dependabot commit-message prefixes
  • Labels: 22 labels with colors (ci, security, breaking-change, hdl, performance, needs-review, pinned, roadmap, stale)
  • Settings: Delete-branch-on-merge, wiki/projects disabled, OpenSSF Scorecard badge

Lint Enforcement & Python Version

  • ruff check enforced in CI: 258 unused/deprecated imports auto-fixed across 138 files
  • CI test matrix expanded: Python 3.10, 3.11, 3.12 (dropped 3.9 — EOL, autoray/PennyLane incompatible)
  • requires-python bumped to >=3.10: badge, classifiers, black/ruff target-version updated
  • bandit added to [dev] extras: contributors can now make lint after pip install -e ".[dev]"
  • benchmark.yml permissions tightened: permissions: {} at top, scoped per-job
  • SECURITY.md / SUPPORT.md: GitHub Security Advisories link added
  • VALIDATION.md refreshed: 1058 tests, 98% gate, ruff/bandit/spdx-guard/codeql/scorecard gates documented

[3.8.0] - 2026-03-05

Hardening & Documentation

  • Coverage gate raised to 98%: De-omitted 6 modules (chaos/rng, analysis/explainability, physics/wolfram_hypergraph, robotics/swarm, learning/neuroevolution, spatial/*) plus bio/neuromodulation. 34 new tests, 1058 total, 98.10% coverage
  • NumPy 2.x audit: Zero deprecated calls found — codebase fully compatible
  • Full API documentation: 25 new mkdocstrings pages, all 44 subpackages wired into nav. Reorganized into Core / Compiler & Export / Domain Modules / Infrastructure sections
  • Stale issue automation: .github/workflows/stale.yml — weekly sweep, 60+14 day lifecycle, exempt: pinned/security/roadmap
  • CI coverage gate sync: ci.yml and pyproject.toml both enforce fail_under = 98

[3.7.0] - 2026-02-11

Phase 14: Polymorphic Engine -- HDC/VSA, SCPN Petri Nets, Fault-Tolerant Logic

  • HDC/VSA kernel: BitStreamTensor gains xor, xor_inplace, rotate_right, hamming_distance, bundle methods for hyper-dimensional computing on 10,000-bit vectors
  • SIMD fused XOR+popcount: AVX-512 VPOPCNTDQ / AVX2 / portable dispatch for hamming distance hot path
  • PyBitStreamTensor: New #[pyclass] exposing full HDC algebra to Python (13 methods)
  • HDCVector: High-level Python class with operator overloading (*=bind, +=bundle, .similarity(), .permute())
  • PetriNetEngine: Stochastic Colored Petri Net engine wrapping two DenseLayer instances for Places->Transitions->Places firing
  • Fault-tolerant logic: Boolean logic with stochastic redundancy (1024-bit) survives 40%+ bit-flip rates
  • 44 new tests: 15 Rust integration + 20 Python HDC + 9 Python Petri Net
  • 2 demos: HDC symbolic query ("Capital of France?"), safety-critical Boolean logic with error sweep
  • Comprehensive study: docs/research/SC_NEUROCORE_V3.7_POLYMORPHIC_ENGINE_STUDY.md

[3.6.0] - 2026-02-10

Phase 12: Fused Dense Pipeline + Fast PRNG + Batch Forward

  • Fused encode+AND+popcount: forward_fused() eliminates intermediate input bitstream materialization
  • Fast PRNG switch: xoshiro256++ for dense fast-path input encoding and numpy batch encoding
  • Batched dense API: DenseLayer.forward_batch_numpy() processes N samples in one FFI call
  • New diagnostics: criterion benches for fused dense, encode+popcount, batch dense, and PRNG throughput
  • Version/test/docs update: bumped to 3.6.0 with Phase 12 test suite and migration notes

[3.5.0] - 2026-02-10

Phase 11: SIMD Pipeline Acceleration

  • SIMD fused AND+popcount: AVX-512 VPOPCNTDQ accelerated dense inner loop with AVX2 fallback
  • SIMD Bernoulli encode: AVX-512BW/AVX2 threshold compare path for packed Bernoulli generation
  • Flat weight storage: Contiguous [neuron][input][word] packed layout for cache-friendly access
  • Zero-allocation LIF batch: Pre-allocated numpy outputs for batch LIF APIs
  • Criterion benchmarks: Added fused-and-popcount and SIMD Bernoulli diagnostics

[3.4.0] - 2026-02-10

Phase 10: SIMD Pack, LIF Optimization, Rayon Guard

  • SIMD pack vectorization: AVX-512/AVX2/portable fast packing (closes 6x Blueprint target)
  • Branchless LIF mask: Eliminates branches in fixed-point sign extension
  • batch_lif_run_multi(): Parallel multi-neuron batch execution via rayon
  • Rayon work threshold: Avoids thread-pool overhead at small input counts
  • Criterion benchmarks: Added pack_fast, pack_dispatch, lif_100k_steps

[3.3.0] - 2026-02-10

Phase 9: Fast Bernoulli, Fused AND+Popcount, Zero-Copy Prepacked

  • bernoulli_packed_fast: 8x less RNG bandwidth via byte-threshold encoding
  • Fused AND+popcount: Eliminates intermediate buffer allocation in neuron compute
  • forward_prepacked_numpy(): True zero-copy from numpy 2D uint64 arrays
  • set_num_threads(): Rayon thread pool configuration for tuning parallelism
  • Criterion benchmarks: Added bernoulli_packed_fast benchmark

[3.2.0] - 2026-02-10

Phase 8: Benchmark CI, Single-Call Dense Forward, Parallel Encoding

  • Criterion Benchmarks: Expanded suite with bernoulli encoding comparison and dense forward variants
  • Benchmark CI: Automated criterion runs with artifact upload
  • DenseLayer.forward_numpy(): Single FFI call with numpy input/output plus parallel encoding
  • Parallel batch_encode_numpy: Rayon-parallelized probability encoding
  • Repo cleanup: Added local .gitignore for generated artifacts

[3.1.0] - 2026-02-10

Phase 7: Dense Forward Optimization & PyPI Publishing

  • Direct Packed Bernoulli: bernoulli_packed() eliminates Vec<u8> intermediate allocations
  • Parallel Encoding: DenseLayer.forward_fast() parallelizes input encoding with per-input RNGs
  • Pre-packed Forward: DenseLayer.forward_prepacked() accepts pre-encoded numpy/list inputs and skips encoding
  • batch_encode_numpy: Returns a 2-D numpy array instead of nested Python lists
  • PyPI Publishing: Added automated wheel upload on v3.* tags via Trusted Publisher workflow
  • Updated Benchmarks: Added dense fast and prepacked benchmark variants

[3.0.0] - 2026-02-10

Phase 6: Performance Optimization & Stable Release

  • NumPy Zero-Copy: pack_bitstream_numpy(), popcount_numpy(), unpack_bitstream_numpy() — eliminate FFI marshalling overhead
  • Batch Operations: batch_lif_run(), batch_lif_run_varying(), batch_encode() — process arrays in single FFI calls
  • Verilator CI: Co-simulation tests run automatically on Ubuntu runners
  • Updated Benchmarks: Formal report showing true kernel performance with zero-copy interop
  • Bridge Version Fix: bridge/pyproject.toml version now matches engine

Phase 5: Release Candidate (3.0.0-rc.1)

  • IR Python Bridge: Full PyO3 bindings for ScGraphBuilder, ScGraph, verify, print, parse, emit_sv
  • Co-sim Activation: Verilator compilation + simulation when available; graceful skip preserved
  • Wheel CI: Cross-platform wheel builds (Linux/macOS/Windows x Python 3.9-3.12)
  • Benchmark Report: Formal v2-vs-v3 performance comparison with Blueprint section 8 targets
  • IR Demo: Real end-to-end Python->IR->verification->SystemVerilog demo

Phase 4: HDL Compilation Pipeline (3.0.0-beta.1)

  • SC IR: Rust-native intermediate representation with 11 op types
  • SV Emitter: Compile IR graphs to synthesizable SystemVerilog
  • Co-sim: Verilator-based verification against Rust golden model
  • CI: Expanded test coverage to include all Phase 2-4 Python tests

Phase 3: Integration & Hardening

  • SSGF-compatible Kuramoto solver (step_ssgf, run_ssgf)
  • Property-based testing with proptest (12 property tests)
  • Multi-head attention (forward_multihead)
  • SC-mode GNN (forward_sc)
  • End-to-end training demo
  • Comprehensive rustdoc

Phase 2: Differentiation & Acceleration

  • Surrogate gradient LIF (FastSigmoid, SuperSpike, ArcTan)
  • DifferentiableDenseLayer for backpropagation
  • Stochastic attention (rate + SC mode)
  • Graph neural network layer
  • Kuramoto oscillator solver
  • Criterion benchmarks + v2/v3 comparison

Phase 1: Foundation

  • Rust engine with PyO3 bindings
  • Bit-exact LFSR, LIF neuron, dense layer
  • SIMD dispatch (AVX-512, AVX2, NEON, portable)
  • Python bridge with v2-compatible API
  • Equivalence test suite

[2.2.0] - 2026-02-09

Added

  • Module Discoverability: Populated 36 stub __init__.py files with proper __all__ exports and lazy imports. Every package now supports from sc_neurocore.X import Y without touching internals.
  • MkDocs API Documentation: Added mkdocs.yml with mkdocstrings plugin, docs/index.md, docs/getting-started.md, docs/architecture.md, and 17 API reference stubs in docs/api/.
  • Examples Directory: 6 runnable example scripts demonstrating bitstream encoding, neuron layers, vectorized inference, SCPN stack, HDL generation, and ensemble consensus (examples/0106).
  • Module Docstrings: Added module-level docstrings to pipeline/ingestion.py, pipeline/training.py, utils/model_bridge.py, ensembles/orchestrator.py.

Changed

  • Print → Logging: Converted 60+ print() calls across 25 source modules to structured logging with getLogger(__name__) and %-style formatting. Dashboard and drivers intentionally excluded (stdout by design).
  • CI Coverage Threshold: Raised --cov-fail-under from 50 to 97 in .github/workflows/ci.yml to match actual coverage.
  • Version bump: 2.1.0 → 2.2.0.

Fixed

  • Unused Imports: Removed dead imports from 7 files (bio/uploading.py, core/replication.py, core/immortality.py, export/onnx_exporter.py, dashboard/text_dashboard.py, hdl_gen/verilog_generator.py, viz/web_viz.py).
  • Input Validation: VectorizedSCLayer.forward() now raises ValueError on wrong-shape input instead of silently producing garbage.
  • File I/O Error Handling: onnx_exporter.py, immortality.py, verilog_generator.py, and replication.py now catch OSError on file operations and log meaningful messages.

Security

  • Pickle Allowlist: Replaced wildcard 'numpy.core.numeric': {'*'} with explicit {'_frombuffer', 'scalar'} in core/immortality.py.
  • Path Traversal Prevention: core/replication.py now validates that the destination directory is within or below the working directory via os.path.realpath() + os.path.relpath().

[2.1.0] - 2026-02-08

Fixed (Critical)

  • HDL Bitstream Encoder Seed Decorrelation: All parallel encoders shared hardcoded seed 0xACE1, producing correlated bitstreams and breaking SC multiplication (P(x AND x) = P(x) instead of P(x)*P(w)). Added per-instance SEED_INIT parameter with prime-stride offsets (input: 0xACE1 + i*7, weight: 0xBEEF + i*13).
  • HDL Missing Port Connections: noise_in and v_out were floating on LIF neuron instances in sc_dense_layer_core.v. Connected via wire buses.
  • HDL Duplicate Port: Removed duplicate .stream_len in sc_neurocore_top.v.
  • Fixed-Point Overflow: FixedPointLIFNeuron now applies _mask() for proper two's complement overflow wrapping on membrane potential.

Added

  • GPU Acceleration Backend (accel/gpu_backend.py):
    • CuPy/NumPy dual-path with automatic GPU detection and CPU fallback.
    • gpu_pack_bitstream(), gpu_vec_and(), gpu_popcount(), gpu_vec_mac().
    • VectorizedSCLayer auto-selects GPU when CuPy is available.
  • Performance Benchmark Suite (scripts/benchmark_suite.py):
    • 14 benchmarks across 5 categories (scalar, packed ops, dense layer, full pipeline, GPU).
    • --full mode (10x iterations), --markdown output to BENCHMARKS.md.
  • CI/CD Pipeline (.github/workflows/sc-neurocore-ci.yml):
    • Lint (black + mypy), Test (Python 3.9/3.11/3.12 matrix, coverage >= 60%), Build (wheel + install verification).
  • Co-Simulation Harness:
    • hdl/tb_sc_lif_neuron.v: Verilog testbench reading stimuli.txt, writing results_verilog.txt for bit-exact comparison.
    • scripts/cosim_gen_and_check.py: CLI driver with --generate and --check.
  • Bit-True Python Models:
    • FixedPointLFSR: 16-bit maximal-length LFSR (period 65535).
    • FixedPointBitstreamEncoder: LFSR + unsigned comparator.
    • _mask(): Two's complement sign-extension with overflow wrap.
  • Public API Surface: Root __init__.py exports 28 symbols across 7 subpackages. All subpackage __init__.py files populated.
  • Tiered Module System: 43 subpackages categorised as core (7), research (24+), or contrib (5). Install extras: [gpu], [research], [contrib].
  • Behavioural Equivalence Tests: 29 tests covering LFSR, encoder, LIF neuron, full pipeline, and bit-width masking.
  • GPU Backend Tests: 17 tests covering all GPU primitives and VectorizedSCLayer integration.

Changed

  • Version bump: 2.0.0 -> 2.1.0.
  • pyproject.toml: Added tool configs (pytest, black, mypy), tiered extras.
  • VectorizedSCLayer: Refactored to use GPU backend with CPU fallback.

[2.0.0] - 2026-01-12

Added

  • Sapience & Sentience (v2.2.0):
    • MetaCognitionLoop: Computational self-awareness and self-modeling.
    • NeuromodulatorSystem: Dopamine/Serotonin emotional state modulation.
    • NeuroArtGenerator: Generative AI for internal state expression.
    • AsimovGovernor: Ethical constraint system (Three Laws).
    • MindDescriptionLanguage (MDL): Substrate-independent soul serialization.
    • DigitalSoul: Persistence and reincarnation protocols.
    • VonNeumannProbe: Code-level self-replication.
  • Galactic Scale (v2.1.0):
    • InterstellarDTN: Long-range delay-tolerant networking.
    • DysonPowerGrid: Stellar-scale energy management.
    • KardashevEstimator: Civilization Type metrics.
    • DarkForestAgent: Game-theoretic survival logic.
    • MPIDriver: Distributed cluster-scale simulation.
    • SNNGeneticEvolver: Automated architecture optimization.
  • Transcendent & Omega (v2.0.5):
    • HeatDeathLayer: Entropy-survival computing.
    • PlanckGrid: Spacetime lattice theoretical limits.
    • HolographicBoundary: 3D-to-2D info mapping (AdS/CFT).
    • EverettTreeLayer: Many-Worlds branching solver.
    • WolframHypergraph: Graph-rewrite universe evolution.
    • CategoryTheoryBridge: Unified mathematical functors.
    • FormalVerifier: SMT-based safety proofs.
  • Exotic & Frontiers (v2.0.0):
    • VectorizedSCLayer: 64-bit packed JIT-accelerated core.
    • QuantumStochasticLayer: VQC qubit rotation bridge.
    • StochasticTransformerBlock: Spike-driven attention.
    • MemristiveDenseLayer: Hardware-aware analog simulation.
    • StochasticCPG: Robotic locomotion oscillators.
    • MyceliumLayer: Fungal network dynamics.
    • BCIDecoder: Neural signal (EEG) interface.
    • DVSInputLayer: Event Camera (AER) processing.
    • EnergyProfiler: 45nm Energy/CO2 estimation.
    • WatermarkInjector: IP protection security backdoors.

Optimized

  • BitstreamAverager: 6x speedup using running sum algorithm.
  • BitstreamEncoder: Added Sobol Sequence (LDS) mode for faster convergence.

Fixed

  • Fixed f-string syntax in Verilog generator.
  • Fixed dimension mismatch in Attention mechanism.
  • Addressed Windows encoding issues in documentation generation.

[1.0.0] - 2025-12-03

  • Initial Release: Stochastic Neurons, Synapses, and Basic Bitstream Utilities.