An audit of the figure pipeline found real sync gaps, now closed:
- `paper/pnas/make_figs.py` (which draws every manuscript figure) was invoked
by NO Makefile target or script - a manual step. Added `make paper-figures`.
- `configs/llm/epistasis{,_compat}.yaml` were reachable from nothing at all,
despite producing Fig. 3C-D. Added `make llm-epistasis` (+ its statistics).
- `make figures` never regenerated the MNIST montage that Fig. 2B embeds;
it now runs with the `mnist` target (it needs torch - it re-simulates).
- Added `make llm-society`, `env-notebooks`, `notebooks`.
New REPRODUCING.md is the authoritative map: every manuscript panel -> the
artifact it plots -> the config that produced it -> that config's seed, plus
the determinism policy (biological tier bitwise; GPU tiers statistical), the
seed-provenance statement, and an artifact-hash verification snippet. All 44
committed bundles currently hash-match their manifests, and figure
regeneration is pixel-identical (verified by comparison).
reproduce.sh delivers the one-command reproduction the paper's Methods
promises, writing REPRODUCED.md with recomputed hashes per bundle.
Two executed notebooks: 01 builds the Wright-Fisher model from scratch and
checks both closed forms interactively (runs in ~1 min on a laptop); 02
verifies artifact hashes then regenerates and displays all seven manuscript
figures. Both execute end-to-end (`make notebooks`).
Also pins `.python-version` to 3.14: the interpreter was previously
unpinned, and a `uv sync` silently switched it to 3.11 mid-session (see
tasks/lessons.md). README rewritten - it still described a Layer-1-only repo
of E1-E6 and pointed at a figure_manifest.md that does not exist.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BkRLcc18rwT2Lysu6PbG7v
44 lines
1.7 KiB
TOML
44 lines
1.7 KiB
TOML
[project]
|
|
name = "lamarckian-society"
|
|
version = "0.1.0"
|
|
description = "Layer 1 analytical core: knowledge transmission as a Wright-Fisher process."
|
|
readme = "README.md"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"numpy>=1.26",
|
|
"scipy>=1.11",
|
|
"pandas>=2.1",
|
|
"pyarrow>=15",
|
|
"matplotlib>=3.8",
|
|
"pydantic>=2.5",
|
|
"pyyaml>=6.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest>=8.0"]
|
|
# Layer 1.5 neural existence proof. Torch is only needed from Stage C (RNN/VAE/MLP);
|
|
# Stages A-B (synthetic sandbox + histogram bridge) are pure NumPy and run in the base env.
|
|
# The default PyPI torch wheel is CUDA-enabled (cu13, matching the RTX A4000 driver).
|
|
# Install with `uv sync --extra neural`.
|
|
neural = ["torch>=2.2"]
|
|
# The real-MNIST secondary-confirmation tier only. Install with `uv sync --extra mnist`.
|
|
mnist = ["torchvision>=0.17"]
|
|
# Layer 2 / LLM prototype (blueprint C2/C4): LoRA specialists + weight-space merging on a small
|
|
# open-weight base. GPU; models download to the HF cache (outside the repo). `uv sync --extra llm`.
|
|
llm = ["transformers>=4.44", "peft>=0.11", "datasets", "accelerate"]
|
|
# Jupyter notebooks that walk through the biological model and regenerate every paper figure
|
|
# from the committed artifacts. `uv sync --extra notebooks`.
|
|
notebooks = ["jupyter>=1.0"]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
# src-layout: src/knowledge/ is importable as `knowledge` (the normative package
|
|
# name the scientific-validation conformance tests import). src/neural/ is Layer 1.5.
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/knowledge", "src/neural", "src/llm"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
addopts = "-q"
|