fix(ci): repair the OpenCode 2 installed-package smoke - #1202
Merged
Conversation
The smoke's wait budgets were sized on a warm macOS dev box (5s to a healthy server, 20s to plugin activation). On a cold Linux runner OpenCode 2 needs longer to boot and has to install the packed plugin plus its whole dependency closure through the fixture's throwaway registry first, so the job has failed on every run since it was introduced. Measured, same opencode2 build and the same packed tarball: macOS, warm caches: healthy 0.8s, plugin activated 6.3s linux/amd64 container: healthy 8.2s, plugin activated 45.3s Raise the budgets to 120s and 300s (overridable via PLANNOTATOR_SMOKE_HEALTH_TIMEOUT_MS / PLANNOTATOR_SMOKE_PLUGIN_TIMEOUT_MS) and give the job a 25 minute backstop. The assertion is untouched: the smoke still requires the plugin registry to report the plannotator plugin. Also make a failure legible and prompt. Each poll gets a per-request timeout so one wedged request cannot swallow the budget, waits report progress, failures carry the elapsed time and the last HTTP status/body, and teardown escalates to SIGKILL and force-closes the registry. The CI failure previously burned five minutes in teardown before printing anything.
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The
OpenCode 2 installed packagejob has never passed since #1194 introduced it. It was born red on the merge commit and has failed on every run since.Root cause. The smoke fixture allowed 5s for
/api/healthand 20s for the plugin to appear in/api/plugin. Those numbers fit a warm macOS dev box. They do not fit a cold Linux runner, where OpenCode 2 boots slower and has to install the packed plugin plus its whole dependency closure through the fixture throwaway registry before the plugin registers. The old fixture also had no per-request timeout, so it sat on a single health request that the server accepted but did not answer, which is where the five minute wall clock came from.Measured with the same
opencode2build and the same packed tarball:Fix. Budgets raised to 120s and 300s, overridable via
PLANNOTATOR_SMOKE_HEALTH_TIMEOUT_MS/PLANNOTATOR_SMOKE_PLUGIN_TIMEOUT_MS, plus a 25 minute job timeout as the backstop against a real hang. The assertion is unchanged: the smoke still requires the plugin registry to reportplannotator. Verified by repacking the tarball with a mutated plugin id, which still fails.Failures are legible now: per-request timeouts, progress lines while waiting, elapsed time and the last HTTP status/body in the error, and a teardown that escalates to SIGKILL.
The job is green on this PR. Do not auto-merge.