proof-aware-crypto-tooling-.../tests/test_curriculum_notebooks.py
mrwulf ba47aa435d warden docs + study material: WALLET.md, products lineup, llms.txt, lecture 10
- WALLET.md: the product manual (one idea, trust posture table, R4 gate,
  quickstart, MCP surface, self-proving card, firewall, taxonomy)
- docs/products.md: four production-ready deployment profiles
  (solo/airgap/treasury/choir) with honest built-vs-wired boundaries
- llms.txt: agent-native discovery manifest at repo root
- README: warden intro + lecture 10 pointer
- notebooks/10_verified_custody_wallet.ipynb: ratchet-rule lecture (toy
  3-of-3 -> real four proven forks -> counterparty recomputes a card's
  inclusion proof); course README + notebook test updated
- 83 tests green

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 23:46:27 +02:00

49 lines
1.8 KiB
Python

import json
from pathlib import Path
EXPECTED_NOTEBOOKS = [
"00_course_map.ipynb",
"01_threat_model_and_truth_boundary.ipynb",
"02_claim_cards_and_risk_model.ipynb",
"03_lean_replay_and_axiom_audit.ipynb",
"04_proof_hygiene_and_boundaries.ipynb",
"05_third_party_attestation_provider.ipynb",
"06_merkle_transparency_logs.ipynb",
"06a_provider_build_the_log.ipynb",
"06b_agent_verify_inclusion.ipynb",
"07_agent_consequences.ipynb",
"08_capstone_research_program.ipynb",
"09_dogfood_verified_crypto.ipynb",
"10_verified_custody_wallet.ipynb",
]
def test_curriculum_notebooks_are_valid_and_output_free():
root = Path(__file__).resolve().parents[1]
notebook_dir = root / "notebooks"
assert sorted(path.name for path in notebook_dir.glob("*.ipynb")) == EXPECTED_NOTEBOOKS
for name in EXPECTED_NOTEBOOKS:
notebook = json.loads((notebook_dir / name).read_text(encoding="utf-8"))
assert notebook["nbformat"] == 4
assert notebook["nbformat_minor"] >= 5
assert notebook["cells"]
combined = "\n".join(
"".join(cell.get("source", []))
for cell in notebook["cells"]
if cell.get("cell_type") == "markdown"
)
assert "Learning Objectives" in combined
if name != "00_course_map.ipynb":
assert "Exercises" in combined
assert "# Lecture" in combined
for cell in notebook["cells"]:
if cell.get("cell_type") == "code":
assert cell.get("execution_count") is None
assert cell.get("outputs") == []
def test_notebook_readme_points_to_course_map():
readme = (Path(__file__).resolve().parents[1] / "notebooks" / "README.md").read_text(encoding="utf-8")
assert "00_course_map.ipynb" in readme
assert "zero-to-hero" in readme