fix(coreapi): loosen display-only Repo read enums for forward-compat
Commit

repo list / repo-get decode the Repo schema through the ogen client,
whose generated response decoder calls a strict Validate() on every enum
field. Repo.state, Repo.visibility, and Repo.objectFormat were modeled
as enums, so the day the control plane adds a new value (a new lifecycle
state, a new visibility) the entire list/get request would fail to decode
with validate: invalid value: ... — even though the CLI only displays these
fields and never branches on them.
Add a second spec/normalize.go transform (loosenReadModelEnums, allowlist
readModelEnumFields) that drops the enum constraint from those response
read-model fields before ogen runs. ogen then emits plain strings with no
Validate(), so unknown values decode and print verbatim. Only response read
models are loosened; request-body enums (e.g. SetRepoVisibilityInputBody)
stay strict so we still reject a bad value we are about to send.
Regenerated the client and locked the behavior in with
TestListProjectRepos_UnknownEnumValuesPassThrough. Tracked in UPSTREAM.md.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com Entire-Checkpoint: 01KWY2E2S86JVHXWF8EMVRES5R