Download
Download SWELL
SWELL's desk-stage work in one zip: the audit, the decisions, the fact checks, the simulations and their outputs. Free, no sign-up.
Inside: audit, decisions, errata, invariants, risks, the fact checks (pm/VERIFIED_FACTS.md), orders, ideas and the BOM (most lines not yet priced) with each part's safety rating (pm/); design reports and figures, including the blind-test results and the prior-art search (docs/); simulation code, the separately built test gel and the swell-ruler tool with its tests (software/); simulated data (data/sim/); toolchain scripts (tools/); a README with what changed, the licence map and the licence texts; SAFETY.md with the hazards of each hazardous reagent in its table, cited to the supplier's safety data sheet, and their handling (lab only).
Not inside: the original brief. It planned the gel chemistry in a home wet lab, a plan withdrawn on 9 October 2026; the chemistry belongs only in a laboratory with a fume hood (see Safety). A few decisions and rows are also left out of this copy; the README lists each one and says why.
SHA-256 of swell-g0-2026-10-12.zip:
6d31f96a739dd1f8cb6fc2d95878db7a64c5b8c2ce3a3a0c587e91065872a95f
Check the file, rebuild the sims
Compare the output of one of these with the hash above:
sha256sum swell-g0-2026-10-12.zip # Linux shasum -a 256 swell-g0-2026-10-12.zip # macOS Get-FileHash swell-g0-2026-10-12.zip # Windows PowerShell
The simulations need Python 3.12 with numpy, scipy, matplotlib and pytest, plus MicroscPSF-Py for software/sim/optics_v1.py. Each script rewrites its own report in docs/design/, so you can diff your run against ours. The README lists the commands.
Rerun on our machine, with Python 3.12 and the numpy, scipy and matplotlib versions pinned in software/requirements.lock, the separately built test gel (software/redteam/s3_gen.py) came out byte for byte the same as our original run once decompressed; the .json.gz files themselves differed only in the time stamped in their gzip header. Since 2026-10-10 the generator writes that header with no time stamp, and two more runs on our machine gave byte-identical .json.gz files. We have not tried another computer or other versions of Python, numpy or scipy; there the gel may come out different. To compare yours, print the SHA-256 of each decompressed file:
python -c "import gzip,hashlib,sys;print(hashlib.sha256(gzip.open(sys.argv[1]).read()).hexdigest())" data/sim/S3/obs.json.gz python -c "import gzip,hashlib,sys;print(hashlib.sha256(gzip.open(sys.argv[1]).read()).hexdigest())" data/sim/S3/truth.json.gz
Ours: obs.json (6,775,475 bytes) b233f0e5c5ea205ef078b14be5b2c6e3f74b16bc8d66a0cf5a410fe0bf186801; truth.json (420,585 bytes) c909bd970a1261edc80488320fd3761fe66cab822ec40a9cf0d18590dd963d08
Personal details of the owner were removed from the private project files before release. Each removal is marked [personal detail removed], and none is part of the SWELL design.