carlos / todomvc-bakeoff Public
LIVE https://todo-go-rastrillo.bfj.oncarlos.com 1364616
Checks (2026-10-23, after the review round)
make test: vet, gofmt, Go tests under Rastrillo's budgets, andrastrillo migration check, all green.make perf(first build): every GET screen under 1 ms median locally, cold boot 64 ms.- Shared suite locally on
dist/app: 67 passed, 3 skipped (the suite's own skips: the visual check and blur/Escape editing with JS off). scripts/boot-check.sh dist/app-linux-arm64:/healthzand/api/version200, clean exit on SIGTERM.make deploy: swapped on the live host;/api/versionreports1364616.- Shared suite against the live host: 67 passed, 3 skipped.
Review findings fixed
- Origin check.
origin.gono longer delegates tocsrf.Protect. A POST whoseOriginisn't exactly the app's origin gets 403, whateverSec-Fetch-Sitesays. A new test sends a foreignOriginwithSec-Fetch-Site: same-originand withnone, and expects 403. Also checked by hand on the live host: 403. - Unread forms. Every
/todospost is capped at 1 MiB and parsed before a handler runs, asform.Parse's docs recommend. Too big gets 413, malformed gets 400, and nothing changes. A new test posts an edit over 2 MiB and checks that the item survives. - Typing during an add.
app.jsclears.new-todowhen the add is sent. After the response, the swap keeps whatever is in the field (and the caret). Checked in Chromium with the add response delayed by 800 ms: text typed meanwhile was still there afterwards. - Loopback only.
main.gorefuses any TCP address whose host isn't127.0.0.1(0.0.0.0,:8080,[::],localhostand so on) and exits with an error. Unit-tested, and checked by hand with--listen 0.0.0.0:18432.
Review findings not fixed
None.
Notes
- Rastrillo's local flag is
--addr.main.gotranslates the bakeoff's--listento it beforerastrillo.Resolve. carlos.Host()isn't in v0.28.0 (it's on Rastrillo's main branch), somain.goreadsCARLOS_HOSTdirectly.