specs + Doorpost: the roots are counted, not estimated — 1,378, not "~500"

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 <noreply@anthropic.com>
This commit is contained in:
Scott KarpandClaude Fable 5.1 committed 2026-10-04 18:10:21 +00:00
1 parent efd35bb194
commit 3eec60dbdb
3 files changed
+5 -5

No files matched your search

+1 -1
View File
@@ -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()]