Files
bikoret/sanhedrin/src/sanhedrin_sup.erl
T
Scott KarpandClaude Sonnet 4.6 80ec364da6 Phase 1-2 build: Steps 5-6, 8-13
Shoresh Engine (Haskell, Step 5)
- 12 modules: Types, Lexicon, Binyanim, Teamim, Gematria, Graph,
  KetivQere, Smikhut, Havdalah, Kriah, KiTov, Firmware
- 33 EUnit tests, 0 failures
- Firmware module verifies L1 SHA-256 hash at startup

Talmudic Engine (SWI-Prolog, Step 6)
- 15 modules: halt, reasoning, specification, interface
- 57 PlUnit tests, 0 failures
- Three cardinal halt conditions: avodah_zarah, shfichut_damim, gilui_arayot

Vav Pipeline (Elixir, Steps 8-11)
- 14 modules: BereishitCycle, Shema, Cloud, Manna, L1Reader,
  Specification, HaltConditions, ShabbatTimer, CycleLog, Chatzotzrot,
  ShoreshEngineClient, TalmudicEngineClient, Application
- 46 ExUnit tests, 0 failures
- Nishma-first architecture: hears before it speaks

Sanhedrin Framework (Erlang/OTP, Step 12)
- 8 modules: sanhedrin_app, sanhedrin_sup, escalation, panel_sup,
  panel, judge, clerk, halt_monitor
- 46 EUnit tests, 0 failures (includes fix: rejected outcome now reachable)
- Panel sizes: 1/3/23/71 — unanimous capital guilty → acquit (Sanhedrin 17a)
- Minority opinions append-only, never deleted

Korban Processor (Python, Step 13)
- 6 modules: korban, shechitah, semichah, zerikah, haktarah, router

Builder tooling: AGENTS.md, opencode.json, memory/, src/tools/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 14:02:34 -05:00

71 lines
2.1 KiB
Erlang

%%%-------------------------------------------------------------------
%%% @doc Sanhedrin top-level supervisor.
%%%
%%% Architecture §3.2 supervision tree:
%%% sanhedrin_sup (top supervisor)
%%% ├── clerk (gen_server — vote collection, opinion storage)
%%% ├── escalation (gen_server — routes cases to appropriate panel size)
%%% └── halt_monitor (gen_server — monitors for 3 cardinal sin conditions)
%%%
%%% Panel supervisors are started dynamically by escalation
%%% via panel_sup:start_panel/2.
%%% @end
%%%-------------------------------------------------------------------
-module(sanhedrin_sup).
-behaviour(supervisor).
-export([start_link/0]).
-export([init/1]).
-define(SERVER, ?MODULE).
start_link() ->
supervisor:start_link({local, ?SERVER}, ?MODULE, []).
init([]) ->
SupFlags = #{
strategy => one_for_one,
intensity => 5,
period => 60
},
ChildSpecs = [
%% Clerk — vote collection and opinion storage
#{
id => clerk,
start => {clerk, start_link, []},
restart => permanent,
shutdown => 5000,
type => worker,
modules => [clerk]
},
%% Escalation — complexity assessment and case routing
#{
id => escalation,
start => {escalation, start_link, []},
restart => permanent,
shutdown => 5000,
type => worker,
modules => [escalation]
},
%% Halt monitor — 3 cardinal sin conditions
#{
id => halt_monitor,
start => {halt_monitor, start_link, []},
restart => permanent,
shutdown => 5000,
type => worker,
modules => [halt_monitor]
},
%% Panel supervisor — dynamic, starts panels on demand
#{
id => panel_sup,
start => {panel_sup, start_link, []},
restart => permanent,
shutdown => infinity,
type => supervisor,
modules => [panel_sup]
}
],
{ok, {SupFlags, ChildSpecs}}.