So Bitcoin core has no official specs written down, if someone wants to rebuild it from scratch, let's say in a different language, how do you do it?
Discussion
Bitcoin has "official" specs: the C++ source code of Bitcoin Core.
That's the thing you need to match in reality. And getting that bug-for-bug compatible is a nightmare that no one has ever perfectly achieved.
Yeah, that's a bit of a problem. And reading C++ sucks.
Reading English sucks even more for consensus critical protocols. It's extremely difficult to be sure you've interpreted an English specification correctly; code specifications can at least be executed to check if your understanding is correct.
It seems like an unfortunate point of centralization that Bitcoin's "official" spec is maintained by a single organization in a language that makes it difficult to run alternative implementations while ensuring consensus.
Computer science is what makes that difficult. Getting bit-for-bit compatibility is extraordinarily difficult.
It is easier to try to reimplement a specification written in code than it is to reimplement a specification written in English. The former can at least be tested by actually running the code. The latter will always be unclear.