When you say "from scratch", do you mean that you changed assumeValid to be 0 (instead of defaultAssumeValid) ?
With "from scratch" I meant no blocks have been stored, folders
blocks and
chainstate were empty. I didn't touch or use
assumeValid in my
bitcoin.conf.
With the default assumeValid, it's not fully verifying from scratch, since it only verifies historical scripts and signatures of the last few years. You're trusting the developers' claim that all earlier scripts are valid too.