fix(recovery): require exact progress and preserve blocked stalled work - #415
Open
rldyourmnd wants to merge 1 commit into
Open
fix(recovery): require exact progress and preserve blocked stalled work#415rldyourmnd wants to merge 1 commit into
rldyourmnd wants to merge 1 commit into
Conversation
Separate restart eligibility from stalled identity observation. Reject incomplete progress partitions, prevent interrupted attempts from replaying restarts using stale authorization, and retain blocked incidents as unhealthy. Add focused regressions and a coordinated rollout/evidence contract.
Contributor
Author
Verification update: full repository CI passedHead: CI run 34066329613 completed successfully. The job list and actual Race log were inspected:
This supersedes the initial PR description's pending full-toolchain verification. The initial offline limitation remains an accurate description of local execution, not the current GitHub CI status. No merge, runtime installation, paired-adapter deployment or fleet latency acceptance was performed. These checks ran on GitHub-hosted workers and do not establish private-fleet production health. |
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.
Scope
Implements the portable scheduler-recovery portion of the fleet latency/stability audit. This is a code change with regression tests, not a declaration of deployed recovery or throughput acceptance.
recovery_blockersprevent a manager-wide restart.unhealthyfor blocked stalled work instead of confusing action suppression with health.progressedandremainingto form a complete, disjoint partition of the original attempt identities. Reject empty, omitted, foreign, duplicate and ambiguous identities.docs/runbooks/recovery-evidence-contract.md.Verification actually executed
Nine new top-level Go tests, including eleven partition subcases, passed with the race detector.
go vetpassed for the same focused source set.The offline environment has Go 1.23.2 and no network dependency resolution. The focused harness compiles the exact changed production files and new tests with only the unchanged
Heartbeattype extracted fromstore.go. It does not executeFileStore, the full repository dependency graph, or the pinned Go toolchain. Full package/repository CI remains required; no live systemd, Incus or GitHub delivery tests were executed.Deployment ordering
Install this recovery binary before any deployment adapter emitting
recovery_blockers; old binaries correctly reject that unknown field. Pause only the recovery timer during the paired binary/adapter/config replacement. Do not stop running workers. Preserve recovery history and take checkpoints.The matching deployment adapter must provide positive per-identity progression, an attempt-bound immutable checkpoint, and a last-moment restart eligibility check. That check is not an atomic admission fence; admission-fenced or scale-set-local repair remains separate work.
Remaining acceptance
No merge, deployment, fleet restart, runner deletion, or runtime-identity record update is included.