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
c039fa61e0
88 files changed
+10153
No files matched your search
@@ -0,0 +1,45 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
-- | Kriah — naming and identification.
|
||||
--
|
||||
-- Architecture §3.1:
|
||||
-- kriah :: [(Category, Content)] -> [(Name, Category, Content)]
|
||||
-- "Assign stable names to distinguished categories"
|
||||
--
|
||||
-- After havdalah separates, kriah names what was separated.
|
||||
-- The names come from the roots themselves — a category's name
|
||||
-- is derived from the dominant root or domain within it.
|
||||
module Shoresh.Kriah
|
||||
( kriah
|
||||
, nameCategory
|
||||
, NamedCategory(..)
|
||||
) where
|
||||
|
||||
import Shoresh.Types
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
|
||||
-- | A named category — the result of kriah.
|
||||
data NamedCategory = NamedCategory
|
||||
{ ncName :: !Text
|
||||
, ncDomain :: !SemanticDomain
|
||||
, ncEntries :: ![ShoreshEntry]
|
||||
} deriving (Show)
|
||||
|
||||
-- | Assign stable names to distinguished categories.
|
||||
kriah :: [(SemanticDomain, [ShoreshEntry])] -> [NamedCategory]
|
||||
kriah = map nameCategory
|
||||
|
||||
-- | Name a single category from its domain and entries.
|
||||
-- The name is the domain name plus the most frequent root.
|
||||
nameCategory :: (SemanticDomain, [ShoreshEntry]) -> NamedCategory
|
||||
nameCategory (domain, entries) =
|
||||
let domName = T.pack (show domain)
|
||||
rootSuffix = case entries of
|
||||
(e:_) -> " (" <> shoreshToText (seShoresh e) <> ")"
|
||||
[] -> ""
|
||||
in NamedCategory
|
||||
{ ncName = domName <> rootSuffix
|
||||
, ncDomain = domain
|
||||
, ncEntries = entries
|
||||
}
|
||||
Reference in new issue
Block a user