SD-032: Cingulate Integration Substrate
Claim ID: SD-032 (parent) + SD-032a–e (subdivisions) Subject: cingulate.integration_substrate Status: candidate, v3_pending — SD-032b IMPLEMENTED 2026-04-19; SD-032a IMPLEMENTED 2026-04-19; SD-032c IMPLEMENTED 2026-04-19; SD-032d IMPLEMENTED 2026-04-19; SD-032e IMPLEMENTED 2026-04-19; parent cluster now fully covered at V3-plausible resolution — cluster-level promotion awaits V3-EXQ-445/446/447/448 validation evidence. Registered: 2026-04-19 Depends on: SD-011, SD-012, SD-020, SD-021, MECH-091, MECH-094, MECH-220 Paired with: SD-033 (PFC subdivision architecture) — together form the V3 cognitive-control backbone
Problem
ree-v3 produces a z_harm_a stream (SD-011) but has no substrate that integrates it with cognitive control, urgency interrupt, effort credit assignment, or offline-mode coordination. EXQ-395 exposed this as a “z_harm_a consumer gap” and triaged it under the original MECH-220 cingulate-insula hub claim. Three other FAILs — EXQ-325a (SD-021 descending pain modulation), EXQ-355a (ARC-038 schema assimilation), EXQ-435 (INV-054 phase transition) — show the same surface pattern: a signal is computed correctly at the substrate level but does not produce coherent downstream behaviour because the coordinator for mode selection is absent.
The lit-pull (targeted_review_cingulate_integration_substrate, 9 entries) reframes the problem. The three candidate consumers of z_harm_a — (A) trajectory cost, (B) forward-rollout cost, (C) urgency interrupt — are not alternatives. They are different subdivisions’ jobs, sequenced by a network-level salience-network coordinator. ree-v3 has fragments of each function but no substrate that binds them. MECH-220 was the right intuition (“there is a cingulate hub that integrates affective pain into action value”) with the wrong architecture (a single module). The correct form is a network coordinator gating five functional subdivisions.
Subdivisions
| ID | Subdivision | Biological analogue | ree-v3 function | Status in ree-v3 |
|---|---|---|---|---|
| SD-032a | Salience-network coordinator | AIC-dACC coupled salience network (Menon & Uddin 2010) | Reads all subdivisions; outputs operating_mode vector + mode-switch trigger | Absent |
| SD-032b | dACC / aMCC-analog (adaptive control) | dorsal ACC / anterior midcingulate (Shackman 2011; Baliki 2010) | Integrates z_harm_a PE + z_conflict + control demand; writes striatal-analog action-value target | Absent |
| SD-032c | AIC-analog (interoceptive salience / urgency) | Anterior insula (Craig 2009) | Detects salient interoceptive events; gates on SD-012 baseline; fires mode-switch trigger; subsumes SD-021 descending modulation | IMPLEMENTED 2026-04-19 |
| SD-032d | PCC-analog (attention partition / metastability) | Posterior cingulate (Leech & Sharp 2013) | Biases external-vs-internal attention; emits mode-stability scalar | IMPLEMENTED 2026-04-19 |
| SD-032e | pACC-autonomic coupling | Perigenual / subgenual ACC (Vogt 2005; Craig 2009) | Writes z_harm_a into SD-012 valence / drive_level over slow timescale | Absent |
SD-032a — Salience-network coordinator
Network-level module whose inputs are the five subdivisions’ signals and whose outputs are (i) operating_mode: a soft probability vector over {external_task, internal_planning, internal_replay, offline_consolidation}, and (ii) mode_switch_trigger: a boolean that fires when any subdivision’s precision-weighted salience exceeds the MECH-259 threshold. Mode transitions are discrete (atomic broadcast to all downstream gates); the threshold itself may be graded and learnable. The operating_mode vector is the primary input to MECH-261’s write-gating family.
Substrate signature: an ablation of SD-032a (forcing operating_mode to a fixed external_task vector) should abolish coordinated mode switching without affecting the within-mode computations in SD-032b/c/d/e.
Implementation (2026-04-19): ree_core/cingulate/salience_coordinator.py (SalienceCoordinator, SalienceCoordinatorConfig, DEFAULT_MODE_NAMES, DEFAULT_GATE_WEIGHTS). Non-trainable arithmetic. Reads SD-032b dACC bundle (pe, foraging_value, choice_difficulty), SD-012 drive_level, and the agent offline-mode flag (proxy for SD-032d stability). Registered input slots aic_salience, pcc_stability, pacc_autonomic are no-op until SD-032c/d/e land – callers extend via update_signal(name, value). Outputs (i) operating_mode soft probability vector over the four V3 modes (softmax over per-mode affinity logits, default biased to external_task), (ii) discrete current_mode updated only on threshold crossing (hysteresis), (iii) MECH-259 mode_switch_trigger boolean fired when salience aggregate exceeds switch_threshold * (1 + stability_scaling * pcc_stability) AND the soft-vector argmax differs from the current mode. Hosts MECH-261 dict-keyed write-gate registry ({target: {mode: weight}}) populated from the spec table; write_gate(target_name) returns the soft-weighted sum. register_target(name, weights) allows V4 substrates (e.g. SD-033e parallel_goal_deliberation) to register their own gate profile without coordinator schema changes – mode_names is also a list, not a fixed-arity tuple. Integrated into ree_core/agent.py REEAgent.select_action immediately after the dACC bundle is built; ticks on every action selection. Config flag REEConfig.use_salience_coordinator (default False); knobs salience_switch_threshold (default 1.0), salience_stability_scaling (1.0), salience_softmax_temperature (1.0), salience_external_task_bias (1.0), salience_dacc_pe_weight (1.0), salience_dacc_foraging_weight (0.5), salience_apply_to_dacc_bias (False – when True, scales the dACC score_bias by the e3_policy write-gate so internal_replay attenuates dACC influence on action selection). DACCtoE3Adapter is RETAINED as the score_bias source until SD-033 substrates consume operating_mode natively (staged removal). MECH-094: not authored here – coordinator emits the gate that MECH-094 generalises to. Validation experiment: V3-EXQ-446 queued.
SD-032b — dACC / aMCC-analog (adaptive control)
Minimum-viable substrate that resolves EXQ-395. Reads z_harm_a_PE (precision-weighted; MECH-258), z_conflict (top-vs-runner-up trajectory value margin from E3), and control_demand (expected value of control; Shenhav 2013). Outputs a behavioural-adjustment magnitude that is written to a striatal-analog action-value module with a learnable ACC→striatum weight (Baliki 2010 ACC-NAc coupling). Dopamine-analog credit assignment via SD-003 counterfactual attribution shapes that weight over time.
MECH-260 (bias suppression) is hosted here: an additional output channel producing a counter-bias against recently-executed trajectories. Candidate mechanistic explanation of the fishtank_viz monostrategy failure.
Substrate signature: precision-weighted PE → action-value shift with the expected scaling (large adjustment under high precision, small under low). Chronic-pain-like plasticity signature: sustained z_harm_a exposure shifts the ACC→striatum weight (Baliki 2012 finding).
Implementation (2026-04-19): ree_core/cingulate/dacc.py (DACCAdaptiveControl, DACCConfig, DACCtoE3Adapter) + MECH-258 prerequisite ree_core/predictors/e2_harm_a.py (E2HarmAForward, E2HarmAConfig). Integrated into ree_core/agent.py REEAgent.select_action. Config flag REEConfig.use_dacc (default False); sub-weights dacc_weight, dacc_interaction_weight, dacc_foraging_weight, dacc_suppression_weight, dacc_suppression_memory (default 8), dacc_precision_scale (default 500), dacc_effort_cost (default 0.1), dacc_drive_coupling (default 0). Bundle output (Croxson 2009 × Shenhav 2013 × Kolling 2015 integration; NOT a scalar): {mode_ev[K], choice_difficulty, foraging_value, harm_interaction[K], suppression[K], pe, drive_gain}. The stopgap DACCtoE3Adapter converts the bundle to score_bias[K] passed to E3.select(); the adapter is explicitly marked for replacement when SD-032a salience-network coordinator lands (coordinator is the architectural consumer of the bundle per this doc’s design). MECH-258 E2_harm_a supports both an ARC-033-parallel independent path and an ARC-058 shared-trunk path (constructor arg shared_trunk). Phased training required for E2_harm_a (P0 encoder warmup → P1 frozen- encoder forward-model training on .detach()ed targets → P2 eval). Validation experiment: V3-EXQ-445 (3-arm ablation).
SD-032c — AIC-analog (interoceptive salience / urgency)
Decides when the current operating mode is no longer sustainable. Inputs: z_harm_a, drive_level / fatigue / metabolic estimate (SD-012), plus other salient-event signals (unexpected z_goal drop, reward-prediction surprise, detected irreversibility). Computation: salience = f(z_harm_a, interoceptive_baseline, ...). If salience > threshold, fires the mode-switch trigger into SD-032a.
Subsumes SD-021. The descending pain-modulation pathway (ACC / AIC → PAG) is an AIC function in biology: it attenuates z_harm_s gain as a function of current operating mode (attenuated during committed external_task, unattenuated during internal_planning). SD-021’s EXQ-325a FAIL should resolve when SD-032c wires the modulation correctly.
Substrate signature: same z_harm_a produces different mode-switch behaviour in depleted vs well-resourced agents (interoceptive-baseline dependence). Failure: mode-switch rate is invariant to SD-012 state.
Implementation (2026-04-19): ree_core/cingulate/aic_analog.py (AICAnalog, AICConfig). Non-trainable arithmetic over scalars. Single EMA buffer for interoceptive baseline. Inputs per sense() tick: z_harm_a_norm (scalar ||z_harm_a||_2 from SD-011), drive_level (SD-012 GoalState), beta_gate_elevated (MECH-090), operating_mode (SD-032a coordinator, previous tick; None treated as p_external_task=1.0 waking baseline so SD-032c remains functional without coordinator), extra_salient dict (optional; unexpected z_goal drop, reward-surprise, irreversibility; aic_extra_weight=0 default). Computation: EMA baseline <- alpha * z_harm_a_norm, urgency = max(0, (z_harm_a_norm - baseline)/(baseline + eps)), aic_salience = urgency * (1 + drive_coupling * drive_level) + extra_weight * sum(extra), harm_s_gain = clip_[0,1](1 - base_attenuation * p_external * float(beta_gate_elevated) * drive_protect) where drive_protect = max(0, 1 - drive_protect_weight * drive_level). Outputs: aic_salience fed to SalienceCoordinator via update_signal("aic_salience", ...) in select_action() BEFORE coordinator.tick(); harm_s_gain applied as multiplier on z_harm in sense() replacing the legacy SD-021 raw-beta-gate check when use_aic_analog=True; urgency_signal bool (diagnostic). Config flag REEConfig.use_aic_analog (default False); sub-knobs aic_baseline_alpha (0.02, ~50-step window), aic_drive_coupling (1.0; MUST be non-zero for falsification signature), aic_urgency_threshold (1.0, diagnostic), aic_base_attenuation (0.5, matches legacy descending_attenuation_factor), aic_drive_protect_weight (1.0; alterable-configuration knob flagged by SD-032c spec – +1 preserve depleted-agent signal, 0 drive-independent, -1 opposite-sign hypothesis), aic_extra_weight (0.0, reserved). One-step lag on operating_mode read is biologically plausible (AIC->dACC->SAL circuit delay). Falsification signature: BOTH aic_salience AND harm_s_gain depend structurally on drive_level – only V3 substrate that makes the dependence structural. EXQ-325a FAIL (DESCENDING == CONTROL bit-identical under raw beta_gate check) resolves because the descending branch is now a genuinely different function of state. MECH-094: not applicable (waking stream). Subsumes SD-021: legacy raw-beta-gate code path retained behind harm_descending_mod_enabled when use_aic_analog=False. Validation experiment: V3-EXQ-325b queued (supersedes V3-EXQ-325a).
SD-032d — PCC-analog (attention partition / metastability)
Conservative computational spec (Leech & Sharp 2013 is a proposal, not consensus): a scalar stability parameter in [0, 1] that modulates MECH-259’s switch threshold in SD-032a. High stability → coordinator resists mode transitions; low stability → transitions happen at lower salience. Stability is itself a function of recent task success, fatigue, and time-since-last-offline-phase.
Coordinates within-session offline phases (MECH-092 micro-quiescence replay) and cross-session offline phases (INV-049 sleep). Does not trigger mode switches directly — that is SD-032c’s job.
Substrate signature: ablating SD-032d makes the mode-switch threshold insensitive to fatigue / time-since-offline; agent over-commits to external_task without rest-driven relaxation of the threshold.
Implementation (2026-04-19). ree_core/cingulate/pcc_analog.py (PCCAnalog, PCCConfig). Non-trainable arithmetic over a success-outcome EMA + drive_level + steps-since-last-offline-phase counter. Emits pcc_stability in [0, 1] and is injected into the SD-032a coordinator via update_signal("pcc_stability", ...) BEFORE coordinator.tick() each cycle, so MECH-259 effective_threshold = switch_threshold * (1 + stability_scaling * pcc_stability) is modulated on the current step. Cross-session _steps_since_offline counter is reset only by note_offline_entry() (called from agent.enter_offline_mode() — the single integration point for both MECH-092 within-session quiescence and INV-049 cross-session sleep). Per-episode reset() does NOT reset the counter (a new episode starting is not rest). Task outcomes are an explicit caller signal (agent.note_task_outcome(value)); without any calls, the success EMA stays at neutral 0.5 and contributes zero to stability. Master switch REEConfig.use_pcc_analog defaults False; sub-knobs pcc_success_alpha=0.02, pcc_success_weight=0.5, pcc_fatigue_weight=0.5, pcc_offline_recency_window=500, pcc_offline_weight=0.3, pcc_stability_baseline=0.5. Backward compatible. Phased training: not applicable (non-trainable). MECH-094: not applicable (waking arithmetic, no replay content authored). Validation experiment: V3-EXQ-447 queued.
SD-032e — pACC-autonomic coupling
Slow write-back channel from z_harm_a into SD-012 (drive_level, valence). In biology, perigenual / subgenual ACC drives autonomic and endocrine responses to pain; in ree-v3 this is what lets sustained affective pain shift the interoceptive baseline over longer timescales than a single action cycle.
Substrate signature: sustained z_harm_a exposure produces drift in drive_level, which in turn modulates SD-032c’s switch threshold. Behavioural signature: chronic-pain-like sensitization (Baliki 2012). Without SD-032e, z_harm_a has no path into long-timescale state.
Scoping decisions (see evidence/literature/targeted_review_pacc_autonomic_coupling_write_target/synthesis.md, 2026-04-19). Three architectural questions were scoped from the literature before implementation:
-
Write target. Biology (Mayberg 2005 sgACC-depression setpoint; Critchley 2003 ACC-autonomic coupling; Gianaros 2011 ACC-PAG-medulla fast route) places pACC/sgACC between slow interoceptive baselines, valence-signed mood state, and fast autonomic effectors. The literature does NOT license one single write target. V3 has no valence-signed setpoint and no fast-autonomic analogue, so SD-032e writes into SD-012 drive_level as a first-pass proxy — documented simplification. A future SD-032f would add a fast effector route; a future valence-setpoint substrate would split wanting-sign from arousal-magnitude.
-
Slow-EMA timescale. Guo 2018 rodent ACC mGluR5 LTP saturates over days (thousands of REE steps). The default
pacc_drive_alpha=0.002(pacc_drive_ema=0.998, half-life ~347 steps) sits at the fast end of biological plausibility — intentionally, so the validation experiment can observe drift within a tractable runtime. Long-horizon sensitisation studies should slow it (alpha <= 0.0005). The accumulator is a single EMA compressing two biological steps — ACC-internal plasticity (the Guo 2018 LTP) and ACC downstream influence on interoceptive baselines — into one arithmetic stage. This is an explicit simplification. -
Offline decay. Sleep-mediated normalisation of accumulated drift is a distinct claim with its own literature requirement, not automatically part of SD-032e. Default
pacc_offline_decay=0.0(no decay). The hook exists vianote_offline_entry()so a future, separately grounded claim can wire in without another implementation pass.
Implementation (2026-04-19). ree_core/cingulate/pacc_analog.py (PACCAnalog, PACCConfig). Non-trainable arithmetic. tick(z_harm_a_norm, write_gate, hypothesis_tag) computes target = tanh(z_harm_a_norm) * drive_scale when z_harm_a_norm > z_harm_a_min (otherwise target = 0 — Guo 2018 reversibility under quiescence), then updates a gated EMA _drive_bias = (1 - alpha*gate) * _drive_bias + alpha*gate*target, clipped to [-drive_bias_cap, +drive_bias_cap]. MECH-094 hypothesis_tag=True skips the tick entirely (replay/simulation content does not drive autonomic write-back). effective_drive(base) returns clip_[0,1](base + _drive_bias) — the single entry point for SD-032 consumers. Per-episode reset() clears diagnostics cache only; _drive_bias is cross-episode by architectural intent. note_offline_entry() applies _drive_bias *= (1 - offline_decay); default offline_decay=0.0 makes this a no-op.
Wiring in REEAgent (ree_core/agent.py). (1) select_action ticks pACC once per E3 tick with the current z_harm_a.norm() and the coordinator’s previous-tick write_gate("autonomic") (one-step lag — pACC → autonomic → sensitisation is slow; instantaneous coupling is not biologically required; when use_salience_coordinator=False the gate defaults to 1.0 so drift remains observable). An _effective_drive_level = pacc.effective_drive(base_drive_level) is then resolved once and passed to the dACC bundle and the salience coordinator. (2) sense() has AIC read pacc.effective_drive(base) too, so AIC drive coupling sees the sensitised regime with one-step lag. (3) update_z_goal stores the base drive_level on goal_state._last_drive_level (convention: the _last_drive_level cache is always the BASE value; SD-032e consumers apply pACC themselves to avoid double-counting) and passes effective_drive to GoalState.update so that wanting-gain scales with the sensitised regime. (4) enter_offline_mode() calls pacc.note_offline_entry() (default no-op at offline_decay=0.0).
Config. REEConfig.use_pacc_analog defaults False; sub-knobs pacc_drive_alpha=0.002, pacc_drive_scale=1.0, pacc_drive_bias_cap=0.5, pacc_z_harm_a_min=0.0, pacc_offline_decay=0.0. All wired through REEConfig.from_dims(). Backward compatible: with use_pacc_analog=False, agent.pacc is None and every integration site is a no-op.
Phased training. Not applicable (non-trainable arithmetic, single EMA).
MECH-094. Not applicable in waking action-selection ticks (hypothesis_tag=False). Simulation / replay content that calls pacc.tick(..., hypothesis_tag=True) is skipped per the MECH-094 convention. agent.select_action() never sets hypothesis_tag=True — waking pACC writes are valid.
Validation experiment. V3-EXQ-448 queued (4-arm ablation: pACC-OFF / pACC-ON-normal-z_harm_a / pACC-ON-sustained-z_harm_a / pACC-ON-hypothesis-tag-only; acceptance criteria: drive_bias monotone in sustained exposure magnitude, MECH-094 skip suppresses accumulation, bias bounded by drive_bias_cap, downstream effective_drive_level shifts AIC harm_s_gain and coordinator effective_threshold in the expected direction).
MECH-261 write-gating profile
The operating_mode vector from SD-032a gates writes into the SD-033 PFC subdivisions (and the hippocampal viability map, cortical-sensory buffer, autonomic pathway). Gates are soft — each substrate reads a weighted sum over the mode vector, not a one-hot switch (Carr/Jadhav/Frank 2011 awake-SWR subpopulations; Tambini & Davachi 2019 cross-state persistence).
| Target | external_task | internal_planning | internal_replay | offline_consolidation |
|---|---|---|---|---|
| SD-033a (lateral-PFC rule/goal) | write | write | suppressed (protect held rule) | consolidative |
| SD-033b (OFC state-space) | read | speculative write | suppressed | consolidative (slow) |
| SD-033c (vmPFC value) | write | read | reduced-gain write | consolidative |
| SD-033d (premotor/SMA sequence) | write (tagged, MECH-094) | write (tagged) | suppressed unless tag set | consolidated |
| HC viability map (ARC-038) | write | read | write | consolidative |
| Cortical-sensory buffer | read | read | write | write |
| SD-032e autonomic coupling | active | attenuated | attenuated | attenuated |
| E3 policy update | full | gated | near-zero (must propagate via SD-033a) | gated |
“Suppressed” means near-zero gate weight; “consolidative” means a slow, low-rate write consistent with systems consolidation (Frankland & Bontempi 2005). The soft-boundary property matters: replay events tagged with partial external_task weight will still produce some write to SD-033a — which is what Peyrache 2009 SWR-coupled rule-learning replay actually does.
Information flow
sensory SD-032c (AIC) ----salience + baseline---\
| | \
z_harm_s -> SD-011 ----drive_level <--- SD-012 \
| | v
z_harm_a ---+-> E2_harm_a(PE) ---+ SD-032a
| (salience-network
v coordinator)
E3 (z_conflict, control_demand)-> SD-032b (dACC) --> striatal action-value
| ^ |
| |MECH-260 bias-suppression |
| |
PCC stability scalar ---------> SD-032d --- mode-stability ---> |
|
z_harm_a ----slow write----> SD-032e -----> SD-012 drive/valence
|
v
operating_mode vector
+ mode_switch_trigger
|
v
MECH-261 write-gating family
|
+-----+-----+-----+-----+-----+-------+
v v v v v v
SD-033a ... SD-033e HC-map sensory buf. autonomic
(PFC subdivisions) (ARC-038) (SD-032e)
The core asymmetry: SD-032c is the switch trigger source (urgency detection); SD-032b is the within-mode adaptive-control output (graded policy shift); SD-032a is the arbiter that decides which of the two applies on any given cycle. Below the MECH-259 threshold, salience modulates behaviour smoothly through SD-032b. Above threshold, SD-032c fires, SD-032a broadcasts a new mode, and downstream gates reconfigure atomically.
Minimum-viable V3 implementation path
Ordered. Do not skip ahead.
- SD-020 / MECH-258: pain forward model (E2_harm_a). Build as a shared-substrate sibling of E2_harm_s (ARC-033, MECH-256/257 pattern). Without this, z_harm_a is a raw magnitude, not a precision-weighted control signal. Prerequisite for everything downstream.
- SD-012: homeostatic drive baseline. Already partially scoped. SD-032c needs drive_level / fatigue as input. Must exist before SD-032c.
- SD-032b: dACC-analog alone (minimum viable). Resolves EXQ-395. Wire z_harm_a_PE → adaptive-control → striatal action-value. Includes MECH-260 bias-suppression output. Test behavioural signature before building the coordinator.
- SD-032c + SD-032a: AIC-analog + coordinator. Adds urgency-interrupt / mode-switching. Implement MECH-259 threshold and the soft
operating_modevector. Folds SD-021 descending modulation into SD-032c. - MECH-261: mode-conditioned write gating. Generalises MECH-094. Implement as a dictionary keyed on mode names so V4
deliberative_branchingcan be added without disruptive schema changes (see SD-033e). - SD-032d (PCC-analog stability scalar) and SD-032e (pACC-autonomic slow write). Refinements. SD-032e is required for the chronic-pain-like sensitization signature but not for the core loop.
Steps 1–3 are the minimum viable cingulate substrate. The full cluster is steps 1–6.
Register-only (no V3 implementation required): none in this cluster — every subdivision has a substrate-level job. This contrasts with SD-033 where SD-033c/d are registration-only.
Falsification signatures
Substrate-level (not merely behavioural). Each signature is designed to distinguish “this subdivision is missing or misconfigured” from “something else downstream is broken.”
SD-032 parent cluster is over-specified if: a ree-v3 implementation of SD-032b alone reproduces coordinated mode switching on salient events (z_harm_a spike → operating_mode flip → coordinated downstream gate change) without an explicit SD-032a coordinator. Falsifies the network-level framing; collapses the cluster to a single adaptive-control module.
SD-032a is required (coordinator is load-bearing) if: SD-032b alone fails to produce coherent mode switching — e.g., agent continues committed trajectory despite z_harm_a spike, or downstream gates fail to reconfigure atomically. Piecemeal subdivision wiring then cannot substitute for the coordinator.
SD-032b (dACC-analog) failure if: precision-weighted PE is computed correctly but the ACC→striatum weight does not shift action selection toward harm-reducing trajectories, or sustained z_harm_a fails to produce Baliki-like plasticity (weight shift proportional to accumulated PE). Indicates the write target is wrong, not the PE computation.
SD-032c (AIC-analog) failure if: same z_harm_a triggers same behaviour in depleted vs well-resourced agents (i.e., mode-switch rate invariant to SD-012 drive_level). Indicates the interoceptive-baseline gating is broken — SD-032c is not reading SD-012 meaningfully.
MECH-259 (switch threshold) is over-specified if: purely graded / continuous coordinator (no discrete mode switches) reproduces coherent behaviour including both within-mode adjustment and urgency-interrupt dynamics. Redesign SD-032a as a graded-modulation layer.
MECH-258 (precision weighting) is over-specified if: non-precision-weighted (raw-magnitude) consumer of z_harm_a reproduces chronic-pain-like ACC-NAc coupling shift (Baliki 2010/2012). Indicates the biological context-dependence can be captured without explicit precision estimation.
MECH-260 (bias suppression) is falsified if: SD-032b without MECH-260 resolves the fishtank_viz monostrategy pattern; or if SD-032b + MECH-260 still produces monostrategy (indicating the fix is elsewhere, probably in exploration noise / entropy regularisation).
SD-032e failure signature: sustained z_harm_a exposure produces no drift in drive_level; agent cannot become chronically stressed. Indicates the slow write-back channel is disconnected from SD-012.
Cross-cluster interaction with SD-033
SD-032 produces operating_mode. SD-033 holds the substrates operating_mode gates writes into. See sd_033_pfc_subdivision_architecture.md for the PFC-side design. The MECH-261 write-gating profile in the table above is the interface contract: SD-032a emits, SD-033 subdivisions consume.
Two concrete interaction signatures:
-
Forward propagation bias (MECH-261 primary falsification target). Content active in internal_replay should produce a measurable bias on subsequent external_task action selection, mediated by writes into SD-033a during replay (Tambini & Davachi 2019). If this bias persists when SD-032a is ablated (fixed external_task mode), forward propagation is coordinated locally rather than by the salience network — SD-032a’s coordinator role is wrong.
-
Rule protection during replay (SD-033a + MECH-261 interaction). SD-033a rule representations should remain stable across internal_replay events even when replay content is rule-incompatible, because MECH-261 suppresses writes into SD-033a during replay. Failure signature: replay events overwrite the held rule → rule-selective persistence collapses → MECH-262 falsified at source.
Related claims
- SD-032, SD-032a–e — this cluster
- MECH-258 — precision-weighted z_harm_a PE driving SD-032b
- MECH-259 — salience-network switch threshold
- MECH-260 — dACC bias suppression against recency / monostrategy
- MECH-261 — mode-conditioned write gating (generalises MECH-094)
- SD-011 — dual nociceptive streams (prerequisite; produces z_harm_a)
- SD-012 — homeostatic drive (interoceptive baseline for SD-032c)
- SD-020 — harm_surprise_PE (upgraded to prerequisite via MECH-258)
- SD-021 — descending pain modulation (folded into SD-032c)
- SD-033 — PFC subdivision architecture (paired cluster; MECH-261 write targets)
- MECH-091 — salient-event phase reset (specific AIC→dACC mechanism)
- MECH-094 — hypothesis tag (special case of MECH-261)
- MECH-220 — cingulate-insula harm hub (weakened; subsumed by SD-032 + SD-032a)
- ARC-033, MECH-256/257 — E2_harm_s parallel architecture (E2_harm_a reuses substrate)
- INV-049, MECH-092 — sleep / micro-quiescence (coordinated by SD-032d)
References
Primary lit-pull: evidence/literature/targeted_review_cingulate_integration_substrate/synthesis.md (9 entries, mean confidence ~0.80, 2026-04-19).
Supplementary: evidence/literature/targeted_review_mcc_effort_value/synthesis.md (MCC effort-value, bias suppression, Rushworth lab beyond Scholl/Kolling 2015, 2026-04-19).
Systems-consolidation grounding for MECH-261: evidence/literature/targeted_review_systems_consolidation_waking_propagation/synthesis.md (5 entries, aggregate literature_confidence 0.883, 2026-04-19).
Key entries:
- Menon & Uddin 2010 (Brain Struct Funct): salience network as AIC-dACC coordinator switching DMN ↔ CEN.
- Shackman et al 2011 (Nat Rev Neurosci): dACC/aMCC as common substrate for pain, negative affect, cognitive control (coordinate-based meta-analysis, 380+ studies).
- Craig 2009 (Nat Rev Neurosci): AIC as interoceptive-salience hub with autonomic and motor efferents.
- Baliki et al 2010 / 2012: ACC-NAc pathway for affective pain → action value; chronic-pain plasticity.
- Seymour 2019 (Neuron): pain as precision-weighted control signal (computational form for MECH-258).
- Vogt 2005 (Nat Rev Neurosci): cingulate subdivision anatomy (pACC, dACC, aMCC, pMCC, PCC).
- Leech & Sharp 2013: PCC “Arousal, Balance, Breadth” framing (conservative use only).
- Scholl, Kolling et al 2015 (J Neurosci): dACC + lateral aPFC bias-suppression against recency (MECH-260).
- Carr, Jadhav & Frank 2011; Tambini & Davachi 2019; Rothschild/Eban/Frank 2017; Peyrache et al 2009; Frankland & Bontempi 2005 (MECH-261 systems-consolidation grounding).
mode-governance-engagement: external_task salience source (2026-06-13)
Status: IMPLEMENTED (ree-v3, no-op-default). PROMOTES NOTHING — validation pending.
Problem. The SD-032a SalienceCoordinator gives external_task only external_task_bias (1.0) plus drive_level (affinity weight 1.0), while dacc_pe/dacc_foraging/dacc_difficulty all push internal_planning. On the 603n foraging substrate drive_level is ~0.016 (V3-EXQ-540c probe), so on tick 1 the soft argmax flips to internal_planning and the agent settles there for the whole episode → fraction_in_external_task = 0.0. The MECH-266/SD-032a behavioural arms (V3-EXQ-464c, 467c) consequently could not express — the asymmetric exit-rail had no contested mode to bind, and their n_switches >= 1 non-vacuity gate passed vacuously (it counted one episode-initial settle per episode, n_switches == n_episodes). Confirmed by failure_autopsy_SD-034-closure-cluster-ext_2026-06-12 sub-cluster B.
Fix. Add a goal-pursuit-derived external_task_drive signal to the coordinator, registered (by REEAgent, like the SD-035 CeA and SD-037 override signals) in both affinity_weights (→ external_task, mode SELECTION) and salience_weights (→ aggregate, so a switch into external_task can fire the MECH-259 trigger). Injected per-tick in select_action from a committed-pursuit-of-an-active-goal engagement scalar:
engagement = goal_active ? clip(commit_w*float(beta_gate.is_elevated)
+ prox_w*goal_proximity(z_world), 0, 1) : 0
The engagement is dynamic — gated on an active goal, graded by committed pursuit × proximity — so it releases toward internal_planning during deliberation / between-goals / just-consumed. This preserves genuine mode competition rather than collapsing to the opposite degeneracy (the 464b “100% external_task, 0 switches” saturation recorded in the MECH-266 evidence_quality_note).
Config (REEConfig + from_dims, all no-op default → bit-identical OFF): use_external_task_drive (master), external_task_drive_affinity_weight, external_task_drive_salience_weight, external_task_drive_commit_weight, external_task_drive_proximity_weight, external_task_drive_require_goal_active.
Scope. Non-trainable arithmetic signal injection; the SalienceCoordinator class is unchanged (it already accepts arbitrary named signals). Phased training N/A; MECH-094 waking-only by call-site scoping (same as the neighbouring AIC/CeA/override injections).
Validation. V3-EXQ-464d (competing-goals) + V3-EXQ-467d (mode-stickiness dose-response) — successors of 464c/467c with use_external_task_drive=True and the readiness gate restated as min_across_arms(fraction_in_external_task) > floor (≈0.1) replacing n_switches >= 1. MECH-266 stays provisional, SD-032a stays stable. Implementation log: ree-v3/CLAUDE.md (mode-governance-engagement section). Substrate entry: evidence/planning/substrate_queue.json.