specs §3.1 + Doorpost: the engine's Haskell dependencies, as the cabal file declares them

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

No files matched your search

+5 -2
View File
@@ -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)
---
+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 "f653ef0520c86bb378727fa877421796e18a424acc3fb396c62082b47c53cd50"
@expected_hash "5094e48ec4158f54646b00e8f2aa9ed57710b4ace33ccba155830a39e3149a38"
@doc "Return the list of files that constitute the category-grade specification."
@spec files() :: [String.t()]