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

main

Commit

Soph2mo ago

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

Checkpoints

Debug CLI Core and Cell API Endpoints

Claude CodeOpus 4.8[1m]
View session
Checkpoint 1