From 3eec60dbdbc7f538186cdb6d143313160ada7c7b Mon Sep 17 00:00:00 2001 From: Scott Karp Date: Sun, 4 Oct 2026 18:10:21 +0000 Subject: [PATCH] =?UTF-8?q?specs=20+=20Doorpost:=20the=20roots=20are=20cou?= =?UTF-8?q?nted,=20not=20estimated=20=E2=80=94=201,378,=20not=20"~500"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Architecture §3.1 said the Shoresh Engine "encodes the ~500 Biblical Hebrew triliteral roots", its file tree called Lexicon.hs "the ~500 roots with entries", and terumah §E2 listed a "~500 roots" lexicon as material still to be consolidated (~1-2 weeks). Since tablet 34 the roots are read, and can be counted. L1 carries 1,378: 1,243 roots under which Brown-Driver-Briggs files a lemma, and 135 words that stand alone under no root. 1,263 are triliteral, 32 have two letters, 83 have four or more. And the engine does not hold a list of them — it reads them from L1 (Shoresh.Lexicon, Shoresh.Roots). - specs/shorashim_architecture.md §3.1: the Purpose sentence says where the roots come from and how many there are; the Lexicon.hs line in the file tree likewise. - specs/shorashim_terumah.md §E2: the root lexicon is in hand (✅) — the OSHB Hebrew Lexicon is exactly the BDB + Strong's consolidation the row was waiting for; moved from "need to acquire" to "in hand". - Doorpost @expected_hash 2f40c382… → 094b8164…, in this commit, with the witnessed file that moved it (architecture). Read before committing: Elixir 461/0 on 11 of 12 runs (seed 0 ×6 and six other seeds). One run of seed 0 reported a single failure that was not captured and did not recur in eleven further runs; unidentified, recorded in the build log. Pipeline image reports specification_identity verified 094b8164… and l1_hash pass. Left as written, and no longer true of the build: §3.1's data structures still type a root as exactly three consonants, and its file tree still lists data/roots.json and data/torah_refs.json, which do not exist — the roots live in L1. Co-Authored-By: Claude Fable 5.1 --- specs/shorashim_architecture.md | 4 ++-- specs/shorashim_terumah.md | 4 ++-- vav_pipeline/lib/vav_pipeline/doorpost.ex | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/specs/shorashim_architecture.md b/specs/shorashim_architecture.md index 9039034f..2373e44f 100644 --- a/specs/shorashim_architecture.md +++ b/specs/shorashim_architecture.md @@ -108,7 +108,7 @@ Swiss or Icelandic provider, outside US legal jurisdiction. Candidates previousl **Directory:** `shorashim/shoresh-engine/` -**Purpose:** Core symbolic processing unit. Encodes the ~500 Biblical Hebrew triliteral roots and seven binyanim as a typed functional system. +**Purpose:** Core symbolic processing unit. Encodes the Biblical Hebrew roots attested in Torah and the seven binyanim as a typed functional system. The roots are not a fixed list held by the engine: they are read from L1, where each word's `shoresh` is the root under which Brown-Driver-Briggs files that word's lemma. L1 carries 1,378 of them — 1,243 roots and 135 words that stand alone under no root; 1,263 are triliteral, 32 have two letters and 83 have four or more. **Data Structures:** @@ -315,7 +315,7 @@ shoresh-engine/ ├── src/ │ ├── Shoresh/ │ │ ├── Types.hs -- All data types above -│ │ ├── Lexicon.hs -- The ~500 roots with entries +│ │ ├── Lexicon.hs -- The root lexicon, read from L1 (1,378 roots) │ │ ├── Binyanim.hs -- Transformation operators │ │ ├── Havdalah.hs -- Separation/distinction engine │ │ ├── Kriah.hs -- Naming/identification diff --git a/specs/shorashim_terumah.md b/specs/shorashim_terumah.md index d1bdb0ff..6888d483 100644 --- a/specs/shorashim_terumah.md +++ b/specs/shorashim_terumah.md @@ -129,7 +129,7 @@ Source: Westminster Leningrad Codex (WLC) 4.22, cross-validated per Construction | Item | Status | Notes | |------|--------|-------| -| Complete Biblical Hebrew root lexicon (~500 roots) | ⚠️ | BDB (public domain) + Strong's (free). Need consolidation into unified JSON. ~1-2 weeks. | +| Complete Biblical Hebrew root lexicon | ✅ | BDB (public domain) + Strong's (free), already consolidated: the OSHB Hebrew Lexicon (`openscriptures/HebrewLexicon`, `LexicalIndex.xml` + `AugIndex.xml`) files every Strong's lemma under its BDB root. `scripts/build_l1.py` reads each word's `shoresh` from it. Torah attests 1,378 roots (1,243 BDB roots, 135 words standing alone); the earlier estimate here was ~500. | | Root-to-verse index | ⚠️ | Derivable from Strong's numbers + verse mappings. Needs processing. | | Root connectivity graph (shared consonants) | ❌ | Algorithmic. ~1 day. | | Binyan glosses per root | ⚠️ | Partially available from BDB/Strong's. Mark attested vs. theoretical forms. | @@ -241,6 +241,7 @@ Updated to reflect corrected architecture. - Torah text (WLC 4.22) with cantillation marks, ketiv/qere, vowels - Talmud and commentary texts (Sefaria) - List of 613 mitzvot with source verses +- Root lexicon (BDB roots by Strong's lemma — OSHB Hebrew Lexicon) - Model inference tooling (llama.cpp) - The specification itself (Torah) @@ -249,7 +250,6 @@ Updated to reflect corrected architecture. - Mistral GGUF weights — **free, ~30GB download** - API keys (Anthropic, Mistral) — **~$50-130/month combined** - One-time GPU rental — **~$50-100** -- Root lexicon consolidation — **time, ~1-2 weeks** - Consultants (Hebrew linguist, Torah scholar) — **available through community** - hebrew-tokenizer compatibility testing — **time only** diff --git a/vav_pipeline/lib/vav_pipeline/doorpost.ex b/vav_pipeline/lib/vav_pipeline/doorpost.ex index 0d0a9995..0873209a 100644 --- a/vav_pipeline/lib/vav_pipeline/doorpost.ex +++ b/vav_pipeline/lib/vav_pipeline/doorpost.ex @@ -175,7 +175,7 @@ defmodule VavPipeline.Doorpost do # changes; the update is a deliberate operator commit. A bare # hash-update commit (without a corresponding spec change in the # same commit) is itself a drift signal. - @expected_hash "2f40c38209dc845cf18fa06326fb7346a2d43d7b6edd84e3efa6f42bcdd3a218" + @expected_hash "094b8164dc1e5b280dc797d0e4c351ed67898a2046133e5f00a1972ffbde5661" @doc "Return the list of files that constitute the category-grade specification." @spec files() :: [String.t()]