Update 2026-06-29-tripartite-synapse_v17.md

This commit is contained in:
2026-07-13 12:30:40 +02:00
parent e49d52165f
commit 5bc7c2331d
@@ -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 — 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 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 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, 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 so the spine keeps responding and integrating, charging up so the neuron is ready to fire again once
its refractory ends. 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) 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] 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 // 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" retro_NO += NO_emit(post_fast_trace); post_budget -= NO_synth_cost // EMIT + "responsive target" (fast: tracks the NMDA Ca transient)
if Vm > eCB_thr: // (eCB is NOT emitted here — it is slow/integrated, produced in PREPARATION from accumulated depolarisation)
retro_eCB += eCB_emit(Vm); post_budget -= eCB_synth_cost // EMIT brake
// ===== RECOVERY (AP: brief descending-spike arrival — restore + boost traces) ===== // ===== RECOVERY (AP: brief descending-spike arrival — restore + boost traces) =====
DAY | AP: // soma's spike arrives (ms event), driven from above 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) ===== // ===== PREPARATION (NOT_SPIKE_TRAIN: shape the next response AND the NIGHT) =====
DAY | NOT_SPIKE_TRAIN: // sustained quiet (emitted by NEURON — above SOMA) 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) // 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 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: 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); // NOTE SOMA endurance fires only on FUEL shortfall (budget < ap_cost);
// refractory / sub-threshold are timing limits, not endurance. Own-state proxy. // 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): // THE THREE CATEGORIES (SOMA is an INITIATOR — it fires from its OWN integration crossing its OWN
// ACTION fire (the defining deed) — context AP // threshold, so nothing external licenses its ACTION. It runs CONTINUOUS and the ACTION⇄RECOVERY
// RECOVERY restore the ability to fire again: refractory de-inactivation + mito replenish — // alternation is decided INTERNALLY by its own condition. It EMITS AP and REFRACTORY as signals of
// the alter-ego of the spike, runs in NOT_AP // these internal phases — it cannot be contextualized by them, since it is their source. Only its
// PREPARATION shape the next spike: alignment, adaptation, tag-climb (for NIGHT), ship, decay // 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. // Pattern: (ACTION ⇄ RECOVERY) × many spikes, then PREPARATION.
// ONE spike's fast trace feeds TWO preparation destinations: nuclear-Ca → tag (for NIGHT), // ONE spike's fast trace feeds TWO preparation destinations: nuclear-Ca → tag (for NIGHT),
// inactivation/adaptation/alignment → next-spike timing (this scope). // inactivation/adaptation/alignment → next-spike timing (this scope).
// ===== ACTION ===== // ===== ACTION (CONTINUOUS — self-triggered by internal threshold-crossing; emits AP) =====
DAY | AP: // integrate + fire (the defining deed) DAY | CONTINUOUS · action: // integrate + fire (the defining deed)
threshold = soma_structure.baseline_threshold × (1 + soma_adaptation) × neuromod(NE, ACh) threshold = soma_structure.baseline_threshold × (1 + soma_adaptation) × neuromod(NE, ACh)
can_fire = soma_Na_inactivation < inactivation 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_budget < ap_cost: // FUEL shortfall → endurance (a PREPARATION deposit)
if soma_fast_trace > traj_thr and soma_fast_trace_rising: if soma_fast_trace > traj_thr and soma_fast_trace_rising:
soma_endurance_need += soma_fast_trace soma_endurance_need += soma_fast_trace
@@ -813,8 +825,8 @@ DAY | AP: // integrate + fire (
soma_budget -= creb_cost soma_budget -= creb_cost
soma_emitted_activity += 1; soma_emitted_structure = soma_structure // NEURON sums these 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) ===== // ===== RECOVERY (CONTINUOUS — self-entered when not firing; emits REFRACTORY) =====
DAY | NOT_AP: // de-inactivate + replenish 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 soma_budget += fill(soma_budget, soma_budget_ceiling, mito_output, 0, soma_budget) // mito replenish
recovery = base_recovery × (1 + soma_refractory_alignment) recovery = base_recovery × (1 + soma_refractory_alignment)
soma_Na_inactivation *= decay(τ_Na / recovery) // refractory recovery (sped by 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). // contend WITHIN (participation arbitrates); material contends BETWEEN components (recovery).
// ===== ACTION (build ⇄ release; participation gates direction; tag funds build, persists across cycles) ===== // ===== 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) if soma_tag > tag_expiry and soma_participation ≥ MEDIUM: // BUILD (slice)
Δ = min(slot_batch, soma_material, soma_energy·f_cap, soma_tag) × soma_participation Δ = min(slot_batch, soma_material, soma_energy·f_cap, soma_tag) × soma_participation
soma_structure += Δ; soma_material -= Δ; soma_energy -= Δ·assembly_cost soma_structure += Δ; soma_material -= Δ; soma_energy -= Δ·assembly_cost
@@ -856,7 +868,7 @@ NIGHT | build or release:
// else: HOLD — tag waits for its pattern // else: HOLD — tag waits for its pattern
// ===== RECOVERY (ROOT production + acquire/free material in CONTENTION; ship to feed the 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_material += CREB_synth(soma_tag)·Δt_cycle // ROOT: produce material — recoverable
soma_energy += mito_synth()·Δt_cycle // ROOT: produce energy — NOT recoverable soma_energy += mito_synth()·Δt_cycle // ROOT: produce energy — NOT recoverable
night_energy_spent += mito_synth()·Δt_cycle 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 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) ===== // ===== 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 // FAST: replay-fire (probe); ignites the pattern down the day pathway
spont = intrinsic_fluctuation() spont = intrinsic_fluctuation()
if spont > soma_spont_thr: // ignite (SAME threshold logic as day fire) if spont > soma_spont_thr: // ignite (SAME threshold logic as day fire)