A block theme needs style.css, templates/index.html and nothing else, which makes the minimum viable theme three files.
theme/
style.css /* Theme Name: Minimal */
theme.json { "version": 2 }
templates/
index.html <!-- wp:post-content /-->
# and WordPress fills in the rest: every template type
# falls back to index.html, and the site editor offers to
# create the others from it.
The fallback to index.html is total rather than partial, so a theme with only that file renders every page type through it — which is genuinely usable for a simple site and is a much lower floor than a classic theme ever had. It also means a missing template is invisible rather than an error, and a page rendering the wrong layout is the symptom.