This is heavily promoted in the VC Data Model specification, but the hash information is provided "out of bound" (via human-readable spec text) with the expectation that implementers will download/cache/"install" contexts after verifying the hash from the specification and map the URIs for those contexts explicitly to those "canonical" values.
This is very effective in practice, but lacks a great deal in terms of "helpful plumbing" to make it a regular pattern to follow (i.e. creating, finding, curating hashes in specifications take effort that's not typically exerted by most communities--even where the safety/stability concerns exist).
Consequently, this can be (and should be) promoted as a best practice, but JSON-LD itself lacks the affordances for providing any cache related information (hashes, etc.) for later comparison/confirmation.
This is heavily promoted in the VC Data Model specification, but the hash information is provided "out of bound" (via human-readable spec text) with the expectation that implementers will download/cache/"install" contexts after verifying the hash from the specification and map the URIs for those contexts explicitly to those "canonical" values.
This is very effective in practice, but lacks a great deal in terms of "helpful plumbing" to make it a regular pattern to follow (i.e. creating, finding, curating hashes in specifications take effort that's not typically exerted by most communities--even where the safety/stability concerns exist).
Consequently, this can be (and should be) promoted as a best practice, but JSON-LD itself lacks the affordances for providing any cache related information (hashes, etc.) for later comparison/confirmation.