Front Matter · Chapter 5
Prerequisites & self-diagnostic {.unnumbered}
Prerequisites & self-diagnostic
Required background
You will be comfortable with this book if you can answer "yes" to most of these questions.
Programming
- Have you written Python at the level of decorators, generators, type hints, and
dataclass/ Pydantic? - Can you read and modify SQL DDL, includingCREATE INDEX, foreign keys, and basic transactional discipline? - Have you usedgitfor at least a small project (branch, merge, resolve a conflict)?
Computer science
- Do you know what big-$O$ notation means and roughly when it matters?
- Have you implemented at least one tree or hash-based data structure from scratch in any language?
- Can you read pseudocode and convert it to working code?
Math
- Calculus is not required.
- Comfort with set notation, basic probability, and modular arithmetic helps but is not required.
- The cryptography chapters introduce all the math they use; the references give pointers if you want depth.
Reading
- Have you read at least one RFC end-to-end? (Doesn't matter which.)
- Are you willing to read primary sources — the Canon spec, FRE rule text, RFC 8785 — rather than rely on summaries?
Installing the reference implementation
pip install meridian-canon # core only — no optional deps
pip install "meridian-canon[test]" # add test harness
Optional extras
Each extra activates a specific integration. Install only what you need:
| Extra | Activates | Relevant chapters |
|---|---|---|
[embed] | pgvector embedding pipeline | 9–10 |
Install multiple extras in one command:
pip install "meridian-canon[dsse,presidio,outlines]"
The [pipeline] extra includes both dagster>=1.7 and litellm>=1.40. LiteLLM belongs to the pipeline orchestration layer only; do not use it for per-attestation refutation calls (use OllamaAdapter or OpenAIAdapter, which have no extra dependencies). ### Cross-platform keyring note Chapter 23 covers key management. The keyring backend is selected automatically by platform: - macOS — Keychain - Windows — Credential Manager - Linux (GUI) — SecretService (via secretstorage) - Linux headless / CI — keyrings.alt (pip install keyrings.alt) In CI environments, set PYTHON_KEYRING_BACKEND=keyring.backends.fail.Keyring and manage keys via environment variables, or install keyrings.alt for file-backed storage. The lab manual documents both paths. ## Optional but useful - Familiarity with PostgreSQL administration. - Exposure to a vector database (pgvector, Qdrant, Weaviate, etc.). - Any prior contact with cryptographic primitives (you've used git commit -S, you've seen a JWT, you've encountered Ed25519 in passing). - Reading exposure to litigation, e-discovery, or evidence law (not required; Chapter 3 supplies what you need). ## Self-diagnostic exercises If you can do the following without referring to documentation, you are ready for Chapter 1. 1. Write a Python function that takes a bytes object and returns its SHA-256 digest as a 64-character lowercase hex string. 2. Write a SQL query that joins three tables on foreign keys, filters on a timestamp range, and returns the top 10 rows by a computed score. 3. Read a JSON Schema document and identify which of these objects validate against it: {"a": 1}, {"a": "1"}, {"a": 1, "b": 2}. 4. Diagram, in plain English, what happens when a user types a URL into a browser and a page loads. (You don't have to be exhaustive; you have to be honest about what you don't know.) If any of these is genuinely opaque, the corresponding section of Practical Cryptography for Developers (Nakov), the PostgreSQL tutorial, or Designing Data-Intensive Applications (Kleppmann) Chapter 1 will get you ready faster than anything in this book.