
AskGWINnett answers from facts I collected — school board members, millage rates, first day of school. I checked those facts when I wrote them down. Then a board member resigns, a rate changes, August rolls over, and the app keeps saying last year's truth like nothing happened.
Tests don't catch that. Tests check that the code still runs. They don't check that Jane Smith is still on the board.
That's the gap stilltrue fills. It's an npm package: you point it at the official pages your facts came from, give it the strings you believe, and once a week it re-reads those pages. If a fact vanished, the build fails. If the site is just down, it warns and doesn't cry wolf — an unreachable page isn't the same as a lie.
Three outcomes, on purpose: pass, rot, error. Rot fails the run. Errors don't. An alarm that fires on outages gets ignored.
There's no AI in the check itself. Fetch, strip HTML, look for the strings. Same way every time, no API key, no cost. AI can help you extract facts if you want. It never decides whether they're still true.
I built it because AskGWINnett needed it. Then it was general enough to publish.
npmjs.com/package/stilltrue · github.com/sg-bfoster/stilltrue

