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 —
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)