Falandays
What changes locally?
The Falandays model maintains membrane activity, binary spikes, recurrent weights and one activity target per node. The default model has unsigned excitatory sources, leak 0.25, threshold multiplier 2, synaptic learning rate 1 and target learning rate 0.01. Its default recurrent connectivity probability is 0.1.
from brainlesslab import CompositionSpec, NodeSpec, TaskSpec, profile, resolve
resolved = resolve(profile(CompositionSpec( node=NodeSpec("falandays", parameters={"leak": 0.25}), task=TaskSpec("delayed_cue"), count=32,)))print(resolved.targets[0].model_config)The resolved model configuration contains the submitted leak override and all model defaults. Construction then uses this complete configuration.
Construct covered ports
The default port_wiring="fixed_degree" gives each active receptor a fixed number
of distinct destination nodes. Each effector selects an equally sized population
of source nodes. The degree is round(link_p * count), with a minimum of one for
positive probabilities. At the default probability, 64 nodes give six connections
per port. Node identities are sampled independently per port; populations may overlap.
input_link_p can declare a probability for each receptor. A zero probability
disables its connections. A zero link_p disables output connections and default
input connections. Sensory weights retain input_weight; effectors retain mean-spike
decoding. Recurrent connectivity continues to use independent Bernoulli draws.
Select port_wiring="bernoulli" to use the earlier independent per-edge port
sampling. This mode preserves its original construction draw order and permits
empty ports. Its optional repair_masks=True connects empty effectors and supplies
sensory input to otherwise isolated unsigned nodes; it does not cover every receptor.
The new default changes seeded construction. Earlier records retain their captured
source and resolved configuration. For a new run using the earlier construction
policy, declare port_wiring="bernoulli" explicitly. Pair comparisons using the same
policy, construction key and seed; changing policy can also change recurrent weight
draws. Historical trajectory fixtures retain their recorded initial states.
Read the update order
Each step first copies the old spikes. The membrane retains 1 - leak of its
previous value, then receives recurrent drive from old spikes and encoded task input.
Source signs apply to recurrent drive in the optional Dale mode. Optional declared
noise is added before thresholding; rectification is an explicit option.
A node fires when its activity is greater than or equal to its target multiplied by the threshold multiplier. Firing subtracts the threshold once; it does not reset the membrane to zero.
Plasticity uses the resulting membrane error relative to the target. Synaptic changes are distributed over connected sources that fired in the previous step. The target moves by its learning rate times that error and has a declared lower bound. Dale mode changes the inhibitory update sign and clips weight magnitudes at zero. Default unsigned mode uses its own equation.
These local changes do not use task correctness or diagnostic labels. Effectors are means of selected binary node spikes; an empty selected set returns zero.
Freeze and reset deliberately
freeze_weights stops synaptic updates while target adaptation continues.
freeze_plasticity stops both. A full trial reset restores initial weights,
targets, membrane, spikes and learning flags.
Noise, initialisation mode, source-sign policy and input connectivity are scientific choices, not backend tuning knobs. Dense destination/source matrices remain the runtime baseline even when their masks are sparse.
Check the equation boundary
uv run pytest python/tests/test_falandays.pyThese checks cover the active Python equations, reset and ownership. Historical Falandays validation covers declared reference trajectories of the earlier implementation at its recorded source revision; it does not qualify every Python seed or backend. See version history for that boundary.
Continue with Tracking, a paired plasticity comparison or platform limits.