Proof over vibes: verify my discipline score yourself
Most personal sites are a highlight reel: roles, logos, the projects that worked. They tell you what someone did. They never tell you whether that person actually does the work — on a Tuesday, when no one is watching.
This site is the opposite bet. An AI agent runs my life — it tracks what I plan, what I finish, and what I drop — and every day it computes one number, a discipline score, and publishes it right here. Wins and misses. The number goes down when I slip.
A public scoreboard about discipline only means something if I can’t cheat it. So the interesting part isn’t the number. It’s that I built it so I can’t quietly fudge it — and you don’t have to trust me on that either.
The problem with “trust me”
Here is the obvious objection: it’s my site. On a bad day, what stops me from bumping a 71 back up to a 90?
Nothing — if the data is just a number in a file. So it isn’t just a number in a file.
Every day is sealed into the one before it with a SHA-256 hash chain. Each entry’s hash is computed from the previous day’s hash plus that day’s record:
hash = sha256( previous_hash + { date, planned, done, missed } )
Change any past day — nudge a done from 4 to 6 — and that day’s hash stops matching, which breaks every hash after it. The tampering isn’t hidden. It’s structural.
Don’t trust me — check it
Most people would stop there and call it “tamper-evident.” I don’t think a claim is worth much if you can’t check it. So the raw ledger is public, and there’s a page — /verify — that fetches it and recomputes the entire chain live, in your browser, with the Web Crypto API. Open devtools and read the exact code doing it. Nothing is taken on trust.
It either goes green or it doesn’t.
What this proves, and what it doesn’t
I’ll be straight, because building in public means showing the cracks too. A hash chain I publish proves I didn’t silently edit a single day. It does not stop me from rewriting the whole history at once — I control the data, so a full rewrite would still verify internally. The fix is to anchor each day’s hash somewhere I don’t control, so even a wholesale rewrite is caught against a public timeline. That’s the next thing I’m building, and I’ll show you when it ships.
That honesty is the point. Accountability theater says “trust me.” Real accountability says “here’s exactly what’s proven, here’s what isn’t — go check.”
The boring parts that make it safe
Two decisions hold this together:
- The model never touches the numbers. Facts are computed in plain Python; the LLM only ever words things. A model can’t fake a number it never calculates.
- Nothing private ever leaves. The publisher ships computed counts — never the text of my tasks, never names — and it fails closed: if anything looks off, it publishes nothing rather than something wrong.
Why bother
Most accountability is private, which makes it optional — you can always renegotiate with yourself at 11pm. Putting the score on a public URL with my name on it makes the misses cost something. That’s the whole experiment: take the thing I’d otherwise let slide, and make it impossible to hide.
The number today is on the page. The misses are on the record. Verify it yourself — and if you want to watch this thing evolve, follow the build.