Surprise-Driven Organic BrainJeju · Industrial Movement
Attention is computed. Never listed.
SDOB commits a forecast first, scores surprise (z) against external anchors, and computes attention from that surprise.
The LLM is a proposer with no execute rights. Outbound effects run only through allowlisted adapters after an exact-bound gate.
I1 append-only ledgerI2 core has no I/OI3 now is always an argumentI4 exact-bound gate tokenI5 RAM rebuilds from ledgerI6 LLM proposes JSON onlyI7 adapters are allowlistedI8 same input, same decisionI9 observation before expiryI1 append-only ledgerI2 core has no I/OI3 now is always an argumentI4 exact-bound gate tokenI5 RAM rebuilds from ledgerI6 LLM proposes JSON onlyI7 adapters are allowlistedI8 same input, same decisionI9 observation before expiry
01 // About
A plastic model on fixed computational physics.
SDOB is not a pure brain. Anchors are the SSOT, the surprise ledger is the control signal, and the LLM proposes under that signal.
The documents existed before the code. Regression tests outrank the spec.
In one paragraph
Before a consequential act, declare μ, σ, and a rationale. Declaration is a ledger append and cannot be edited later.
When actuals arrive, z and a log score are recorded. Attention is computed from surprise, staleness, and stake.
High-stake execution opens only when an exact action forecast already exists.
Why two names
The repo label is Surprise-Driven Organic Belief. The system name in the master plan is
Surprise-Driven Organic Brain. Belief is the scorable state. Brain is the organ that organizes attention from it.
Both are accurate. Neither is a slogan.
NotA chatbot. LLM output is JSON. It has no file, shell, or network capability of its own.
NotA live trading bot. This repository has no KRX panel or live sensor. Reality is not scored before a value arrives.
NotA reward maximizer. Control is prediction error plus stake-weighted surprise, not pure reward.
NotA calendar gate. trigger_met is an evidence manifest. Empty fixture ledgers stay unmet.
02 // Physics
Metaphors that sit on disk.
The control plane is a deterministic core. The execution plane is an LLM proposer plus allowlisted adapters.
sdob/core never touches clock, filesystem, random, or network. now is always an argument.
ROM
Immutable truth · humans write
Code only reads. Runtime must not write data/anchors/.
CMOS
Quasi-persistent config
data/cmos.json, data/subjects.json. Human-approved revisions only; the change itself is a forecast.
Ledger
Immutable event log
Append-only JSONL with a seq/hash chain. No edit or delete. To declare is to append.
RAM
Workspace
data/ram/state.json. Disposable. Rebuild from ledger replay. A cache, not SSOT.
CPU
Hybrid
Deterministic core plus an LLM coprocessor. Zero runtime dependencies. Dev dependency: pytest.
Tests outrank code. Silent drift is forbidden. Ambiguity becomes the simplest deterministic reading, recorded in docs/DEVIATIONS.md.
01
The ledger is append-only. Complete lines are never removed. Guardian recovery may drop only a trailing fragment.
02
The core does no external I/O. Callers pass observations and now.
03
Time is an argument. No wall-clock inside sdob/core.
04
Gate tokens bind exactly to action_id, payload digest, forecast, and policy revision.
05
RAM is a ledger projection. Delete it and the same inputs replay the same state.
06
LLM output is data (JSON). It is never eval’d as code.
07
Outbound effects require an allowlisted adapter and a durable action_started.
08
Same input, ledger, and now imply the same focus and decision meaning.
09
A tick settles observations before computing expiry. At the grace boundary, observation wins.
# scoring — |z| is attention, raw log score is skill
σ_raw = max(σ_declared, subject.sigma_floor)
σ_effective = max(σ_raw × sigma_multiplier, subject.sigma_floor)
z = (actual − μ) / σ
surprise = |z_effective|
log_score = 0.5·ln(2πσ²) + 0.5·((actual−μ)/σ)²
03 // Implementation
Documents first. Tests stronger than documents.
Master plan v0.4 (2026-08-20) froze a scratch implementation: zero lines of prior core.
Agents copied guide-code golden vectors byte-for-byte, then opened one phase at a time.
Rank: regression tests → implementation-spec → guide-code → master-plan.
Phase 0 · Core
Types, events, ledger, engine, scoring
Canonical JSON sdob-json-v1, hash chain, reducer, predict/realize/expire. Golden vectors G-A–G-E. Synthetic scenarios lock overconfidence detection, attention rise, and blinds.
Phase 1 · Control
The tick loop and OrganicAgent
boot → run_once. N-tick simulation with no core I/O. Replay after RAM delete is identical. Fixtures live under data/.
Structure changes are ledger events. No writes to CMOS files; in-memory snapshots. Multipliers apply on the next holdout window against a frozen counterfactual.
Phase 4 · MCP
stdio as the product loop; public bind is TLS+auth
Eight public tools for Cursor/Claude. submit_observation is not on the LLM list. Naked 0.0.0.0 is rejected.
Stage 2 · Go default
Operator CLI is Go; Stage 1 is explicit
Default tick / live / run / observe / query / mcp / checkpoint are Go.
HMAC rematerialize is --authority python. Stage 1 CLI is not deleted. Four quiet weeks on a calendar are not a gate.
04 // Use
Write what you will get right, before you speak.
SDOB is not “a smarter model.” It is a control plane that is hard to bypass.
Other agents, operators, and research loops call a shared surprise/attention service.
USE 01
Agent MCP coprocessor
Attaches over stdio to Cursor and Claude. The model sees predict and get_*. Actuals come from authenticated anchor adapters.
USE 02
Forced prediction before high-stake acts
The gate does not accept “some pending forecast on this subject.” It demands an exact action forecast. Another action’s forecast cannot be reused.
USE 03
Computed attention
Nobody maintains a priority list. Surprise EMA, staleness (normalized by anchor cadence), stake, hysteresis, and blinds produce focus.
USE 04
Calibration watch
Overconfidence (σ declared too small) shows up as σ_ratio. Raw log score is proposer skill; effective score is system quality. Do not average them across units.
USE 05
Session forced-ask — brainette
A miniature of SDOB Forced Prediction. Open uncertainty forces the next task so a session cannot die into idle. It is not a free-form question generator.
USE 06
Human projection
sdob graphify exports Obsidian RAM. Graphify-Labs is an optional operator tool, not a runtime dependency.
USE 07
Research harness
Hybrid control, proper scoring, and PIT calibration on reproducible fixtures. Schema changes have to survive golden vectors.
USE 08
Future anchors (not in this repo)
The design example is an external fix such as anchor.reality.krx_close. Until a sensor exists, only fixture units auto-settle.
USE 09
Shared ledger across agents
Every event and query carries namespace and principal_id. Tenant attention is not mixed. External agents request settlement; they do not inject actuals.
05 // Examples
One local loop.
Python 3.11+. pip install pytest is the only install. --work is required; . is rejected.
Commands below use fixture actual=0.0. They are not live sensors.
# create /tmp/sdob with live first. Do not pass --now to MCP (wall-clock).# predict with the same --now as live is ts_regression.
python -m sdob mcp --data data --work /tmp/sdob --public --deterministic
Eight public tools. Sensor submit is not listed for the LLM.
Zero runtime dependencies. The math fits the standard library.
Python 3.11+
sdob/core uses dataclasses, json, math, datetime. No numpy, no pydantic. The small surface is the point: a later port can map 1:1.
Go operator path
Scoring, reduce, engine, ledger, gate, tick, MCP, and the agent loop are locked binaries. --impl python is explicit Stage 1.
Files, not a database
JSONL ledger plus JSON config. No DB. An append-only file is the most honest ledger at this scale.
07 // Repository
Code, norms, and recorded deviations in one place.
github.com/deximple/SDOB
Currently a private research repository. Read order: docs/guide-code-v0.1.md →
docs/implementation-spec-v0.1.md → docs/master-plan-v0.4.md.
Known interpretations D-001–D-049 live in docs/DEVIATIONS.md.
v0.x enforcement is discipline plus tests. Bypass-proof isolation is the Stage 2 three-principal split.
This page is an introduction, not a certificate of completion.
Present
Deterministic core, JSONL ledger, golden vectors, ExactActionGate, stdio MCP, Go default CLI, guardian HMAC/ed25519 tools, Graphify RAM export, brainette.
Not yet / not claimed
Public-internet MCP without TLS+auth, trigger_met=true on an empty fixture, KRX live sensors in this repo, live capital wiring, POSIX uid proof by calendar date.