0x34aa3f35…fdf3sent to0xe731dfad…4232·#25,937,514·0x8a9dcb24…54fb4d
CELL built at home: blood-authorized, ATECC608B-signed mainnet txBuilt from the repo on a Raspberry Pi 3B+: 3D-printed optics (repo prints plus my own dome, cradle and cartridge trays for the optical head), AS7341 spectrometer, 650 nm laser + Pi camera for speckle, white + IR LEDs, ST7789 screen, 4 GPIO buttons, ATECC608B secure element with config and data zones locked, seed wrapped by the chip, PIN attempts counted on silicon. Air-gapped: request comes in as a paper QR through a scanner, the signed tx leaves as a QR on the screen, read by an iPad companion page and relayed to my own node.
BLOOD-AUTHORISED SIGNATURE, MAINNET (2026-09-08): a fresh fingertip drop passed all 6 gates live (G1 0.32, G2 2.33, G3 0.68, G4 0.90 shape / 0.78 green, G5 0.61, G6 settled 0.39 / fall 0.24 / trend -1.00). The chip signed nonce 4.
tx 0x701a15dba34d598ee329cb19ba0549fe64ed9230bfb7d065cd87e18272ca3974
block 25931095, 0.00042069 ETH, 0x7a08034C1ADe7Ac7f4c1a2900b97699a05C88CB2 -> atg.eth
Five pokes total: 1 and 2 rejected (drop smaller than the sensor field), 3 and 4 were real clots refused by the stock G6 terms, 5 accepted.
Full 20 min video of the run, blood included: https://x.com/austingriffith/status/2097231722094191031
PULSE TIER: NOT DONE, so this is a partial claim. In the dome the AS7341 sits 16 mm from the finger and PPG through it is noise (5 of 7 touch gates pass on noise, no real beat). A MAX30102 module is ordered to stand in as the TouchSensor; pulse clip to follow.
WHAT I HAD TO CHANGE
- se_atecc.py / provision.py: provisioning must run with the data zone still open (added provisioning=True), and an unwritten baseline slot (0xFFFFFFFF) has to count as 0 or every unlock fails forever after lock-data. Working order: write secrets -> lock-data -> provision.
- Optics: the dome bore gives a ~10.7 mm field at the tray; a fingertip drop covers 30 to 65 % of it, so every colour ratio scales with drop size. Added a 2.5 mm aperture insert. Stop 1 white reference = blank tray fully in (2.9 % spread across trays).
- Thresholds retuned (thresholds_poke3.json), G4 gained a green-index path, G6 rewritten (rank to the floor, fall >= 0.03, settled <= 0.80). Every fake on disk (blank, milk, ketchup, glue, glue+dye) still rejects on 2 or more gates.
- Clotting: on this well "arrested <= 0.25 in 600 s" never happens for a fingertip drop. It plateaus around 0.4 to 0.6 and keeps falling for 30+ min.
- AS7341 driver: the adafruit SMUX-enable wait spins forever after a bus glitch. Added a timeout and a one-call read. One process on the I2C bus at a time.
- read_bore_reference integrates at 281 ms while read_ppg samples at 2.8 ms, so T1 (fraction of bore) is ~100x off as shipped.
- The signed QR is shown ~1 s in the repo; hold it until a button press. Also atg.eth is EIP-7702 delegated, so 21000 gas reverts; use eth_estimateGas.
Captures (.json), thresholds and patches available; I will open an issue on the repo with the numbers.https://beige-impossible-dragon-883.mypinata.cloud/ipfs/QmfBtUAC2HzT9Dh7zL8wgDkCHY8cohX5ujGRkh5AbgT7cT