function commit_to_structural_change():
// Hierarchical filter: three conditions must align
event_detected = post_Ca_amplitude > Ca_HIGH // layer 1: did something happen?
overflow_sensed = mGluR5_activation == True // layer 2: was it excessive?
context_validated = DARPP32_phospho and GluA1_Ser845_primed // layer 3: worth saving?
// ── Branch 1: LTP — potentiation ──────────────────────────────
if event_detected and overflow_sensed and context_validated:
// Postsynapse: anchor receptors, enlarge spine
activate(CaMKII)
AMPA_count += receptor_insertion(CaMKII, GluA1_Ser845_primed)
spine_volume *= 1.5
// Presynapse: expand launchpad, increase output reliability
active_zone_size *= 1.4 // more docking slots
RRP_pool_capacity += pool_expansion(active_zone_size)
VGCC_clustering += cluster_beneath_AZ() // tighter Ca²⁺ coupling
vesicle_release_prob += 0.1 // driven by VGCC clustering
// Astrocyte: seal and insulate the channel
perisynaptic_distance -= process_retraction() // walls move IN → tighter wrap
ECM_integrity += secrete(Glypicans, Thrombospondins)
D_serine_tonic_level += upregulate_synthesis() // sustained NMDA priming
glutamate_clearance_rate *= 0.85 // tighter wrap → slower diffusion away
return "potentiated"
// ── Branch 2: temporary only — Ca²⁺ rose, no save signal ─────
elif event_detected and not context_validated:
AMPA_count += transient_insertion() // early-LTP only — reverses in minutes
vesicle_release_prob += transient_facilitation()
// No astrocyte structural change
return "temporary facilitation only"
// ── Branch 3: LTD — active forgetting ─────────────────────────
elif event_detected and not overflow_sensed and not context_validated:
// Postsynapse: internalize receptors, shrink spine
activate(PP1)
AMPA_count -= receptor_internalization(PP1)
spine_volume *= 0.7
// Presynapse: dismantle launchpad
active_zone_size -= docking_slot_removal()
RRP_pool_capacity -= pool_contraction()
VGCC_clustering -= scatter_VGCCs() // decouple Ca²⁺ from AZ
vesicle_release_prob *= 0.6
// Astrocyte: dissolve matrix, pull away, cut support
ECM_integrity -= secrete(MMPs) // molecular scissors
D_serine_tonic_level = 0 // co-agonist supply cut
perisynaptic_distance += process_extension() // walls move OUT → loose wrap
glutamate_clearance_rate *= 1.2 // looser wrap → faster spillover
return "depressed"
// ── Branch 4: baseline ────────────────────────────────────────
else:
// All structural variables unchanged — system holds current state
return "baseline — no change"