한 줄로
중요한 행동 전에 μ, σ, rationale을 선언한다. 선언은 원장 append이며 사후 수정 불가하다. 실제가 도착하면 z와 log score를 남기고, 그 놀람·낡음·스테이크로 다음 주의를 계산한다. 고위험 실행은 같은 action에 묶인 예측이 있을 때만 열린다.
SDOB는 예측을 사전에 남기고, 외부 앵커의 실제 결과로 놀람(z)을 채점하며, 그 놀람으로 주의를 계산하는 하이브리드 제어 시스템이다. LLM은 제안자일 뿐 실행 권한이 없다. 외부 효과는 exact-bound 게이트를 통과한 allowlisted adapter만 수행한다.
SDOB는 순수 두뇌가 아니다. 외부 현실(앵커)을 SSOT로 두고, 놀람 원장으로 제어하며, LLM은 그 제어 신호 아래에서만 제안한다. 코드보다 문서가 먼저 존재했고, 구현은 골든 벡터와 회귀 테스트가 규범이다.
중요한 행동 전에 μ, σ, rationale을 선언한다. 선언은 원장 append이며 사후 수정 불가하다. 실제가 도착하면 z와 log score를 남기고, 그 놀람·낡음·스테이크로 다음 주의를 계산한다. 고위험 실행은 같은 action에 묶인 예측이 있을 때만 열린다.
저장소 운영 명칭은 Surprise-Driven Organic Belief다. 설계 문서의 시스템 이름은 Surprise-Driven Organic Brain이다. Belief는 채점 가능한 신념 상태, Brain은 그 신념으로 주의를 조직하는 기관. 둘 다 맞다. 마케팅 슬로건이 아니라 역할 분리 표기다.
trigger_met는 evidence manifest다. 빈 fixture 원장은 계속 unmet이다.
Control Plane은 결정론적 코어다. Execution Plane은 LLM 제안자와 allowlisted adapter다.
코어(sdob/core)는 clock·filesystem·random·network에 접근하지 않는다. now는 항상 인자다.
코드는 읽기만. 런타임이 data/anchors/에 쓰는 일은 금지다.
data/cmos.json, data/subjects.json. 인간 승인 revision으로만 바뀌고, 변경 자체도 예측으로 남긴다.
JSONL append-only. seq/hash chain. 수정·삭제 연산 없음. 선언 = append.
data/ram/state.json. 지워도 ledger 리플레이로 복원. 캐시이지 SSOT가 아니다.
결정론 코어 + LLM 코프로세서. 런타임 의존성 0. 개발 의존성은 pytest 하나.
ROM 작성·보호, CMOS 승인, guardian 서명. 개인키는 저장소 밖에 둔다.
테스트가 코드보다 우선한다. 침묵 이탈은 금지이고, 모호하면 가장 단순한 결정론적 해석을 docs/DEVIATIONS.md에 기록한다.
원장은 append-only. 완전한 라인 제거 금지. guardian 복구도 마지막 불완전 fragment만.
코어는 외부 I/O를 하지 않는다. observation과 now는 호출자가 넣는다.
시간은 인자다. sdob/core에서 wall-clock 금지.
게이트 토큰은 action_id·payload digest·forecast·policy revision에 정확히 결박된다.
RAM은 ledger projection이다. 삭제 후 같은 입력으로 재현된다.
LLM 출력은 데이터(JSON)다. 코드로 평가하지 않는다.
외부 효과는 allowlisted adapter + durable action_started만.
같은 입력·원장·now면 focus와 decision 의미가 같다.
한 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−μ)/σ)²
2026-08-20 마스터플랜 v0.4가 “코드 0줄, 스크래치 구현”을 전제로 고정했다. 구현 에이전트는 guide-code의 골든 벡터를 바이트 단위로 재현한 뒤 Phase를 한 단계씩만 열었다. 규범 우선순위: 회귀 테스트 → implementation-spec → guide-code → master-plan.
canonical JSON sdob-json-v1, hash chain, reducer, predict/realize/expire. 골든 벡터 G-A~G-E. 인위 시나리오로 과신 검출·attention 상승·blind를 고정.
boot → run_once. 외부 I/O 없이 N tick 시뮬레이션. RAM 삭제 후 replay 동일. fixture 데이터는 data/.
untrusted JSON 검증 → payload risk → exact action forecast → durable action_started. 고stake는 LLM-origin 예측 없이 열리지 않는다. dummy는 monitor/simulation만.
구조 변경은 원장 사건. 파일에 쓰지 않고 메모리 스냅샷. 승수는 다음 holdout window에만 적용하고 frozen counterfactual과 비교.
Cursor/Claude에 붙는 공개 도구 8개. 센서 submit_observation은 LLM 목록에 없다. 맨몸 0.0.0.0은 거부.
기본 tick / live / run / observe / query / mcp / checkpoint는 Go.
HMAC rematerialize는 --authority python. Stage 1 CLI는 삭제하지 않는다. 달력 4주 무변경은 게이트가 아니다.
SDOB의 쓰임새는 “더 똑똑한 모델”이 아니라 “우회할 수 없게 만든 제어 평면”이다. 다른 에이전트·운영자·연구 루프가 공통 놀람/주의 서비스를 호출한다.
Cursor와 Claude에 stdio로 붙는다. 모델은 predict와 get_*만 본다. 실제값 주입은 인증된 앵커 adapter 몫이다.
게이트는 “같은 subject에 pending이 있다”가 아니라 exact action forecast를 요구한다. 다른 행동의 예측으로 재사용할 수 없다.
사람이 우선순위 목록을 유지하지 않는다. surprise EMA, staleness(앵커 cadence로 정규화), stake, hysteresis, blind가 focus를 만든다.
과신(σ를 너무 작게 선언)은 σ_ratio로 드러난다. raw log score는 proposer 실력, effective score는 시스템 품질. 둘을 섞어 평균하지 않는다.
SDOB Forced Prediction의 축소판. 에이전트 세션이 완료→대기로 끊기지 않게, 열린 uncertainty가 다음 일을 강제한다. 자유 질문생성기가 아니다.
sdob graphify는 Obsidian RAM export다. Graphify-Labs는 선택 운영 도구이며 런타임 의존성이 아니다.
하이브리드 제어·proper scoring·PIT calibration을 재현 가능한 fixture로 돌린다. 스키마 변경은 골든 벡터가 막는다.
설계 예시는 anchor.reality.krx_close 같은 외부 고정점이다. 센서가 붙기 전에는 fixture unit만 자동 정산한다.
모든 event·query는 namespace와 principal_id를 가진다. 다른 tenant의 attention을 섞지 않는다. 외부 에이전트는 settlement를 요청할 뿐 actual을 직접 넣지 않는다.
Python 3.11+, pip install pytest가 유일한 설치다. --work는 필수이고 .는 거부한다.
아래는 fixture actual=0.0 경로다. 실센서가 아니다.
# 한 번에 모니터→액션→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
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
# 먼저 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개. 센서 제출은 목록에 없다.
sdob/core는 dataclasses, json, math, datetime만. numpy·pydantic 금지. 포팅 시 1:1 대응을 위해 의존성 표면을 최소로 둔다.
scoring, reduce, engine, ledger, gate, tick, MCP, agent 루프가 잠금 바이너리다. --impl python은 명시적 Stage 1.
JSONL 원장 + JSON 설정. DB 없음. append-only 파일이 원장 철학의 가장 정직한 구현이다.
현재 private 연구 저장소다. 읽기 순서: docs/guide-code-v0.1.md →
docs/implementation-spec-v0.1.md → docs/master-plan-v0.4.md.
알려진 해석은 D-001–D-049까지 docs/DEVIATIONS.md.
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 실검증을 날짜만으로 주장하는 일.