feat: #3612537 Translate and strictly negotiate /related/ resources

Fork getRelated() so related resources are translated (through the swapped access checker) and negotiated strictly, mirroring individual/collection reads: langCode / accepted Accept-Language selects the target translation; a to-one target with no matching translation is a strict miss (404 for langCode, 406 for Accept-Language, advertising the target's available translations); a to-many collection excludes non-matching targets; the response declares language cache variance. /relationships/ is unaffected (identifiers only). Marked UPSTREAM(core) + DIVERGENCE(core).

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Closes #3612537

Merge request reports

Loading