SDOB INMOVE LAB · v0.1
STAGE 2 · GO DEFAULT GitHub EN
Surprise-Driven Organic Brain Jeju · Industrial Movement

목록을 읽지 않는다.
주의는 계산된다.

SDOB는 예측을 사전에 남기고, 외부 앵커의 실제 결과로 놀람(z)을 채점하며, 그 놀람으로 주의를 계산하는 하이브리드 제어 시스템이다. LLM은 제안자일 뿐 실행 권한이 없다. 외부 효과는 exact-bound 게이트를 통과한 allowlisted adapter만 수행한다.

01 // About

고정된 계산 물리 위에, 가소적 모델이 돈다.

SDOB는 순수 두뇌가 아니다. 외부 현실(앵커)을 SSOT로 두고, 놀람 원장으로 제어하며, LLM은 그 제어 신호 아래에서만 제안한다. 코드보다 문서가 먼저 존재했고, 구현은 골든 벡터와 회귀 테스트가 규범이다.

한 줄로

중요한 행동 전에 μ, σ, rationale을 선언한다. 선언은 원장 append이며 사후 수정 불가하다. 실제가 도착하면 z와 log score를 남기고, 그 놀람·낡음·스테이크로 다음 주의를 계산한다. 고위험 실행은 같은 action에 묶인 예측이 있을 때만 열린다.

이름이 두 개인 이유

저장소 운영 명칭은 Surprise-Driven Organic Belief다. 설계 문서의 시스템 이름은 Surprise-Driven Organic Brain이다. Belief는 채점 가능한 신념 상태, Brain은 그 신념으로 주의를 조직하는 기관. 둘 다 맞다. 마케팅 슬로건이 아니라 역할 분리 표기다.

Not챗봇이 아니다. LLM 출력은 JSON 제안이며 파일·셸·네트워크 capability를 직접 갖지 않는다.
Not라이브 트레이딩 봇이 아니다. 이 저장소에는 KRX 패널·실센서가 없다. 값이 들어오기 전에 현실이 채점됐다고 쓰지 않는다.
Not보상 최대화기가 아니다. 제어 신호는 pure reward가 아니라 예측 오차와 stake 가중 놀람이다.
Not달력이 게이트가 아니다. trigger_met는 evidence manifest다. 빈 fixture 원장은 계속 unmet이다.
02 // Physics

은유를 디스크 위의 실체로 고정한다.

Control Plane은 결정론적 코어다. Execution Plane은 LLM 제안자와 allowlisted adapter다. 코어(sdob/core)는 clock·filesystem·random·network에 접근하지 않는다. now는 항상 인자다.

ROM

불변 진실 · 사람만 작성

코드는 읽기만. 런타임이 data/anchors/에 쓰는 일은 금지다.

CMOS

준영구 설정

data/cmos.json, data/subjects.json. 인간 승인 revision으로만 바뀌고, 변경 자체도 예측으로 남긴다.

Ledger

사건의 불변 기록

JSONL append-only. seq/hash chain. 수정·삭제 연산 없음. 선언 = append.

RAM

작업 공간

data/ram/state.json. 지워도 ledger 리플레이로 복원. 캐시이지 SSOT가 아니다.

CPU

Hybrid

결정론 코어 + LLM 코프로세서. 런타임 의존성 0. 개발 의존성은 pytest 하나.

Human

수호자

ROM 작성·보호, CMOS 승인, guardian 서명. 개인키는 저장소 밖에 둔다.

아키텍처 불변식 9

테스트가 코드보다 우선한다. 침묵 이탈은 금지이고, 모호하면 가장 단순한 결정론적 해석을 docs/DEVIATIONS.md에 기록한다.

01

원장은 append-only. 완전한 라인 제거 금지. guardian 복구도 마지막 불완전 fragment만.

02

코어는 외부 I/O를 하지 않는다. observation과 now는 호출자가 넣는다.

03

시간은 인자다. sdob/core에서 wall-clock 금지.

04

게이트 토큰은 action_id·payload digest·forecast·policy revision에 정확히 결박된다.

05

RAM은 ledger projection이다. 삭제 후 같은 입력으로 재현된다.

06

LLM 출력은 데이터(JSON)다. 코드로 평가하지 않는다.

07

외부 효과는 allowlisted adapter + durable action_started만.

08

같은 입력·원장·now면 focus와 decision 의미가 같다.

09

한 tick에서 observation을 먼저 settle한 뒤 expiry를 계산한다. grace 경계는 observation 우선.

# 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

문서가 코드보다 먼저 있었고, 테스트가 문서보다 강하다.

2026-08-20 마스터플랜 v0.4가 “코드 0줄, 스크래치 구현”을 전제로 고정했다. 구현 에이전트는 guide-code의 골든 벡터를 바이트 단위로 재현한 뒤 Phase를 한 단계씩만 열었다. 규범 우선순위: 회귀 테스트 → implementation-spec → guide-code → master-plan.

Phase 0 · 코어

타입 · 이벤트 · 원장 · 엔진 · 채점

canonical JSON sdob-json-v1, hash chain, reducer, predict/realize/expire. 골든 벡터 G-A~G-E. 인위 시나리오로 과신 검출·attention 상승·blind를 고정.

Phase 1 · Control

tick 루프와 OrganicAgent

boot → run_once. 외부 I/O 없이 N tick 시뮬레이션. RAM 삭제 후 replay 동일. fixture 데이터는 data/.

Phase 2 · Execution

ExactActionGate

untrusted JSON 검증 → payload risk → exact action forecast → durable action_started. 고stake는 LLM-origin 예측 없이 열리지 않는다. dummy는 monitor/simulation만.

Phase 3 · Plasticity

RevisionService · CMOS 승수

구조 변경은 원장 사건. 파일에 쓰지 않고 메모리 스냅샷. 승수는 다음 holdout window에만 적용하고 frozen counterfactual과 비교.

Phase 4 · MCP

stdio 제품 루프, 공인은 TLS+auth

Cursor/Claude에 붙는 공개 도구 8개. 센서 submit_observation은 LLM 목록에 없다. 맨몸 0.0.0.0은 거부.

Stage 2 · Go 기본 경로

운영 CLI는 Go, Stage 1은 명시적

기본 tick / live / run / observe / query / mcp / checkpoint는 Go. HMAC rematerialize는 --authority python. Stage 1 CLI는 삭제하지 않는다. 달력 4주 무변경은 게이트가 아니다.

04 // Use

에이전트가 말하기 전에, 맞힐 것을 적게 한다.

SDOB의 쓰임새는 “더 똑똑한 모델”이 아니라 “우회할 수 없게 만든 제어 평면”이다. 다른 에이전트·운영자·연구 루프가 공통 놀람/주의 서비스를 호출한다.

USE 01

에이전트 MCP 코프로세서

Cursor와 Claude에 stdio로 붙는다. 모델은 predictget_*만 본다. 실제값 주입은 인증된 앵커 adapter 몫이다.

USE 02

고위험 행동 전 강제 예측

게이트는 “같은 subject에 pending이 있다”가 아니라 exact action forecast를 요구한다. 다른 행동의 예측으로 재사용할 수 없다.

USE 03

계산된 주의

사람이 우선순위 목록을 유지하지 않는다. surprise EMA, staleness(앵커 cadence로 정규화), stake, hysteresis, blind가 focus를 만든다.

USE 04

보정 감시

과신(σ를 너무 작게 선언)은 σ_ratio로 드러난다. raw log score는 proposer 실력, effective score는 시스템 품질. 둘을 섞어 평균하지 않는다.

USE 05

세션 강제질문 — brainette

SDOB Forced Prediction의 축소판. 에이전트 세션이 완료→대기로 끊기지 않게, 열린 uncertainty가 다음 일을 강제한다. 자유 질문생성기가 아니다.

USE 06

인간 보강 프로젝션

sdob graphify는 Obsidian RAM export다. Graphify-Labs는 선택 운영 도구이며 런타임 의존성이 아니다.

USE 07

연구 하네스

하이브리드 제어·proper scoring·PIT calibration을 재현 가능한 fixture로 돌린다. 스키마 변경은 골든 벡터가 막는다.

USE 08

미래 앵커 (아직 이 레포에 없음)

설계 예시는 anchor.reality.krx_close 같은 외부 고정점이다. 센서가 붙기 전에는 fixture unit만 자동 정산한다.

USE 09

멀티 에이전트 공통 원장

모든 event·query는 namespace와 principal_id를 가진다. 다른 tenant의 attention을 섞지 않는다. 외부 에이전트는 settlement를 요청할 뿐 actual을 직접 넣지 않는다.

05 // Examples

로컬에서 한 바퀴 돌리는 법.

Python 3.11+, pip install pytest가 유일한 설치다. --work는 필수이고 .는 거부한다. 아래는 fixture actual=0.0 경로다. 실센서가 아니다.

모니터 → 액션 → 정산 → checkpoint

# 한 번에 모니터→액션→fixture 정산(actual=0.0)→checkpoint→graphify
python -m sdob live --data data --work /tmp/sdob \
  --now 2026-08-20T00:00:00.000000Z --deterministic --guardian-key-hex 00

시간을 밀며 N tick

python -m sdob run --data data --work /tmp/sdob \
  --now 2026-08-20T00:00:00.000000Z --deterministic --ticks 3 --step-seconds 86401

예측을 남긴 뒤 주의를 묻는다

python -m sdob boot --data data --work /tmp/sdob --now 2026-08-20T00:00:00.000000Z --deterministic
python -m sdob observe --data data --work /tmp/sdob --now 2026-08-20T00:00:00.000000Z --deterministic --value 2.0
python -m sdob query get_attention --data data --work /tmp/sdob --deterministic --now 2026-08-21T00:00:01.000000Z
python -m sdob query get_calibration --data data --work /tmp/sdob --deterministic --subject subject.example
python -m sdob ledger-verify --data data --work /tmp/sdob

Cursor / Claude에 stdio MCP

# 먼저 live로 /tmp/sdob를 만든다. MCP에는 --now를 넣지 않는다 (wall-clock).
# live와 같은 --now로 predict하면 ts_regression.
python -m sdob mcp --data data --work /tmp/sdob --public --deterministic

LLM에 노출되는 공개 도구 8개. 센서 제출은 목록에 없다.

predict request_settlement get_attention get_calibration get_blinds get_belief get_anchors get_integrity
06 // Stack

런타임 의존성 0. 수학은 표준 라이브러리 범위다.

Python 3.11+

sdob/core는 dataclasses, json, math, datetime만. numpy·pydantic 금지. 포팅 시 1:1 대응을 위해 의존성 표면을 최소로 둔다.

Go 운영 경로

scoring, reduce, engine, ledger, gate, tick, MCP, agent 루프가 잠금 바이너리다. --impl python은 명시적 Stage 1.

저장은 파일

JSONL 원장 + JSON 설정. DB 없음. append-only 파일이 원장 철학의 가장 정직한 구현이다.

07 // Repository

코드, 규범, 이탈 기록이 한 저장소에 있다.

github.com/deximple/SDOB

현재 private 연구 저장소다. 읽기 순서: docs/guide-code-v0.1.mddocs/implementation-spec-v0.1.mddocs/master-plan-v0.4.md. 알려진 해석은 D-001–D-049까지 docs/DEVIATIONS.md.

GitHub 열기
08 // Honesty

실제보다 강한 보장을 주장하지 않는다.

v0.x의 강제는 규율과 테스트다. 프로세스 경계로 우회 불가가 되는 것은 Stage 2의 세 principal 분리 이후다. 이 페이지는 제품 소개이지 구현 완료 증명서가 아니다.

있는 것

결정론 코어, JSONL 원장, golden vectors, ExactActionGate, stdio MCP, Go 기본 CLI, guardian HMAC/ed25519 도구, Graphify RAM export, brainette.

아직 아닌 것

공개 인터넷 MCP(TLS+auth 없이 바인드 금지), 빈 fixture의 trigger_met=true, 이 레포 안의 KRX 실센서, 라이브 자본 배선, POSIX uid 실검증을 날짜만으로 주장하는 일.