N12: environment lock of the master node venv (uv pip freeze, 88 packages), .python-version 3.12.15, environment.md
Items: FIRC0001-DATA-10 (environment half). macOS 26.4, Apple M3 Ultra 28c/96 GB, CPython 3.12.15 (uv 0.13.4), duckdb 2.0.0, pyarrow 26.0.0, matplotlib 3.11.2. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
8 changed files +258 −0
added
.python-version
+1 −0
@@ -0,0 +1 @@ | |||||
| 1 | +3.12.15 | ||||
added
code/audit/a12_env_lock.sh
+32 −0
@@ -0,0 +1,32 @@ | |||||
| 1 | +#!/bin/bash | ||||
| 2 | +# N12 - environment lock of the master node's venv (uv-managed, no pip): requirements.lock, .python-version, environment.md | ||||
| 3 | +set -u | ||||
| 4 | +OUT="$HOME/firc0001_review/results/env"; mkdir -p "$OUT" | ||||
| 5 | +VENV="$HOME/UQO_RESEARCH_DB/.venv" | ||||
| 6 | +cd "$HOME/UQO_RESEARCH_DB" || exit 1 | ||||
| 7 | +uv pip freeze --python "$VENV/bin/python" > "$OUT/requirements.lock" 2> "$OUT/uv_freeze.err" | ||||
| 8 | +"$VENV/bin/python" -c 'import sys; print(".".join(map(str, sys.version_info[:3])))' > "$OUT/.python-version" | ||||
| 9 | +{ | ||||
| 10 | +echo "# Environment of the master node (M3U96b) used for the SPID extraction and for every Stage D audit" | ||||
| 11 | +echo | ||||
| 12 | +echo "Generated $(date -Iseconds) by code/audit/a12_env_lock.sh (read-only)." | ||||
| 13 | +echo | ||||
| 14 | +echo '```' | ||||
| 15 | +echo "hostname: $(hostname)" | ||||
| 16 | +sw_vers 2>/dev/null | ||||
| 17 | +echo "hw.model: $(sysctl -n hw.model)"; echo "machdep.cpu.brand_string: $(sysctl -n machdep.cpu.brand_string 2>/dev/null)" | ||||
| 18 | +echo "hw.ncpu: $(sysctl -n hw.ncpu) hw.memsize: $(( $(sysctl -n hw.memsize) / 1024 / 1024 / 1024 )) GB" | ||||
| 19 | +echo "python: $($VENV/bin/python -V 2>&1) ($(cat $VENV/pyvenv.cfg | tr '\n' ';'))" | ||||
| 20 | +echo "uv: $(uv --version 2>/dev/null)" | ||||
| 21 | +echo "duckdb (python): $($VENV/bin/python -c 'import duckdb; print(duckdb.__version__)')" | ||||
| 22 | +echo "pyarrow: $($VENV/bin/python -c 'import pyarrow; print(pyarrow.__version__)') numpy: $($VENV/bin/python -c 'import numpy; print(numpy.__version__)') pandas: $($VENV/bin/python -c 'import pandas; print(pandas.__version__)') matplotlib: $($VENV/bin/python -c 'import matplotlib; print(matplotlib.__version__)') httpx: $($VENV/bin/python -c 'import httpx; print(httpx.__version__)')" | ||||
| 23 | +echo "packages in venv: $(wc -l < $OUT/requirements.lock)" | ||||
| 24 | +echo "git HEAD of ~/UQO_RESEARCH_DB: $(git rev-parse --short HEAD) (paper cites 2324b58)" | ||||
| 25 | +echo "DuckDB files: $(ls -l $HOME/UQO_RESEARCH_DB/project-db/data/db/spid.duckdb | awk '{print $5, $6, $7, $8}') | $(ls -l $HOME/UQO_RESEARCH_DB/data/duckdb/edgar_research.duckdb | awk '{print $5, $6, $7, $8}')" | ||||
| 26 | +echo "laptop exhibits: python3 -I code/make_tables.py (matplotlib pinned in requirements-exhibits.txt by L6)" | ||||
| 27 | +echo '```' | ||||
| 28 | +echo | ||||
| 29 | +echo "Audit settings: \`nice -n 10\`, \`OMP_NUM_THREADS=4\`, DuckDB \`SET threads=4\`, \`SET memory_limit='24GB'\`, \`read_only=True\`, seed 20261105." | ||||
| 30 | +echo "Expected runtimes on this node (Stage D, measured): a01 12 s · a02 217 s · a03 2 s · a04 32 s · a05 see results/focus/manifest.json · a06 < 10 s · a07 see manifest · a08 see manifest · a09 < 10 s · a10 < 10 s." | ||||
| 31 | +} > "$OUT/environment.md" | ||||
| 32 | +cat "$OUT/environment.md"; head -3 "$OUT/requirements.lock"; cat "$OUT/uv_freeze.err" | ||||
added
environment.md
+24 −0
@@ -0,0 +1,24 @@ | |||||
| 1 | +# Environment of the master node (M3U96b) used for the SPID extraction and for every Stage D audit | ||||
| 2 | + | ||||
| 3 | +Generated 2026-11-05T14:35:29-05:00 by code/audit/a12_env_lock.sh (read-only). | ||||
| 4 | + | ||||
| 5 | +``` | ||||
| 6 | +hostname: m3u96b | ||||
| 7 | +ProductName: macOS | ||||
| 8 | +ProductVersion: 26.4 | ||||
| 9 | +BuildVersion: 25E5207k | ||||
| 10 | +hw.model: Mac15,14 | ||||
| 11 | +machdep.cpu.brand_string: Apple M3 Ultra | ||||
| 12 | +hw.ncpu: 28 hw.memsize: 96 GB | ||||
| 13 | +python: Python 3.12.15 (home = /Users/simon-pierreboucher/.local/share/uv/python/cpython-3.12-macos-aarch64-none/bin;implementation = CPython;uv = 0.13.4;version_info = 3.12;include-system-site-packages = false;) | ||||
| 14 | +uv: uv 0.13.4 (Homebrew 2026-10-20 aarch64-apple-darwin) | ||||
| 15 | +duckdb (python): 2.0.0 | ||||
| 16 | +pyarrow: 26.0.0 numpy: 2.5.4 pandas: 3.1.0 matplotlib: 3.11.2 httpx: 0.28.1 | ||||
| 17 | +packages in venv: 88 | ||||
| 18 | +git HEAD of ~/UQO_RESEARCH_DB: d700868 (paper cites 2324b58) | ||||
| 19 | +DuckDB files: 3155701760 oct. 28 12:21 | 73500995584 oct. 27 21:34 | ||||
| 20 | +laptop exhibits: python3 -I code/make_tables.py (matplotlib pinned in requirements-exhibits.txt by L6) | ||||
| 21 | +``` | ||||
| 22 | + | ||||
| 23 | +Audit settings: `nice -n 10`, `OMP_NUM_THREADS=4`, DuckDB `SET threads=4`, `SET memory_limit='24GB'`, `read_only=True`, seed 20261105. | ||||
| 24 | +Expected runtimes on this node (Stage D, measured): a01 12 s · a02 217 s · a03 2 s · a04 32 s · a05 see results/focus/manifest.json · a06 < 10 s · a07 see manifest · a08 see manifest · a09 < 10 s · a10 < 10 s. | ||||
added
requirements.lock
+88 −0
@@ -0,0 +1,88 @@ | |||||
| 1 | +altair==6.3.0 | ||||
| 2 | +annotated-doc==0.0.5 | ||||
| 3 | +annotated-types==0.8.0 | ||||
| 4 | +anyio==4.15.1 | ||||
| 5 | +attrs==26.1.0 | ||||
| 6 | +beautifulsoup4==4.15.0 | ||||
| 7 | +certifi==2026.10.23 | ||||
| 8 | +chardet==7.7.0 | ||||
| 9 | +charset-normalizer==3.5.2 | ||||
| 10 | +click==8.5.0 | ||||
| 11 | +cloudpickle==3.1.2 | ||||
| 12 | +contourpy==1.4.0 | ||||
| 13 | +cycler==0.12.1 | ||||
| 14 | +duckdb==2.0.0 | ||||
| 15 | +fastapi==0.162.0 | ||||
| 16 | +filelock==4.2.4 | ||||
| 17 | +fonttools==4.68.0 | ||||
| 18 | +fsspec==2026.9.0 | ||||
| 19 | +h11==0.16.0 | ||||
| 20 | +hf-xet==1.7.0 | ||||
| 21 | +httpcore==1.0.9 | ||||
| 22 | +httpcore2==2.16.0 | ||||
| 23 | +httpx==0.28.1 | ||||
| 24 | +httpx2==2.16.0 | ||||
| 25 | +huggingface-hub==2.3.0 | ||||
| 26 | +idna==3.20 | ||||
| 27 | +itsdangerous==2.2.0 | ||||
| 28 | +jinja2==3.1.6 | ||||
| 29 | +joblib==1.6.0 | ||||
| 30 | +jsonschema==4.26.0 | ||||
| 31 | +jsonschema-specifications==2025.9.1 | ||||
| 32 | +kiwisolver==1.5.1 | ||||
| 33 | +lxml==6.1.3 | ||||
| 34 | +markdown-it-py==4.2.0 | ||||
| 35 | +markupsafe==3.0.4 | ||||
| 36 | +matplotlib==3.11.2 | ||||
| 37 | +mdurl==0.1.2 | ||||
| 38 | +mpmath==1.3.0 | ||||
| 39 | +narwhals==2.28.0 | ||||
| 40 | +networkx==3.7 | ||||
| 41 | +numpy==2.5.4 | ||||
| 42 | +opentelemetry-api==1.45.1 | ||||
| 43 | +packaging==26.3 | ||||
| 44 | +pandas==3.1.0 | ||||
| 45 | +pillow==13.0.0 | ||||
| 46 | +plotly==7.1.0 | ||||
| 47 | +polars==2.1.0 | ||||
| 48 | +polars-runtime-32==2.1.0 | ||||
| 49 | +protobuf==7.36.2 | ||||
| 50 | +pyarrow==26.0.0 | ||||
| 51 | +pydantic==2.14.1 | ||||
| 52 | +pydantic-core==2.50.1 | ||||
| 53 | +pydeck==0.9.3 | ||||
| 54 | +pygments==2.21.0 | ||||
| 55 | +pyparsing==3.3.3 | ||||
| 56 | +python-dateutil==3.0.0 | ||||
| 57 | +python-dotenv==1.2.4 | ||||
| 58 | +python-multipart==0.0.32 | ||||
| 59 | +pyyaml==6.0.3 | ||||
| 60 | +referencing==0.37.0 | ||||
| 61 | +regex==2026.9.29 | ||||
| 62 | +requests==2.34.2 | ||||
| 63 | +rich==15.0.0 | ||||
| 64 | +rpds-py==2026.9.1 | ||||
| 65 | +safetensors==0.8.0 | ||||
| 66 | +scikit-learn==1.9.1 | ||||
| 67 | +scipy==1.18.1 | ||||
| 68 | +sentence-transformers==6.2.0 | ||||
| 69 | +setuptools==84.2.1 | ||||
| 70 | +shellingham==1.5.4 | ||||
| 71 | +six==1.17.0 | ||||
| 72 | +soupsieve==3.0.4 | ||||
| 73 | +starlette==1.10.0 | ||||
| 74 | +streamlit==1.66.1 | ||||
| 75 | +sympy==1.14.0 | ||||
| 76 | +threadpoolctl==3.7.0 | ||||
| 77 | +tokenizers==0.23.3 | ||||
| 78 | +torch==2.14.1 | ||||
| 79 | +tqdm==4.70.1 | ||||
| 80 | +transformers==5.21.0 | ||||
| 81 | +truststore==0.10.5 | ||||
| 82 | +typer==0.27.3 | ||||
| 83 | +typing-extensions==4.16.0 | ||||
| 84 | +typing-inspection==0.4.4 | ||||
| 85 | +tzdata==2026.5 | ||||
| 86 | +urllib3==2.8.0 | ||||
| 87 | +uvicorn==0.54.0 | ||||
| 88 | +websockets==17.3 | ||||
added
results/env/.python-version
+1 −0
@@ -0,0 +1 @@ | |||||
| 1 | +3.12.15 | ||||
added
results/env/environment.md
+24 −0
@@ -0,0 +1,24 @@ | |||||
| 1 | +# Environment of the master node (M3U96b) used for the SPID extraction and for every Stage D audit | ||||
| 2 | + | ||||
| 3 | +Generated 2026-11-05T14:35:29-05:00 by code/audit/a12_env_lock.sh (read-only). | ||||
| 4 | + | ||||
| 5 | +``` | ||||
| 6 | +hostname: m3u96b | ||||
| 7 | +ProductName: macOS | ||||
| 8 | +ProductVersion: 26.4 | ||||
| 9 | +BuildVersion: 25E5207k | ||||
| 10 | +hw.model: Mac15,14 | ||||
| 11 | +machdep.cpu.brand_string: Apple M3 Ultra | ||||
| 12 | +hw.ncpu: 28 hw.memsize: 96 GB | ||||
| 13 | +python: Python 3.12.15 (home = /Users/simon-pierreboucher/.local/share/uv/python/cpython-3.12-macos-aarch64-none/bin;implementation = CPython;uv = 0.13.4;version_info = 3.12;include-system-site-packages = false;) | ||||
| 14 | +uv: uv 0.13.4 (Homebrew 2026-10-20 aarch64-apple-darwin) | ||||
| 15 | +duckdb (python): 2.0.0 | ||||
| 16 | +pyarrow: 26.0.0 numpy: 2.5.4 pandas: 3.1.0 matplotlib: 3.11.2 httpx: 0.28.1 | ||||
| 17 | +packages in venv: 88 | ||||
| 18 | +git HEAD of ~/UQO_RESEARCH_DB: d700868 (paper cites 2324b58) | ||||
| 19 | +DuckDB files: 3155701760 oct. 28 12:21 | 73500995584 oct. 27 21:34 | ||||
| 20 | +laptop exhibits: python3 -I code/make_tables.py (matplotlib pinned in requirements-exhibits.txt by L6) | ||||
| 21 | +``` | ||||
| 22 | + | ||||
| 23 | +Audit settings: `nice -n 10`, `OMP_NUM_THREADS=4`, DuckDB `SET threads=4`, `SET memory_limit='24GB'`, `read_only=True`, seed 20261105. | ||||
| 24 | +Expected runtimes on this node (Stage D, measured): a01 12 s · a02 217 s · a03 2 s · a04 32 s · a05 see results/focus/manifest.json · a06 < 10 s · a07 see manifest · a08 see manifest · a09 < 10 s · a10 < 10 s. | ||||
added
results/env/requirements.lock
+88 −0
@@ -0,0 +1,88 @@ | |||||
| 1 | +altair==6.3.0 | ||||
| 2 | +annotated-doc==0.0.5 | ||||
| 3 | +annotated-types==0.8.0 | ||||
| 4 | +anyio==4.15.1 | ||||
| 5 | +attrs==26.1.0 | ||||
| 6 | +beautifulsoup4==4.15.0 | ||||
| 7 | +certifi==2026.10.23 | ||||
| 8 | +chardet==7.7.0 | ||||
| 9 | +charset-normalizer==3.5.2 | ||||
| 10 | +click==8.5.0 | ||||
| 11 | +cloudpickle==3.1.2 | ||||
| 12 | +contourpy==1.4.0 | ||||
| 13 | +cycler==0.12.1 | ||||
| 14 | +duckdb==2.0.0 | ||||
| 15 | +fastapi==0.162.0 | ||||
| 16 | +filelock==4.2.4 | ||||
| 17 | +fonttools==4.68.0 | ||||
| 18 | +fsspec==2026.9.0 | ||||
| 19 | +h11==0.16.0 | ||||
| 20 | +hf-xet==1.7.0 | ||||
| 21 | +httpcore==1.0.9 | ||||
| 22 | +httpcore2==2.16.0 | ||||
| 23 | +httpx==0.28.1 | ||||
| 24 | +httpx2==2.16.0 | ||||
| 25 | +huggingface-hub==2.3.0 | ||||
| 26 | +idna==3.20 | ||||
| 27 | +itsdangerous==2.2.0 | ||||
| 28 | +jinja2==3.1.6 | ||||
| 29 | +joblib==1.6.0 | ||||
| 30 | +jsonschema==4.26.0 | ||||
| 31 | +jsonschema-specifications==2025.9.1 | ||||
| 32 | +kiwisolver==1.5.1 | ||||
| 33 | +lxml==6.1.3 | ||||
| 34 | +markdown-it-py==4.2.0 | ||||
| 35 | +markupsafe==3.0.4 | ||||
| 36 | +matplotlib==3.11.2 | ||||
| 37 | +mdurl==0.1.2 | ||||
| 38 | +mpmath==1.3.0 | ||||
| 39 | +narwhals==2.28.0 | ||||
| 40 | +networkx==3.7 | ||||
| 41 | +numpy==2.5.4 | ||||
| 42 | +opentelemetry-api==1.45.1 | ||||
| 43 | +packaging==26.3 | ||||
| 44 | +pandas==3.1.0 | ||||
| 45 | +pillow==13.0.0 | ||||
| 46 | +plotly==7.1.0 | ||||
| 47 | +polars==2.1.0 | ||||
| 48 | +polars-runtime-32==2.1.0 | ||||
| 49 | +protobuf==7.36.2 | ||||
| 50 | +pyarrow==26.0.0 | ||||
| 51 | +pydantic==2.14.1 | ||||
| 52 | +pydantic-core==2.50.1 | ||||
| 53 | +pydeck==0.9.3 | ||||
| 54 | +pygments==2.21.0 | ||||
| 55 | +pyparsing==3.3.3 | ||||
| 56 | +python-dateutil==3.0.0 | ||||
| 57 | +python-dotenv==1.2.4 | ||||
| 58 | +python-multipart==0.0.32 | ||||
| 59 | +pyyaml==6.0.3 | ||||
| 60 | +referencing==0.37.0 | ||||
| 61 | +regex==2026.9.29 | ||||
| 62 | +requests==2.34.2 | ||||
| 63 | +rich==15.0.0 | ||||
| 64 | +rpds-py==2026.9.1 | ||||
| 65 | +safetensors==0.8.0 | ||||
| 66 | +scikit-learn==1.9.1 | ||||
| 67 | +scipy==1.18.1 | ||||
| 68 | +sentence-transformers==6.2.0 | ||||
| 69 | +setuptools==84.2.1 | ||||
| 70 | +shellingham==1.5.4 | ||||
| 71 | +six==1.17.0 | ||||
| 72 | +soupsieve==3.0.4 | ||||
| 73 | +starlette==1.10.0 | ||||
| 74 | +streamlit==1.66.1 | ||||
| 75 | +sympy==1.14.0 | ||||
| 76 | +threadpoolctl==3.7.0 | ||||
| 77 | +tokenizers==0.23.3 | ||||
| 78 | +torch==2.14.1 | ||||
| 79 | +tqdm==4.70.1 | ||||
| 80 | +transformers==5.21.0 | ||||
| 81 | +truststore==0.10.5 | ||||
| 82 | +typer==0.27.3 | ||||
| 83 | +typing-extensions==4.16.0 | ||||
| 84 | +typing-inspection==0.4.4 | ||||
| 85 | +tzdata==2026.5 | ||||
| 86 | +urllib3==2.8.0 | ||||
| 87 | +uvicorn==0.54.0 | ||||
| 88 | +websockets==17.3 | ||||