Own the thread ceiling where the bindings are built

The cap was declared in the CLI while the constraint belongs to the
seeder's statements, and the number appeared in three places. That split
is the mechanism behind the last regression: a change to a statement in
the library silently invalidated a bound stated in the CLI, and the
mismatch only surfaced at the maximum — after the target was emptied.

Move it to `MAX_SEED_THREAD_LIMIT` beside the statements that have to
satisfy it, have the flag derive its bound from there, and check it in
`seedDevDatabase` before anything is opened so a caller bypassing the
flag fails while the target is still intact.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
d3ee18cd2cTheo Browne committed on 7/27/2026, 3:38:49 AMparent33e4c76
3 files changedLine totals unavailable