This release lands the issue #116 brain-architecture work and consolidates the MCP tool surface to fit harness caps. Supersedes overnight PRs #120–#137 as a single artifact (PR #138).
Added — 16 brain-region / nucleus subsystems (Phase 1)
Migrations 067–082 introduce schemas + dispatch for:
- 067 locus coeruleus — phasic NE surprise gain (Aston-Jones–Cohen)
- 068 nucleus basalis — phasic ACh attention gating; adds
bg_modulators.acetylcholine - 069 ARAS — arousal / sleep-wake transitions
- 070 habenula — negative-prediction "no-go" signal
- 071 hippocampus CA1 + subiculum — mismatch detection / output
- 072 workspace bandwidth — global-workspace throttling
- 073 connectome — explicit inter-region graph
- 074 sleep architecture — REM / NREM cycle tracking
- 075 VTA / SNc — dopamine pathway log
- 076 septum theta — hippocampal theta pacing
- 077 raphe — serotonin
- 078 memory aging — synaptic tagging-and-capture (Frey & Morris)
- 079 claustrum — multimodal binding
- 080 colliculi — orienting response
- 081 mammillary — Papez-circuit transit log
- 082 olfactory — single-trial valence imprinting
Each subsystem ships an mcp_tools_*.py module, design proposal in docs/proposals/, and matching pytest module.
Changed — MCP tool surface v2 (hard cutover, 370 → 100 visible)
Consolidated the public MCP tool surface from 370 named tools to 100 visible via 35 action-discriminated dispatchers. v1 tool names remain callable internally; rollback is a one-line filter removal. Full v1→v2 mapping in docs/TOOL_MIGRATION_V2.md.
Call pattern:
Why: many MCP harnesses cap at ~100 visible tools, and ~370 tool descriptions in every system prompt was burning ~50k tokens before any agent work began. v2 cuts that to ~12k tokens.
Added — Windows CI smoke
test-windows (3.12) job verifies brainctl init + core test subset on windows-latest. Currently continue-on-error: true; promotion to required after 2–3 green PRs.
Fixed — UTF-8 read for SQL files (Windows hardening)
Path.read_text(encoding="utf-8") explicit on every SQL-ingest site (_impl.py, brain.py, migrate.py ×3). Previously the system locale encoding was used, which crashed on em-dashes / arrows / γ in init_schema.sql on Windows cp1252 locales.
Fixed — fresh brainctl init includes every migration
init_schema.sql now contains migrations 067–082 inlined, and cmd_init calls migrate.run() after executescript() as defense in depth. acetylcholine is declared inline in the bg_modulators CREATE TABLE to avoid a SQLite-version-dependent backfill quirk that left the column NULL on CI Linux SQLite 3.31.
Install
pip install brainctl==2.8.0
pip install brainctl[mcp]==2.8.0 # MCP server (stdio + HTTP)
pip install brainctl[all]==2.8.0 # everythingBundle credit
This release supersedes 17 overnight PRs: #120 through #137 plus #138. PRs #139 onward continue against main.