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

This commit is contained in:
2026-07-07 14:44:22 +02:00
parent 7561652e2e
commit cf9f4476f3
@@ -23,7 +23,8 @@
> (6) governing rule: NO actor authorizes its own restructuring — each is PUT IN POSITION by the actor > (6) governing rule: NO actor authorizes its own restructuring — each is PUT IN POSITION by the actor
> above (holds an aggregate it cannot see, opens a window it cannot open). Act locally, consolidate > above (holds an aggregate it cannot see, opens a window it cannot open). Act locally, consolidate
> hierarchically. Material recycles; ENERGY does not (the arrow of time). > hierarchically. Material recycles; ENERGY does not (the arrow of time).
> PENDING: ASTROSYNAPSE night still in the earlier NON_REM/REM form (its own pass — continuous case). > ASTROSYNAPSE now converted: D-serine = POST gain (not gate) ; astrocyte Ca-spike = territory-coincidence
> broadcast (integrate-and-fire) ; astrosynapse = volume/gain modulator, build⇄release coverage.
--- ---
@@ -474,12 +475,12 @@ and compete; unmaintained ceilings drift down.
``` ```
// PARAMETERS K_AMPA · AMPA_Ca · AMPA_cost · NMDA_cost · bAP_cost · pka_cost · traffic_cost // PARAMETERS K_AMPA · AMPA_Ca · AMPA_cost · NMDA_cost · bAP_cost · pka_cost · traffic_cost
// req_cost · Mg_eject · Dserine_thr · Ca_STP · Ca_TAG · eCB_thr · drift · baseline // req_cost · Mg_eject · K_Ds · Ca_STP · Ca_TAG · eCB_thr · drift · baseline
// NO_synth_cost · eCB_synth_cost // NO_synth_cost · eCB_synth_cost
// INTERFACE // INTERFACE
// EMIT retro_NO (+), retro_eCB () → PRE // EMIT retro_NO (+), retro_eCB () → PRE
// RECEIVE (signals) glutamate ← PRE ; astro_Dserine ← ASTRO ; bAP ← DEND/SOMA ; dopamine // RECEIVE (signals) glutamate ← PRE ; astro_Dserine ← ASTRO ; bAP ← DEND/SOMA ; dopamine
// READ glutamate ; astro_Dserine ; bAP (dend_structure.bAP_fidelity) ; dopamine // READ glutamate ; astro_Dserine (GAIN, not gate) ; bAP (dend_structure.bAP_fidelity) ; dopamine
// OWN post_structure{slot_ceiling, spine_volume, reserve_ceiling} ; post_budget_ceiling // OWN post_structure{slot_ceiling, spine_volume, reserve_ceiling} ; post_budget_ceiling
// SUPPLY astro_lactate[syn] ← ASTRO ; dend_ship_post ← DEND ; post_material ← DEND(NIGHT) ; post_energy ← SOMA(NIGHT) // SUPPLY astro_lactate[syn] ← ASTRO ; dend_ship_post ← DEND ; post_material ← DEND(NIGHT) ; post_energy ← SOMA(NIGHT)
// EMERGENCY shockwave_lockdown ← ASTRO // EMERGENCY shockwave_lockdown ← ASTRO
@@ -502,8 +503,9 @@ DAY | NOT_bAP: // respond to arrived
a = sat(glutamate, K_AMPA) a = sat(glutamate, K_AMPA)
AMPA_current = a × AMPA_surface; Vm += AMPA_current; post_budget -= AMPA_cost // SOURCE 1 AMPA AMPA_current = a × AMPA_surface; Vm += AMPA_current; post_budget -= AMPA_cost // SOURCE 1 AMPA
post_fast_trace += AMPA_Ca·AMPA_current post_fast_trace += AMPA_Ca·AMPA_current
if Vm > Mg_eject and astro_Dserine > Dserine_thr and glutamate > 0: // SOURCE 2 NMDA if Vm > Mg_eject and glutamate > 0: // SOURCE 2 NMDA (Mg relieved)
post_fast_trace += NMDA_Ca(glutamate)·rise_speed(); post_budget -= NMDA_cost // coincidence #1,2 here post_fast_trace += NMDA_Ca(glutamate) × sat(astro_Dserine, K_Ds)·rise_speed(); post_budget -= NMDA_cost
// 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"
if Vm > eCB_thr: if Vm > eCB_thr:
retro_eCB += eCB_emit(Vm); post_budget -= eCB_synth_cost // EMIT brake retro_eCB += eCB_emit(Vm); post_budget -= eCB_synth_cost // EMIT brake
@@ -571,8 +573,8 @@ NIGHT | replay + measure + prime:
if arrived_glutamate_replay or arrived_replay_AP: if arrived_glutamate_replay or arrived_replay_AP:
a = sat(glutamate, K_AMPA) a = sat(glutamate, K_AMPA)
post_fast_trace += AMPA_Ca·(a × AMPA_surface) // SAME AMPA machinery as DAY ACTION post_fast_trace += AMPA_Ca·(a × AMPA_surface) // SAME AMPA machinery as DAY ACTION
if Vm > Mg_eject and astro_Dserine > Dserine_thr: if Vm > Mg_eject:
post_fast_trace += NMDA_Ca(glutamate) // SAME NMDA machinery post_fast_trace += NMDA_Ca(glutamate) × sat(astro_Dserine, K_Ds) // SAME NMDA machinery (D-serine = gain)
if post_budget < traffic_cost: // SAME capacity check → endurance evidence if post_budget < traffic_cost: // SAME capacity check → endurance evidence
if post_fast_trace > traj_thr: post_endurance_need += post_fast_trace // SAME trace, fed by replay if post_fast_trace > traj_thr: post_endurance_need += post_fast_trace // SAME trace, fed by replay
post_participation = level(post_fast_trace) // read replayed response as participation post_participation = level(post_fast_trace) // read replayed response as participation
@@ -980,107 +982,114 @@ NIGHT | replay + measure + prime:
> across all of them, just as the NEURON integrates over the soma). The astrosynapse behaves > across all of them, just as the NEURON integrates over the soma). The astrosynapse behaves
> locally here; the astrocyte integrates and broadcasts (see CELL ACTORS). > locally here; the astrocyte integrates and broadcasts (see CELL ACTORS).
The astrosynapse is the synapse's gatekeeper and energy hub. It clears glutamate, supplies the The astrosynapse is the synapse's **modulator** — the third party that tunes all three dimensions
D-serine that gates postsynaptic NMDA, and distributes lactate across its territory by demand. of transmission without performing the deed itself. It clears glutamate (setting how long
Unlike the others it runs in a single continuous context rather than spiking, and its structure transmitter dwells → **timing**), releases D-serine that dials the *gain* of the postsynaptic
reshapes the synapse's operating point rather than just its range. response to a given release (**intensity**, via POST's sensitivity — not a coincidence gate but a
volume knob on POST), and its perisynaptic coverage sets spillover and isolation (**space**). Its
one error signal is **spillover**: when PRE outpowers the current coverage, glutamate escapes — the
direct physical sign that this astrosynapse is too small for its presynapse. Spillover coincident
with a real postsynaptic response (read from the eavesdropped retrograde NO) is what it tags; its
absence means the coverage can shrink. It reads the cleft it sits in: glutamate from PRE (spillover),
the retrograde eCB/NO from POST (postsynaptic pressure and success), and — from above — the
ASTROCYTE's territory-wide Ca²⁺ spike, which arrives at ALL the astrocyte's astrosynapses at once
when enough of them were co-active (a territory-scale coincidence broadcast, the astrocytic analog
of the soma's AP).
**During DAY, continuously — the astrosynapse clears, gates, and fuels.** It produces energy at **DAY · ACTION — clear + prime.** The defining local deed: take up glutamate (EAAT clearance) and
its cell body (glycolysis from glucose, the system's energy root), then allocates lactate across release D-serine to set POST's gain, biased by the astrocyte's slow priming field and pulsed up by
its astrosynapses weighted by each one's clearance demand. At each astrosynapse it clears an arriving territory Ca²⁺ spike. Spillover deposits its Ca²⁺ fast trace.
spillover glutamate (EAAT) and supplies tonic D-serine; when spillover is high it adds a **DAY · RECOVERY — restock clearance + D-serine capacity**, so it can service the next release (its
demand-driven D-serine pulse, brakes nothing of the presynapse directly (the presynaptic brake recovery speed *is* the synapse's timing resolution).
is PRE reading its own cleft), deposits its calcium trace, and accumulates a dopamine-gated tag. **DAY · PREPARATION — stock the volume/gain evidence.** Accumulate the tag: how often spillover
A D-serine pulse cut short by low budget while demand was high is endurance evidence; one cut occurred coincident with a real postsynaptic response — "this synapse repeatedly outgrew its
short by precursor/material exhaustion is a material limit, not endurance. Excess overflow coverage on genuine co-activation." Read the descended spike/prime that will bias the next action.
triggers the protective shockwave lockdown.
**During NIGHT — the astrosynapse's ceilings are rewritten.** NIGHT raises **structure** **NIGHT — build ⇄ release coverage.** Build perisynaptic coverage / clearance capacity / tonic
(perisynaptic wrap, EAAT density, tonic D-serine) where a validated tag accumulated and **budget D-serine where the tag stands (repeated spillover → enlarge to clear faster, sharpen timing, contain
capacity** where budget-limited synthesis recurred; astro_structure is self-reinforcing in both spillover — the build cancels the very spillover that signalled it) ⇄ release coverage where no
directions, so it amplifies whatever trajectory the synapse is already on. spillover occurred (over-provisioned → shrink, free material). Astrosynapses compete for the
astrocyte's produced material and energy.
``` ```
// PARAMETERS K_Dserine · Ds_max · Ds_frac · Ds_cost · EAAT_cost · lactate_cost · spillover · overload // PARAMETERS K_Dserine · Ds_max · Ds_frac · Ds_cost · EAAT_cost · spillover · overload · spike_gain
// INTERFACE // INTERFACE
// EMIT astro_lactate[i] → pre/post/dend budgets ; astro_Dserine[i] → POST (gate) // EMIT astro_Dserine[i] → POST (GAIN primer, not a gate) ; astro_localCa[i] → ASTROCYTE (integrated up)
// RECEIVE (signals) glutamate ← PRE (clearance + spillover) ; dopamine // astro_fatigue, astro_demand → upward
// READ glutamate ; dopamine // RECEIVE (signals) glutamate ← PRE (spillover) ; retro_NO, retro_eCB ← POST (eavesdropped) ;
// OWN astro_structure{perisynaptic_distance⁻¹, EAAT, Dserine_tonic, ECM} ; astro_budget_ceiling // astro_prime[i] ← ASTROCYTE (slow gain field) ; astro_Ca_spike ← ASTROCYTE (territory broadcast)
// SUPPLY glucose (ROOT) ; astro_material, astro_energy ← cell body (NIGHT) // READ glutamate ; retro_NO ; retro_eCB ; astro_prime[i] ; astro_Ca_spike
// NOTE ASTRO endurance fires on BUDGET-limited synthesis (got<want via low budget); // OWN astro_structure{coverage, EAAT, Dserine_tonic, ECM} ; astro_budget_ceiling ; astro_fast_trace
// material/precursor-limited synthesis is a material limit, not endurance. Own-state proxy. // SUPPLY astro_material, astro_energy ← ASTROCYTE (root) ; lactate distributed by ASTROCYTE
// NOTE D-serine is POST's GAIN, dialed by this astrosynapse × the astrocyte's prime/spike.
// Error signal = SPILLOVER (PRE outpowering coverage), tagged when coincident with retro_NO.
// EMERGENCY emits shockwave_lockdown on overload // EMERGENCY emits shockwave_lockdown on overload
//
// CONTINUOUS (no spike of its own): each step runs ACTION ⇄ RECOVERY, then PREPARATION, in graded flow.
// RING × CONTEXT: CONTINUOUS — no spike, so ACTION (clear/gate), EVALUATION (tag climb), // ===== ACTION (clear glutamate + release D-serine = POST's gain; the defining local deed) =====
// and PREPARATION (allocate/refill/settle) all run each step in the graded flow. The ring DAY | CONTINUOUS · action | per astrosynapse i:
// turns continuously rather than being delimited by discrete events. glutamate[i] -= astro_structure[i].EAAT × glutamate[i]·Δt; astro_budget[i] -= clearance·EAAT_cost // clear (timing)
gain = astro_structure[i].Dserine_tonic × astro_prime[i] × (1 + spike_gain × astro_Ca_spike) // prime POST gain
DAY | CONTINUOUS: // per astrosynapse i astro_Dserine[i] += gain·Δt // → POST (intensity)
// PREP: root production, demand weights, lactate allocation (ready the territory) if glutamate[i] > spillover: // SPILLOVER = PRE outpowered coverage (error signal)
astro_central_budget += glycolysis(glucose)·Δt astro_fast_trace[i] += mGluR_Ca() // deposit Ca fast trace (this action's residue)
for each i: demand[i] = clearance_load[i] × astro_structure[i].delivery_eff
for each i: astro_territory_demand[i] += demand[i]·Δt // territory-level aggregator (by DAY)
factor = min(1, astro_central_budget / (Σ demand·lactate_cost + ε))
for each i:
astro_lactate[i] = demand[i] × factor; astro_central_budget -= astro_lactate[i]·lactate_cost
// ACTION: clear glutamate, supply tonic D-serine, gate on demand (the defining act)
glutamate[i] -= astro_structure[i].EAAT × glutamate[i]·Δt; astro_central_budget -= clearance·EAAT_cost
astro_Dserine[i] += astro_structure[i].Dserine_tonic × astro_prime[i]·Δt // priming biases the gate (alpha-driven)
if glutamate[i] > spillover:
astro_fast_trace[i] += mGluR_Ca(); astro_fast_trace[i] *= decay(s) // deposit fast trace
want = sat(astro_fast_trace[i], K_Dserine) × Ds_max want = sat(astro_fast_trace[i], K_Dserine) × Ds_max
got = min(want, astro_central_budget × Ds_frac) got = min(want, astro_budget[i] × Ds_frac)
astro_Dserine[i] += got; astro_central_budget -= got·Ds_cost // D-serine pulse → POST gate astro_Dserine[i] += got; astro_budget[i] -= got·Ds_cost // phasic D-serine (extra gain on spillover)
if got < want and astro_central_budget low and astro_fast_trace[i] > traj_thr: astro_localCa[i] = astro_fast_trace[i] // EMIT own Ca upward → ASTROCYTE integrates
if got < want and astro_budget[i] low and astro_fast_trace[i] > traj_thr:
astro_endurance_need[i] += (want - got) // FUEL-limited synthesis → endurance astro_endurance_need[i] += (want - got) // FUEL-limited synthesis → endurance
// EVAL: strength climb → token for NIGHT if astro_fast_trace[i] > overload: emit(shockwave_lockdown) // EMERGENCY
if astro_fast_trace[i] > elig: astro_possible_tag[i] += astro_fast_trace[i]
// ===== RECOVERY (restore clearance + D-serine capacity; alter-ego — its speed IS the synapse's timing) =====
DAY | CONTINUOUS · recovery | per astrosynapse i:
astro_budget[i] += refill(astro[i] from lactate ← ASTROCYTE) // restock (contested territory supply)
astro_fast_trace[i] *= decay(s) // Ca relaxes — ready to detect next spillover
// ===== PREPARATION (stock the volume/gain tag; read descended spike/prime; faces the NIGHT) =====
DAY | CONTINUOUS · preparation | per astrosynapse i:
// tag = accumulated spillover COINCIDENT with real postsynaptic response (eavesdropped NO)
if astro_fast_trace[i] > elig and retro_NO > NO_thr:
astro_possible_tag[i] += astro_fast_trace[i] × (1 + retro_NO)·Δt
if dopamine > dop_thr and astro_possible_tag[i] > tag_thr: if dopamine > dop_thr and astro_possible_tag[i] > tag_thr:
astro_tag[i] += dopamine × astro_possible_tag[i] astro_tag[i] += dopamine × astro_possible_tag[i] // token for NIGHT (volume decision)
// DECAY (settle) astro_possible_tag[i] *= decay(s); astro_endurance_need[i] *= decay(min) // MEDIUM
// MEDIUM (smin) astro_tag[i] *= decay(hr) // SLOW
astro_possible_tag[i] *= decay(s); astro_endurance_need[i] *= decay(min)
// SLOW (hr)
astro_tag[i] *= decay(hr)
// EMERGENCY
if astro_fast_trace[i] > overload: emit(shockwave_lockdown)
NIGHT · NON_REM_1 = PREPARATION | produce + distribute + prime: // ROOT: energy production + priming // ── NIGHT: SAME three categories, subject = the pattern. Astrosynapses compete for the ASTROCYTE's
// PRODUCTION (root): glycolysis + ECM synthesis this cycle, capped by glucose // produced material/energy (the astrocyte is their root). Build ⇄ release COVERAGE, participation
astro_central_energy += overnight_glycolysis(glucose)·Δt_cycle // energy — NOT recoverable // from the Ca response to re-evoked spillover. (ACTION ⇄ RECOVERY) × many, then PREPARATION.
astro_central_material += astro_cellbody_synth()·Δt_cycle // material — recoverable
night_energy_spent += overnight_glycolysis(glucose)·Δt_cycle
// distribute this cycle's batch across the territory, tag-weighted
W = Σ astro_tag[i] over astro_tag[i] > tag_expiry
for each i with astro_tag[i] > tag_expiry:
w = astro_tag[i]/W
astro_energy[i] += astro_central_energy·w; astro_material[i] += astro_central_material·w
astro_spont_thr[i] = spont_thr_base thr_gain × astro_tag[i] // prime own responsiveness from own tag
astro_central_material += astro_ceiling_shrinkage·recycle // recycle
NIGHT · REM = EVALUATION | respond to re-evoked glutamate, MEASURE participation (NO dopamine): // ===== ACTION (build ⇄ release COVERAGE; participation gates direction; tag funds build, persists) =====
for each astrosynapse i: NIGHT | build or release | per astrosynapse i:
// when its synapse's pattern re-evokes, spillover glutamate arrives → mGluR Ca response (a PROBE) if astro_tag[i] > tag_expiry and astro_participation[i] ≥ MEDIUM: // BUILD coverage (slice)
if arrived_glutamate_replay[i]:
astro_fast_trace[i] += mGluR_Ca()
astro_participation[i] = level(astro_fast_trace[i]) // high/medium/low = centrality
astro_fast_trace[i] *= decay(s)
NIGHT · NON_REM_2 = ACTION | change the structure (per astrosynapse): // the night's defining deed
for each astrosynapse i:
astro_structure[i] -= decay_rate·Δt_cycle; astro_structure[i] += min(astro_maint[i], maint_cost) // lowering
if astro_tag[i] > tag_expiry and astro_participation[i] ≥ MEDIUM:
Δ = min(slot_batch, astro_material[i], astro_energy[i]·f_cap, astro_tag[i]) × astro_participation[i] Δ = min(slot_batch, astro_material[i], astro_energy[i]·f_cap, astro_tag[i]) × astro_participation[i]
astro_structure[i] += Δ // self-reinforcing both directions astro_structure[i] += Δ // enlarge coverage → faster clearance, less spillover
astro_material[i] -= Δ; astro_energy[i] -= Δ·assembly_cost; astro_tag[i] -= Δ astro_material[i] -= Δ; astro_energy[i] -= Δ·assembly_cost; astro_tag[i] -= Δ
if astro_endurance_need[i] > endur_thr: if astro_endurance_need[i] > endur_thr:
Δ' = min(cap_batch, astro_material[i]·f_cap, astro_energy[i]·f_cap) Δ' = min(cap_batch, astro_material[i]·f_cap, astro_energy[i]·f_cap)
astro_budget_ceiling[i] += Δ'; astro_material[i] -= Δ' astro_budget_ceiling[i] += Δ'; astro_material[i] -= Δ'
astro_energy[i] -= Δ'·biogenesis_cost; astro_endurance_need[i] -= Δ' astro_energy[i] -= Δ'·biogenesis_cost; astro_endurance_need[i] -= Δ'
else: else if astro_participation[i] == LOW: // RELEASE coverage: shed, free material; tag untouched
astro_budget_ceiling[i] -= capacity_decay_rate·Δt_cycle; astro_budget_ceiling[i] += min(astro_cap_maint[i], cap_cost) shed = release_rate × max(astro_structure[i] - homeostatic_floor, 0)
astro_endurance_need[i] *= decay(slow) astro_structure[i] -= shed; astro_freed_material[i] += shed·recycle
astro_budget_ceiling[i] -= capacity_decay_rate·Δt_cycle
// else: HOLD
// ===== RECOVERY (acquire material/energy from the ASTROCYTE in CONTENTION with sibling astrosynapses) =====
NIGHT | import + free | per astrosynapse i:
astro_material[i] += astro_alloc[i]·astro_central_material // receive this cycle's share (contested)
astro_energy[i] += astro_alloc[i]·astro_central_energy
astro_material[i] += astro_freed_material[i]; astro_freed_material[i] = 0 // reclaim what release freed
astro_structure[i] += min(astro_maint[i], maint_cost) // hold up what is used
// ===== PREPARATION (REPLAY: respond to re-evoked spillover — SAME mGluR machinery — measure participation) =====
NIGHT | replay + measure | per astrosynapse i:
if arrived_glutamate_replay[i]: // re-evoked spillover arrives (probe)
astro_fast_trace[i] += mGluR_Ca() // SAME mGluR machinery as DAY ACTION
astro_participation[i] = level(astro_fast_trace[i]) // read replayed response as participation
astro_fast_trace[i] *= decay(s); astro_tag[i] *= decay(hr); astro_endurance_need[i] *= decay(slow)
emit(astro_fatigue, astro_demand → upward) emit(astro_fatigue, astro_demand → upward)
``` ```
@@ -1108,8 +1117,10 @@ DAY or NIGHT | OVERLOAD:
> still stands AND participation ≥ medium, consuming the tag. Roots (SOMA material) additionally > still stands AND participation ≥ medium, consuming the tag. Roots (SOMA material) additionally
> PRODUCE each cycle. The replay pattern propagates entirely through the DAY PATHWAYS, self-igniting, > PRODUCE each cycle. The replay pattern propagates entirely through the DAY PATHWAYS, self-igniting,
> carrying only where every link is primed. > carrying only where every link is primed.
> [ASTROSYNAPSE still shows the earlier NON_REM/REM form — pending its own pass (it is continuous and > ASTROSYNAPSE is now converted too (all six local components uniform): its ACTION is clear+prime
> under-described; the three-category cut will be verified there separately).] > (D-serine = POST gain), RECOVERY restocks clearance/D-serine, PREPARATION stocks the volume tag;
> NIGHT builds⇄releases COVERAGE. The ASTROCYTE adds a third role — a regenerative Ca spike that
> integrates astrosynaptic Ca and broadcasts territory-coincidence to all astrosynapses at once.
--- ---
--- ---
@@ -1160,32 +1171,45 @@ CODA | on waking (scope_context → DAY):
## ASTROCYTE ## ASTROCYTE
The astrocyte is the territory actor over its astrosynapses — the exact parallel of the neuron, The astrocyte is the territory actor over its astrosynapses — the parallel of the neuron, with
with two roles the neuron lacks. First, it is the ROOT of synaptic energy and ECM material, and three roles. First, it is the ROOT of synaptic energy and ECM material, and therefore the system's
therefore the system's METABOLIC SENSOR: it accrues territory energy debt and reports it upward as METABOLIC SENSOR: it accrues territory energy debt and reports it upward as the fatigue that drives
the fatigue that drives the hypothalamus's DAY/NIGHT switch, and its discharge of that debt during the hypothalamus's DAY/NIGHT switch, and its discharge of that debt during night permits waking.
night is what permits waking. Second, by DAY it PRIMES its territory: reading its own slow calcium Second, it has its own ACTION — a regenerative Ca²⁺ SPIKE: it integrates the local Ca²⁺ emitted by
wave (alpha-band), it raises or lowers the D-serine gate and fuel delivery across a field of its astrosynapses, and when the sum crosses threshold it fires a Ca²⁺ wave that reaches ALL its
synapses — a localized, slow, neuromodulator-like gain signal, biasing which synapses can potentiate. astrosynapses at once. This is the astrocytic analog of the soma's action potential — an
integrate-and-fire event that detects and broadcasts a TERRITORY-SCALE COINCIDENCE (many synapses
co-active), transiently boosting D-serine gain across the whole territory and marking every
participating astrosynapse. Third, by DAY it PRIMES its territory: reading its own slow calcium
wave (alpha-band), it sets a localized, slow, neuromodulator-like gain field on D-serine —
dialing postsynaptic response strength across a field of synapses.
``` ```
// PARAMETERS (territory reallocation) · alpha_gain // PARAMETERS (territory reallocation) · alpha_gain · Ca_spike_thr · lactate_cost
// INTERFACE // INTERFACE
// EMIT astro_prime[·] (DAY gain field), astro_alloc[·] + rest_permission (NIGHT) astrosynapses // EMIT astro_prime[·] (DAY gain field) ; astro_Ca_spike (territory broadcast) ; astro_lactate[·] ;
// astro_fatigue → HYPOTHALAMUS (metabolic debt — the switch driver) ; energy+material → territory // astro_alloc[·] + rest_permission (NIGHT) → astrosynapses ; astro_fatigue → HYPOTHALAMUS
// RECEIVE (signals) astrosynapse demand emissions (summed) ; scope_context ; replay_reweight ; glucose // RECEIVE (signals) astro_localCa[·] (integrated up from astrosynapses) ; scope_context ; replay_reweight ; glucose
// OWN astro_territory_demand[·] ; astro_slow_Ca (alpha wave) ; astro_central_{energy,material} // OWN astro_integrated_Ca ; astro_slow_Ca (alpha wave) ; astro_central_{energy,material}
// NOTE ROOT of synaptic energy + ECM material; integrate-and-broadcast like the neuron, PLUS // NOTE THREE roles: ROOT (energy+material) · integrate-and-FIRE (Ca spike = territory coincidence) ·
// day-priming (localized neuromodulation) and metabolic sensing (drives the day/night switch). // PRIME (alpha gain field). Metabolic sensor: reports fatigue that drives the day/night switch.
DAY | active: DAY | active:
// TRACE integrate territory-wide emitted demand (aggregator) + own slow Ca wave // integrate the local Ca emitted by astrosynapses (aggregator) + own slow alpha wave
for each astrosynapse i: astro_territory_demand[i] += emitted_demand[i]·Δt astro_integrated_Ca += Σ astro_localCa[i]·Δt
astro_slow_Ca = integrate_slow(territory activity) // alpha-band astrocytic calcium astro_slow_Ca = integrate_slow(territory activity) // alpha-band astrocytic calcium
// BEHAVE/EMIT PRIME the territory: alpha-driven localized gain (like neuromodulation, but local) // ACTION: regenerative Ca SPIKE when integrated Ca crosses threshold → broadcast to ALL astrosynapses
for each astrosynapse i: if astro_integrated_Ca > Ca_spike_thr:
astro_prime[i] = 1 + alpha_gain × astro_slow_Ca // → biases i's D-serine gate + fuel (see ASTROSYNAPSE) astro_Ca_spike = 1; astro_integrated_Ca = 0 // fire + reset (territory-coincidence event)
// EMIT report metabolic debt upward — this is the fatigue that drives the DAY/NIGHT switch // → every astrosynapse reads astro_Ca_spike this step (boosts its D-serine gain; marks its tag)
else:
astro_Ca_spike = 0
// PRIME: alpha-driven localized gain field on D-serine (dials POST response strength territory-wide)
for each astrosynapse i: astro_prime[i] = 1 + alpha_gain × astro_slow_Ca
// SUPPLY: distribute lactate across the territory by clearance demand (day metabolic support)
factor = min(1, astro_central_energy / (Σ clearance_load·lactate_cost + ε))
for each i: astro_lactate[i] = clearance_load[i] × factor; astro_central_energy -= astro_lactate[i]·lactate_cost
// EMIT report metabolic debt upward — the fatigue that drives the DAY/NIGHT switch
astro_fatigue = f(territory energy debt, unmet demand) astro_fatigue = f(territory energy debt, unmet demand)
NIGHT | cycle: // (within broadcast NIGHT context) NIGHT | cycle: // (within broadcast NIGHT context)
@@ -1193,21 +1217,16 @@ NIGHT | cycle: // (within broadca
astro_central_energy += overnight_glycolysis(glucose)·Δt_cycle // NOT recoverable astro_central_energy += overnight_glycolysis(glucose)·Δt_cycle // NOT recoverable
astro_central_material += astro_cellbody_synth()·Δt_cycle // recoverable astro_central_material += astro_cellbody_synth()·Δt_cycle // recoverable
night_energy_spent += overnight_glycolysis(glucose)·Δt_cycle night_energy_spent += overnight_glycolysis(glucose)·Δt_cycle
// ADJUST reallocation weights across the territory (demand × replay) // ADJUST allocation weights across the territory (tag × replay) — astrosynapses APPLY these in their RECOVERY
for each i: astro_alloc[i] = (astro_territory_demand[i] × replay_reweight[i]) for each i: astro_alloc[i] = (astro_tag[i] × replay_reweight[i]) / Σ(astro_tag × replay_reweight)
/ Σ(astro_territory_demand × replay_reweight) rest_permission[i] = TRUE // → each astrosynapse builds/releases itself
// EMIT (broadcast) distribute this cycle's batch + grant restructuring window
for each i:
astro_energy[i] += astro_central_energy·astro_alloc[i]
astro_material[i] += astro_central_material·astro_alloc[i]
rest_permission[i] = TRUE // → each astrosynapse commits itself
// RECOVER reclaim material from decayed astrosynapse ceilings (returned to central pool) // RECOVER reclaim material from decayed astrosynapse ceilings (returned to central pool)
astro_central_material += astro_ceiling_shrinkage·recycle astro_central_material += astro_ceiling_shrinkage·recycle
// discharge: producing + distributing energy repays territory debt → astro_fatigue falls → wake permitted // discharge: producing + distributing energy repays territory debt → astro_fatigue falls → wake permitted
astro_fatigue -= discharge × astro_central_energy·Δt_cycle astro_fatigue -= discharge × astro_central_energy·Δt_cycle
CODA | on waking: CODA | on waking:
astro_territory_demand[·] = 0 astro_integrated_Ca = 0
``` ```
## HYPOTHALAMUS ## HYPOTHALAMUS