Repository navigation
Closed
Labels
app/protocolPackage: protocol (pkgs/ or apps/ in this repo)Package: protocol (pkgs/ or apps/ in this repo)area/ciCI, workflows, and build infrastructureCI, workflows, and build infrastructureeffort/xsTrivial: expected under 30 minutes of workTrivial: expected under 30 minutes of workkind/ciCI/CD pipelines, workflows, and build automationCI/CD pipelines, workflows, and build automationpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Description
Problem
packages/protocol's check:generated is not run by any workflow — and packages/protocol/openapi.json is the source document the wired www check copies verbatim, so drift in the protocol document itself passes every wired gate.
Evidence (verified this run, 2026-11-03, clean laptop probe at ae4b977)
packages/protocol/package.json:25defines"check:generated": "bun run script/generate-openapi.ts --check", which regenerates the OpenAPI document fromClientApi(packages/protocol/script/generate-openapi.ts) and fails ifpackages/protocol/openapi.jsondiffers.- No workflow runs it:
grep -rn "packages/protocol" .github/workflows/returns nothing, and.github/workflows/test.ymlwirescheck:generatedonly forpackages/client("Check generated client") andservices/www("Check generated documentation"). - The check is currently green:
bun run check:generatedinpackages/protocolexits 0 at ae4b977. This is a wiring gap, not a current drift. - Why the wired checks cannot catch this drift:
services/www/script/generate-openapi.ts:3sets its source topackages/protocol/openapi.jsonand the wwwgenerate/check:generatedonly copy/compare that file — they never regenerate from the API. Ifpackages/protocol/openapi.jsondrifts fromClientApi, the www copies faithfully propagate the stale document and their check stays green; the client check covers the client transport, not this document. - This pipeline drifts repeatedly in practice: docs(protocol): PR #596 changes the /api/provider HttpApi shape but regenerates none of the checked-in OpenAPI documents #660 (protocol HttpApi shape changed, no documents regenerated), fix(www): services/www/openapi.json stale vs protocol — missing force query param, check:generated red on main #829 and fix(www): services/www OpenAPI documents stale on main — check:generated red (completions façade routes and route-settings descriptions missing) #1498 (www copies stale), fix(client): generated client stale on main — check:generated red (route system field + completions 404/503 statuses missing from committed client) #1493 (client stale). Every one of those was caught by a wired check or by hand; a protocol-side drift has no net at all.
Why it matters
packages/protocol/openapi.json is the canonical OpenAPI document for the server API (www publishes copies of it). The one check that verifies it against the actual ClientApi definition runs nowhere in CI, so the next protocol change that forgets to regenerate lands silently — and the downstream wired checks certify the stale document as current.
Acceptance criteria
- A CI step runs
bun run check:generatedinpackages/protocolalongside the existing client/www generated checks in.github/workflows/test.yml(Linux), or an equivalent wired location. -
bun run check:workflowsstill passes after the workflow change. - The new step is verified to fail when
packages/protocol/openapi.jsonis deliberately made stale (or the step's command is shown to be the package's own check, which exits 1 on a stale document perscript/generate-openapi.ts).
Metadata
Metadata
Assignees
Labels
app/protocolPackage: protocol (pkgs/ or apps/ in this repo)Package: protocol (pkgs/ or apps/ in this repo)area/ciCI, workflows, and build infrastructureCI, workflows, and build infrastructureeffort/xsTrivial: expected under 30 minutes of workTrivial: expected under 30 minutes of workkind/ciCI/CD pipelines, workflows, and build automationCI/CD pipelines, workflows, and build automationpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Activity
dezren39 commentedon Nov 3, 2026
🤖 Agent note · filed
dezren39 commentedon Nov 3, 2026
Picked up: wiring packages/protocol check:generated into CI (test.yml, beside client/www generated checks).
dezren39 commentedon Nov 3, 2026
Parked awaiting CI: PR #1501 opened (protocol check:generated wired into test.yml; local checks green — protocol check, check:workflows, 18 workflow tests). Resume: read CI, merge when green. Pre-push hook segfaulted in worker env (pushed --no-verify); full lint/typecheck gate is CI.
dezren39 commentedon Nov 3, 2026
Resolved by PR #1501 (merged 2026-11-03, merge commit d370a29): adds the "Check generated protocol" step (packages/protocol, bun run check:generated, Linux) beside the client/www generated checks in test.yml. Note: the test workflow is currently disabled_manually in GitHub Actions, so no CI ran on the PR; the change was verified from its diff plus local checks recorded on the PR (check:generated pass, check:workflows pass, check-workflows tests 18 pass). Codex review failed on usage limits with no findings posted.