Narrow the manifests-list projection behind a dedicated row type
ListContainerManifests projects the whole container_manifests row, annotations included, and the manifests-list resource does not serialize annotations (S17 §Resources, 8 fields). At the S12 cap an annotations payload is roughly 520 KB, so a max-size page reads about 53 MB to render about 30 KB, and database/sql clones the JSONB into the scan destination on the way.
The projection stayed whole in chore(datastore): add container manifest reads ... (!1131 - merged) • Hayley Swimelar • 19.3 because a partially populated ContainerManifest erases the documented difference between absent annotations and an empty object (method doc in internal/datastore/container_manifest.go at commit 408d821c). Dropping the column safely needs a list row type of its own with its own scanner. Do it alongside the jet conversion of this file's statements, so the table's row shapes churn once rather than twice.
Related to Convert container_manifest.go queries to the je... (#430 - closed) • Hayley Swimelar