This repository was archived by the owner on Sep 7, 2026. It is now read-only.
Repository navigation
ci: add endpoint-audit workflow (report-only) on main - #227
Merged
Merged
Conversation
Ports the endpoint audit from vasco/endpoint-audit so it runs on PRs to main. It boots the pinned agent-server image, diffs the client's HTTP surface against the live OpenAPI spec, labels each off-contract call by the backend that serves it (cloud vs no known backend), posts the report as a self-updating PR comment, and uploads the .audit/ artifact. Report-only: gate.mismatch=false, so the check never fails CI. The client still legitimately calls cloud/enterprise endpoints that are not on the agent-server (cloud-proxy, meta-profiles, shared-events), which a strict gate would flag; running report-only surfaces drift without blocking merges. Flip gate.mismatch=true to make it a blocking gate once the client is reconciled to agent-server-only calls. Files: - .github/workflows/endpoint-audit.yml - scripts/endpoint-audit.mjs - endpoint-audit.config.json - package.json: config.agentServerImage pin + audit:endpoints script
Contributor
Endpoint audit❌ 12 off-contract call(s) — not on the agent-server · classifiers: cloud
❌ Not on agent-server (gated, 12)⛔ (no known backend) — served by no backend we can see (7)
|
enyst
approved these changes
Jun 23, 2026
- on: push only (drop pull_request trigger) per request. - prettier --write scripts/endpoint-audit.mjs to satisfy format:check (the test job's 'Check formatting' step was failing on the unformatted copied file).
Contributor
|
🚀 Released in v1.27.0. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Ports the endpoint audit from
vasco/endpoint-audittomainso it runs on PRs (it currently lives only on that feature branch, which is why it doesn't run on #224/#225). Adds:.github/workflows/endpoint-audit.yml— boots the pinned agent-server image, runs the audit, comments the report on the PR, uploads the.audit/artifactscripts/endpoint-audit.mjs— diffs the client's HTTP surface against the agent-server's live OpenAPI specendpoint-audit.config.json— config (gate spec + cloud classify spec)package.json—config.agentServerImagepin (ghcr.io/openhands/agent-server:1.29.0-python) +audit:endpointsscriptReport-only (not blocking)
This lands with
gate.mismatch: false— the workflow runs, posts a drift report as a self-updating PR comment, and uploads the artifact, but never fails CI.Why: the audit is a strict check that flags any client call not on the agent-server. The client still legitimately calls cloud/enterprise endpoints that are not (and won't be) on the agent-server —
cloud-proxy, the 5meta-profiles, and 2shared-events. A blocking gate would therefore be red onmainand every PR for reasons unrelated to the PR. (Confirmed: the gate fails on every run on the feature branches today.)Running report-only surfaces the drift on every PR without blocking merges. To make it a blocking gate later — once the client is reconciled to agent-server-only calls (or cloud endpoints are split into a separate client) — flip
gate.mismatch: true.Notes
npm ciis unaffected; nosrc/changes.