Following the merge of https://github.com/bitcoin/bitcoin/pull/23083, we'll throw a non-fatal error at runtime if the documentation for an RPC is incorrect. This behaviour has found numerous issues over a very short period (of the PR being opened). However, this is not something that we want in production / release builds, instead, we want the ability to have it enabled in the CI and when running tests. A runtime option could be added, which controls this behaviour (disabled by default).

#### Useful skills:

- C++
- Understanding of Bitcoin Core's initialization sequence
- Understanding of Bitcoin Core's RPC interface

#### Want to work on this issue?

For guidance on contributing, please read [CONTRIBUTING.md](https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md) before opening your pull request.

std::optional<ChainstateLoadVerifyError> maybe_verify_error;
            try {
                uiInterface.InitMessage(_("Verifying blocks…").translated);
                auto check_blocks = args.GetIntArg("-checkblocks", DEFAULT_CHECKBLOCKS);
                if (chainman.m_blockman.m_have_pruned && check_blocks > MIN_BLOCKS_TO_KEEP) {
                    LogPrintf("Prune: pruned datadir may not have more than %d blocks; only checking available blocks\n",
                              MIN_BLOCKS_TO_KEEP);
                }
                maybe_verify_error = VerifyLoadedChainstate(chainman,
                                                            fReset,
                                                            fReindexChainState,
                                                            chainparams.GetConsensus(),
                                                            check_blocks,
                                                            args.GetIntArg("-checklevel", DEFAULT_CHECKLEVEL),
                                                            *get__cast<int64_t(*)()>(GetTime));
            } catch (const std::exception& e) {
                LogPrintf("%s\n", e.what());
                maybe_verify_error = ChainstateLoadVerifyError::ERROR_GENERIC_FAILURE;
            }
            if (maybe_verify_error.has_value()) {
                switch (maybe_verify_error.value()) {
                case ChainstateLoadVerifyError::ERROR_BLOCK_FROM_FUTURE:
                    strLoadError = _("The block database contains a block which appears to be from the future. "
                                     "This may be due to your computer's date and time being set incorrectly. "
                                     "Only rebuild the block database if you are sure that your computer's date and time are correct");
                    break;
                case ChainstateLoadVerifyError::ERROR_CORRUPTED_BLOCK_DB:
                    strLoadError = _("Corrupted block database detected");
                    break;
                case ChainstateLoadVerifyError::ERROR_GENERIC_FAILURE: