Pure helper functions for the metadata resolver. These
have no runtime dependency on any aggregator module outside the
metadata/ bounded context, so they live as a leaf module under
src/aggregator/metadata/. The resolveArticleMetadata orchestrator
itself stays in src/aggregator/article-metadata.ts (the barrel)
because it needs resolveLocalizedBriefHighlight from
editorial-brief-resolver.ts, which is an upward-pointing import
forbidden by the metadata/ leaf-module rule (see
test/unit/cross-context-imports.test.js).
Description
Pure helper functions for the metadata resolver. These have no runtime dependency on any aggregator module outside the
metadata/bounded context, so they live as a leaf module undersrc/aggregator/metadata/. TheresolveArticleMetadataorchestrator itself stays insrc/aggregator/article-metadata.ts(the barrel) because it needsresolveLocalizedBriefHighlightfromeditorial-brief-resolver.ts, which is an upward-pointing import forbidden by themetadata/leaf-module rule (seetest/unit/cross-context-imports.test.js).