--- include_toc: true --- # 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 (hours–days) 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 Per ora abbiamo in DAY il {component}_budget che raggruppa energy e material, e in NIGHT {component}_energy e {component}_material. This maps onto a real biological distinction. The astrocyte's lactate and the soma's ATP fund the running costs of the cell — everything that needs to happen just to keep the system operating from moment to moment. CREB-driven protein synthesis funds the capital investment — the slow, expensive structural changes that modify what the running system is capable of. These are two different budgets in the biological sense: operating expenditure versus capital expenditure. Combining them within DAY is correct because DAY is entirely operating expenditure. Keeping them separate in NIGHT is correct because NIGHT mixes operating expenditure with capital expenditure, and only the capital component is recoverable. Combining {component}_energy e {component}_material would hide the fact that dismantling a structure recovers biological building blocks but not the work that was done to assemble them — which is the thermodynamic reality of any construction and deconstruction process. ## 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) ``` Yes, exactly. This is the essential abstract pattern. Let me state it precisely. # The Abstract Pattern A component operates within a structure set by the previous NIGHT. During DAY, in each context, it executes behaviors that cost budget and deposit fast traces. Fast traces are local records of recent activity that bias the next behavior and open an eligibility window for tagging. A tag forms when a local eligibility signal coincides with one or more non-local validation signals within the decay window of the trace — the number of required coincidences reflecting the spatial scale at which that component sits in the system. In contexts without triggering input, all traces decay, closing the windows they opened. At NIGHT, the tag magnitude drives a structural commit proportional to available material and energy — material being recoverable and energy not — with the structural change becoming the new ceiling within which the next DAY's behaviors will operate. What is not committed decays for lack of maintenance, and the resources freed by that decay partially fund the potentiation of what was. ## DAY — The General Form Every DAY behavior follows this template: ``` given: STRUCTURE // the architectural ceiling left by NIGHT in: CONTEXT // local or global triggering condition if: BUDGET > cost // operational resources available then: behavior executes BUDGET -= cost // resources consumed FAST_TRACE += f(behavior) // local record deposited ``` The fast trace then drives two parallel processes: **Within the same context** — the trace biases the next execution of the same behavior. This is the short-term modulation loop. It is entirely local and requires no external signal. **Across contexts** — the trace accumulates into `possible_tagging` when it exceeds the eligibility threshold. This is the bridge toward long-term change. It requires the trace to be sustained enough to survive into the NOT_AP or CONTINUOUS context. ### The Tag Formation — Where Non-Locality Enters The abstract pattern for tag formation generalizes across all components but with different **coincidence requirements**: **PRE, DEND, SOMA, AXON, ASTRO — one non-local coincidence:** ``` if FAST_TRACE > eligibility // local: this bouton was recently active AND dopamine > threshold // non-local: organism-level reward signal then: TAG += dopamine × possible_tagging ``` One spatial scale beyond the local component is required. The organism must confirm that the recent activity was worth saving. **POST — two non-local coincidences:** ``` // First coincidence (NOT_bAP context): if FAST_TRACE > Ca_TAG_threshold // local: spine Ca²⁺ was high AND D-serine > threshold // non-local 1: astrosynapse co-agonist then: post_possible_tagging += FAST_TRACE // CANDIDATE // Second coincidence (bAP context): if post_possible_tagging > threshold // local: CANDIDATE still present AND bAP arrives // non-local 2: soma fired then: FAST_TRACE amplified above Ca_HIGH // Tag stabilization (any context): if post_possible_tagging > threshold // local: confirmed coincidence AND dopamine > threshold // non-local 3: organism validation then: TAG += dopamine × post_possible_tagging // STABLE ``` Three spatial scales must align: astrosynapse, soma, organism. The postsynapse is the most constrained component — it requires the most non-local validation before committing. ### Trace Recession — The Temporal Behavior In every NOT_AP or CONTINUOUS context, all traces decay: ``` FAST_TRACE *= decay(τ_fast) // ms to seconds — closes eligibility window possible_tagging *= decay(τ_mid) // seconds to minutes — closes tagging window TAG *= decay(τ_slow) // hours — closes commitment window ``` The decay is not a separate behavior — it is the passive consequence of molecular processes. But its effect is behavioral: it enforces that coincidences must happen within specific time windows. The system does not check timing explicitly — timing is enforced by the competition between accumulation and decay. ## NIGHT — The General Form ``` given: TAG // strength of DAY evidence for this component STRUCTURE // current architectural state if: TAG > threshold // evidence strong enough to justify investment then: Δstructure = min(expansion_cost, MATERIAL, // slow structural resources available ENERGY × fraction) // assembly ATP available STRUCTURE += Δstructure × coherence_bonus MATERIAL -= Δstructure // RECOVERABLE after LTD ENERGY -= Δstructure × ATP_cost // NOT recoverable ``` The coherence bonus appears when pre, post, and astro tags are all SET simultaneously — the three components of the synapse have all independently gathered evidence for the same structural change, which amplifies the commit beyond what any single tag would produce alone. What is not potentiated passively decays: ``` STRUCTURE -= decay_rate × Δt_night STRUCTURE += min(maintenance_allocation, maintenance_cost) // if maintenance_allocation < decay_rate × Δt_night: // structure drifts down — depotentiation by neglect ```