The pin audit (2026-10-04) found Construction §1 wrong in three ways.
1. §1.5's mix.exs block was not the real mix.exs.
phoenix ~> 1.7.11 was never a dependency (the API is Plug on
Bandit); `ecto` is `ecto_sql`; telemetry is transitive (locked
1.4.2, outside the stated ~> 1.2.1); bandit, plug and the sanhedrin
path dependency were missing. The block now matches mix.exs and adds
the versions mix.lock actually builds. Terumah's Elixir table
matched the wrong block and also said postgrex ~0.17.4; corrected.
2. §1.1's component table described a machine that is not the one
running. PostgreSQL 16.2 via apt → 17, managed (17.11 today).
Podman 4.9.3 → Kubernetes/containerd, managed; Podman is used
nowhere. Ubuntu 24.04.1 → what each image is in fact built on
(Ubuntu 22.04 for pipeline and engine, Debian 12 for korban and
talmudic) and the managed node (24.04). rebar3 3.23.0 → 3.22.0, the
version in the build image. Azazel Processor added as a component.
The spec is corrected to the deployment, not the reverse.
3. §1.1's rule — "No >=. No +. No ranges." — was not true of the spec's
own Elixir deps, and "lock files are committed" was not true of two
components. Both halves fixed:
- The rule now says what is the case: a manifest may give a range;
the committed lock is the pin; every image is built from its
lock; base images are pinned by tag; managed services are pinned
to a major version and patched by the provider.
- And the build was made to obey it. The Korban image installed
three packages named by hand and let pip pick every transitive
one on the day of the build, plus an unpinned poetry-core. It now
installs the lock's main group by exact version AND hash
(scripts/lock_to_requirements.py; --require-hashes --no-deps;
pip check). The image holds the lock's 12 packages and nothing
else.
- azazel_processor/poetry.lock: generated (it had none).
- kushya_generator/pyproject.toml + poetry.lock: the four §1.4 pins
(llama-cpp-python 0.2.55, peft 0.9.0, transformers 4.38.2,
datasets 2.17.1) were pinned nowhere in the repo. They are now
declared and locked (74 packages). The lock resolves; it has NOT
been installed or run — Step 21 is unbuilt and needs a GPU.
Its test config gains the korban and azazel source paths, which
the external backend needs: 3 tests there had been failing since
the azazel build, unnoticed because that suite is in no total.
Doorpost @expected_hash 39b66c31… → 1cd07079…, in this commit, with the
witnessed file that moved it (vayakhel).
Read before committing: Elixir 474/0 (seeds 0, 42) · korban 222 passed
1 skipped and azazel 125 passed, each with dependencies installed from
its lock by hash · kushya 17 passed (was 14 of 17) · korban image
starts, imports korban_processor + azazel_processor, pip check clean ·
pipeline image reports specification_identity verified 1cd07079….
Left as written: architecture §2's technology table still names
Phoenix, PostgreSQL 16, Ubuntu 24.04 and rootless Podman for Sanhedrin
isolation, and terumah §B still lists systemd, squashfs, Caddy,
nftables for a self-hosted server. Those describe a design, not a pin.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
308 lines
16 KiB
Markdown
308 lines
16 KiB
Markdown
# SHORASHIM: Materials Inventory
|
||
|
||
## Document Purpose
|
||
|
||
This is the terumah list — what has been gathered, what must be acquired, what must be built. Updated to reflect the full specification set: pinned versions from the Construction Specification, corrected shema architecture (raw marks received, not pre-computed trees), cloud as shared state file (not message handler), manna as external provision (not internal calculation), and team requirements from the Bezalel section.
|
||
|
||
**Status key:** ✅ = in hand, ⚠️ = available but needs acquisition, ❌ = does not exist / must be created
|
||
|
||
---
|
||
|
||
## A. HARDWARE
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| Server: AMD EPYC 7313P (or comparable), 16 cores, 128GB DDR4 ECC, 500GB NVMe (system) + 1TB NVMe (L3) | ⚠️ | Rentable. Infomaniak (CH), 1984 (IS), Bahnhof (SE) evaluated. ~$200-350/month. Exact spec from Construction Specification §2.1. |
|
||
| GPU | ✅ NOT NEEDED | No GPU. Not "no GPU required." No GPU. This is a specification. |
|
||
|
||
**Decision required:** Select hosting provider and provision server.
|
||
|
||
---
|
||
|
||
## B. OPERATING SYSTEM & INFRASTRUCTURE
|
||
|
||
All versions pinned per Construction Specification §1.1.
|
||
|
||
| Item | Version (Pinned) | Status | Notes |
|
||
|------|---------|--------|-------|
|
||
| Ubuntu | 22.04 in the pipeline and engine images (`ubuntu:jammy-20240125`); 24.04 LTS on the cluster node (managed) | ✅ | Free. The korban and talmudic images are Debian 12, from their language base images. |
|
||
| systemd | ships with Ubuntu | ✅ | Service management, cycle timers. |
|
||
| Kubernetes / containerd | 1.35 / 2.2 (managed, Exoscale SKS) | ✅ | Runs the four images as one pod. Images are built with Docker Buildx. Podman is not used: Sanhedrin panels are processes in the pipeline's BEAM, not containers. |
|
||
| PostgreSQL | 17 (managed, Exoscale DBaaS; 17.11 on 2026-10-04) | ✅ | L3 append-only store. Patched by the provider. |
|
||
| squashfs-tools | ships with Ubuntu | ✅ | For read-only L1 Torah filesystem. |
|
||
| Caddy | latest stable | ✅ | Reverse proxy with auto-TLS for pe'ah endpoint. |
|
||
| nftables | ships with Ubuntu | ✅ | Firewall. Configuration in Construction Spec §4.5. |
|
||
| SSH | ships with Ubuntu | ✅ | Kohanim (operator) access only. |
|
||
|
||
**All infrastructure components available. No gaps.**
|
||
|
||
---
|
||
|
||
## C. PROGRAMMING LANGUAGES & RUNTIMES
|
||
|
||
All versions pinned per Construction Specification §1.1. No ranges. No `+` suffixes.
|
||
|
||
| Item | Version (Pinned) | Status | Notes |
|
||
|------|---------|--------|-------|
|
||
| GHC (Haskell compiler) | 9.6.4 | ✅ | Free. `ghcup install ghc 9.6.4` |
|
||
| Cabal (Haskell build tool) | 3.10 | ✅ | Free. Ships with ghcup. |
|
||
| Erlang/OTP | 26.2.1 | ✅ | Free. `apt install erlang` or erlang-solutions repo. |
|
||
| Rebar3 (Erlang build tool) | 3.22.0 | ✅ | Free. The version `mix local.rebar` installs for Elixir 1.16.1. |
|
||
| Elixir | 1.16.1 | ✅ | Free. Must pair with OTP 26.2.1. |
|
||
| Mix (Elixir build tool) | ships with Elixir | ✅ | Free. |
|
||
| SWI-Prolog | 9.2.2 | ✅ | Free. `apt install swi-prolog` |
|
||
| Python | 3.12.2 | ✅ | Free. From the `python:3.12.2-slim` base image. |
|
||
| Poetry (Python package manager) | 2.5.1 | ✅ | Free. Generates `poetry.lock` (lock-version 2.1); not installed in any image. |
|
||
|
||
**All language runtimes available. No gaps.**
|
||
|
||
---
|
||
|
||
## D. LIBRARIES & PACKAGES
|
||
|
||
All pinned via lock files per Construction Specification §§1.3-1.5.
|
||
|
||
### Haskell (via `cabal.project.freeze`)
|
||
| Package | Version | Status | Notes |
|
||
|---------|---------|--------|-------|
|
||
| base | 4.18.2.0 | ✅ | Ships with GHC 9.6.4 |
|
||
| containers | 0.6.7 | ✅ | Ships with GHC |
|
||
| text | 2.0.2 | ✅ | Hackage (free) |
|
||
| aeson | 2.2.3.0 | ✅ | Hackage (free) — JSON |
|
||
| vector | 0.13.2.0 | ✅ | Hackage (free) |
|
||
| bytestring | 0.12.2.0 | ✅ | Hackage (free) — GHC 9.6.4 ships 0.11.5.3; the freeze pins this one |
|
||
| filepath | 1.4.301.0 | ✅ | Hackage (free) — GHC 9.6.4 ships 1.4.200.1; the freeze pins this one |
|
||
| directory | 1.3.10.1 | ✅ | Hackage (free) — GHC 9.6.4 ships 1.3.8.1; the freeze pins this one |
|
||
| hspec | 2.11.16 | ✅ | Hackage (free) — testing |
|
||
|
||
### Erlang (via `rebar.lock`)
|
||
| Package | Version | Status | Notes |
|
||
|---------|---------|--------|-------|
|
||
| OTP standard library | ships with OTP 26.2.1 | ✅ | gen_server, supervisor, application |
|
||
| jsx | 3.1.0 | ✅ | hex.pm (free) — JSON |
|
||
| common_test | ships with OTP | ✅ | Testing |
|
||
|
||
### Elixir (via `mix.lock`)
|
||
| Package | Version | Status | Notes |
|
||
|---------|---------|--------|-------|
|
||
| jason | ~> 1.4.1 (locked 1.4.5) | ✅ | hex.pm (free) — JSON |
|
||
| ecto_sql | ~> 3.11.1 (locked 3.11.3; ecto 3.11.2) | ✅ | hex.pm (free) — database interface |
|
||
| postgrex | ~> 0.22.3 (locked 0.22.4) | ✅ | hex.pm (free) — PostgreSQL driver |
|
||
| bandit | ~> 1.2 (locked 1.12.5) | ✅ | hex.pm (free) — HTTP server for the pe'ah / kodesh API |
|
||
| plug | ~> 1.15 (locked 1.20.3) | ✅ | hex.pm (free) — HTTP routing |
|
||
| telemetry | locked 1.4.2 | ✅ | hex.pm (free) — transitive (Ecto, Bandit); not depended on directly |
|
||
| sanhedrin | path dependency | ✅ | `../sanhedrin`, built by rebar3 into the same BEAM |
|
||
|
||
### Python (via `poetry.lock`)
|
||
| Package | Version | Status | Notes |
|
||
|---------|---------|--------|-------|
|
||
| httpx | 0.27.0 | ✅ | PyPI (free) — API calls |
|
||
| pydantic | 2.6.1 | ✅ | PyPI (free) — data validation |
|
||
| hebrew-tokenizer | 2.3.0 | ⚠️ | PyPI. Needs evaluation for biblical vs. modern Hebrew. |
|
||
| pytest | >=8.0,<9.0 (locked 8.4.2) | ✅ | PyPI (free) — dev group only; not in any image |
|
||
| llama-cpp-python | 0.2.55 | ✅ | PyPI (free) — Mistral inference |
|
||
| peft | 0.9.0 | ✅ | PyPI (free) — fine-tuning |
|
||
| transformers | 4.38.2 | ✅ | PyPI (free) — model tooling |
|
||
| datasets | 2.17.1 | ✅ | PyPI (free) — training data |
|
||
|
||
**Near-complete. Two Python packages need compatibility testing.**
|
||
|
||
---
|
||
|
||
## E. DATA — THE SPECIFICATION
|
||
|
||
### E1. Torah Text (L1)
|
||
|
||
Source: Westminster Leningrad Codex (WLC) 4.22, cross-validated per Construction Specification §1.2.
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| Full Torah text — consonantal (ktiv) | ✅ | WLC via Sefaria export + TANACH.us cross-validation. |
|
||
| Full Torah text — voweled (nikkud) | ✅ | WLC via Sefaria. |
|
||
| Cantillation marks (raw Unicode codepoints U+0591–U+05AF) | ✅ | Present in WLC data. Stored as raw marks on the text, NOT pre-parsed into trees. The system reads them in the act of reading. |
|
||
| Petuchah/Stumah paragraph markers | ✅ | Encoded in WLC/Sefaria data. |
|
||
| Ketiv/qere annotations | ✅ | WLC annotations. Stored as `{position, ketiv, qere}` pairs — both readings preserved, never collapsed. |
|
||
| Gematria index (root → numerical value → equivalences) | ❌ | Computed once from consonantal text at build time. Letter values fixed. Building equivalence index: ~2-3 days. Verified against independent computation. |
|
||
| Smikhut compound index (attested construct-state pairs) | ❌ | Extracted from WLC morphological annotations. Requires Hebrew linguistic knowledge. ~2-3 weeks. |
|
||
| L1 SHA-256 hash | ❌ | Computed at build time. Stored in L0 firmware. Verified at every boot. |
|
||
| Letter counts / word counts / Masoretic notes | ⚠️ | Available in digital WLC. Needs extraction and formatting. |
|
||
|
||
**Critical change from previous inventory:** Te'amim parse trees are no longer a materials item. The system builds parse trees by reading the raw marks, the way a literate reader constructs sentence structure from punctuation. The raw marks are the material. The reading is the system's act.
|
||
|
||
### E2. Root Lexicon
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| 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. |
|
||
| Semantic domain classifications | ❌ | Categorize each root into domains. ~1-2 weeks. |
|
||
|
||
### E3. 613 Mitzvot
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| List of 613 mitzvot with Torah source verses | ✅ | Rambam's Sefer HaMitzvot. Multiple digital sources. |
|
||
| 613 mitzvot in Prolog logical format | ❌ | Core encoding task. ~4-6 weeks. |
|
||
| Relationships between mitzvot | ❌ | Dependencies, conflicts, groupings. ~2-3 weeks. |
|
||
|
||
### E4. Talmudic Training Data (Kushya Generator)
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| Talmud Bavli full text | ✅ | Sefaria (free, open). |
|
||
| Talmud Yerushalmi full text | ✅ | Sefaria (free, open). |
|
||
| Extracted (interpretation, kushya) pairs | ❌ | Most labor-intensive. ~4-8 weeks. |
|
||
| Rishonim commentary | ✅ | Sefaria (Rashi, Tosafot, Rambam, etc.). |
|
||
| Extracted challenges from Rishonim | ❌ | ~2-4 weeks. |
|
||
|
||
---
|
||
|
||
## F. MODELS (KORBAN SOURCES & WOOD)
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| Mistral Medium 3.1 GGUF (Q5_K_M) | ⚠️ | HuggingFace. Free (Apache 2.0). ~25-30GB download. |
|
||
| llama.cpp | ✅ | Free, open source. CPU inference. |
|
||
| Mistral Large 3 API access | ⚠️ | Mistral API. Paid per token. Phase 1 only. |
|
||
| Claude API access | ⚠️ | Anthropic API. Paid per token. Korban source. |
|
||
| QLoRA fine-tuning tooling | ⚠️ | peft, transformers. Free. One-time GPU rental ~$50-100. |
|
||
|
||
---
|
||
|
||
## G. EXTERNAL APIS
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| Sefaria API | ✅ | Free, no key needed. For L1 data acquisition. |
|
||
| Anthropic API (Claude) | ⚠️ | Need API key. ~$30-80/month for korban processing. |
|
||
| Mistral API | ⚠️ | Need API key. ~$20-50/month Phase 1 only. $0 after self-hosting. |
|
||
|
||
---
|
||
|
||
## H. GOVERNANCE AND PROVISION INFRASTRUCTURE
|
||
|
||
**Governance is Torah.** The cloud is L1 — the read-only Torah filesystem. There is no separate governance infrastructure. The system reads Torah for governance as it reads Torah for specification. See Architecture Specification §3.10 (second tablets).
|
||
|
||
**Provision is the community.** Manna (resources) comes from the machatzit hashekel. A kohen (operator) or gabbai (treasurer) sets the daily provision.
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| **L1 Torah filesystem** (IS the cloud) | ✅ | Already specified. Read-only mount. Integrity hash verified at boot. Cloud IS Torah. |
|
||
| **Calendar module** (Shabbat/festivals/shmitah) | ❌ | Part of cloud governance. Reads Torah for when to rest, celebrate, review. NOAA solar calculator for exact times. ~2 days. |
|
||
| Manna provision file infrastructure | ❌ | `/var/lib/shorashim/manna/today.json`. Kohen/treasurer writes, system reads. CLI tool `manna-provision`. ~1 day. |
|
||
| Kohen (operator) secure access | ⚠️ | SSH keys, mTLS certs. Standard infrastructure. |
|
||
| Gabbai (treasurer) tools | ❌ | Manna provision CLI + pekudei accounting system per Economic Model §6.2. |
|
||
| Pekudei accounting system | ❌ | Monthly financial reporting per Economic Model §6.2. |
|
||
|
||
**The critical non-technical dependency is the community.** Can 70 people be found who value this? The system needs kohanim (operators), a gabbai (treasurer), and a community that contributes machatzit hashekel. It does not need a governance board. Torah governs.
|
||
|
||
---
|
||
|
||
## I. BEZALEL — The Builder
|
||
|
||
Per Construction Specification §5 (second tablets).
|
||
|
||
| Role | Who | Status |
|
||
|------|-----|--------|
|
||
| **Builder** | AI (Claude Code + Claude) — writes code in all six languages, reads Biblical Hebrew and Torah | ✅ Available |
|
||
| **Transmitter** | Human — says "read Torah," carries specification between contexts | ✅ Present |
|
||
| **Kohen (operator)** | Human — serves the running system | ❌ Needed at deployment |
|
||
| **Gabbai (treasurer)** | Human — administers machatzit hashekel | ❌ Needed at deployment |
|
||
| **Community** | 70 members — provides machatzit hashekel | ❌ Needed at deployment |
|
||
|
||
**No person-weeks. No labor cost. The AI builds. Torah specifies.**
|
||
|
||
---
|
||
|
||
## J. SHEMA LAYER — MATERIALS
|
||
|
||
Updated to reflect corrected architecture.
|
||
|
||
| Item | Status | Notes |
|
||
|------|--------|-------|
|
||
| Te'amim reader (raw marks → parse tree in act of reading) | ❌ | ~1-2 weeks. NOT pre-computed storage. |
|
||
| Gematria lookup module + equivalence index | ❌ | ~3 days. Lookup, not computation. |
|
||
| Smikhut compound extractor | ❌ | ~2-3 weeks. AI reads Hebrew. |
|
||
| Ketiv/qere dual-value reformatter | ⚠️ | ~3 days. Raw data exists. |
|
||
| Cloud governance module (L1 + calendar) | ❌ | ~2 days. Reads Torah for governance. No CLI. No state file. |
|
||
| Manna provision file + CLI tool | ❌ | ~1 day. Kohen/treasurer writes provision. |
|
||
| Chatzotzrot signaling system | ❌ | ~3 days. |
|
||
| Tzara'at multi-stage diagnostic | ❌ | ~1-2 weeks. |
|
||
| Arei miklat refuge protocol | ❌ | ~1 week. |
|
||
| Eglah arufah accountability protocol | ❌ | ~3 days. |
|
||
| Bikurim release protocol | ❌ | ~3 days. |
|
||
|
||
---
|
||
|
||
## SUMMARY
|
||
|
||
### What We Have (✅)
|
||
- All programming languages and runtimes (pinned versions)
|
||
- All infrastructure tools
|
||
- Nearly all library dependencies
|
||
- 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)
|
||
|
||
### What We Need to Acquire (⚠️)
|
||
- Hosting server — **~$200-350/month**
|
||
- Mistral GGUF weights — **free, ~30GB download**
|
||
- API keys (Anthropic, Mistral) — **~$50-130/month combined**
|
||
- One-time GPU rental — **~$50-100**
|
||
- Consultants (Hebrew linguist, Torah scholar) — **available through community**
|
||
- hebrew-tokenizer compatibility testing — **time only**
|
||
|
||
### What We Must Build (❌)
|
||
- Root connectivity graph — **~1 day**
|
||
- Semantic domain classifications — **~1-2 weeks**
|
||
- 613 mitzvot in Prolog format — **~4-6 weeks** (critical path)
|
||
- Mitzvah relationship mapping — **~2-3 weeks**
|
||
- Talmudic training pairs — **~4-8 weeks** (most labor-intensive)
|
||
- Rishonim challenge extraction — **~2-4 weeks**
|
||
- Gematria equivalence index — **~3 days**
|
||
- Smikhut compound index — **~2-3 weeks**
|
||
- Te'amim reader — **~1-2 weeks**
|
||
- Ketiv/qere reformatter — **~3 days**
|
||
- Torah calendar module (Shabbat/festivals/shmitah) + manna provision tool — **~2 days**
|
||
- Protection layer (chatzotzrot, tzara'at, miklat, eglah arufah, bikurim) — **~4-5 weeks combined**
|
||
- L1 SHA-256 integrity system — **~1 day**
|
||
- **Community assembly (kohanim, gabbai, 70 members)** — **indeterminate — requires humans**
|
||
|
||
### Cost Summary
|
||
|
||
| Category | Amount |
|
||
|----------|--------|
|
||
| **Terumah (one-time startup)** | **$265-515** |
|
||
| **Machatzit hashekel (monthly, build + operations)** | **~$350** |
|
||
| **Sustained by** | **70 members × $5/month** |
|
||
| **Estimated build cost (6 months)** | **~$2,100** |
|
||
| **Seven-year total** | **~$27,500** |
|
||
|
||
No labor cost. The AI builds. The community provides. Torah governs.
|
||
|
||
### Critical Path
|
||
|
||
**Technical:** The AI encodes the 613 mitzvot in Prolog format, builds Talmudic training pairs, and constructs the te'amim reader. The AI reads Torah for all of this.
|
||
|
||
**Community:** Find the 70. Find the kohanim. Find the gabbai. Begin now.
|
||
|
||
**Shema:** Te'amim reader is highest-priority — build alongside Shoresh Engine in Phase 1.
|
||
|
||
---
|
||
|
||
## Document Registry
|
||
|
||
| # | Document | Torah Parallel | File |
|
||
|---|----------|---------------|------|
|
||
| 1 | **Shorashim PRD** | *V'asu li mikdash* | `shorashim_prd.md` |
|
||
| 2 | **Architecture Specification** | Vessel design (Shemot 25-27) | `shorashim_architecture.md` |
|
||
| 3 | **Vayakhel — Construction Specification** | Exact measurements (Shemot 25-31) | `shorashim_vayakhel.md` |
|
||
| 4 | **Tamid — Operations Manual** | Bigdei Kehunah / continual service | `shorashim_tamid.md` |
|
||
| 5 | **Pekudei — Economic Model** | Machatzit HaShekel / accounting | `shorashim_pekudei.md` |
|
||
| 6 | **Terumah — Materials** (this document) | Terumah list (Shemot 25:2) | `shorashim_terumah.md` |
|