Skip to content

Sync public API spec with zuuul main and regenerate - #485

Draft
f-wright wants to merge 1 commit into
mainfrom
francine/sync-public-api-spec
Draft

f-wright wants to merge 1 commit into
mainfrom
francine/sync-public-api-spec

Conversation

@f-wright

Copy link
Copy Markdown
Member

What

spec/public-api.yaml had drifted several commits behind zuuul's reef/public/static/public-api.yaml. This syncs it to an exact copy of zuuul main and regenerates via make generate.

Deliberately excludes the in-flight POST /v1/synthetic-images work (zuuul francine/mirage-vce-to-janzu-routing) — this is a catch-up sync only.

Why it drifted

The SDK's spec was never a clean copy of any upstream revision. Recent SDK PRs (#442, #445, #468) hand-added just the schemas they needed instead of re-copying the file — you can see it in the diff, where VlmVerification sits at the end of the file rather than in alphabetical position. So the gap accumulated quietly, including doc-only text from commits that were otherwise "synced."

zuuul's auto-update-public-api.yaml does fail any PR that changes the spec, warning "be prepared to update the SDK" — but nothing verifies the SDK actually got updated, so #6399, #6400 and #6729 all shipped without it.

What this picks up

zuuul PR Change
#6729 Drop expires_at from token create → ApiTokenRequestApiTokenCreationInputRequest
#6399 Durable ONNX pipeline builds → /v1/edge/gll-pipeline/, /v1/edge/model-info/, GLLPipelineInfo, GLLModelInfo, StaleFromStatusEnum; renames StatusEnumDetectorStatusEnum
#6400 Durable TensorRT engine builds → /v1/edge/gll-engine/, GLLEngineInfo, GLLEngineInfoRequest, Status638Enum
#6768 Priming-group id description on detector creation
#6519, #6590, #6652 Doc-only text earlier partial syncs missed

Hand-written code touched

The two renames hit live imports, so src/ is updated to match. Both are pure renames:

  • client.pyStatusEnumDetectorStatusEnum, same ON/OFF values
  • token_manager.pyApiTokenRequestApiTokenCreationInputRequest. The call site already omits expires_at on purpose ("so the server applies the identity's token lifetime policy"), so dropping the field is a no-op here.

Me and Group also appear as new files under generated/. They were already in the spec as of #468, but the regenerated client was never committed alongside it.

Testing

  • All groundlight.* modules import cleanly; new EdgeApi operations and Me resolve
  • ruff check src passes; pylint src 9.85/10 and mypy src show only pre-existing findings in files this PR doesn't touch
  • ⚠️ The pytest suite was not run. test/conftest.py constructs a live Groundlight() in pytest_configure, so collection fails without a GROUNDLIGHT_API_TOKEN, which I don't have in this environment. Needs make test against a real token before merge — the token-rotation tests in particular exercise the ApiTokenCreationInputRequest change.

Follow-up, not addressed here

generated/ carries a pile of pre-existing orphan files no longer in the generator's FILES manifest (~15 models, ~100 tests), now including status_enum.py and api_token_request.py. I left them alone to keep this diff to the sync — note detector_request.py (itself an orphan) still imports StatusEnum, so a cleanup should remove them together.

🤖 Generated with Claude Code

The SDK's spec/public-api.yaml had drifted several commits behind zuuul's
reef/public/static/public-api.yaml. Recent SDK PRs hand-added just the
schemas they needed rather than re-copying the spec, so the file was never
a clean copy of any upstream revision and the gap accumulated silently.

This syncs spec/public-api.yaml to an exact copy of zuuul main and
regenerates. No functional SDK changes beyond what the spec dictates.

Picked up from zuuul:
  - #6729 drop expires_at from token create: ApiTokenRequest is now
    ApiTokenCreationInputRequest, without the expires_at field
  - #6399 durable ONNX pipeline builds: /v1/edge/gll-pipeline and
    /v1/edge/model-info, plus GLLPipelineInfo and GLLModelInfo. Also
    renames StatusEnum to DetectorStatusEnum and adds StaleFromStatusEnum
  - #6400 durable TensorRT engine builds: /v1/edge/gll-engine, plus
    GLLEngineInfo, GLLEngineInfoRequest and Status638Enum
  - #6768 priming-group id description on detector creation
  - doc-only text from #6519, #6590 and #6652 that earlier partial syncs
    had missed

The two renames touch hand-written code, so client.py and token_manager.py
are updated to match. Both are pure renames: DetectorStatusEnum carries the
same ON/OFF values as StatusEnum, and the token create call site already
omitted expires_at deliberately, so dropping the field changes nothing.

Me and Group models are also newly committed under generated/. They were
already in the spec as of #468 but the regenerated client was never checked
in alongside it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant