From d44d29022767a0dd7146744a171c8c396e9d01a5 Mon Sep 17 00:00:00 2001 From: Scott Karp Date: Sun, 4 Oct 2026 18:49:21 +0000 Subject: [PATCH] =?UTF-8?q?specs=20=C2=A73.1=20+=20Doorpost:=20the=20engin?= =?UTF-8?q?e's=20Haskell=20dependencies,=20as=20the=20cabal=20file=20decla?= =?UTF-8?q?res=20them?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Architecture §3.1 listed base, containers, text, aeson, vector. The cabal file also depends on bytestring, filepath and directory (the engine reads L1 from disk and speaks JSON lines over a port), and on hspec for the test suite. Construction §1.3 already named all of them; the architecture list had simply not kept up. The list now matches shoresh-engine.cabal, says what each package is for, and says where the versions are pinned. One entry is marked as it is: `vector` is declared and no module imports it. Doorpost @expected_hash f653ef05… → 5094e48e…, in this commit, with the witnessed file that moved it (architecture). Read before committing: Elixir 474/0 on seeds 0 and 42; the built pipeline image reports specification_identity verified 5094e48e…. Seen while checking, not changed: Construction §1.3's "exact" Haskell versions disagree with the committed cabal.project.freeze for six of nine packages (aeson 2.2.1.0 vs 2.2.3.0, vector 0.13.1.0 vs 0.13.2.0, bytestring 0.12.1.0 vs 0.12.2.0, filepath 1.4.200.1 vs 1.4.301.0, directory 1.3.8.4 vs 1.3.10.1, hspec 2.11.7 vs 2.11.16). The freeze is what every image has been built from. Co-Authored-By: Claude Fable 5.1 --- specs/shorashim_architecture.md | 7 +++++-- vav_pipeline/lib/vav_pipeline/doorpost.ex | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/specs/shorashim_architecture.md b/specs/shorashim_architecture.md index f6904390..08f5ae63 100644 --- a/specs/shorashim_architecture.md +++ b/specs/shorashim_architecture.md @@ -345,12 +345,15 @@ The engine carries no data files of its own. The roots and the Torah references are in L1 (`l1/torah/`, found through `L1_MOUNT_POINT`) and are read from there when the engine starts. -**Dependencies (Haskell packages):** +**Dependencies (Haskell packages):** as declared in `shoresh-engine.cabal`; every version, transitive ones included, is pinned in `cabal.project.freeze`. - `base` - `containers` (Map, Set) - `text` - `aeson` (JSON: L1 verses and the port protocol) -- `vector` +- `bytestring` (reading L1 verse files; the port's line I/O) +- `filepath`, `directory` (finding and walking L1 under `L1_MOUNT_POINT`) +- `vector` (declared; no module imports it) +- `hspec` (test suite only) --- diff --git a/vav_pipeline/lib/vav_pipeline/doorpost.ex b/vav_pipeline/lib/vav_pipeline/doorpost.ex index 74e78ae0..d3fc1ef2 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 "f653ef0520c86bb378727fa877421796e18a424acc3fb396c62082b47c53cd50" + @expected_hash "5094e48ec4158f54646b00e8f2aa9ed57710b4ace33ccba155830a39e3149a38" @doc "Return the list of files that constitute the category-grade specification." @spec files() :: [String.t()]