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>
This commit is contained in:
1 parent
622e814c9e
commit
80ec364da6
86 files changed
+9646
No files matched your search
@@ -0,0 +1,61 @@
|
||||
%% teiku.pl — Unresolved tension handling.
|
||||
%%
|
||||
%% Architecture §3.4: resolve(_, teiku).
|
||||
%%
|
||||
%% Teiku (תיקו) — "let it stand." The question is unresolvable
|
||||
%% from the current specification. It is not an error. It is
|
||||
%% the system's honest acknowledgment that Torah does not
|
||||
%% collapse every tension into a single answer.
|
||||
%%
|
||||
%% Talmudic tradition: Tishbi Yetaretz Kushyot V'Abayot —
|
||||
%% "Elijah will resolve difficulties and problems."
|
||||
%% Until then, the tension stands. Both readings are preserved.
|
||||
|
||||
:- module(teiku, [
|
||||
register_teiku/3,
|
||||
is_teiku/1,
|
||||
teiku_count/1,
|
||||
all_teiku/1
|
||||
]).
|
||||
|
||||
:- dynamic teiku_record/5.
|
||||
|
||||
%% ============================================================
|
||||
%% TEIKU REGISTRATION
|
||||
%% ============================================================
|
||||
|
||||
%% Register an unresolvable tension between two interpretations.
|
||||
%% The record preserves both sides — neither is discarded.
|
||||
register_teiku(I1, I2, Record) :-
|
||||
I1 = interpretation(CaseRef1, M1, V1, _, _),
|
||||
I2 = interpretation(CaseRef2, M2, V2, _, _),
|
||||
Record = teiku_record(CaseRef1, CaseRef2, side_a(M1, V1), side_b(M2, V2), unresolved),
|
||||
assert_teiku_if_new(Record).
|
||||
|
||||
%% Only assert if not already registered
|
||||
assert_teiku_if_new(Record) :-
|
||||
Record = teiku_record(Ref1, Ref2, _, _, _),
|
||||
( teiku_record(Ref1, Ref2, _, _, _)
|
||||
-> true % already registered
|
||||
; assertz(Record)
|
||||
).
|
||||
|
||||
%% ============================================================
|
||||
%% QUERIES
|
||||
%% ============================================================
|
||||
|
||||
%% Check if a case resulted in teiku
|
||||
is_teiku(CaseRef) :-
|
||||
teiku_record(CaseRef, _, _, _, unresolved).
|
||||
is_teiku(CaseRef) :-
|
||||
teiku_record(_, CaseRef, _, _, unresolved).
|
||||
|
||||
%% Count total teiku records
|
||||
teiku_count(Count) :-
|
||||
aggregate_all(count, teiku_record(_, _, _, _, unresolved), Count).
|
||||
|
||||
%% Retrieve all teiku records
|
||||
all_teiku(Records) :-
|
||||
findall(teiku_record(A, B, C, D, E),
|
||||
teiku_record(A, B, C, D, E),
|
||||
Records).
|
||||
Reference in new issue
Block a user