diff --git a/elements/neuron/appunti/2026-06-29-tripartite-synapse_v17.md b/elements/neuron/appunti/2026-06-29-tripartite-synapse_v17.md index 0ccdabe..3e744c6 100644 --- a/elements/neuron/appunti/2026-06-29-tripartite-synapse_v17.md +++ b/elements/neuron/appunti/2026-06-29-tripartite-synapse_v17.md @@ -476,7 +476,10 @@ rather than spike-punctate, so POST's action-context is "no descending AP arrivi channels and responds to whatever glutamate has arrived. Three calcium sources feed the fast trace — AMPA current (small Ca, begins ejecting the NMDA Mg block) and NMDA (large Ca, scaled by the local coincidence of depolarization + astrocyte D-serine + glutamate). The action deposits the calcium -trace and emits the two retrograde messages. Crucially POST's ACTION **continues through the soma's +trace and emits **NO** — the fast retrograde, tracking the NMDA calcium transient, confirming the +response reached a responsive target. (The other retrograde, **eCB**, is slow — produced from +*accumulated* depolarization and emitted in PREPARATION as an integrated brake on the next release, +not per-response.) Crucially POST's ACTION **continues through the soma's refractory period**: the refractory belongs to the soma, not to POST — from POST it is simply NOT_AP, so the spine keeps responding and integrating, charging up so the neuron is ready to fire again once its refractory ends. @@ -538,9 +541,8 @@ DAY | NOT_AP: // respond to arrived if Vm > Mg_eject and glutamate > 0: // SOURCE 2 NMDA (Mg relieved) post_fast_trace += NMDA_Ca(glutamate) × sat(astro_Dserine, K_Ds)·rise_speed(); post_budget -= NMDA_cost // @cut affords: THE pre-post-astro COINCIDENCE — joint three-component read (glutamate × depolarisation × D-serine gain); the meeting-site owning none of its inputs [ms, three-component space] // D-serine sets the GAIN (how strongly POST responds), not a coincidence gate — dialed by the astrocyte - retro_NO += NO_emit(post_fast_trace); post_budget -= NO_synth_cost // EMIT + "responsive target" - if Vm > eCB_thr: - retro_eCB += eCB_emit(Vm); post_budget -= eCB_synth_cost // EMIT − brake + retro_NO += NO_emit(post_fast_trace); post_budget -= NO_synth_cost // EMIT + "responsive target" (fast: tracks the NMDA Ca transient) + // (eCB is NOT emitted here — it is slow/integrated, produced in PREPARATION from accumulated depolarisation) // ===== RECOVERY (AP: brief descending-spike arrival — restore + boost traces) ===== DAY | AP: // soma's spike arrives (ms event), driven from above @@ -551,6 +553,10 @@ DAY | AP: // soma's spike arriv // ===== PREPARATION (NOT_SPIKE_TRAIN: shape the next response AND the NIGHT) ===== DAY | NOT_SPIKE_TRAIN: // sustained quiet (emitted by NEURON — above SOMA) + // slow retrograde: eCB is produced from ACCUMULATED depolarisation (integrated, not per-response) — + // a brake on the NEXT release, so it is prepared here, not deposited in the action + if post_fast_trace > eCB_thr: + retro_eCB += eCB_emit(post_fast_trace); post_budget -= eCB_synth_cost // EMIT − brake (slow, integrated) // for NIGHT: climb the tag; dopamine is the integrable coincidence (#3) if post_fast_trace > Ca_TAG: post_possible_tag += post_fast_trace; post_budget -= pka_cost // @cut affords: participation / consistency of co-activity (running average) [min] if dopamine > dop_thr and post_possible_tag > tag_thr: @@ -784,20 +790,26 @@ downstream components receive depends on the soma having been tagged. // NOTE SOMA endurance fires only on FUEL shortfall (budget < ap_cost); // refractory / sub-threshold are timing limits, not endurance. Own-state proxy. -// THE THREE CATEGORIES (same at DAY and NIGHT; here DAY, subject = the branch input / spike): -// ACTION fire (the defining deed) — context AP -// RECOVERY restore the ability to fire again: refractory de-inactivation + mito replenish — -// the alter-ego of the spike, runs in NOT_AP -// PREPARATION shape the next spike: alignment, adaptation, tag-climb (for NIGHT), ship, decay +// THE THREE CATEGORIES (SOMA is an INITIATOR — it fires from its OWN integration crossing its OWN +// threshold, so nothing external licenses its ACTION. It runs CONTINUOUS and the ACTION⇄RECOVERY +// alternation is decided INTERNALLY by its own condition. It EMITS AP and REFRACTORY as signals of +// these internal phases — it cannot be contextualized by them, since it is their source. Only its +// PREPARATION is externally contextualized, by the NEURON's NOT_SPIKE_TRAIN. See logic_principles §1.): +// ACTION (CONTINUOUS; internal guard: branch_Vm > threshold and can_fire) fire — the defining +// deed. Self-triggered. Emits AP. +// RECOVERY (CONTINUOUS; internal: not firing) restore the ability to fire again: refractory +// de-inactivation + mito replenish — the alter-ego of the spike. Emits REFRACTORY. +// PREPARATION (NOT_SPIKE_TRAIN, from the NEURON) shape the next spike: alignment, adaptation, +// tag-climb (for NIGHT), ship, decay. // Pattern: (ACTION ⇄ RECOVERY) × many spikes, then PREPARATION. // ONE spike's fast trace feeds TWO preparation destinations: nuclear-Ca → tag (for NIGHT), // inactivation/adaptation/alignment → next-spike timing (this scope). -// ===== ACTION ===== -DAY | AP: // integrate + fire (the defining deed) +// ===== ACTION (CONTINUOUS — self-triggered by internal threshold-crossing; emits AP) ===== +DAY | CONTINUOUS · action: // integrate + fire (the defining deed) threshold = soma_structure.baseline_threshold × (1 + soma_adaptation) × neuromod(NE, ACh) can_fire = soma_Na_inactivation < inactivation - if branch_Vm > threshold and can_fire: + if branch_Vm > threshold and can_fire: // INTERNAL guard licenses the action (no external context) if soma_budget < ap_cost: // FUEL shortfall → endurance (a PREPARATION deposit) if soma_fast_trace > traj_thr and soma_fast_trace_rising: soma_endurance_need += soma_fast_trace @@ -813,8 +825,8 @@ DAY | AP: // integrate + fire ( soma_budget -= creb_cost soma_emitted_activity += 1; soma_emitted_structure = soma_structure // NEURON sums these -// ===== RECOVERY (restore the ability to fire; alter-ego of AP; runs in NOT_AP) ===== -DAY | NOT_AP: // de-inactivate + replenish +// ===== RECOVERY (CONTINUOUS — self-entered when not firing; emits REFRACTORY) ===== +DAY | CONTINUOUS · recovery: // de-inactivate + replenish (soma's own refractory dynamics) soma_budget += fill(soma_budget, soma_budget_ceiling, mito_output, 0, soma_budget) // mito replenish recovery = base_recovery × (1 + soma_refractory_alignment) soma_Na_inactivation *= decay(τ_Na / recovery) // refractory recovery (sped by alignment) @@ -840,7 +852,7 @@ DAY | NOT_SPIKE_TRAIN: // contend WITHIN (participation arbitrates); material contends BETWEEN components (recovery). // ===== ACTION (build ⇄ release; participation gates direction; tag funds build, persists across cycles) ===== -NIGHT | build or release: +NIGHT | NON_REM_1: if soma_tag > tag_expiry and soma_participation ≥ MEDIUM: // BUILD (slice) Δ = min(slot_batch, soma_material, soma_energy·f_cap, soma_tag) × soma_participation soma_structure += Δ; soma_material -= Δ; soma_energy -= Δ·assembly_cost @@ -856,7 +868,7 @@ NIGHT | build or release: // else: HOLD — tag waits for its pattern // ===== RECOVERY (ROOT production + acquire/free material in CONTENTION; ship to feed the pattern) ===== -NIGHT | produce + import + free: +NIGHT | NON_REM_2: // (SOMA also ROOT-produces here) soma_material += CREB_synth(soma_tag)·Δt_cycle // ROOT: produce material — recoverable soma_energy += mito_synth()·Δt_cycle // ROOT: produce energy — NOT recoverable night_energy_spent += mito_synth()·Δt_cycle @@ -869,7 +881,7 @@ NIGHT | produce + import + free: soma_structure += min(soma_maint, maint_cost) // hold up what is used // ===== PREPARATION (REPLAY the fire — SAME machinery as day ACTION; ignites the pattern; multi-timescale) ===== -NIGHT | replay-fire + measure + prime: +NIGHT | REM: // (SOMA replay-fires: ignites the pattern) // FAST: replay-fire (probe); ignites the pattern down the day pathway spont = intrinsic_fluctuation() if spont > soma_spont_thr: // ignite (SAME threshold logic as day fire)