Haskell ERP prototype with formal verification in selected areas
Surypus is an experimental Haskell ERP/CRM prototype. It focuses on a narrow verifiable core: tax calculations, double-entry accounting, JWT auth with refresh rotation, RBAC, and bill posting.
This repository is not production-ready. The current goal is one green vertical slice, not broad feature coverage.
- Prototype stage — the library and executables build; the API surface is exercised by tests, not deployed.
- CI: green — 27 workflows pass on
main(build + tests, CodeQL, HLint, Fourmolu, Hadolint, secret scanning, coverage, supply-chain checks, docs). - 382 library modules in
src/: 381 exposed inexposed-modulesofSurypus.cabal, plus one internal helper (Service.Workflow). - 792 test examples, 0 failures across 54 test modules (a few pending
without infrastructure); 798 examples, 0 failures, 0 pending when run with
SURYPUS_TEST_DATABASE_URLandSURYPUS_TEST_REDIS_URL, which also exercises the real PostgreSQL event-store round-trip and the Redis Streams fan-out. - Stack resolver:
lts-22.21(GHC 9.6.5); local development uses GHC 9.10.3.
stack build
stack test
stack runOr with Cabal:
cabal build all --enable-tests
cabal testsrc/ library modules (382), organised by domain (Finance, Commerce, HR, ...)
app/ executables (surypus-server, ...)
test/ Hspec test suite (test/Test.hs is the aggregator entry point)
tools/ build and documentation helpers
docs/ MkDocs documentation sources
dsl/ schema.yaml — source of the generated DAL.Types entity types
The task list lives in beads, stored in a
Dolt database at .beads/ and synced to
DoltHub. It is
mirrored into GitHub so the same list is visible as Issues, on the
project board and in the
wiki.
bd list # show the task list
bd show Surypus-sca # one issue
python3 tools/beads-sync-github.py --push # mirror to GitHubThe mirror is idempotent: it creates only what is missing, so it is safe to
re-run. A workflow runs it every six hours and whenever .beads/ changes. That
workflow needs a GH_TOKEN repository secret — the default GITHUB_TOKEN
cannot write to a project.
- CONTRIBUTING.md
- SECURITY.md
- ARCHITECTURE.md
- API_DOCUMENTATION.md
- TASKS.md — task ledger
- TODO.md — consolidated task list
- CODE_OF_CONDUCT.md
- GOVERNANCE.md