From 0df834108ac41db7747d7930642ffe093e3262ae Mon Sep 17 00:00:00 2001 From: ocrampal Date: Sun, 21 Jun 2026 10:16:34 +0200 Subject: [PATCH] no ecb messages --- .../2026-06-19-biological-reference-v10.md | 57 +++++++++++++++++++ .../2026-06-19-tripartite-synapse_v10.md | 40 ++++++++++--- 2 files changed, 89 insertions(+), 8 deletions(-) diff --git a/elements/neuron/appunti/2026-06-19-biological-reference-v10.md b/elements/neuron/appunti/2026-06-19-biological-reference-v10.md index 9a9b3c7..1d2d291 100644 --- a/elements/neuron/appunti/2026-06-19-biological-reference-v10.md +++ b/elements/neuron/appunti/2026-06-19-biological-reference-v10.md @@ -274,3 +274,60 @@ The distinction matters biologically: a private reserve guarantees a component s (the bouton can refill its RRP from its own vesicles even when lactate is scarce), while a contested supply couples a component's fate to its neighbours' demands (operational budget fails first where many active synapses compete for the same lactate). + +--- + +## PRE ↔ POST interaction: local computation, message-only coupling + +The presynapse and postsynapse never read each other's internal state. They interact only +by writing to and reading from shared cleft channels. Each side computes entirely locally on +what it has: its own variables plus whatever signals have arrived in the cleft. This is the +message-passing realization of the locality principle. + +**Forward channel — glutamate (PRE → POST and ASTRO).** The presynapse writes glutamate via +NT_flux. The postsynapse reads it (AMPA, NMDA) and the astrosynapse reads it (clearance, +mGluR5). The astrosynapse clears it. PRE never knows whether POST responded — it only emits. + +**Gate channel — astro_Dserine (ASTRO → POST).** The astrosynapse writes D-serine; the +postsynapse reads it as the obligatory NMDA co-agonist. POST cannot open NMDA without this +arrived signal, but it does not read the astrocyte's state — only the delivered D-serine. + +**Backward channel + — retro_NO (POST → PRE).** When the postsynapse's NMDA opens (Mg²⁺ +ejected, D-serine present, glutamate bound), nNOS — physically tethered to the NMDA receptor +through PSD-95 — synthesises nitric oxide (and, on a slower timescale, BDNF is released). +These diffuse retrogradely to the presynapse. Biologically this is the classic retrograde +messenger of LTP: it tells the bouton that its release landed on a postsynapse that genuinely +responded. In the model, POST emits `retro_NO` proportional to its own NMDA-driven calcium — +computed purely from POST's local state — and PRE reads it as `retro_NO_local`. + + `retro_NO_local` is exactly the grounding of the presynaptic endurance signal. The + presynapse's local success proxy is "I was releasing strongly" (`pre_fast_trace` high). On + its own that only says the bouton was working hard, not that the work mattered. `retro_NO` + adds the missing confirmation — that the postsynapse responded — without PRE ever reading + POST's calcium. So PRE deposits endurance need as `pre_fast_trace × (1 + retro_NO_local)`: + strong release that was confirmed effective makes the strongest claim that fuel, not + futility, was what interrupted a forming success. retro_NO is short-lived (NO degrades and + diffuses within seconds), so the channel decays fast — confirmation must be recent to count. + +**Backward channel − — retro_eCB (POST → PRE).** When the postsynapse is strongly +depolarised, it synthesises endocannabinoids (2-AG, anandamide) that diffuse retrogradely and +bind presynaptic CB1 receptors, suppressing release. This is depolarisation-induced +suppression of excitation (DSE) — a homeostatic negative feedback: an over-driven postsynapse +tells the presynapse to release less. In the model, POST emits `retro_eCB` from its own +membrane potential, and PRE reads it as `retro_eCB_local`, which reduces the release drive +`sat(...) × (1 - retro_eCB_local)`. Again POST computes from its own state; PRE adjusts from +the arrived signal; neither reads the other's interior. + +The two backward channels are opposite-signed messages the postsynapse sends about its own +condition: retro_NO says "your input was effective — worth sustaining," retro_eCB says "I am +saturated — ease off." Together with the forward glutamate and the D-serine gate, they make +the synapse a fully message-coupled system of locally-computing components. + +**Why RRP refill is in NOT_AP only.** During an AP the bouton releases — RRP depletes. Refill +(VATPase reloading vesicles from the reserve pool) is a recovery process that proceeds between +spikes. Placing `fill(RRP, ...)` only in the NOT_AP context makes the AP context pure +depletion and the NOT_AP context pure recovery. A consequence falls out for free: during +sustained high-frequency firing there are many AP steps and few NOT_AP steps, so RRP depletes +faster than it recovers — short-term depression deepens with frequency, with no explicit +depression rule. The release itself is throttled further when budget is low (VATPase refill +is energy-limited), coupling metabolic state to the depth of depression. diff --git a/elements/neuron/appunti/2026-06-19-tripartite-synapse_v10.md b/elements/neuron/appunti/2026-06-19-tripartite-synapse_v10.md index d5fb9c8..de43655 100644 --- a/elements/neuron/appunti/2026-06-19-tripartite-synapse_v10.md +++ b/elements/neuron/appunti/2026-06-19-tripartite-synapse_v10.md @@ -30,6 +30,13 @@ NIGHT variables LOCALITY RULE every evaluation uses only local state + signals that have arrived. no component reads another compartment's internal state. + +CLEFT MESSAGE CHANNELS (the only PRE/POST/ASTRO interaction — each writes, others read) + glutamate PRE → POST, ASTRO (forward transmitter; cleared by ASTRO) + astro_Dserine ASTRO → POST (NMDA co-agonist gate) + retro_NO POST → PRE (+) (NO/BDNF: "release reached a responsive target") + retro_eCB POST → PRE (−) (endocannabinoid: "over-driven, suppress release" = DSE) + Each channel decays/clears; a component reads a channel into a local copy and computes locally. ``` --- @@ -46,7 +53,7 @@ sat(x, K) = x / (K + x) ``` K_release K_AMPA K_Dserine -Mg_eject Ca_STP Ca_TAG +Mg_eject Ca_STP Ca_TAG eCB_thr elig dop_thr tag_thr tag_expiry traj_thr endur_thr spillover inactivation overload @@ -96,24 +103,34 @@ that neighbours compete for. ## PRE ``` +// Backward messages from POST (computed by POST from its own local state, read here): +// retro_NO (+) : POST responded — release reached a responsive target +// retro_eCB (−) : POST over-driven — suppress release (DSE) +// PRE reads these as arrived signals; it never reads POST's internal state. + DAY | AP: if pre_budget < release_cost: suppress(NT_flux) - if pre_fast_trace > traj_thr: // LOCAL success: I released strongly - pre_endurance_need += pre_fast_trace × (1 + retrograde_local) + // interrupted LOCAL success: I was releasing strongly (own fast_trace), + // confirmed by retro_NO that POST actually responded + if pre_fast_trace > traj_thr: + pre_endurance_need += pre_fast_trace × (1 + retro_NO_local) exit pre_fast_trace += spike_Ca(input_freq); pre_fast_trace *= decay(100ms) - drive = sat(pre_fast_trace, K_release) + drive = sat(pre_fast_trace, K_release) × (1 - retro_eCB_local) // DSE brake from POST if RRP > 0: NT_flux = RRP × drive glutamate += NT_flux·Δt; RRP -= NT_flux·Δt; pre_budget -= NT_flux·fusion_cost - fill(RRP, pre_structure.slot_ceiling, pre_structure.refill_ceiling, vatpase_cost, pre_budget) - if glutamate > spillover: drive *= brake // output brake (not a fill) + if glutamate > spillover: drive *= brake // autoreceptor/astro brake (output) + // NO fill here — AP only depletes RRP; recovery happens in NOT_AP + // (sustained high-frequency firing therefore deepens short-term depression) DAY | NOT_AP: pre_fast_trace *= decay(100ms); pre_endurance_need *= decay(min) - refill(pre from astro_lactate[syn] + axon_ship_pre) // contested: lactate + shipment - fill(RRP, pre_structure.slot_ceiling, pre_structure.refill_ceiling, vatpase_cost, pre_budget) + retro_NO_local = retro_NO; retro_NO *= decay(s) // receive + channel clears (NO short-lived) + retro_eCB_local = retro_eCB; retro_eCB *= decay(s) // receive + channel clears + refill(pre from astro_lactate[syn] + axon_ship_pre) // contested: lactate + shipment + fill(RRP, pre_structure.slot_ceiling, pre_structure.refill_ceiling, vatpase_cost, pre_budget) // private reserve if pre_fast_trace > elig: pre_possible_tag += pre_fast_trace pre_possible_tag *= decay(s); dopamine *= decay(ms) if dopamine > dop_thr and pre_possible_tag > tag_thr: @@ -137,6 +154,13 @@ DAY | NOT_bAP: // SOURCE 2 — NMDA: large Ca if local coincidence if Vm > Mg_eject and astro_Dserine > thr and glutamate > 0: post_fast_trace += NMDA_Ca(glutamate)·rise_speed(); post_budget -= NMDA_cost + retro_NO += NO_emit(post_fast_trace); post_budget -= NO_synth_cost + // POST → PRE (+): nNOS coupled to NMDA emits NO/BDNF — "your release was effective" + + // backward brake to PRE (−): strong depolarization → endocannabinoid (DSE) + if Vm > eCB_thr: + retro_eCB += eCB_emit(Vm); post_budget -= eCB_synth_cost + // POST → PRE (−): "I am over-driven — reduce release" post_fast_trace *= decay(ms)