No. It says it must be checked through “some unspecified means”.
This unspecified means in practice always means the LNURL-pay server.
Still wrapping my head around the description_hash affair with Core Lightning (see https://twitter.com/callebtc/status/1635216854577991681 by #[0] ), but as much as I understand the devs concerns, it seems to me that bolt11 makes it quite clear that it is the lightning implementation's responsibility to check that the description and its hash match.
https://github.com/lightning/bolts/blob/master/11-payment-encoding.md?plain=1#L215
No. It says it must be checked through “some unspecified means”.
This unspecified means in practice always means the LNURL-pay server.
What I read is that the writer must make the description available through unspecified means, while the reader must ensure description and description_hash match. That's two distinct things.
The problem here is to know how the reader can get knowledge of the description. According to LUD06, that's the job of the LN wallet (https://github.com/lnurl/luds/blob/luds/06.md?plain=1#L108). Per this two pieces of specification, a LN wallet should pass the LNURL metadata as description to the underlying Lightning node when trying to pay the invoice.
Not saying it's good or not, just pointing out that this is the direct consequence of how the specifications are phrased.