Start here. This is the direct spoken answer to practice first.
Overview
Metadata is part of the page contract and should agree with the rendered resource, canonical host, and indexability decision.
I set a canonical metadataBase at the root and use static metadata when values do not depend on the route. For a dynamic page, generateMetadata awaits the params, loads the canonical record, and returns a specific title, description, canonical path, and Open Graph values. The page and metadata share the same data function so they cannot describe different resources.