Repository navigation
Conversation
The role startup check rejected only findings with !verdict.ok. The shared stability watch omits a replica it could not inspect, and it accepts an exit-0 "completed" process. So a rollout could pass, and retire its predecessor, without seeing the replacement run. runtimeRoleRolloutDeps.verify now requires exactly one finding per requested container ID, with verdict.status "stable". A completed replica fails with a long-running-role message. A missing or duplicate finding fails as unverified. Matching is by container ID, so duplicate findings cannot hide a missing replica. A conclusive failure is reported first because its detail carries the exit code and log tail. The shared checker is unchanged. A transient inspection error now fails the role rollout instead of passing it. Refs oblien#1255
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.
Summary
The role startup check now requires exactly one
stablestability finding for each role container it started. A missing, duplicate orcompletedfinding fails the rollout, so the predecessor is kept.Motivation
The docs say "Every role container must stay up through the stabilization window".
runtimeRoleRolloutDeps.verifychecked only!verdict.ok, which let two cases through:verifyDeployedContainersreturns no finding for a replica it could not inspect, and none at all when sampling is unavailable. Without anexechealth command, the rollout passed and could retire the predecessor without seeing its replacement run.completed. The shared verdict treats an exit-0 process asokwhen its restart policy leaves it stopped. Supported single-app role deployments use restart policyalways, so this is an adapter-level case. A role is a long-running process, so it must not count as started.Related issue
Refs #1255 (item 1).
Changes
packages/platform
src/engine/modules/deployments/role-runtime.ts:verifygroups findings bytarget.containerId.stablefails first, because its detail carries the exit code and log tail. Acompletedfinding gets its own message:Role "worker" replica 2 exited with code 0 during the startup check. A role is a long-running process, so it must keep running.Could not verify that role "worker" replica 1 started: the startup check returned no result for container …exechealth commands still run only after every replica passes.The shared
verifyDeployedContainersand the adapter'scompletedsemantics are unchanged. Other callers keep their current behaviour.apps/api
test/modules/deployments/role-runtime.test.ts:findinghelper now takes a container ID and a status.completedfails, a missing finding fails, a duplicate finding fails, a conclusive failure is reported before an unverified replica, andexechealth does not run when a replica is unverified.verifyDeployedContainers:sampleStabilitythrows, and the rollout now fails instead of passing.Verification
Mutation checks. Each mutant fails at least one test:
!verdict.ok(the code before this change)findings.length === containers.length) instead of by container IDcompletedas startedbun format: both changed files are Prettier-clean.Behaviour change
A transient inspection error during the stabilization window now fails the role rollout. Before, it passed with a warning. The rollout's existing unwind runs, and the previous release keeps its role containers.
Checklist