L1 data integrity: preserve the edut whole — Shema, middle letter, ketiv/qere, smikhut
Shemot 25:16 — v'natata el ha-aron et ha-edut asher eten elekha. The edut placed in the aron must be complete. The Masoretic tradition preserves every letter, every enlarged letter, every ketiv/qere pair — because each carries meaning the scribe cannot reconstruct. The previous build_l1.py silently dropped: - enlarged letters encoded as <seg type="x-large"> nested in <w> → the Shema was corrupt: שמ instead of שמע, אח instead of אחד → the middle letter of Torah was corrupt: גח instead of גחון → the Zelophchad nun was missing: משפט instead of משפטן - ketiv/qere dual readings encoded as <note type="variant">/<rdg type="x-qere"> → the spec committed to preserving both; the code returned [] - smikhut (construct state) pairs marked in morphology codes → the spec committed to extracting them; the code returned [] Fixes: - collect_word_text() walks all nested <seg> children of <w> and records large_letters / small_letters metadata with character offsets. - parse_verse() recognizes <w type="x-ketiv"> followed by <note>, extracts both the ketiv and the qere readings, stores a ketiv_qere list on the verse. - _extract_smikhut() scans words for construct-state morph codes (ending in "c" on N/A primary segments, excluding pronominal suffixes) and records construct/absolute pairs. - L1 SHA-256 hash updated everywhere: integrity.sha256, l1_reader.ex, shoresh-engine's Luchot.Firmware, its test, KOHEN.md. Torah-wide results after fix: - 4 enlarged letters preserved (was 0): Shema ayin, Shema dalet, gachon vav (middle of Torah), Zelophchad nun - 67 ketiv/qere pairs captured (was 0) - 9,203 smikhut pairs extracted (was 0) Elixir updates: - l1_reader.ex: normalize_verse now surfaces ketiv_qere, smikhut, and per-word large_letters/small_letters. New type specs. New extract_large_letters/1 helper. extract_ketiv_qere and extract_smikhut now return real data instead of []. - step31_shema_test.exs: replaced placeholder asserts with real integrity checks. Four new tests verify the Shema word is complete (שמע not שמ), echad is complete (אחד not אח), the enlarged letters are marked, the middle letter of Torah is preserved, and ketiv/qere pairs from Bereishit 8:17 are both captured. Build script: - build_l1.py no longer rmtrees the entire l1/ directory (preserves l1/README.md). Only regenerates torah/ + build_report.json + integrity.sha256. - Accepts SHORASHIM_SOURCE_DATA env var or CLI arg for morphhb path. Test counts: - Elixir: 260 (was 254), 0 failures - Haskell: 33, 0 failures - Prolog: 195, 0 failures The system that can hear שמע correctly has passed its own shema test. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
04713cc884
commit
d4d0a6fcb6
4137 files changed
+73656
-85
No files matched your search
@@ -187,5 +187,21 @@
|
||||
],
|
||||
"shoresh": "שבי"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 3,
|
||||
"construct": "מֶֽלֶךְ",
|
||||
"construct_consonants": "מלך",
|
||||
"absolute": "עֲרָד֙",
|
||||
"absolute_consonants": "ערד"
|
||||
},
|
||||
{
|
||||
"position": 10,
|
||||
"construct": "דֶּ֖רֶךְ",
|
||||
"construct_consonants": "דרך",
|
||||
"absolute": "הָאֲתָרִ֑ים",
|
||||
"absolute_consonants": "האתרים"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -64,5 +64,14 @@
|
||||
"prefix": "ב",
|
||||
"shoresh": "אבת"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 2,
|
||||
"construct": "בְּנֵ֣י",
|
||||
"construct_consonants": "בני",
|
||||
"absolute": "יִשְׂרָאֵ֑ל",
|
||||
"absolute_consonants": "ישראל"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -142,5 +142,21 @@
|
||||
"prefix": "ה",
|
||||
"shoresh": "שמש"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 9,
|
||||
"construct": "פְּנֵ֣י",
|
||||
"construct_consonants": "פני",
|
||||
"absolute": "מוֹאָ֔ב",
|
||||
"absolute_consonants": "מואב"
|
||||
},
|
||||
{
|
||||
"position": 11,
|
||||
"construct": "מִמִּזְרַ֖ח",
|
||||
"construct_consonants": "ממזרח",
|
||||
"absolute": "הַשָּֽׁמֶשׁ",
|
||||
"absolute_consonants": "השמש"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -64,5 +64,14 @@
|
||||
],
|
||||
"shoresh": "זרד"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 4,
|
||||
"construct": "בְּנַ֥חַל",
|
||||
"construct_consonants": "בנחל",
|
||||
"absolute": "זָֽרֶד",
|
||||
"absolute_consonants": "זרד"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -210,5 +210,28 @@
|
||||
"prefix": "ה",
|
||||
"shoresh": "אמר"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 4,
|
||||
"construct": "מֵעֵ֤בֶר",
|
||||
"construct_consonants": "מעבר",
|
||||
"absolute": "אַרְנוֹן֙",
|
||||
"absolute_consonants": "ארנון"
|
||||
},
|
||||
{
|
||||
"position": 9,
|
||||
"construct": "מִגְּב֣וּל",
|
||||
"construct_consonants": "מגבול",
|
||||
"absolute": "הָֽאֱמֹרִ֑י",
|
||||
"absolute_consonants": "האמרי"
|
||||
},
|
||||
{
|
||||
"position": 13,
|
||||
"construct": "גְּב֣וּל",
|
||||
"construct_consonants": "גבול",
|
||||
"absolute": "מוֹאָ֔ב",
|
||||
"absolute_consonants": "מואב"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -132,5 +132,21 @@
|
||||
],
|
||||
"shoresh": "ארנ"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 4,
|
||||
"construct": "בְּסֵ֖פֶר",
|
||||
"construct_consonants": "בספר",
|
||||
"absolute": "מִלְחֲמֹ֣ת",
|
||||
"absolute_consonants": "מלחמת"
|
||||
},
|
||||
{
|
||||
"position": 5,
|
||||
"construct": "מִלְחֲמֹ֣ת",
|
||||
"construct_consonants": "מלחמת",
|
||||
"absolute": "יְהוָ֑ה",
|
||||
"absolute_consonants": "יהוה"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -109,5 +109,21 @@
|
||||
],
|
||||
"shoresh": "מוא"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 1,
|
||||
"construct": "וְאֶ֨שֶׁד֙",
|
||||
"construct_consonants": "ואשד",
|
||||
"absolute": "הַנְּחָלִ֔ים",
|
||||
"absolute_consonants": "הנחלים"
|
||||
},
|
||||
{
|
||||
"position": 8,
|
||||
"construct": "לִגְב֥וּל",
|
||||
"construct_consonants": "לגבול",
|
||||
"absolute": "מוֹאָֽב",
|
||||
"absolute_consonants": "מואב"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -117,5 +117,14 @@
|
||||
],
|
||||
"shoresh": "מתנ"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 5,
|
||||
"construct": "נְדִיבֵ֣י",
|
||||
"construct_consonants": "נדיבי",
|
||||
"absolute": "הָעָ֔ם",
|
||||
"absolute_consonants": "העם"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -128,5 +128,28 @@
|
||||
"prefix": "ה",
|
||||
"shoresh": "ישי"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 4,
|
||||
"construct": "בִּשְׂדֵ֣ה",
|
||||
"construct_consonants": "בשדה",
|
||||
"absolute": "מוֹאָ֔ב",
|
||||
"absolute_consonants": "מואב"
|
||||
},
|
||||
{
|
||||
"position": 6,
|
||||
"construct": "רֹ֖אשׁ",
|
||||
"construct_consonants": "ראש",
|
||||
"absolute": "הַפִּסְגָּ֑ה",
|
||||
"absolute_consonants": "הפסגה"
|
||||
},
|
||||
{
|
||||
"position": 10,
|
||||
"construct": "פְּנֵ֥י",
|
||||
"construct_consonants": "פני",
|
||||
"absolute": "הַיְשִׁימֹֽן",
|
||||
"absolute_consonants": "הישימן"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -93,5 +93,14 @@
|
||||
"prefix": "ל",
|
||||
"shoresh": "אמר"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 6,
|
||||
"construct": "מֶֽלֶךְ",
|
||||
"construct_consonants": "מלך",
|
||||
"absolute": "הָאֱמֹרִ֖י",
|
||||
"absolute_consonants": "האמרי"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -192,5 +192,21 @@
|
||||
"meteg_siluq"
|
||||
]
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 9,
|
||||
"construct": "מֵ֣י",
|
||||
"construct_consonants": "מי",
|
||||
"absolute": "בְאֵ֑ר",
|
||||
"absolute_consonants": "באר"
|
||||
},
|
||||
{
|
||||
"position": 11,
|
||||
"construct": "בְּדֶ֤רֶךְ",
|
||||
"construct_consonants": "בדרך",
|
||||
"absolute": "הַמֶּ֨לֶךְ֙",
|
||||
"absolute_consonants": "המלך"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -219,5 +219,14 @@
|
||||
"prefix": "ב",
|
||||
"shoresh": "ישר"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 11,
|
||||
"construct": "כָּל",
|
||||
"construct_consonants": "כל",
|
||||
"absolute": "עַמּ֗וֹ",
|
||||
"absolute_consonants": "עמו"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -194,5 +194,35 @@
|
||||
],
|
||||
"shoresh": "עמו"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 3,
|
||||
"construct": "לְפִי",
|
||||
"construct_consonants": "לפי",
|
||||
"absolute": "חָ֑רֶב",
|
||||
"absolute_consonants": "חרב"
|
||||
},
|
||||
{
|
||||
"position": 12,
|
||||
"construct": "בְּנֵ֣י",
|
||||
"construct_consonants": "בני",
|
||||
"absolute": "עַמּ֔וֹן",
|
||||
"absolute_consonants": "עמון"
|
||||
},
|
||||
{
|
||||
"position": 16,
|
||||
"construct": "גְּב֖וּל",
|
||||
"construct_consonants": "גבול",
|
||||
"absolute": "בְּנֵ֥י",
|
||||
"absolute_consonants": "בני"
|
||||
},
|
||||
{
|
||||
"position": 17,
|
||||
"construct": "בְּנֵ֥י",
|
||||
"construct_consonants": "בני",
|
||||
"absolute": "עַמּֽוֹן",
|
||||
"absolute_consonants": "עמון"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -159,5 +159,35 @@
|
||||
"meteg_siluq"
|
||||
]
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 4,
|
||||
"construct": "כָּל",
|
||||
"construct_consonants": "כל",
|
||||
"absolute": "הֶעָרִ֖ים",
|
||||
"absolute_consonants": "הערים"
|
||||
},
|
||||
{
|
||||
"position": 9,
|
||||
"construct": "בְּכָל",
|
||||
"construct_consonants": "בכל",
|
||||
"absolute": "עָרֵ֣י",
|
||||
"absolute_consonants": "ערי"
|
||||
},
|
||||
{
|
||||
"position": 10,
|
||||
"construct": "עָרֵ֣י",
|
||||
"construct_consonants": "ערי",
|
||||
"absolute": "הָֽאֱמֹרִ֔י",
|
||||
"absolute_consonants": "האמרי"
|
||||
},
|
||||
{
|
||||
"position": 13,
|
||||
"construct": "וּבְכָל",
|
||||
"construct_consonants": "ובכל",
|
||||
"absolute": "בְּנֹתֶֽיהָ",
|
||||
"absolute_consonants": "בנתיה"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -208,5 +208,35 @@
|
||||
],
|
||||
"shoresh": "ארנ"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 3,
|
||||
"construct": "עִ֗יר",
|
||||
"construct_consonants": "עיר",
|
||||
"absolute": "סִיחֹ֛ן",
|
||||
"absolute_consonants": "סיחן"
|
||||
},
|
||||
{
|
||||
"position": 5,
|
||||
"construct": "מֶ֥לֶךְ",
|
||||
"construct_consonants": "מלך",
|
||||
"absolute": "הָאֱמֹרִ֖י",
|
||||
"absolute_consonants": "האמרי"
|
||||
},
|
||||
{
|
||||
"position": 10,
|
||||
"construct": "בְּמֶ֤לֶךְ",
|
||||
"construct_consonants": "במלך",
|
||||
"absolute": "מוֹאָב֙",
|
||||
"absolute_consonants": "מואב"
|
||||
},
|
||||
{
|
||||
"position": 15,
|
||||
"construct": "כָּל",
|
||||
"construct_consonants": "כל",
|
||||
"absolute": "אַרְצ֛וֹ",
|
||||
"absolute_consonants": "ארצו"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -113,5 +113,14 @@
|
||||
],
|
||||
"shoresh": "סיח"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 9,
|
||||
"construct": "עִ֥יר",
|
||||
"construct_consonants": "עיר",
|
||||
"absolute": "סִיחֽוֹן",
|
||||
"absolute_consonants": "סיחון"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -150,5 +150,28 @@
|
||||
],
|
||||
"shoresh": "ארנ"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 6,
|
||||
"construct": "מִקִּרְיַ֣ת",
|
||||
"construct_consonants": "מקרית",
|
||||
"absolute": "סִיחֹ֑ן",
|
||||
"absolute_consonants": "סיחן"
|
||||
},
|
||||
{
|
||||
"position": 11,
|
||||
"construct": "בַּעֲלֵ֖י",
|
||||
"construct_consonants": "בעלי",
|
||||
"absolute": "בָּמ֥וֹת",
|
||||
"absolute_consonants": "במות"
|
||||
},
|
||||
{
|
||||
"position": 12,
|
||||
"construct": "בָּמ֥וֹת",
|
||||
"construct_consonants": "במות",
|
||||
"absolute": "אַרְנֹֽן",
|
||||
"absolute_consonants": "ארנן"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -154,5 +154,21 @@
|
||||
],
|
||||
"shoresh": "סיח"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 5,
|
||||
"construct": "עַם",
|
||||
"construct_consonants": "עם",
|
||||
"absolute": "כְּמ֑וֹשׁ",
|
||||
"absolute_consonants": "כמוש"
|
||||
},
|
||||
{
|
||||
"position": 12,
|
||||
"construct": "לְמֶ֥לֶךְ",
|
||||
"construct_consonants": "למלך",
|
||||
"absolute": "אֱמֹרִ֖י",
|
||||
"absolute_consonants": "אמרי"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -169,5 +169,21 @@
|
||||
],
|
||||
"shoresh": "חרמ"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 3,
|
||||
"construct": "בְּק֣וֹל",
|
||||
"construct_consonants": "בקול",
|
||||
"absolute": "יִשְׂרָאֵ֗ל",
|
||||
"absolute_consonants": "ישראל"
|
||||
},
|
||||
{
|
||||
"position": 13,
|
||||
"construct": "שֵׁם",
|
||||
"construct_consonants": "שם",
|
||||
"absolute": "הַמָּק֖וֹם",
|
||||
"absolute_consonants": "המקום"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -53,5 +53,14 @@
|
||||
"prefix": "ה",
|
||||
"shoresh": "אמר"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 3,
|
||||
"construct": "בְּאֶ֖רֶץ",
|
||||
"construct_consonants": "בארץ",
|
||||
"absolute": "הָאֱמֹרִֽי",
|
||||
"absolute_consonants": "האמרי"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -131,5 +131,14 @@
|
||||
],
|
||||
"shoresh": "שם"
|
||||
}
|
||||
],
|
||||
"ketiv_qere": [
|
||||
{
|
||||
"word_position": 8,
|
||||
"ketiv": "ויירש",
|
||||
"ketiv_consonants": "ויירש",
|
||||
"qere": "וַיּ֖וֹרֶשׁ",
|
||||
"qere_consonants": "ויורש"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -163,5 +163,28 @@
|
||||
],
|
||||
"shoresh": "אדר"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 3,
|
||||
"construct": "דֶּ֖רֶךְ",
|
||||
"construct_consonants": "דרך",
|
||||
"absolute": "הַבָּשָׁ֑ן",
|
||||
"absolute_consonants": "הבשן"
|
||||
},
|
||||
{
|
||||
"position": 7,
|
||||
"construct": "מֶֽלֶךְ",
|
||||
"construct_consonants": "מלך",
|
||||
"absolute": "הַבָּשָׁ֨ן",
|
||||
"absolute_consonants": "הבשן"
|
||||
},
|
||||
{
|
||||
"position": 11,
|
||||
"construct": "וְכָל",
|
||||
"construct_consonants": "וכל",
|
||||
"absolute": "עַמּ֛וֹ",
|
||||
"absolute_consonants": "עמו"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -278,5 +278,21 @@
|
||||
"prefix": "ב",
|
||||
"shoresh": "חשב"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 13,
|
||||
"construct": "כָּל",
|
||||
"construct_consonants": "כל",
|
||||
"absolute": "עַמּ֖וֹ",
|
||||
"absolute_consonants": "עמו"
|
||||
},
|
||||
{
|
||||
"position": 22,
|
||||
"construct": "מֶ֣לֶךְ",
|
||||
"construct_consonants": "מלך",
|
||||
"absolute": "הָֽאֱמֹרִ֔י",
|
||||
"absolute_consonants": "האמרי"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -155,5 +155,14 @@
|
||||
"meteg_siluq"
|
||||
]
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 6,
|
||||
"construct": "כָּל",
|
||||
"construct_consonants": "כל",
|
||||
"absolute": "עַמּ֔וֹ",
|
||||
"absolute_consonants": "עמו"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -161,5 +161,35 @@
|
||||
"prefix": "ב",
|
||||
"shoresh": "דרך"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 4,
|
||||
"construct": "דֶּ֣רֶךְ",
|
||||
"construct_consonants": "דרך",
|
||||
"absolute": "יַם",
|
||||
"absolute_consonants": "ים"
|
||||
},
|
||||
{
|
||||
"position": 5,
|
||||
"construct": "יַם",
|
||||
"construct_consonants": "ים",
|
||||
"absolute": "ס֔וּף",
|
||||
"absolute_consonants": "סוף"
|
||||
},
|
||||
{
|
||||
"position": 9,
|
||||
"construct": "אֶ֣רֶץ",
|
||||
"construct_consonants": "ארץ",
|
||||
"absolute": "אֱד֑וֹם",
|
||||
"absolute_consonants": "אדום"
|
||||
},
|
||||
{
|
||||
"position": 12,
|
||||
"construct": "נֶֽפֶשׁ",
|
||||
"construct_consonants": "נפש",
|
||||
"absolute": "הָעָ֖ם",
|
||||
"absolute_consonants": "העם"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -187,5 +187,14 @@
|
||||
"prefix": "ו",
|
||||
"shoresh": "חי"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 13,
|
||||
"construct": "כָּל",
|
||||
"construct_consonants": "כל",
|
||||
"absolute": "הַנָּשׁ֔וּךְ",
|
||||
"absolute_consonants": "הנשוך"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -198,5 +198,21 @@
|
||||
"prefix": "ו",
|
||||
"shoresh": "חי"
|
||||
}
|
||||
],
|
||||
"smikhut": [
|
||||
{
|
||||
"position": 3,
|
||||
"construct": "נְחַ֣שׁ",
|
||||
"construct_consonants": "נחש",
|
||||
"absolute": "נְחֹ֔שֶׁת",
|
||||
"absolute_consonants": "נחשת"
|
||||
},
|
||||
{
|
||||
"position": 16,
|
||||
"construct": "נְחַ֥שׁ",
|
||||
"construct_consonants": "נחש",
|
||||
"absolute": "הַנְּחֹ֖שֶׁת",
|
||||
"absolute_consonants": "הנחשת"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user