L1: the shoresh is read from the lexicon, not guessed (tablet 34)

L1's `shoresh` field was derived by stripping a prefix letter and a
suffix letter from the consonants and keeping the first three. וַיַּרְא
"and he saw" was engraved as ירא ("fear"); ויהי as יהי; שמים as שמ;
מזבח as מזב; הבאתי as בא. And parse_prefixes took a word's morphology
from the LAST morph segment, which for a suffixed word is the pronominal
suffix — so every suffixed noun and verb in Torah (לבבך, נפשך) was
classed as a suffix and written with no shoresh at all.

Every WLC word already carries its lemma, and the OSHB lexical index
files each lemma under its Brown-Driver-Briggs root (terumah §E2 named
BDB + Strong's as the root lexicon and marked it "needs consolidation").
scripts/build_l1.py now reads the root from that filing:

  main    the lemma is a root            23,750 words   וירא → ראה
  sub     filed under a root             31,066 words   מזבח → זבח
  single  stands alone in the lexicon     2,671 words   משה → משה
  none    no etymology recorded → absent  3,002 words   יוסף, מצרים
  particles, pronouns → absent, as before 19,493 words  את, אשר, כי

57,487 words carry a shoresh (was 51,836); 1,378 unique roots (was
2,608 fragments). Roots are written as the lexicon writes them — two
letters (בן), three, or more (שמאל).

WHAT CHANGED IN THE EDUT: only `shoresh`. Verified file by file — with
that one field removed, all 5,853 verse files are byte-identical to the
previous L1. Text, consonants, lemma, morph, te'amim, prefix, ketiv/
qere, large and small letters: untouched. The old builder, run against
the same morphhb checkout, reproduces the old hash exactly; the new
builder is deterministic (two runs, one hash).

  L1 SHA-256  99bbd07a…4ea377  →  156b1d27…d8c9d5
  sources     morphhb 3d15126 · HebrewLexicon 21c9add
              (recorded in l1/build_report.json)

Moved together, because they pin the hash or the count:
vav_pipeline L1Reader @l1_expected_hash · shoresh-engine Luchot.Firmware
(hash, uniqueRootCount) + Spec · azazel_processor goral._L1_INTEGRITY_HASH
· KOHEN.md / KOHEN_PROMPT.md gate · l1/README.md (new "Roots" section) ·
README.md (second quarry) · AGENTS.md · root_meanings.pl comment.
The Doorpost manifest is not touched; its hash does not move.

Note for the kohen: the goral's seed inherits the L1 hash, so lots cast
after this commit are cast from a different seed than the azazel
records already in L3. Those records are history and stand as written.

All five suites on the new L1: Elixir 461/0 (seeds 0 42 191243) ·
Haskell 55/0 · Prolog 6 suites exit 0 (swipl 9.2.2) · korban 222 passed
1 skipped · azazel 125 passed. Four images built; full local stack
(real engine binary, PostgreSQL 16 with SSL, migrations) answers
Bereishit 1:4 with ר-א-ה, health healthy, 6 interpretations in L3,
0 write failures.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Scott KarpandClaude Fable 5.1 committed 2026-10-04 17:44:02 +00:00
1 parent 6d3411fcfa
commit 8e4f94c66f
5846 files changed
+45816 -39402

No files matched your search

+33 -2
View File
@@ -72,12 +72,43 @@ Each verse is a JSON file at `/l1/torah/{book}/{chapter}/{verse}.json`:
| `morph` | Morphological code | morphhb annotations |
| `teamim` | Cantillation mark names | Parsed from Unicode codepoints |
| `prefix` | Attached prefixes (ב,כ,ל,מ,ש,ה,ו) | Parsed from morphhb prefix codes |
| `shoresh` | Hebrew root (2-3 consonants) | Derived from consonantal text and morphology |
| `shoresh` | Hebrew root, as Brown-Driver-Briggs files the word's lemma | Read from the OSHB lexical index by `lemma` — see *Roots* below |
## Roots
The text of L1 is the WLC. The `shoresh` on each word is not text; it is a
reading of the text, and it is read from a lexicon, not guessed.
Every word in the WLC carries its lemma (a Strong's number). The
[OSHB Hebrew Lexicon](https://github.com/openscriptures/HebrewLexicon)
(`LexicalIndex.xml`, `AugIndex.xml`) files each lemma under its
Brown-Driver-Briggs root. `scripts/build_l1.py` follows that filing:
| The lexicon says | `shoresh` | Words | Example |
|---|---|---|---|
| the lemma is a root (`main`) | that root | 23,750 | וַיַּרְא → ראה |
| the lemma is filed under a root (`sub`) | that root | 31,066 | מִזְבֵּחַ → זבח, לְבָבְךָ → לבב |
| the lemma stands alone (`single`) | the word itself | 2,671 | מֹשֶׁה → משה |
| no etymology recorded | *absent* | 3,002 | יוֹסֵף, מִצְרַיִם |
| — particle, preposition, conjunction, pronoun | *absent*, by rule | 19,493 | אֵת, אֲשֶׁר, כִּי |
Roots are written as the lexicon writes them: mostly three letters, some
two (בן, יד), some four or more (שמאל).
Until 2026-10-04 this field was derived by stripping letters from the
consonants and keeping the first three: וירא ("and he saw") was recorded
as ירא ("fear"), ויהי as יהי, שמים as שמ, and every word with a pronominal
suffix had no root at all. That is broken tablet 34. Only `shoresh`
changed in the re-engraving — every other field of every verse is
byte-identical to the previous L1 (hash `99bbd07a…`).
Sources at the time of engraving are recorded in `build_report.json`
(`sources`): morphhb `3d15126`, HebrewLexicon `21c9add`.
## Counts
- **5 books**, 187 chapters, 5853 verses, 79982 words
- **2608 unique shoreshim** (roots)
- **1378 unique shoreshim** (roots); 57,487 words carry one
- **0 verses missing te'amim** — every verse has cantillation marks
- WLC versification (5853) differs from traditional Masoretic count (5845) by 8 verses due to BHS numbering conventions