This commit is contained in:
2026-06-11 15:37:33 +02:00
parent c3a8231e84
commit 755f558a17
2 changed files with 969 additions and 0 deletions
@@ -1085,3 +1085,41 @@ RECOVERY FLOWS (LTD → returns material to pools):
pre LTD → AZ proteins → pre_material (axonal pool) pre LTD → AZ proteins → pre_material (axonal pool)
astro LTD → ECM fragments → astro_material (partial, recycling_fraction) astro LTD → ECM fragments → astro_material (partial, recycling_fraction)
``` ```
# Flows
## Energy flow
```
VASCULAR SUPPLY
→ ASTROCYTE CELL BODY
glucose → lactate (glycolysis)
→ astro_budget (local ATP for clearance, D-serine, ECM, process motility)
→ lactate exported to:
→ pre_budget (ATP for VGCC, vesicle fusion, VATPase)
→ post_budget (ATP for NaK pump, AMPA trafficking, actin)
→ dend_budget (ATP for bAP propagation, local translation)
→ SOMA
soma has own mitochondria — partly self-fueled
soma_budget (ATP for AP generation, CREB, protein synthesis, shipping)
→ dend_budget top-up (organelle delivery)
→ axon_budget top-up (transport machinery)
```
## Material flow
```
SOMA
protein synthesis (CREB-driven, peaks in NIGHT)
→ soma_material (receptors, scaffold proteins, organelles, mRNA)
→ dend_material (branch receives proteins + mRNA from soma)
→ post_material (spine receives receptors + actin from branch)
→ axon_material (boutons receive AZ proteins + VGCCs from soma via axon)
→ pre_material (bouton active zone proteins)
ASTROSYNAPSE
ECM proteins synthesized in astrocyte cell body
→ astro_material (Glypicans, Thrombospondins, serine for D-serine)
→ cleft environment (ECM sealing, D-serine availability)
```
@@ -0,0 +1,931 @@
# Tripartite Synapse — Pseudocode v6
Naming convention:
DAY: {component}_budget = combined fast energy + fast consumable materials
NIGHT: {component}_energy = ATP for structural assembly
{component}_material = slow structural proteins (recoverable after LTD)
## Part 1 — Conventions
```
SCOPE = { DAY, NIGHT }
CONTEXT = { AP, NOT_AP, bAP, NOT_bAP, CONTINUOUS }
Variable types:
FIXED = externally imposed — does not change during simulation
VAR = changes dynamically
FAST_TRACE = accumulates and decays within DAY — never reaches NIGHT
role: biases next behavior within same context
TAG = set during DAY, decays slowly, survives to NIGHT
POST only: CANDIDATE (DAY) → STABLE (DAY) → commit (NIGHT)
BUDGET = DAY only: combined fast energy + fast consumable materials
one variable per component
replenished continuously during DAY
ENERGY = NIGHT only: ATP cost of structural assembly
replenished overnight
NOT recoverable after LTD
MATERIAL = NIGHT only: slow structural proteins
replenished by CREB synthesis + transport (hoursdays)
RECOVERABLE after LTD — returns to shared pools
STRUCTURE = slow architectural variable
READ during DAY, WRITTEN only in NIGHT
```
## Part 2 — Fixed Parameters
```
// Thresholds
FIXED Ca_TAG_threshold // Ca²⁺ sufficient to set post CANDIDATE tag
FIXED Ca_HIGH // LTP-driving Ca²⁺ amplitude
FIXED Ca_LOW // LTD-driving Ca²⁺ amplitude
FIXED spillover_threshold // cleft saturation for mGluR activation
FIXED eligibility_threshold // minimum fast_trace to be taggable
FIXED dopamine_threshold // minimum dopamine for tag stabilization
FIXED tagging_threshold // minimum possible_tagging for tag accumulation
FIXED tag_expiry_threshold // minimum tag to survive to NIGHT commit
FIXED homeostatic_ceiling // max soma firing before global downscale
FIXED disuse_threshold // silence duration before passive depotentiation
FIXED recycling_fraction // fraction of material recovered after LTD
// Organism-level signals
FIXED dopamine_level // VTA broadcast — reward/save signal
FIXED NE_level // locus coeruleus — arousal/gain
FIXED ACh_level // basal forebrain — attention/threshold
// Physical constraints
FIXED vascular_glucose_supply // hard energy ceiling — astrocyte root
FIXED branch_geometry // dendritic topology — affects bAP decay
FIXED Ca_cooperativity_n // Hill coefficient for Ca²⁺-driven NT release
FIXED Ca_half_max_K // half-maximal Ca²⁺ for NT release
```
## Part 3 — DAY Budget Declarations
```
// One budget variable per component — covers fast energy AND fast consumables
// Replenished continuously. Consumed by all DAY behaviors.
VAR astro_budget
// SOURCE: vascular_glucose_supply → glycolysis (ROOT of all synaptic energy)
// COVERS: ATP for EAAT glutamate clearance
// serine → D-serine synthesis (serine racemase running cost)
// lactate production and export to all neuronal components
// fast process motility adjustments
// (combines: astro_ATP + serine_precursor_fast_pool + EAAT_running_cost)
VAR astro_lactate
// Fuel exported by astrocyte → feeds pre, post, dend, axon budgets
// = min(glycolysis(vascular_glucose_supply), astro_budget × export_fraction)
// Hard cap: vascular_glucose_supply (FIXED)
VAR pre_budget
// SOURCE: astro_lactate × pre_fraction (primary)
// COVERS: ATP for VGCC opening
// vesicle fusion (SNARE-mediated)
// VATPase refill of vesicles
// fast vesicle membrane lipid turnover
// synaptotagmin recycling
// (combines: bouton_ATP + fast_vesicle_consumables)
VAR post_budget
// SOURCE: astro_lactate × post_fraction (primary)
// COVERS: ATP for NaK pump membrane reset
// NMDA current handling
// AMPA receptor lateral diffusion + rapid recycling
// actin monomers for transient spine changes
// PKA phosphorylation (minor)
// (combines: spine_ATP + fast_actin_pool + receptor_recycling_lipids)
VAR dend_budget
// SOURCE: astro_lactate × dend_fraction (primary)
// soma organelle delivery (minor)
// COVERS: ATP for bAP propagation along branch
// local mRNA translation (ribosome running cost)
// fast protein + organelle transport to spines
// branch Ca²⁺ handling (SERCA pump)
// mRNA consumed by local translation
// (combines: dend_ATP + fast_mRNA_consumables + local_translation_running_cost)
VAR soma_budget
// SOURCE: own mitochondria (self-fueled — independent of astrocyte)
// COVERS: ATP for AP generation (Na⁺/K⁺ currents + NaK reset)
// CREB phosphorylation (minor)
// nuclear Ca²⁺ handling
// fast signaling molecule turnover
// shipping costs for organelle delivery to branches + axon
// (combines: soma_ATP + fast_signaling_consumables + shipping_running_cost)
VAR axon_budget
// SOURCE: soma_budget × axon_fraction (primary)
// astro_lactate × axon_astro_fraction (minor, along shaft)
// COVERS: ATP for AP propagation at each node of Ranvier
// kinesin/dynein motor running cost (anterograde transport)
// myelin maintenance fast costs
// (combines: axon_ATP + transport_running_cost)
```
## Part 4 — NIGHT Energy and Material Declarations
```
// ENERGY: ATP cost of structural assembly — replenished overnight, NOT recoverable
// MATERIAL: slow structural proteins — replenished by CREB + transport, RECOVERABLE
VAR astro_energy // NIGHT ATP for process retraction, ECM secretion, racemase upregulation
// SOURCE: overnight glycolysis replenishment
// NOT recovered after LTD structural reversal
// (covers: process_motility_ATP + ECM_secretion_ATP)
VAR astro_material // NIGHT slow structural components
// SOURCE: astrocyte cell body synthesis (overnight)
// CONTAINS: EAAT transporter proteins
// serine racemase enzyme (upregulation)
// ECM proteins (Glypicans, Thrombospondins)
// process cytoskeleton components
// RECOVERABLE: partially after LTD (recycling_fraction)
// (combines: astro_ECM_pool + racemase_upregulation_proteins
// + EAAT_new_proteins + process_cytoskeleton)
VAR pre_energy // NIGHT ATP for active zone scaffold incorporation
// SOURCE: replenished from soma overnight delivery
// NOT recovered after LTD
// (covers: RIM/Munc13_incorporation_ATP + VGCC_clustering_ATP)
VAR pre_material // NIGHT slow structural components for bouton
// SOURCE: soma_material via axon transport (anterograde)
// CONTAINS: RIM, Munc13 (AZ scaffold)
// VGCC subunits
// vesicle membrane proteins (structural pool)
// SNARE proteins (structural pool)
// RECOVERABLE: significantly after LTD — proteins return to axonal pool
// (combines: AZ_scaffold_proteins + VGCC_subunit_pool)
VAR post_energy // NIGHT ATP for CaMKII anchoring, actin polymerization, PSD remodeling
// SOURCE: replenished from soma overnight delivery
// NOT recovered after LTD
// (covers: CaMKII_anchoring_ATP + actin_polymerization_ATP
// + PSD_scaffold_remodeling_ATP)
VAR post_material // NIGHT slow structural components for spine
// SOURCE: dend_material (branch pool + soma delivery)
// CONTAINS: AMPA receptor subunits (GluA1, GluA2)
// PSD scaffold proteins (PSD-95, SHANK, Homer)
// structural actin pool
// CaMKII (structural pool)
// RECOVERABLE: significantly — internalized receptors return to
// dendritic reserve pool after LTD
// (combines: receptor_reserve + PSD_scaffold_pool + structural_actin)
VAR dend_energy // NIGHT ATP for mitochondria incorporation, cytoskeletal reinforcement
// SOURCE: soma overnight delivery
// NOT recovered after LTD
// (covers: mitochondria_incorporation_ATP + cytoskeletal_remodeling_ATP)
VAR dend_material // NIGHT slow structural components for branch
// SOURCE: soma_material (shipped during DAY NOT_AP + NIGHT)
// CONTAINS: Arc mRNA + plasticity mRNAs (structural pool)
// mitochondria (for local energy capacity)
// cytoskeletal proteins (MAP2, tau)
// AMPA subunits in transit to spines
// RECOVERABLE: partially — organelles redistributed after branch pruning
// (combines: dend_mRNA_structural_pool + organelle_store
// + cytoskeletal_proteins)
VAR soma_energy // NIGHT ATP for ribosome biogenesis, ion channel incorporation
// SOURCE: own mitochondria overnight
// NOT recovered
// (covers: ribosome_biogenesis_ATP + channel_incorporation_ATP)
VAR soma_material // NIGHT slow structural components produced by soma
// SOURCE: CREB-driven synthesis (peaks in NIGHT)
// CONTAINS: all structural proteins for downstream components
// mRNA transcripts (Arc, BDNF, receptor subunits)
// organelles (mitochondria, ribosomes)
// DISTRIBUTES TO: dend_material + pre_material (via axon)
// (combines: CREB_synthesis_output + organelle_biogenesis_output)
VAR axon_energy // NIGHT ATP for myelination, microtubule stabilization
// SOURCE: soma overnight delivery
// NOT recovered
// (covers: myelination_ATP + microtubule_stabilization_ATP)
VAR axon_material // NIGHT slow structural components for axon
// SOURCE: soma_material (motor proteins, myelin components)
// CONTAINS: kinesin/dynein motor proteins (structural pool)
// microtubule components
// myelin maintenance proteins
// RECOVERABLE: partially after axon structural reduction
// (combines: transport_machinery + myelination_proteins)
```
## Part 5 — Structural Variables (Written Only in NIGHT)
```
VAR pre_structure // active zone capacity
// RRP_capacity ∝ pre_structure
// VGCC_coupling ∝ pre_structure
// refill_ceiling ∝ pre_structure
VAR post_structure // spine sensitivity capacity
// anchoring_slots ∝ post_structure
// spine_volume ∝ post_structure
// local_reserve_ceiling ∝ post_structure
VAR dend_structure // branch transmission and supply capacity
// bAP_fidelity ∝ dend_structure × attenuation(position)
// translation_ceiling ∝ dend_structure
// transport_speed ∝ dend_structure
VAR soma_structure // somatic output and production capacity
// baseline_threshold ∝ 1/soma_structure
// AP_reliability ∝ soma_structure
// synthesis_ceiling ∝ soma_structure
VAR axon_structure // axonal transmission and transport capacity
// propagation_reliability ∝ axon_structure
// transport_rate_ceiling ∝ axon_structure
VAR astro_structure // astrosynaptic environmental capacity — SELF-REINFORCING
// perisynaptic_distance ∝ 1/astro_structure
// EAAT_density ∝ astro_structure
// D_serine_tonic ∝ astro_structure
// ECM_integrity ∝ astro_structure
```
## Part 6 — Trace Variables
```
// Fast traces: DAY only
FAST_TRACE pre_fast_trace // residual Ca²⁺ — τ ≈ 100ms
FAST_TRACE post_fast_trace // spine Ca²⁺ amplitude × rise_speed — τ ≈ tens of ms
FAST_TRACE dend_fast_trace // branch Ca²⁺ integration — τ ≈ 300ms
FAST_TRACE soma_fast_trace // nuclear Ca²⁺ — τ ≈ seconds
FAST_TRACE axon_fast_trace // AP propagation load — τ ≈ seconds
FAST_TRACE astro_fast_trace // perisynaptic Ca²⁺ from mGluR5 — τ ≈ seconds
// Possible tagging: intermediate — τ ≈ seconds to minutes
VAR pre_possible_tagging
VAR post_possible_tagging // POST: CANDIDATE lifetime
VAR dend_possible_tagging
VAR soma_possible_tagging
VAR axon_possible_tagging
VAR astro_possible_tagging
// Tags: slow, DAY→NIGHT bridge — τ ≈ hours
TAG pre_tag
TAG post_tag // POST only: CANDIDATE→STABLE before surviving to NIGHT
TAG dend_tag
TAG soma_tag
TAG axon_tag
TAG astro_tag
```
# SCOPE: DAY
{component}_budget consumed. Traces written and decay. Structures READ only.
No {component}_energy or {component}_material used in DAY.
## PRE | CONTEXT: AP
```
scope DAY | context AP:
// Budget gate
if pre_budget < AP_release_cost:
suppress(NT_flux)
exit context
// covers: VGCC_ATP + fusion_ATP + fast_vesicle_consumables
// Fast trace: residual Ca²⁺
pre_fast_trace += spike_Ca_influx(input_freq)
pre_fast_trace *= decay(τ = 100ms)
pre_budget -= Ca_handling_cost
// NT flux: Hill function Ca²⁺ drive × RRP level
Ca_drive = pre_fast_trace^Ca_cooperativity_n /
(Ca_half_max_K^Ca_cooperativity_n + pre_fast_trace^Ca_cooperativity_n)
if RRP_level > 0:
NT_flux = RRP_level × Ca_drive
glutamate += NT_flux × Δt
RRP_level -= NT_flux × Δt
pre_budget -= NT_flux × vesicle_fusion_cost
// covers: SNARE_ATP + fast_membrane_lipid_turnover
// RRP refill — rate limited by pre_budget and pre_structure (READ)
RRP_refill = min(refill_rate_constant, pre_structure.refill_ceiling)
RRP_level += RRP_refill × Δt
RRP_level = clamp(RRP_level, 0, pre_structure.RRP_capacity)
pre_budget -= RRP_refill × VATPase_cost
// Overflow brake: mGluR2/3 → Gi → VGCC suppression
if glutamate > spillover_threshold:
Ca_drive *= mGluR_brake_factor
// Refuel from astrocyte lactate
pre_budget += astro_lactate × pre_fraction
```
## PRE | CONTEXT: NOT_AP
```
scope DAY | context NOT_AP:
// Fast trace decays
pre_fast_trace *= decay(τ = 100ms)
// RRP refills during silence
RRP_refill = min(refill_rate_constant, pre_structure.refill_ceiling)
RRP_level += RRP_refill × Δt
RRP_level = clamp(RRP_level, 0, pre_structure.RRP_capacity)
pre_budget -= RRP_refill × VATPase_cost
// Possible tagging: graded, decays
if pre_fast_trace > eligibility_threshold:
pre_possible_tagging += pre_fast_trace
pre_possible_tagging *= decay(τ = seconds)
// Dopamine decays locally
dopamine_local *= decay(τ = hundreds_of_ms)
// Tag: local eligibility AND global validation must coincide
if dopamine_local > dopamine_threshold and
pre_possible_tagging > tagging_threshold:
pre_tag += dopamine_local × pre_possible_tagging
pre_tag *= decay(τ = hours)
// pre_budget cost: negligible (PKA is already running from dopamine broadcast)
```
## POST | CONTEXT: NOT_bAP
```
scope DAY | context NOT_bAP:
// AMPA current — occupancy of existing slots, gated by post_structure (READ)
AMPA_current = glutamate × post_structure.sensitivity
Vm += AMPA_current
post_budget -= AMPA_current_cost
// covers: NaK_reset_ATP + fast_receptor_recycling_cost
// NMDA gate: depolarization + D-serine + glutamate coincidence
if Vm > Mg_eject_threshold and
astro_D_serine > D_serine_threshold:
Ca_influx = NMDA_Ca_influx(glutamate)
post_fast_trace += Ca_influx × rise_speed(Ca_influx)
post_budget -= NMDA_current_cost
// covers: NMDA_handling_ATP + fast_actin_transient_cost
// Fast trace decays
post_fast_trace *= decay(τ = tens_of_ms)
// CANDIDATE tag: Ca²⁺ crossed tagging threshold — Hebbian anticipation
if post_fast_trace > Ca_TAG_threshold:
post_possible_tagging += post_fast_trace
post_possible_tagging *= decay(τ = minutes) // CANDIDATE lifetime
post_budget -= PKA_phosphorylation_cost // minor — PKA priming of GluA1-Ser845
// Refuel
post_budget += astro_lactate × post_fraction
```
## POST | CONTEXT: bAP
```
scope DAY | context bAP:
// bAP arrives — strength set by dend_structure (READ)
Vm += bAP_depolarization × dend_structure.bAP_fidelity
post_budget -= bAP_reset_cost
// covers: NaK_reset_ATP for bAP depolarization
// Coincidence confirmation: bAP finds CANDIDATE already set
if post_possible_tagging > Ca_TAG_threshold:
post_fast_trace += bAP_Ca_boost()
// supralinear Ca²⁺ summation — trace amplified above Ca_HIGH
// Dopamine decays locally
dopamine_local *= decay(τ = hundreds_of_ms)
// STABLE tag: CANDIDATE stabilized by dopamine within window
if dopamine_local > dopamine_threshold and
post_possible_tagging > tagging_threshold:
post_tag += dopamine_local × post_possible_tagging
post_tag *= decay(τ = hours)
// post_budget cost: already covered by PKA_phosphorylation_cost in NOT_bAP
```
## DEND | CONTEXT: CONTINUOUS
```
scope DAY | context CONTINUOUS:
// Integrate spines upward
branch_Vm = integrate(POST.Vm, all_spines_on_branch)
// Propagate bAP downward — fidelity from dend_structure (READ)
bAP_local = propagate_bAP(SOMA.AP_fired,
dend_structure.bAP_fidelity,
branch_geometry)
dend_budget -= bAP_propagation_cost
// covers: NaK_reset_ATP along branch + fast_Ca_handling
// Fast trace: branch Ca²⁺
dend_fast_trace += bAP_Ca_influx(bAP_local)
dend_fast_trace += spine_Ca_spillover(active_spines)
dend_fast_trace *= decay(τ = 300ms)
dend_budget -= branch_Ca_handling_cost
// Possible tagging
if dend_fast_trace > eligibility_threshold:
dend_possible_tagging += dend_fast_trace
dend_possible_tagging *= decay(τ = seconds)
// Dopamine decays
dopamine_local *= decay(τ = hundreds_of_ms)
// Tag
if dopamine_local > dopamine_threshold and
dend_possible_tagging > tagging_threshold:
dend_tag += dopamine_local × dend_possible_tagging
dend_tag *= decay(τ = hours)
// Local translation: runs when tag set, gated by dend_budget
// uses fast mRNA consumables from dend_budget
if dend_tag > tag_expiry_threshold and dend_budget > translation_cost:
local_proteins = translate(dend_fast_trace)
dend_budget -= translation_cost
// covers: ribosome_running_cost + fast_mRNA_consumed
// Note: this uses fast mRNA pool (in dend_budget), NOT dend_material
// dend_material mRNA is the slow structural pool consumed only in NIGHT
// ACh modulates commit threshold
commit_threshold *= (1 / (1 + ACh_level × ACh_gain))
dend_budget -= branch_maintenance_cost
dend_budget += astro_lactate × dend_fraction
```
## SOMA | CONTEXT: AP
```
scope DAY | context AP:
// Firing threshold: structure baseline × adaptation × neuromodulators × refractory
AP_threshold = soma_structure.baseline_threshold
× (1 + adaptation_factor(soma_fast_trace))
× neuromod_factor(NE_level, ACh_level)
× refractory_factor(time_since_last_AP)
if branch_Vm > AP_threshold:
AP_fired = True
soma_budget -= AP_generation_cost
// covers: Na⁺/K⁺ current ATP + NaK_reset + fast_signaling_consumables
// Fast trace: nuclear Ca²⁺
soma_fast_trace += nuclear_Ca_influx()
soma_fast_trace *= decay(τ = seconds)
// Refractory period
refractory_timer = absolute_refractory_duration
// Possible tagging
if soma_fast_trace > eligibility_threshold:
soma_possible_tagging += soma_fast_trace
soma_possible_tagging *= decay(τ = seconds)
// Dopamine decays
dopamine_local *= decay(τ = hundreds_of_ms)
// Tag: nuclear Ca²⁺ AND dopamine coincidence
if dopamine_local > dopamine_threshold and
soma_possible_tagging > tagging_threshold:
soma_tag += dopamine_local × soma_possible_tagging
soma_tag *= decay(τ = hours)
soma_budget -= CREB_phosphorylation_cost
// covers: CREB_phospho_ATP (minor fast cost)
// Note: full CREB-driven synthesis is a NIGHT operation consuming soma_energy
```
## SOMA | CONTEXT: NOT_AP
```
scope DAY | context NOT_AP:
// Integrate dendritic inputs
branch_Vm = integrate(DEND.branch_Vm, all_branches)
refractory_timer = max(0, refractory_timer - Δt)
soma_fast_trace *= decay(τ = seconds)
// Ship to tagged branches — priority by tag magnitude
for branch in branches_ranked_by(dend_tag):
delivery = min(shipping_fraction × soma_budget,
branch_demand(dend_tag))
dend_budget[branch] += delivery × fuel_fraction
soma_budget -= delivery × shipping_cost
// covers: kinesin_running_cost for fast organelle delivery
// Note: structural protein shipping (soma_material → dend_material)
// happens in NIGHT, not here
// Ship to axon for bouton running costs
axon_budget += soma_budget × axon_fuel_fraction
soma_budget -= soma_budget × axon_fuel_fraction
```
## AXON | CONTEXT: CONTINUOUS
```
scope DAY | context CONTINUOUS:
// AP propagation reliability — set by axon_structure (READ)
propagation_reliability = axon_structure.myelination
× (1 - failure_rate(axon_fast_trace))
APs_delivered = AP_fired × propagation_reliability
axon_budget -= AP_propagation_cost × APs_delivered
// covers: NaK_reset_ATP at nodes + fast_myelin_maintenance
// Fast trace: propagation load
axon_fast_trace += APs_delivered
axon_fast_trace *= decay(τ = seconds)
// Anterograde transport — delivers running supplies to boutons
transport_rate = min(axon_structure.transport_ceiling,
axon_budget × transport_fraction)
pre_budget += transport_rate × Δt // boutons receive running fuel
axon_budget -= transport_cost × transport_rate × Δt
// covers: kinesin_ATPase running cost
// Note: structural pre_material transport (soma_material → pre_material)
// happens in NIGHT, not here
// Possible tagging
if axon_fast_trace > eligibility_threshold:
axon_possible_tagging += axon_fast_trace
axon_possible_tagging *= decay(τ = seconds)
// Dopamine decays
dopamine_local *= decay(τ = hundreds_of_ms)
// Tag
if dopamine_local > dopamine_threshold and
axon_possible_tagging > tagging_threshold:
axon_tag += dopamine_local × axon_possible_tagging
axon_tag *= decay(τ = hours)
// Refuel
axon_budget += soma_budget × axon_fuel_fraction
axon_budget += astro_lactate × axon_astro_fraction
```
## ASTRO | CONTEXT: CONTINUOUS
```
scope DAY | context CONTINUOUS:
// ROOT energy production
astro_budget += glycolysis(vascular_glucose_supply) × Δt
// hard cap: vascular_glucose_supply (FIXED)
// covers: all fast astrocyte operations + lactate export
// Lactate export to all neuronal components
astro_lactate = min(astro_budget × lactate_export_fraction,
vascular_glucose_supply × max_export_fraction)
astro_budget -= astro_lactate
deliver(astro_lactate → pre_budget × pre_fraction,
post_budget × post_fraction,
dend_budget × dend_fraction,
axon_budget × axon_fraction)
// Glutamate clearance — rate from astro_structure (READ)
clearance = astro_structure.EAAT_density × glutamate × Δt
glutamate -= clearance
astro_budget -= clearance × EAAT_ATP_cost
// covers: EAAT_cotransport_ATP + NaK_secondary_cost
// Overflow detection and D-serine release
if glutamate > spillover_threshold:
astro_fast_trace += mGluR5_Ca_influx()
astro_fast_trace *= decay(τ = seconds)
// D-serine release: budget-limited (serine + synthesis ATP both in budget)
D_serine_released = min(proportional_to(astro_fast_trace),
astro_budget × Ds_fraction)
astro_budget -= D_serine_released × Ds_synthesis_cost
// covers: serine_racemase_ATP + serine_precursor_fast_cost
astro_D_serine += D_serine_released
// Simultaneous presynaptic brake — cross-compartment, no astro budget cost
Ca_drive_pre *= mGluR_brake_factor
// Possible tagging
if astro_fast_trace > eligibility_threshold:
astro_possible_tagging += astro_fast_trace
astro_possible_tagging *= decay(τ = seconds)
// Dopamine decays
dopamine_local *= decay(τ = hundreds_of_ms)
// Tag
if dopamine_local > dopamine_threshold and
astro_possible_tagging > tagging_threshold:
astro_tag += dopamine_local × astro_possible_tagging
astro_tag *= decay(τ = hours)
// Tonic D-serine from astro_structure (READ) — baseline supply
astro_D_serine += astro_structure.D_serine_tonic × Δt
astro_budget -= astro_structure.D_serine_tonic × tonic_synthesis_cost
// covers: constitutive_racemase_ATP + baseline_serine_fast_cost
// Global overload
if astro_fast_trace > OVERLOAD_threshold:
trigger(shockwave_lockdown)
```
## Special Case — Shockwave Lockdown
```
scope DAY or NIGHT | context OVERLOAD:
// Emergency — bypasses budget gates
Vm = HYPERPOLARIZED
AMPA_occupancy = mass_internalization()
post_budget -= emergency_reset_cost // DAY: uses post_budget
axon_fast_trace += overdrive_cluster()
astro_budget -= emergency_cost
// Note: in NIGHT, uses post_energy if structural receptors affected
```
# SCOPE: NIGHT
{component}_energy and {component}_material used — NOT {component}_budget
Structural variables WRITTEN. Tags evaluated and cleared.
## Step 1 — Replenish Energy, Material, and Budgets
```
scope NIGHT | step 1:
// Astrocyte: replenishes first — fuels everything
astro_budget += overnight_glycolysis(vascular_glucose_supply) × Δt_night
// covers: fast running costs for next DAY
astro_energy += overnight_astro_synthesis() × Δt_night
// covers: process_motility_ATP + ECM_secretion_ATP for structural work
astro_material += astrocyte_cellbody_synthesis() × Δt_night
// covers: EAAT proteins + racemase upregulation + ECM proteins + process cytoskeleton
// Soma: self-fueled, replenishes own energy + produces all structural material
soma_budget += overnight_mitochondria_output() × Δt_night
soma_energy += overnight_soma_energy_reserve() × Δt_night
// covers: ribosome_biogenesis_ATP + ion_channel_incorporation_ATP
soma_material += CREB_driven_synthesis(soma_tag) × Δt_night
// peaks based on soma_tag magnitude — this is the production bottleneck
// covers: all structural proteins + mRNA + organelles for downstream components
// Distribute soma_material to downstream components
dend_material += soma_material × dend_delivery_fraction
// mRNA + plasticity proteins + organelles shipped to branches
axon_material += soma_material × axon_delivery_fraction
// AZ scaffold proteins + VGCC subunits shipped via anterograde transport
soma_material -= (dend_delivery_fraction + axon_delivery_fraction) × soma_material
// Branch delivers to spines
post_material += dend_material × spine_delivery_fraction
dend_material -= spine_delivery_fraction × dend_material
// AMPA subunits + PSD scaffold proteins delivered to spine reserve
// Axon delivers to boutons
pre_material += axon_material × bouton_delivery_fraction
axon_material -= bouton_delivery_fraction × axon_material
// Downstream energy replenishment
pre_energy += overnight_pre_energy_replenishment()
post_energy += overnight_post_energy_replenishment()
dend_energy += overnight_dend_energy_replenishment()
axon_energy += overnight_axon_energy_replenishment()
// all sourced from soma overnight mitochondrial output
```
## Step 2 — Structural Commits (Parallel, Independent)
```
scope NIGHT | step 2:
// Coherence bonus: if pre, post, astro all tagged → amplified commit
all_aligned = (pre_tag > tag_expiry_threshold and
post_tag > tag_expiry_threshold and
astro_tag > tag_expiry_threshold)
coherence_bonus = all_aligned ? coherence_factor : 1.0
// ── PRE COMMIT ──────────────────────────────────────────────────
if pre_tag > tag_expiry_threshold:
Δpre = min(AZ_expansion_cost,
pre_material, // material gate
pre_energy × pre_fraction) // energy gate
pre_structure += Δpre × coherence_bonus // STRUCTURE WRITTEN
pre_material -= Δpre // material consumed (RECOVERABLE)
pre_energy -= Δpre × assembly_ATP_cost // energy consumed (NOT recoverable)
if Δpre < AZ_expansion_cost:
queue(pre_deficit → next NIGHT)
// ── POST COMMIT ─────────────────────────────────────────────────
if post_tag > tag_expiry_threshold:
Δpost = min(AMPA_insertion_cost,
post_material,
post_energy × post_fraction)
post_structure += Δpost × coherence_bonus // STRUCTURE WRITTEN
post_material -= Δpost // RECOVERABLE
post_energy -= Δpost × assembly_ATP_cost // NOT recoverable
if Δpost < AMPA_insertion_cost:
queue(post_deficit → next NIGHT)
// ── DEND COMMIT ─────────────────────────────────────────────────
if dend_tag > tag_expiry_threshold:
Δdend = min(branch_expansion_cost,
dend_material,
dend_energy × dend_fraction)
dend_structure += Δdend × coherence_bonus // STRUCTURE WRITTEN
dend_material -= Δdend // RECOVERABLE (partially)
dend_energy -= Δdend × assembly_ATP_cost
if Δdend < branch_expansion_cost:
queue(dend_deficit → next NIGHT)
// ── SOMA COMMIT ─────────────────────────────────────────────────
if soma_tag > tag_expiry_threshold:
Δsoma = min(soma_expansion_cost,
soma_material,
soma_energy × soma_fraction)
soma_structure += Δsoma // STRUCTURE WRITTEN
soma_material -= Δsoma // RECOVERABLE (partially)
soma_energy -= Δsoma × assembly_ATP_cost
// ── AXON COMMIT ─────────────────────────────────────────────────
if axon_tag > tag_expiry_threshold:
Δaxon = min(axon_expansion_cost,
axon_material,
axon_energy × axon_fraction)
axon_structure += Δaxon // STRUCTURE WRITTEN
axon_material -= Δaxon // RECOVERABLE (partially)
axon_energy -= Δaxon × assembly_ATP_cost
if Δaxon < axon_expansion_cost:
queue(axon_deficit → next NIGHT)
// ── ASTRO COMMIT ────────────────────────────────────────────────
if astro_tag > tag_expiry_threshold:
Δastro = min(process_retraction_cost,
astro_material, // ECM proteins + process cytoskeleton
astro_energy × astro_fraction)
astro_structure += Δastro × coherence_bonus // STRUCTURE WRITTEN — SELF-REINFORCING
astro_material -= Δastro // RECOVERABLE (recycling_fraction)
astro_energy -= Δastro × assembly_ATP_cost
if Δastro < process_retraction_cost:
queue(astro_deficit → next NIGHT)
```
## Step 3 — Passive Depotentiation
```
scope NIGHT | step 3:
// Potentiation draws material first.
// Remaining material distributed as maintenance.
// What cannot be maintained decays passively.
// No active LTD signal required — depotentiation is resource neglect.
remaining_material = total_material_pool - material_consumed_by_potentiation
maintenance_per_synapse = remaining_material × maintenance_fraction
/ total_synapse_count
for each synapse:
// Structural decay — passive, continuous
pre_structure -= structural_decay_rate × Δt_night
post_structure -= structural_decay_rate × Δt_night
dend_structure -= structural_decay_rate × Δt_night
astro_structure -= structural_decay_rate × Δt_night
// Maintenance allocation from remaining material
if maintenance_per_synapse >= maintenance_cost:
// full maintenance — structure stable
pre_structure += maintenance_pre
post_structure += maintenance_post
dend_structure += maintenance_dend
astro_structure += maintenance_astro
else:
// partial maintenance — structure drifts downward
// DEPOTENTIATION BY NEGLECT — no signal, no active process
pre_structure += maintenance_per_synapse × pre_fraction
post_structure += maintenance_per_synapse × post_fraction
dend_structure += maintenance_per_synapse × dend_fraction
astro_structure += maintenance_per_synapse × astro_fraction
// LTD material recovery: returned to pools, enriches remaining material
for each synapse where net_structure_change < 0:
recovered_material = structure_loss × recycling_fraction
pre_material += recovered_material × pre_fraction // AZ proteins recovered
post_material += recovered_material × post_fraction // receptors to reserve
astro_material += recovered_material × astro_fraction × recycling_fraction
// energy is NOT recovered — assembly ATP is gone
// this asymmetry is why material and energy must stay separate in NIGHT
```
## Step 4 — Homeostatic Scaling
```
scope NIGHT | step 4:
if soma_tag > homeostatic_ceiling:
scale_factor = homeostatic_ceiling / soma_tag
for each synapse:
post_structure *= scale_factor // STRUCTURE WRITTEN
pre_structure *= scale_factor // STRUCTURE WRITTEN
// scaled-down material returned to pools
soma_material += sum(structure_reduction) × recycling_fraction
// energy NOT recovered
```
## Step 5 — Clear All Traces
```
scope NIGHT | step 5:
// Fast traces: confirmed zero (decayed during DAY)
pre_fast_trace = post_fast_trace = dend_fast_trace = 0
soma_fast_trace = axon_fast_trace = astro_fast_trace = 0
// Possible tagging: confirmed zero (decayed during DAY)
pre_possible_tagging = post_possible_tagging = dend_possible_tagging = 0
soma_possible_tagging = axon_possible_tagging = astro_possible_tagging = 0
// Tags: cleared after commit, carried forward if above expiry threshold
if pre_tag < tag_expiry_threshold: pre_tag = 0
if post_tag < tag_expiry_threshold: post_tag = 0
if dend_tag < tag_expiry_threshold: dend_tag = 0
if soma_tag < tag_expiry_threshold: soma_tag = 0
if axon_tag < tag_expiry_threshold: axon_tag = 0
if astro_tag < tag_expiry_threshold: astro_tag = 0
```
## Summary: Energy and Material Flow
```
DAY — {component}_budget (combined fast energy + fast consumables):
vascular_glucose_supply (FIXED)
→ astro_budget (glycolysis ROOT)
→ astro_lactate → pre_budget, post_budget, dend_budget, axon_budget
→ soma_budget (own mitochondria — independent root)
→ axon_budget (partial)
→ dend_budget (partial)
NIGHT — {component}_energy (structural assembly ATP, NOT recoverable):
vascular_glucose_supply (FIXED)
→ astro_energy (overnight glycolysis)
→ soma_energy (overnight mitochondria) → pre_energy, post_energy,
dend_energy, axon_energy
NIGHT — {component}_material (slow structural proteins, RECOVERABLE):
soma (CREB synthesis — soma_tag driven)
→ soma_material
→ dend_material → post_material (spine delivery)
→ axon_material → pre_material (bouton delivery)
astrocyte cell body (overnight synthesis)
→ astro_material (EAAT + racemase + ECM + process cytoskeleton)
LTD recovery flows (material only — not energy):
post LTD → post_material (receptors to dendritic reserve)
pre LTD → pre_material (AZ proteins to axonal pool)
astro LTD → astro_material (ECM fragments, recycling_fraction)
```
# Flows
## Energy flow
```
VASCULAR SUPPLY
→ ASTROCYTE CELL BODY
glucose → lactate (glycolysis)
→ astro_budget (local ATP for clearance, D-serine, ECM, process motility)
→ lactate exported to:
→ pre_budget (ATP for VGCC, vesicle fusion, VATPase)
→ post_budget (ATP for NaK pump, AMPA trafficking, actin)
→ dend_budget (ATP for bAP propagation, local translation)
→ SOMA
soma has own mitochondria — partly self-fueled
soma_budget (ATP for AP generation, CREB, protein synthesis, shipping)
→ dend_budget top-up (organelle delivery)
→ axon_budget top-up (transport machinery)
```
## Material flow
```
SOMA
protein synthesis (CREB-driven, peaks in NIGHT)
→ soma_material (receptors, scaffold proteins, organelles, mRNA)
→ dend_material (branch receives proteins + mRNA from soma)
→ post_material (spine receives receptors + actin from branch)
→ axon_material (boutons receive AZ proteins + VGCCs from soma via axon)
→ pre_material (bouton active zone proteins)
ASTROSYNAPSE
ECM proteins synthesized in astrocyte cell body
→ astro_material (Glypicans, Thrombospondins, serine for D-serine)
→ cleft environment (ECM sealing, D-serine availability)
```