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.

{
public:
    RPCHelpMan(std::string name, std::string description, std::vector<RPCArg> args, RPCResults results, RPCExamples examples);
    using RPCMethodImpl = std::function<UniValue(const RPCHelpMan&, const JSONRPCRequest&)>;
    RPCHelpMan(std::string name, std::string description, std::vector<RPCArg> args, RPCResults results, RPCExamples examples, RPCMethodImpl fun);
    UniValue HandleRequest(const JSONRPCRequest& request) const;
    std::string ToString() const;
    
    UniValue GetArgMap() const;
    
    bool IsValidNumArgs(size_t num_args) const;
    std::vector<std::string> GetArgNames() const;
    const std::string m_name;
private:
    const RPCMethodImpl m_fun;
    const std::string m_description;
    const std::vector<RPCArg> m_args;
    const RPCResults m_results;
    const RPCExamples m_examples;
};
#endif