856 lines
54 KiB
Markdown
856 lines
54 KiB
Markdown
---
|
||
include_toc: true
|
||
---
|
||
|
||
# Neuron, budget, traces and behaviours
|
||
|
||
---
|
||
|
||
## Conventions: The Language of the System
|
||
|
||
The system operates across two scopes and multiple contexts. The **DAY scope** is the organism's active period — all fast and intermediate behaviors run here, structural variables are read but never permanently written, and every action leaves a trace that may or may not survive to the NIGHT. The **NIGHT scope** is when structural commits execute, budgets replenish, and all DAY traces are either converted into permanent architecture or cleared. Within each scope, each compartment operates in a specific **context** — AP or NOT_AP for the presynapse, bAP or NOT_bAP for the postsynapse, and CONTINUOUS for the astrocyte and dendritic branch — that determines which behaviors are permitted to run.
|
||
|
||
Every variable in the system is either a **state variable**, a **trace**, or a **budget**. State variables describe the current condition of a compartment. Traces are modifications deposited by a behavior that persist beyond the moment and bias future behaviors — they are the system's memory between contexts. Budgets are shared resource pools that constrain how much of any behavior can actually execute, and they ensure that nothing in the system is free.
|
||
|
||
---
|
||
|
||
## Shared Resource Pools: The Economy Before Any Behavior Runs
|
||
|
||
Before any spike fires or any receptor moves, the system's capacity for change is already determined by the state of its shared resource pools. These pools exist at four nested territorial levels, and they are the reason that what happens at one synapse has consequences for all its neighbors.
|
||
|
||
The axonal arbor maintains a shared pool of vesicle scaffold proteins — RIM, Munc13, and VGCC subunits — that every bouton on that axon must draw from when it wants to expand its active zone. It also maintains a mitochondrial ATP capacity that sets the ceiling on how many release events can occur before the energy supply is exhausted and boutons begin going silent. A set of tagged boutons tracks which sites are currently in competition for proteins drifting along the axon.
|
||
|
||
The dendritic branch maintains its own receptor reserve — a local endosomal pool of AMPA receptors held near the spines that can be rapidly inserted without waiting for the soma — alongside actin machinery for spine enlargement, a protein flux arriving from the soma, a local pool of stored mRNAs that branch ribosomes can translate immediately, and its own mitochondrial ATP budget. The set of tagged spines on the branch tracks which sites are competing for these local resources.
|
||
|
||
The astrocyte territory — which in humans wraps hundreds of thousands of synapses — maintains pools of serine racemase enzyme for D-serine synthesis, glutamate transporter proteins for clearance, extracellular matrix proteins for structural sealing, and a finite number of perisynaptic process extensions that it can selectively allocate to different synapses. All of these draw from a single ATP budget that is itself ultimately capped by the glucose supply from the nearest blood capillary — a hard vascular ceiling that cannot be exceeded regardless of demand.
|
||
|
||
The soma maintains its own pools of synthesis capacity, receptor production rate, organelles for shipping to branches, and mRNA transcription rate. These are the upstream sources that replenish the branch-level pools, and their rate is set by the CREB transcription state left over from DAY activity — meaning the soma's production capacity during NIGHT is determined by how the DAY went.
|
||
|
||
---
|
||
|
||
## Budget Allocation: Constraint Before Commitment
|
||
|
||
When any compartment wants to draw structural resources, it does not simply take them. It calls a budget allocation function that checks what is available, applies a priority weighting based on whether that site has planted a synaptic tag, grants only what can be afforded, and decrements the pool accordingly. If the grant is smaller than the request — because the pool is partially depleted by competing synapses — the deficit is queued for the next NIGHT cycle and heterosynaptic depression is triggered in untagged neighbors. The neighbors lose resources not because any signal told them to weaken, but because the pool was exhausted before reaching them.
|
||
|
||
The astrocyte allocation has an additional layer: all three of its resource draws — D-serine, ECM proteins, and process extensions — are individually capped by their specific pools, and then the combined ATP cost of all three is checked against the total ATP budget. If the ATP cost would exceed the budget, all three grants are scaled down proportionally. This means a heavily loaded astrocyte serving many simultaneously active synapses delivers partial support to each rather than full support to a few.
|
||
|
||
Budget replenishment runs continuously but peaks during the NIGHT scope. The soma's protein synthesis rate, driven by CREB activation accumulated during DAY, determines how fast the dendritic branch pools refill. The astrocyte's pools recover at rates set by enzyme synthesis and ECM production machinery, with process extensions recovering the slowest — on a timescale of hours — which is why a fully deployed astrocyte cannot immediately reallocate its walls to a new synapse. The vascular glucose ceiling is the one parameter in the entire system that cannot be increased by any molecular mechanism — it is set by blood flow and capillary density, and it sets the absolute limit on how much simultaneous structural change the system can support.
|
||
|
||
---
|
||
|
||
## DAY Scope — Presynaptic Bouton
|
||
|
||
### Context: AP
|
||
|
||
When an action potential arrives, the first check is not biological but economic: does this bouton's local mitochondrial capacity have enough ATP to afford the release? If not, the bouton goes silent regardless of the electrical input. This is the energy gate that prevents a depleted axon from continuing to operate at full output — it is not a regulatory decision but a resource constraint.
|
||
|
||
If the budget permits, calcium floods in through voltage-gated channels. The key quantity is not the peak calcium but the residual: the calcium left over from previous spikes that has not yet decayed. This residual is the presynaptic memory of recent activity — a trace that accumulates with repeated firing and fades with silence on a timescale of roughly 100 milliseconds. The current release probability is biased by this residual, meaning a bouton that has been firing recently is primed to release more than one that has been silent. Vesicles are released probabilistically from the readily-releasable pool, glutamate fills the cleft, and the pool shrinks by exactly the number released. The mitochondrial budget decrements.
|
||
|
||
If enough glutamate escapes the cleft to reach the low-affinity mGluR2/3 receptors on the presynaptic membrane, an autoinhibitory brake engages. The Gi-coupled cascade suppresses adenylyl cyclase, reducing cAMP and directly dampening voltage-gated calcium channel opening. This is a negative feedback loop entirely within the presynaptic compartment: excess output detected, output probability reduced, without any postsynaptic input. The RRP is then partially refilled by the astrocyte's lactate supply, but only to the extent that lactate is available — another resource gate.
|
||
|
||
### Context: NOT_AP
|
||
|
||
Between spikes, the presynapse is not idle. The residual calcium trace continues to decay passively — if spikes do not keep arriving, the facilitation advantage erodes. If recent firing history has been consistently above 20 Hz, the reserve pool is mobilized toward the readily-releasable pool, making more vesicles available for the next burst — but only if the reserve is non-empty, meaning this mobilization is itself budgeted by whatever was stored during prior quiescence. If firing history has been sparse, release probability drifts downward.
|
||
|
||
The more important event in the NOT_AP context is the neuromodulatory broadcast. When dopamine or norepinephrine arrives above threshold, PKA activity rises and a synaptic tag is planted — the bouton is added to the set of axon-tagged boutons competing for drifting structural proteins. This tag is a trace of the neuromodulatory context that will persist into the NIGHT scope: if a structural commit runs before the tag expires, this bouton gets priority access to the axonal protein pool.
|
||
|
||
---
|
||
|
||
## DAY Scope — Dendritic Spine
|
||
|
||
### Context: NOT_bAP
|
||
|
||
The NOT_bAP context is where the Hebbian anticipation window opens. Glutamate arriving from the presynapse activates AMPA receptors, depolarizing the spine membrane. If this depolarization is sufficient — and crucially if D-serine supplied by the astrocyte is present as a co-agonist — the NMDA receptor's magnesium block is ejected and calcium begins to enter. The amplitude and speed of this calcium rise are recorded as traces: amplitude encodes whether the event was strong enough for LTP, speed distinguishes LTP-driving fast rises from LTD-driving slow ones.
|
||
|
||
The synaptic tag is planted here, in this context, before the back-propagating AP arrives to confirm coincidence. The trigger for tag planting is the calcium rise combined with NMDA opening — the system is tagging the moment it detects an incoming signal strong enough to potentially be worth encoding, before it knows whether the postsynaptic cell actually fired. This is the Hebbian anticipation: the forward glutamate signal is the candidate event, and the tag is the molecular record of that candidacy. The spine is simultaneously added to the dendritic branch's pool of tagged spines, entering competition for local protein resources. If the neuromodulator context gate has already been set by PKA, the AMPA insertion threshold is lowered, making the eventual structural commit easier.
|
||
|
||
### Context: bAP
|
||
|
||
When the back-propagating action potential arrives from the soma down the dendritic tree, it depolarizes the spine further. This is the confirmation signal. If a tag was planted just before the bAP — meaning the forward glutamate signal and the retrograde AP signal coincide in time — the calcium rise is amplified beyond the LTP threshold, confirming genuine Hebbian coincidence. The bAP did not cause the calcium rise; it amplified one that was already in progress, retroactively validating the tag that was planted in anticipation.
|
||
|
||
If no tag was present — if the bAP arrives at a spine that received no glutamate signal — the membrane depolarizes transiently but no calcium amplification occurs and no trace is deposited. The spine passes through the bAP context without consequence. This asymmetry is the core of spike-timing-dependent plasticity: the order matters, and the tag mechanism enforces the order by requiring the forward signal to precede the backward one by enough time to plant the tag before the bAP confirms it. At the end of the bAP context, the sodium-potassium pump resets the membrane, drawing on the astrocyte's lactate supply, and the soma ATP budget decrements to pay for the propagation cost of the bAP itself.
|
||
|
||
---
|
||
|
||
## DAY Scope — Dendritic Branch
|
||
|
||
### Context: CONTINUOUS
|
||
|
||
The dendritic branch runs continuously as an integrator and distributor, operating in both directions simultaneously. Upward, it integrates the membrane potentials of all spines on its length into a branch voltage that propagates toward the soma and contributes to whether a somatic action potential fires. It also propagates the back-propagating AP downward from the soma toward the spines, but its geometry matters: bAP amplitude decays with distance from the soma, meaning spines at the distal end of a long branch receive a weaker confirmation signal than proximal spines. This geometry is itself a slow structural trace — branches that have grown longer or lost mitochondrial density will propagate bAPs less faithfully.
|
||
|
||
The branch accumulates its own calcium signal driven by the bAP and by spillover from active spines, but this calcium decays more slowly than spine calcium — it integrates across multiple spines and persists for hundreds of milliseconds. When enough spines on the same branch are co-active, a branch-level tag is planted. This is the branch's version of the synaptic tag: a marker that this branch as a whole has been meaningfully recruited, which triggers local BDNF release — a trace that signals branch-level survival and growth pressure to the soma.
|
||
|
||
When a branch tag is set and the local mRNA pool is non-empty, the branch ribosomes begin translating stored mRNAs into structural proteins locally, without waiting for the soma. This local translation provides a fast protein supply that can support early structural changes within minutes rather than hours. The translation itself draws from the branch mitochondrial budget, so a branch that is energetically depleted cannot translate even if its mRNA pool is full. The acetylcholine broadcast modulates the global LTP threshold continuously in this context — during periods of high attentional drive, the threshold lowers across all branches simultaneously.
|
||
|
||
---
|
||
|
||
## DAY Scope — Soma
|
||
|
||
### Context: AP
|
||
|
||
The soma fires an action potential when integrated dendritic input crosses the firing threshold — itself a variable that is modulated by the neuromodulatory state. When it fires, calcium enters the nucleus — a trace that accumulates with firing rate and decays over seconds. This nuclear calcium is the signal that gates CREB phosphorylation in the soma, and CREB phosphorylation is the trace that determines how much protein synthesis runs during the subsequent NIGHT scope. But CREB phosphorylation requires both nuclear calcium above threshold AND PKA activity above threshold — it is a coincidence gate at the somatic level, just as NMDA opening is a coincidence gate at the spine level. Both the activity pattern (nuclear calcium) and the neuromodulatory context (PKA) must align for the gene expression program to activate. When they do, Arc mRNA and BDNF production begin — both traces that will be shipped to active dendritic branches during the NOT_AP context.
|
||
|
||
### Context: NOT_AP
|
||
|
||
Between somatic spikes, the soma integrates dendritic inputs and manages the distribution of resources to branches. It ships Arc mRNA preferentially to tagged branches, whose tags were planted during the DAY based on spine-level calcium events. It queues organelle deliveries to branches ranked by their branch calcium levels — the most active branches receive mitochondria first. This shipping process is itself budgeted: the organelle pool is finite, and a soma that has been heavily depleting its pool during a period of high activity will have fewer organelles to ship until NIGHT replenishment runs.
|
||
|
||
The neuromodulatory broadcast in the NOT_AP context sets the PKA gate simultaneously across all compartments: GluA1-Ser845 priming lowers the AMPA insertion threshold at all tagged spines, DARPP-32 phosphorylation silences the LTD phosphatase globally, and CREB activation opens the gene expression gate. None of these actions write any structural variable — they are traces that bias what the NIGHT scope will commit.
|
||
|
||
---
|
||
|
||
## DAY Scope — Astrocyte
|
||
|
||
### Context: CONTINUOUS
|
||
|
||
The astrocyte operates without discrete contexts — it monitors its entire territory continuously. Glutamate clearance runs at all times at a rate set by the density of transporter proteins currently deployed, drawing from the ATP budget with every cycle. When spillover crosses the low-affinity mGluR5 threshold — signaling that the cleft is genuinely saturated rather than merely active — the astrocyte's internal calcium rises proportionally to the spillover level. This local calcium rise drives D-serine secretion, but the amount secreted is capped by the current serine racemase enzyme capacity, which may be partially depleted if many neighboring synapses are simultaneously demanding co-agonist support. A busy astrocyte territory delivers partial D-serine to many synapses rather than full D-serine to a few — the support is rationed automatically by the enzyme pool.
|
||
|
||
The same spillover simultaneously activates the presynaptic mGluR2/3 brake through a completely different receptor arm, reducing vesicle release probability at the source of the overflow. This push-pull is not coordinated by any signal — it is a structural consequence of the two receptor types sitting on different cells with different G-protein couplings, activated by the same diffusing ligand at the same moment.
|
||
|
||
The astrocyte checks continuously whether its local calcium has exceeded the global overload threshold. If it has, a soma-wide calcium wave fires and the shockwave lockdown executes — a circuit-breaker that mass-internalizes postsynaptic AMPA receptors, hyperpolarizes the membrane, and clusters presynaptic calcium channels for maximum signal preservation, all while rapidly depleting the astrocyte's ATP budget. The lactate pipeline runs in parallel at all times, converting glucose to lactate up to the vascular ceiling and distributing it in fractions to the presynapse, postsynapse, and dendritic branch — the fractionation determining which compartment gets refueled first under high demand.
|
||
|
||
---
|
||
|
||
## Special Case: Shockwave Lockdown
|
||
|
||
The shockwave lockdown can trigger in either scope. It bypasses all budget gates — it is an emergency override that executes regardless of resource availability — but it pays a large ATP cost that leaves the astrocyte depleted and slower to support normal plasticity events for some time afterward. AMPA receptors are mass-internalized and returned to the dendritic reserve pool rather than destroyed, meaning they are recoverable when the emergency passes.
|
||
|
||
---
|
||
|
||
## NIGHT Scope — All Compartments
|
||
|
||
The NIGHT scope opens with budget replenishment. Soma protein synthesis rate, which peaked because CREB was activated during DAY, now drives the highest protein production of the cycle. Branch-level pools refill from this production — receptor reserves, actin machinery, mRNA pools, and mitochondrial capacity all recover at rates proportional to how much CREB-driven expression ran. The astrocyte's pools replenish on their own schedules, with process extensions recovering the most slowly.
|
||
|
||
The soma then processes its shipping queue: organelles deferred during DAY are delivered to the branches that ranked highest by calcium activity. Once the queues are resolved, the structural commit function runs for every synapse that carries a tag.
|
||
|
||
### PRE — Structural Commit
|
||
|
||
The presynapse draws from the axonal protein pool to expand its active zone. What it receives is proportional to how much remains in the pool after competing tagged boutons have drawn their shares. The expansion commits permanently: the active zone grows, more docking slots are installed, calcium channels cluster more tightly beneath the zone, and baseline release probability rises. These are slow traces that will read by every AP context in every subsequent DAY scope. If the pool was insufficient for the full requested expansion, the deficit is queued for the next NIGHT and the partial expansion is committed immediately. In the LTD branch, the process runs in reverse and the proteins dismantled from the active zone are returned to the shared pool, where they become available to other boutons.
|
||
|
||
### POST — Structural Commit
|
||
|
||
The postsynapse draws from the branch receptor reserve and actin machinery. CaMKII, activated by the calcium trace deposited during DAY, anchors new AMPA receptors into the membrane surface — the number anchored determined by how many receptors the budget granted. The spine head physically enlarges in proportion to the actin machinery available. Both changes are slow traces that will be read by every NOT_bAP context in every subsequent DAY. Deficits are queued. In the LTD branch, phosphatase PP1 drives receptor internalization, and the internalized receptors are returned to the branch reserve pool — again conserving the total receptor count across the segment rather than destroying it.
|
||
|
||
### DEND — Structural Commit
|
||
|
||
The dendritic branch receives the organelles shipped from the soma, permanently increasing its local mitochondrial density — a slow trace that will improve bAP propagation fidelity and local translation capacity in future DAY scopes. Arc mRNA stored in the branch pool is translated into structural proteins that expand the local protein flux, making the branch more self-sufficient for future plasticity demands. If BDNF-TrkB signaling crossed its survival threshold during DAY — meaning the branch was genuinely and collectively active — mitochondrial density is further reinforced, stabilizing the branch architecture. If it did not cross the threshold, mitochondrial density declines slightly, making the branch progressively less capable of supporting future plasticity. This is the branch-level version of the use-it-or-lose-it logic: not a binary decision but a continuous drift in one direction or the other depending on whether BDNF traces accumulated during DAY.
|
||
|
||
### SOMA — Structural Commit
|
||
|
||
The soma's NIGHT work is primarily generative rather than structural in the local sense. CREB-driven transcription produces new proteins, receptors, and mRNAs at the highest rate of the cycle, replenishing all downstream pools. Organelle biogenesis runs — new mitochondria are produced and added to the organelle pool for shipping in future NIGHT cycles. If the overall somatic firing rate during DAY exceeded the homeostatic ceiling — meaning the entire neuron was over-recruited — a global downscaling factor is applied to all synapses simultaneously, reducing AMPA counts and release probabilities network-wide. This homeostatic correction is not targeted to any specific synapse; it is a blanket adjustment that restores the neuron's mean excitability without erasing the relative differences between strong and weak synapses. When all queues are empty and all tags are cleared, CREB phosphorylation and CREB activation are reset to false, closing the gene expression program until the next DAY's activity reactivates it.
|
||
|
||
### ASTRO — Structural Commit
|
||
|
||
The astrocyte's NIGHT work centers on remodeling its physical relationship to each synapse it wraps. For synapses that were validated for LTP during DAY, the astrocyte draws from its ECM protein pool to secrete Glypicans and Thrombospondins, sealing and structurally reinforcing the synaptic environment. It draws from its process extension budget to retract its walls inward — physically tightening the wrap around the synapse. This tightening is itself a slow trace with two consequences: it reduces the rate at which glutamate diffuses away from the cleft, and it raises the tonic D-serine level available to the NMDA receptor. Both changes make the synapse more sensitive to future events, making LTP self-reinforcing. For synapses committed to LTD, the reverse occurs: MMP enzymes dissolve the ECM, D-serine supply is cut to zero, and the astrocyte's process walls extend outward, loosening the diffusion geometry and making future signals less concentrated and less likely to trigger NMDA opening. The freed process extensions are returned to the pool and become available for reallocation to LTP synapses.
|
||
|
||
---
|
||
|
||
## Key Asymmetries and the Closure Summary
|
||
|
||
The perisynaptic distance variable is the one slow trace that amplifies rather than merely reflects the outcome. Because it controls both glutamate diffusion geometry and tonic D-serine availability simultaneously, a synapse that has been potentiated becomes progressively easier to potentiate further, and one that has been depressed becomes progressively harder to rescue — not because of any new signal but because the physical environment was remodeled to favor the existing direction.
|
||
|
||
The synaptic tag is the bridge that closes the loop between DAY and NIGHT. It is planted in the NOT_bAP context of DAY when a calcium event meets the tagging threshold, and it is consumed in the NIGHT scope when structural resources are available to fulfill the commit. If the neuromodulatory save signal never arrived during DAY — if dopamine or norepinephrine never validated the event as worth storing — the tag expires at the end of NIGHT without triggering a commit, and the DAY's traces are cleared without structural consequence.
|
||
|
||
The budget conservation law closes the entire system: LTP draws from shared pools and passively impoverishes untagged neighbors; LTD returns resources to shared pools and passively enriches them. The total resources in the system do not grow through activity — they are redistributed. The only way to increase total capacity is through NIGHT-scope CREB-driven synthesis and organelle biogenesis, and even that is bounded by the vascular glucose ceiling that the astrocyte cannot exceed regardless of demand. Every behavior in the system therefore occurs within a context that permits it, consumes from a budget that constrains it, and leaves a trace that shifts the probability of the next behavior — and the entire architecture is designed so that no single event, however strong, can permanently commit the system without the conjunction of the right context, the right energy state, and the right neuromodulatory validation.
|
||
|
||
---
|
||
---
|
||
|
||
# Pseudocode: Tripartite Synapse — Scope & Context Aware Pseudocode v2
|
||
|
||
---
|
||
|
||
## Conventions
|
||
|
||
```
|
||
SCOPE = { DAY, NIGHT }
|
||
CONTEXT = { AP, NOT_AP, bAP, NOT_bAP, CONTINUOUS }
|
||
|
||
Compartments:
|
||
PRE = presynaptic bouton
|
||
POST = dendritic spine (postsynapse)
|
||
ASTRO = astrocyte
|
||
DEND = dendritic branch (segment between soma and spines)
|
||
SOMA = cell body / nucleus
|
||
|
||
Budget pools:
|
||
BUD = shared resource pool (one per territory)
|
||
|
||
Trace:
|
||
A variable modified by a behavior that persists beyond
|
||
the current context and biases future behaviors.
|
||
```
|
||
|
||
---
|
||
|
||
## Shared Resource Pools
|
||
|
||
```
|
||
// ── Axonal arbor ──────────────────────────────────────────────────────
|
||
BUD axon_vesicle_protein_pool // RIM, Munc13, VGCC subunits for AZ expansion
|
||
BUD axon_mitochondria_capacity // ATP ceiling for vesicle release + refill
|
||
BUD axon_tagged_boutons // boutons in competition for drifting proteins
|
||
|
||
// ── Dendritic branch ──────────────────────────────────────────────────
|
||
BUD dend_receptor_reserve // local endosomal AMPA pool per branch
|
||
BUD dend_actin_machinery // Rac1/RhoA + actin monomers per branch
|
||
BUD dend_protein_flux // plasticity proteins flowing from soma
|
||
BUD dend_tagged_spines // spines competing for protein flux
|
||
BUD dend_mitochondria_capacity // local ATP budget for branch-level operations
|
||
BUD dend_mRNA_pool // locally stored mRNAs for rapid translation
|
||
|
||
// ── Astrocyte territory ───────────────────────────────────────────────
|
||
BUD astro_serine_racemase_cap // enzyme ceiling for D-serine synthesis
|
||
BUD astro_EAAT_pool // transporter protein for glutamate clearance
|
||
BUD astro_ECM_protein_pool // Glypicans, Thrombospondins for sealing
|
||
BUD astro_process_extensions // finite perisynaptic processes
|
||
BUD astro_ATP_budget // total ATP: clearance + synthesis + motility
|
||
BUD astro_lactate_ceiling // hard cap from capillary glucose supply
|
||
|
||
// ── Soma ──────────────────────────────────────────────────────────────
|
||
BUD soma_ATP_budget // mitochondrial capacity of cell body
|
||
BUD soma_protein_synthesis_rate // CREB-driven — peaks in NIGHT scope
|
||
BUD soma_receptor_synthesis_rate// new AMPA/NMDA subunits per hour
|
||
BUD soma_organelle_pool // mitochondria + ribosomes available for shipping
|
||
BUD soma_mRNA_transcription_rate// rate of new mRNA production (Arc, BDNF, etc.)
|
||
```
|
||
|
||
---
|
||
|
||
## Global State Variables
|
||
|
||
```
|
||
// ── PRE: presynaptic bouton ───────────────────────────────────────────
|
||
PRE pre_Ca_residual // TRACE: leftover Ca²⁺ between spikes
|
||
PRE vesicle_release_prob // P(0.1–1.0) per docking slot
|
||
PRE RRP_pool // readily-releasable vesicle pool
|
||
PRE reserve_pool // chained vesicles in deep storage
|
||
PRE active_zone_size // SLOW TRACE: docking slot count
|
||
PRE RRP_pool_capacity // SLOW TRACE: max RRP
|
||
PRE VGCC_clustering // SLOW TRACE: Ca²⁺ channels beneath AZ
|
||
|
||
// ── POST: dendritic spine ─────────────────────────────────────────────
|
||
POST membrane_potential // Vm — local depolarization state
|
||
POST NMDA_Mg_block // bool — mechanical clamp on/off
|
||
POST post_Ca_amplitude // TRACE: peak [Ca²⁺] rise in spine
|
||
POST post_Ca_rise_speed // TRACE: d(Ca)/dt — fast=LTP, slow=LTD
|
||
POST spine_tag // TRACE: bool — synaptic tag planted
|
||
POST AMPA_count // SLOW TRACE: surface receptors
|
||
POST spine_volume // SLOW TRACE: physical spine size
|
||
|
||
// ── DEND: dendritic branch ────────────────────────────────────────────
|
||
DEND branch_voltage // local depolarization propagating from spines
|
||
DEND bAP_amplitude // strength of back-propagating AP at this branch
|
||
DEND branch_Ca // TRACE: Ca²⁺ in branch shaft (from bAP + spines)
|
||
DEND branch_tag // TRACE: bool — branch-level plasticity tag
|
||
DEND local_protein_translation // rate of mRNA→protein at branch ribosomes
|
||
DEND mitochondria_density // SLOW TRACE: local energy capacity
|
||
DEND branch_BDNF_level // TRACE: local BDNF secreted by active spines
|
||
|
||
// ── SOMA: cell body ───────────────────────────────────────────────────
|
||
SOMA membrane_potential // somatic Vm — integrates all dendritic input
|
||
SOMA AP_threshold // firing threshold — modulated by neuromodulators
|
||
SOMA CREB_phospho // TRACE: bool — transcription factor active
|
||
SOMA Arc_mRNA_level // TRACE: activity-regulated mRNA — ships to branches
|
||
SOMA BDNF_production_rate // TRACE: neurotrophin synthesis rate
|
||
SOMA nuclear_Ca // TRACE: Ca²⁺ in nucleus — gates CREB
|
||
SOMA organelle_shipping_queue // queue of mitochondria/ribosomes being sent out
|
||
|
||
// ── ASTRO: astrocyte ──────────────────────────────────────────────────
|
||
ASTRO glutamate_cleft // [glu] in synaptic cleft
|
||
ASTRO glutamate_spillover // extrasynaptic [glu] — saturates mGluRs
|
||
ASTRO astro_Ca_local // TRACE: IP3-triggered local rise
|
||
ASTRO astro_Ca_global // TRACE: soma-wide wave — overload flag
|
||
ASTRO D_serine_release // gliotransmitter pulse — NMDA co-agonist
|
||
ASTRO D_serine_tonic_level // SLOW TRACE: baseline co-agonist supply
|
||
ASTRO perisynaptic_distance // SLOW TRACE: wall distance from synapse
|
||
ASTRO ECM_integrity // SLOW TRACE: extracellular matrix density
|
||
ASTRO glutamate_clearance_rate // SLOW TRACE: EAAT transporter density
|
||
ASTRO lactate_out // fuel export to pre + post + dend
|
||
|
||
// ── SIG: signaling intermediates ─────────────────────────────────────
|
||
SIG mGluR2_3_activation // presynaptic Gi — autoinhibitory brake
|
||
SIG mGluR5_activation // astrocytic Gq — IP3→Ca²⁺→D-serine
|
||
SIG cAMP_level // TRACE: set by dopamine/NE via Gs
|
||
SIG PKA_activity // downstream of cAMP
|
||
SIG GluA1_Ser845_primed // TRACE: bool — AMPA insertion primed
|
||
SIG DARPP32_phospho // TRACE: bool — LTD phosphatase silenced
|
||
SIG CREB_active // TRACE: bool — gene expression enabled
|
||
SIG dopamine_level // broadcast: "save" context signal
|
||
SIG NE_level // broadcast: arousal / gain signal
|
||
SIG ACh_level // broadcast: attention / threshold signal
|
||
SIG BDNF_TrkB_signaling // local: branch survival + growth signal
|
||
```
|
||
|
||
---
|
||
|
||
## Budget Allocation Functions
|
||
|
||
```
|
||
function request_axon_resources(bouton_id, req_AZ):
|
||
available = axon_vesicle_protein_pool × tag_priority(bouton_id, axon_tagged_boutons)
|
||
granted = min(req_AZ, available)
|
||
axon_vesicle_protein_pool -= granted
|
||
if granted < req_AZ:
|
||
trigger(heterosynaptic_depression, neighbors(bouton_id))
|
||
return granted
|
||
|
||
function request_dend_resources(spine_id, req_AMPA, req_actin):
|
||
priority = tag_priority(spine_id, dend_tagged_spines)
|
||
g_AMPA = min(req_AMPA, dend_receptor_reserve × priority)
|
||
g_actin = min(req_actin, dend_actin_machinery × priority)
|
||
dend_receptor_reserve -= g_AMPA
|
||
dend_actin_machinery -= g_actin
|
||
if g_AMPA < req_AMPA:
|
||
queue(spine_id, deficit, dend_protein_flux) // wait for soma delivery
|
||
trigger(heterosynaptic_depression, neighbors(spine_id))
|
||
return (g_AMPA, g_actin)
|
||
|
||
function request_astro_resources(syn_id, req_Ds, req_ECM, req_proc):
|
||
g_Ds = min(req_Ds, astro_serine_racemase_cap)
|
||
g_ECM = min(req_ECM, astro_ECM_protein_pool)
|
||
g_proc = min(req_proc, astro_process_extensions)
|
||
ATP_cost = compute_ATP(g_Ds, g_ECM, g_proc)
|
||
if ATP_cost > astro_ATP_budget: scale_down(g_Ds, g_ECM, g_proc)
|
||
astro_serine_racemase_cap -= g_Ds
|
||
astro_ECM_protein_pool -= g_ECM
|
||
astro_process_extensions -= g_proc
|
||
astro_ATP_budget -= ATP_cost
|
||
return (g_Ds, g_ECM, g_proc)
|
||
|
||
function request_soma_resources(req_proteins, req_receptors, req_organelles):
|
||
g_prot = min(req_proteins, soma_protein_synthesis_rate)
|
||
g_rec = min(req_receptors, soma_receptor_synthesis_rate)
|
||
g_org = min(req_organelles, soma_organelle_pool)
|
||
ATP_cost = compute_ATP(g_prot, g_rec, g_org)
|
||
if ATP_cost > soma_ATP_budget: scale_down(g_prot, g_rec, g_org)
|
||
soma_protein_synthesis_rate -= g_prot
|
||
soma_receptor_synthesis_rate -= g_rec
|
||
soma_organelle_pool -= g_org
|
||
soma_ATP_budget -= ATP_cost
|
||
return (g_prot, g_rec, g_org)
|
||
|
||
function replenish_budgets(Δt):
|
||
// Axon
|
||
axon_vesicle_protein_pool += protein_transport_rate(axon) × Δt
|
||
// Dendritic branch
|
||
dend_receptor_reserve += soma_receptor_synthesis_rate × delivery_fraction() × Δt
|
||
dend_actin_machinery += actin_recovery_rate() × Δt
|
||
dend_protein_flux = soma_protein_synthesis_rate
|
||
dend_mRNA_pool += soma_mRNA_transcription_rate × Δt
|
||
dend_mitochondria_capacity += organelle_delivery_rate() × Δt
|
||
// Astrocyte
|
||
astro_serine_racemase_cap += enzyme_synthesis_rate() × Δt
|
||
astro_ECM_protein_pool += ECM_synthesis_rate() × Δt
|
||
astro_process_extensions += process_recovery_rate() × Δt // slow: hours
|
||
astro_ATP_budget += glycolysis(astro_lactate_ceiling) × Δt
|
||
astro_lactate_ceiling = capillary_glucose_supply() // vascular ceiling
|
||
// Soma
|
||
soma_protein_synthesis_rate = CREB_driven_expression() // peaks in NIGHT
|
||
soma_receptor_synthesis_rate += ribosome_activity() × Δt
|
||
soma_organelle_pool += biogenesis_rate() × Δt
|
||
soma_ATP_budget += mitochondria_output() × Δt
|
||
soma_mRNA_transcription_rate = AP_history_driven(SOMA.AP_rate) // scales with use
|
||
```
|
||
|
||
---
|
||
---
|
||
|
||
# SCOPE: DAY
|
||
All fast and intermediate behaviors. Structural variables only READ, not written.
|
||
|
||
---
|
||
|
||
## PRE — Presynaptic Bouton
|
||
|
||
### CONTEXT: AP (action potential arriving)
|
||
|
||
```
|
||
scope DAY | context AP:
|
||
|
||
// Gate 1: energy budget
|
||
if axon_mitochondria_capacity < release_ATP_cost:
|
||
suppress(release) // silent bouton — budget exhausted
|
||
exit context
|
||
|
||
// Ca²⁺ dynamics — primary fast trace
|
||
pre_Ca_residual += spike_influx(input_freq)
|
||
pre_Ca_residual *= decay(τ ≈ 100ms) // TRACE: fades unless spikes keep arriving
|
||
|
||
// Release — gated by residual trace from prior APs
|
||
vesicle_release_prob *= facilitation(pre_Ca_residual)
|
||
released = binomial(RRP_pool, vesicle_release_prob)
|
||
glutamate_cleft = released × quantal_content
|
||
RRP_pool -= released
|
||
axon_mitochondria_capacity -= release_ATP_cost
|
||
|
||
// Overflow sensing — activates mGluR brake (cross-compartment)
|
||
glutamate_spillover = extrasynaptic_diffusion(glutamate_cleft)
|
||
if glutamate_spillover > spillover_threshold:
|
||
mGluR2_3_activation = True
|
||
cAMP_level -= Gi_inhibition(adenylyl_cyclase)
|
||
vesicle_release_prob -= VGCC_suppression() // autoinhibitory brake
|
||
|
||
// Fuel consumed — refill gated by lactate supply
|
||
RRP_pool refilled by VATPase(astro.lactate_out)
|
||
```
|
||
|
||
### CONTEXT: NOT_AP (between spikes)
|
||
|
||
```
|
||
scope DAY | context NOT_AP:
|
||
|
||
// Residual Ca²⁺ decays — trace erodes passively
|
||
pre_Ca_residual *= decay(τ ≈ 100ms)
|
||
|
||
// Reserve pool mobilization — intermediate tuning, pool-limited
|
||
if input_freq_history > 20Hz:
|
||
mobilize(reserve_pool → RRP_pool) // only if reserve_pool > 0
|
||
// TRACE: RRP_pool now larger
|
||
elif input_freq_history < 5Hz:
|
||
vesicle_release_prob *= 0.7 // TRACE: depression accumulates
|
||
|
||
// Neuromodulator context gate — sets axonal tag if save signal present
|
||
if dopamine_level > D1_threshold or NE_level > β_threshold:
|
||
cAMP_level += Gs_activation(adenylyl_cyclase)
|
||
PKA_activity = proportional_to(cAMP_level)
|
||
axon_tagged_boutons.add(bouton_id) // TRACE: tag — competes for axonal proteins
|
||
```
|
||
|
||
---
|
||
|
||
## POST — Dendritic Spine
|
||
|
||
### CONTEXT: NOT_bAP (before back-propagating AP — Hebbian anticipation window)
|
||
|
||
```
|
||
scope DAY | context NOT_bAP:
|
||
|
||
// AMPA current from incoming glutamate
|
||
AMPA_current = glutamate_cleft × AMPA_count
|
||
membrane_potential += AMPA_current
|
||
|
||
// NMDA gate: coincidence check with D-serine from astrocyte
|
||
if membrane_potential > -40mV and D_serine_release > threshold:
|
||
NMDA_Mg_block = False
|
||
post_Ca_amplitude += NMDA_influx(glutamate_cleft)
|
||
post_Ca_rise_speed = d(post_Ca_amplitude) / dt // TRACE: encodes LTP vs LTD
|
||
|
||
// TAG PLANTED HERE — before bAP confirms coincidence
|
||
// Condition: Ca²⁺ rising, NMDA open, ion channels activated
|
||
if post_Ca_amplitude > Ca_TAG_threshold and NMDA_Mg_block == False:
|
||
spine_tag = True // TRACE: tag planted in anticipation window
|
||
dend_tagged_spines.add(spine_id) // enters competition for drifting proteins
|
||
|
||
// PKA priming — if neuromodulator context already set
|
||
if GluA1_Ser845_primed:
|
||
AMPA_insertion_threshold *= 0.7 // easier to anchor receptors later
|
||
```
|
||
|
||
### CONTEXT: bAP (back-propagating action potential arriving)
|
||
|
||
```
|
||
scope DAY | context bAP:
|
||
|
||
// bAP depolarizes spine — confirms or rejects the tag planted in NOT_bAP
|
||
membrane_potential += bAP_depolarization(dend.bAP_amplitude)
|
||
|
||
// Coincidence validation: was the tag planted just before bAP?
|
||
if spine_tag == True and post_Ca_amplitude > Ca_TAG_threshold:
|
||
// Confirmed Hebbian coincidence — escalate Ca²⁺
|
||
post_Ca_amplitude += bAP_Ca_boost() // TRACE: amplitude now crosses LTP threshold
|
||
post_Ca_rise_speed = d(post_Ca_amplitude) / dt
|
||
|
||
elif spine_tag == False:
|
||
// bAP arrived but no prior glutamate signal — no coincidence
|
||
// membrane_potential rises transiently but no Ca²⁺ amplification
|
||
pass
|
||
|
||
// Fuel: NaK pump resets membrane — gated by lactate from astrocyte
|
||
membrane_potential restored by NaK_ATPase(astro.lactate_out)
|
||
soma_ATP_budget -= bAP_propagation_cost
|
||
```
|
||
|
||
---
|
||
|
||
## DEND — Dendritic Branch
|
||
|
||
### CONTEXT: CONTINUOUS (branch is always active as integrator)
|
||
|
||
```
|
||
scope DAY | context CONTINUOUS:
|
||
|
||
// Branch integrates spine activity and propagates bAP
|
||
branch_voltage = integrate(POST.membrane_potential, all_spines_on_branch)
|
||
bAP_amplitude = propagate_bAP(SOMA.AP_fired, branch_geometry)
|
||
// TRACE: bAP_amplitude decays with distance from soma
|
||
|
||
// Branch Ca²⁺ — driven by bAP and local NMDA spillover
|
||
branch_Ca += bAP_Ca_influx(bAP_amplitude)
|
||
branch_Ca *= decay(τ ≈ 300ms) // TRACE: slower than spine Ca²⁺
|
||
|
||
// Branch tag — planted when multiple co-active spines detected
|
||
if co_active_spines(branch) > branch_tag_threshold:
|
||
branch_tag = True // TRACE: branch-level tag for coordinated plasticity
|
||
BDNF_TrkB_signaling += local_BDNF_release(branch_Ca) // TRACE: survival signal
|
||
|
||
// Local translation — mRNA → protein at branch ribosomes
|
||
// Only runs if branch_tag is set and mRNA pool available
|
||
if branch_tag and dend_mRNA_pool > 0:
|
||
local_protein_translation = translate(dend_mRNA_pool, dend_mitochondria_capacity)
|
||
dend_mRNA_pool -= local_protein_translation × cost
|
||
dend_protein_flux += local_protein_translation // TRACE: locally produced proteins
|
||
|
||
// Branch energy budget
|
||
dend_mitochondria_capacity -= branch_ATP_cost(branch_voltage, local_protein_translation)
|
||
|
||
// Intermediate tuning: ACh modulates branch excitability globally
|
||
LTP_threshold *= (1 / (1 + ACh_level × mAChR_gain))
|
||
```
|
||
|
||
---
|
||
|
||
## SOMA — Cell Body
|
||
|
||
### CONTEXT: AP (somatic action potential fired)
|
||
|
||
```
|
||
scope DAY | context AP:
|
||
|
||
// Somatic AP triggered when branch_voltage integration crosses threshold
|
||
if SOMA.membrane_potential > AP_threshold:
|
||
AP_fired = True
|
||
|
||
// Nuclear Ca²⁺ — key trace for slow-scale gene expression
|
||
nuclear_Ca += Ca_influx_from_AP() // TRACE: accumulates with firing rate
|
||
nuclear_Ca *= decay(τ ≈ seconds)
|
||
|
||
// CREB phosphorylation — gated by nuclear Ca²⁺ AND PKA
|
||
if nuclear_Ca > Ca_CREB_threshold and PKA_activity > PKA_threshold:
|
||
CREB_phospho = True // TRACE: enables gene expression in NIGHT scope
|
||
SOMA.Arc_mRNA_level += transcribe(Arc_gene) // TRACE: ships to active branches
|
||
SOMA.BDNF_production_rate += transcribe(BDNF_gene)
|
||
|
||
soma_ATP_budget -= AP_generation_cost
|
||
```
|
||
|
||
### CONTEXT: NOT_AP (between somatic spikes)
|
||
|
||
```
|
||
scope DAY | context NOT_AP:
|
||
|
||
// Integrate dendritic input — build toward next AP or not
|
||
SOMA.membrane_potential = integrate(DEND.branch_voltage, all_branches)
|
||
|
||
// Ship mRNA to active dendritic branches — tagged branches receive priority
|
||
for branch in dend_tagged_spines:
|
||
Arc_mRNA_level → ship_to(branch, priority_fraction) // TRACE: Arc arrives at branch
|
||
BDNF_production_rate → modulate(branch_BDNF_level)
|
||
|
||
// Ship organelles to high-demand branches
|
||
if soma_organelle_pool > 0:
|
||
soma_organelle_queue.add(branches_ranked_by(branch_Ca))
|
||
dend_mitochondria_capacity[top_branch] += deliver_organelle()
|
||
soma_organelle_pool -= delivery_cost
|
||
|
||
// Neuromodulator context received — PKA gate set for all compartments
|
||
if dopamine_level > D1_threshold or NE_level > β_threshold:
|
||
PKA_activity = proportional_to(cAMP_level)
|
||
GluA1_Ser845_primed = True // TRACE: primes all tagged spines
|
||
DARPP32_phospho = True // TRACE: silences LTD phosphatase
|
||
CREB_active = True // TRACE: gene expression gate open
|
||
```
|
||
|
||
---
|
||
|
||
## ASTRO — Astrocyte
|
||
|
||
### CONTEXT: CONTINUOUS (astrocyte monitors territory at all times)
|
||
|
||
```
|
||
scope DAY | context CONTINUOUS:
|
||
|
||
// Clearance — always running, rate limited by EAAT pool and ATP budget
|
||
glutamate_cleft -= glutamate_clearance_rate × Δt
|
||
astro_ATP_budget -= clearance_ATP_cost(glutamate_clearance_rate)
|
||
|
||
// Overflow detection — gated by spillover threshold (low-affinity mGluR5)
|
||
glutamate_spillover = extrasynaptic_diffusion(glutamate_cleft)
|
||
if glutamate_spillover > spillover_threshold:
|
||
mGluR5_activation = True
|
||
astro_Ca_local += IP3_cascade(PLC) // TRACE: local Ca²⁺ rises
|
||
(g_Ds, _, _) = request_astro_resources(syn_id, proportional_to(astro_Ca_local), 0, 0)
|
||
D_serine_release += g_Ds // NMDA co-agonist — may be budget-limited
|
||
mGluR2_3_activation = True // simultaneously brakes PRE
|
||
|
||
// Global overload check
|
||
astro_Ca_global = soma_wave(astro_Ca_local > OVERLOAD_threshold)
|
||
if astro_Ca_global: trigger(shockwave_lockdown)
|
||
|
||
// Fuel pipeline — hard-capped at vascular ceiling
|
||
lactate_out = min(glycolysis_rate(glutamate_clearance_rate), astro_lactate_ceiling)
|
||
deliver(lactate_out → PRE, POST, DEND) // all three compartments draw from this
|
||
astro_ATP_budget += glycolysis(lactate_out) × Δt
|
||
```
|
||
|
||
---
|
||
|
||
## Special Case — Shockwave Lockdown (>100Hz, uncoordinated, any scope)
|
||
|
||
```
|
||
scope DAY or NIGHT | context OVERLOAD:
|
||
|
||
astro_Ca_global = GLOBAL_WAVE
|
||
release(GABA, ATP) // emergency — bypasses budget gate
|
||
rec_AMPA = POST.mass_internalization()
|
||
POST.AMPA_count -= rec_AMPA
|
||
dend_receptor_reserve += rec_AMPA // returned to branch reserve
|
||
POST.membrane_potential = HYPERPOLARIZED
|
||
cluster(PRE.VGCC → beneath_active_zone) // overdrive — signal preserved in chaos
|
||
astro_ATP_budget -= emergency_response_cost()
|
||
```
|
||
|
||
---
|
||
---
|
||
|
||
# SCOPE: NIGHT
|
||
Structural commit, resource replenishment, consolidation.
|
||
All compartments are modulated. Slow variables now WRITTEN.
|
||
|
||
---
|
||
|
||
## ALL COMPARTMENTS — Structural Commit
|
||
|
||
```
|
||
scope NIGHT:
|
||
|
||
// Step 1: replenish all budgets — soma protein synthesis peaks here
|
||
replenish_budgets(Δt_night)
|
||
|
||
// Step 2: process somatic shipping queue — fulfill deferred organelle deliveries
|
||
for branch in soma_organelle_queue:
|
||
dend_mitochondria_capacity[branch] += deliver_organelle()
|
||
soma_organelle_pool -= delivery_cost
|
||
|
||
// Step 3: evaluate structural commit for each tagged synapse
|
||
for each (bouton_id, spine_id, syn_id) where spine_tag == True:
|
||
commit_to_structural_change(bouton_id, spine_id, syn_id)
|
||
|
||
// Step 4: homeostatic downscaling — prune unvalidated potentiations
|
||
for each synapse where spine_tag == False and disuse_duration > disuse_threshold:
|
||
passive_LTD(synapse)
|
||
|
||
// Step 5: clear all DAY-scope traces that were not committed
|
||
for each expired_tag in dend_tagged_spines + axon_tagged_boutons:
|
||
expire_tag(expired_tag)
|
||
```
|
||
|
||
---
|
||
|
||
## PRE — Structural Commit (NIGHT)
|
||
|
||
```
|
||
scope NIGHT | PRE:
|
||
|
||
g_AZ = request_axon_resources(bouton_id, AZ_expansion_cost)
|
||
|
||
// Commit proportional to granted budget
|
||
active_zone_size += g_AZ // SLOW TRACE: permanent AZ expansion
|
||
RRP_pool_capacity += pool_expansion(active_zone_size)
|
||
VGCC_clustering += cluster_beneath_AZ(g_AZ)
|
||
vesicle_release_prob += scale_with(g_AZ)
|
||
|
||
// If partial grant: deficit queued for next NIGHT cycle
|
||
if g_AZ < AZ_expansion_cost:
|
||
queue(bouton_id, deficit, axon_vesicle_protein_pool)
|
||
|
||
axon_tagged_boutons.remove(bouton_id)
|
||
|
||
// LTD branch: resources returned to pool
|
||
if LTD_signal:
|
||
rec_AZ = docking_slot_removal()
|
||
active_zone_size -= rec_AZ
|
||
axon_vesicle_protein_pool += rec_AZ // returned for reuse
|
||
RRP_pool_capacity -= pool_contraction()
|
||
VGCC_clustering -= scatter_VGCCs()
|
||
vesicle_release_prob *= 0.6
|
||
```
|
||
|
||
---
|
||
|
||
## POST — Structural Commit (NIGHT)
|
||
|
||
```
|
||
scope NIGHT | POST:
|
||
|
||
(g_AMPA, g_actin) = request_dend_resources(spine_id, AMPA_cost, actin_cost)
|
||
|
||
// Commit proportional to granted budget
|
||
activate(CaMKII)
|
||
AMPA_count += receptor_insertion(CaMKII, g_AMPA) // SLOW TRACE: permanent receptor gain
|
||
spine_volume *= (1 + spine_scale(g_actin)) // SLOW TRACE: spine head enlarged
|
||
|
||
// Deficit queued for next NIGHT cycle
|
||
if g_AMPA < AMPA_cost:
|
||
queue(spine_id, deficit, dend_protein_flux)
|
||
|
||
dend_tagged_spines.remove(spine_id)
|
||
spine_tag = False // tag cleared after commit
|
||
|
||
// LTD branch: resources returned to branch pool
|
||
if LTD_signal:
|
||
activate(PP1)
|
||
rec_AMPA = receptor_internalization(PP1)
|
||
AMPA_count -= rec_AMPA
|
||
dend_receptor_reserve += rec_AMPA // returned to branch pool
|
||
spine_volume *= 0.7
|
||
dend_actin_machinery += actin_depolymerization()
|
||
```
|
||
|
||
---
|
||
|
||
## DEND — Structural Commit (NIGHT)
|
||
|
||
```
|
||
scope NIGHT | DEND:
|
||
|
||
// Branch receives organelles shipped from soma during NIGHT
|
||
dend_mitochondria_capacity += soma_organelle_delivery(branch_id) // SLOW TRACE
|
||
|
||
// Arc mRNA translated into structural proteins at branch ribosomes
|
||
if dend_mRNA_pool > Arc_threshold:
|
||
new_proteins = translate(dend_mRNA_pool, dend_mitochondria_capacity)
|
||
dend_protein_flux += new_proteins // SLOW TRACE: local supply expanded
|
||
dend_mRNA_pool -= translation_cost
|
||
|
||
// Branch BDNF consolidates active branch architecture
|
||
if branch_BDNF_level > BDNF_survival_threshold:
|
||
dend_mitochondria_density += BDNF_TrkB_signaling × Δt // SLOW TRACE: branch reinforced
|
||
else:
|
||
dend_mitochondria_density -= pruning_rate() × Δt // SLOW TRACE: branch weakened
|
||
|
||
// Branch tag cleared
|
||
branch_tag = False
|
||
```
|
||
|
||
---
|
||
|
||
## SOMA — Structural Commit (NIGHT)
|
||
|
||
```
|
||
scope NIGHT | SOMA:
|
||
|
||
// CREB drives transcription — highest rate during NIGHT (slow-wave sleep replay)
|
||
if CREB_phospho:
|
||
soma_protein_synthesis_rate += CREB_driven_expression() // SLOW TRACE
|
||
soma_receptor_synthesis_rate += CREB_driven_expression()
|
||
soma_mRNA_transcription_rate += transcription_burst()
|
||
|
||
// Replenish organelle pool — biogenesis peaks during rest
|
||
soma_organelle_pool += mitochondria_biogenesis() × Δt // SLOW TRACE
|
||
soma_ATP_budget += overnight_mitochondria_recovery() × Δt
|
||
|
||
// Homeostatic scaling: if overall firing was too high, scale down all synapses
|
||
if soma_AP_rate_history > homeostatic_ceiling:
|
||
for each synapse:
|
||
AMPA_count[synapse] *= homeostatic_scale_down_factor
|
||
vesicle_release_prob[synapse] *= homeostatic_scale_down_factor
|
||
|
||
// Clear CREB trace if no further consolidation needed
|
||
if soma_organelle_queue.empty() and dend_tagged_spines.empty():
|
||
CREB_phospho = False
|
||
CREB_active = False
|
||
```
|
||
|
||
---
|
||
|
||
## ASTRO — Structural Commit (NIGHT)
|
||
|
||
```
|
||
scope NIGHT | ASTRO:
|
||
|
||
// Perisynaptic process remodeling — most expensive astrocyte operation
|
||
// LTP: walls move IN — seals and insulates the channel
|
||
if LTP_signal:
|
||
(g_Ds, g_ECM, g_pr) = request_astro_resources(syn_id, Ds_cost, ECM_cost, proc_cost)
|
||
perisynaptic_distance -= g_pr // SLOW TRACE: tighter wrap
|
||
ECM_integrity += g_ECM // SLOW TRACE: matrix sealed
|
||
D_serine_tonic_level += g_Ds // SLOW TRACE: sustained co-agonist
|
||
glutamate_clearance_rate *= (1 - clearance_scale(g_pr)) // SLOW TRACE
|
||
|
||
// LTD: walls move OUT — loosens diffusion barrier, dissolves matrix
|
||
if LTD_signal:
|
||
rec_ECM = secrete(MMPs)
|
||
ECM_integrity -= rec_ECM
|
||
astro_ECM_protein_pool += rec_ECM × recycling_fraction // partial recovery
|
||
D_serine_tonic_level = 0 // SLOW TRACE: starved
|
||
perisynaptic_distance += process_extension()
|
||
astro_process_extensions += freed_process // freed for reallocation
|
||
glutamate_clearance_rate *= 1.2 // SLOW TRACE
|
||
|
||
// Replenish astrocyte pools overnight
|
||
replenish_budgets(Δt_night)
|
||
```
|
||
|
||
---
|
||
|
||
## Heterosynaptic Depression — Passive Resource Depletion (any scope)
|
||
|
||
```
|
||
scope DAY or NIGHT | triggered by budget exhaustion:
|
||
|
||
function heterosynaptic_depression(neighbor_ids):
|
||
// No active signal — purely consequence of pool depletion
|
||
for n in neighbor_ids:
|
||
if n not in dend_tagged_spines and n not in axon_tagged_boutons:
|
||
POST.AMPA_count[n] -= passive_depletion_rate()
|
||
PRE.vesicle_release_prob[n] -= passive_depletion_rate()
|
||
```
|
||
|
||
---
|
||
|
||
## Energy Supply Chain — Metabolic Gating (DAY scope, CONTINUOUS)
|
||
|
||
```
|
||
scope DAY | context CONTINUOUS:
|
||
|
||
function metabolic_loop(Δt):
|
||
glucose_uptake = blood_capillary_supply() // vascular hard ceiling
|
||
lactate_out = min(glycolysis(glucose_uptake, glutamate_clearance_rate),
|
||
astro_lactate_ceiling)
|
||
lactate_out *= load_factor(glutamate_clearance_rate)
|
||
|
||
// Distribute fuel to all three consumer compartments
|
||
PRE.RRP_pool refilled by VATPase(lactate_out × pre_fraction)
|
||
POST.membrane_potential reset by NaK_ATPase(lactate_out × post_fraction)
|
||
DEND.branch_ops powered by lactate_out × dend_fraction
|
||
|
||
astro_ATP_budget += glycolysis(lactate_out) × Δt
|
||
```
|
||
|
||
---
|
||
|
||
## Key Asymmetries and Closure Summary
|
||
|
||
```
|
||
// PERISYNAPTIC DISTANCE — amplifies both directions
|
||
// LTP: walls IN → clearance_rate ↓, D_serine_tonic ↑ → self-reinforcing
|
||
// LTD: walls OUT → clearance_rate ↑, D_serine_tonic = 0 → self-reinforcing
|
||
// Cost: astro_process_extensions budget — slow to recover (hours)
|
||
|
||
// SYNAPTIC TAG — the bridge between DAY and NIGHT
|
||
// Planted in DAY (NOT_bAP context) when Ca²⁺ rises before bAP confirms coincidence
|
||
// Consumed in NIGHT when structural commit runs and budget is available
|
||
// Expires in NIGHT if no save signal arrived during DAY — no structural trace left
|
||
|
||
// BUDGET CONSERVATION — the system is closed
|
||
// LTP draws from shared pools → neighbors passively depressed (heterosynaptic LTD)
|
||
// LTD returns resources to pools → neighbors passively enriched
|
||
// Net: one synapse's gain is its neighbors' loss, bounded by vascular glucose ceiling
|
||
|
||
// SLEEP (NIGHT scope) — not passive recovery but active execution
|
||
// soma_protein_synthesis_rate peaks → queued deficits fulfilled
|
||
// CREB_driven_expression peaks → new structural proteins shipped to tagged branches
|
||
// Homeostatic downscaling runs → unvalidated potentiations pruned
|
||
// All DAY traces either committed to structure or cleared
|
||
```
|