Skip to content

fix(garm): retire excess idle online JIT registrations - #429

Merged
rldyourmnd merged 4 commits into
mainfrom
gds2/lifecycle-20260907
Sep 7, 2026
Merged

fix(garm): retire excess idle online JIT registrations#429
rldyourmnd merged 4 commits into
mainfrom
gds2/lifecycle-20260907

Conversation

@rldyourmnd

@rldyourmnd rldyourmnd commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Excess old online JIT registrations can occupy the fleet while their scale set has no dispatchable demand. GARM .93 adds bounded idle retirement: local age and min-idle eligibility precede remote calls; two observations bind the exact ephemeral runner, explicit REST busy: false, Actions identity and zero scale-set demand. The busy-protected Actions removal path and absent-registration handling precede provider cleanup.

Retirement failures are classified and logged while normal reconciliation continues. Patch 0031 preserves the original consolidation body and the lifetime of its deferred runner locks. Observation state is pruned. The .92 patches remain immutable. The exploratory REST name-based demand fallback is excluded: name uniqueness does not prove an exact job/attempt or authorize a tombstone.

The repository contract also makes ordinary self-CI advisory; Gate remains diagnostic evidence. The native stable-0.8 generator updated the anchor's bundle-lock input digest after that declaration changed.

Verification: all 39 manifest input hashes match; pinned Go 1.26.6 race tests and two independent build caches produced 8f6519500e90ad028c62b7fc3f5c8f2c7784fd82ef653c37c8db9e45afcfa841 (required glibc 2.34). The coordinator independently checked the final binary hash, reviewed the restored lock scope, ran make verify, and completed native projection plan/apply/verify/repeat-check. Idle tests are predicate/fake-client evidence; they do not prove a live Worker/DB/HTTP deployment. AGENTS structure and source consistency checks passed.

Deployment and security boundaries: this PR does not prove recovery of the eight old priority intents and has not deployed .93. A separate coordinator binary-mode govulncheck v1.6.0 scan flagged advisories in four inherited upstream modules; source reachability and dependency remediation are under investigation. No vulnerability-clean runtime claim is made.

GARM v0.2.1-nddev.93 removes undemanded idle ephemeral registrations
through Actions RemoveRunner after two matching observations. REST busy
must be explicit false; omitted busy is unknown. Scale-set statistics
of all zeros are not idle proof. Provider delete stays ordinary GARM
reconcile after absence. The .92 patches are unchanged.

Ordinary merge in this repository does not require a general CI status
check. Gate remains truthful advisory evidence.

Signed-off-by: rldyourmnd <danil@nddev.it.com>
GARM v0.2.1-nddev.93 still retires excess undemanded idle ephemeral JIT
through Actions RemoveRunner after two matching observations. REST busy
must be explicit false. Retirement is now best-effort: local age and
min-idle decide whether any API call happens, a classified warning
cannot block absent-runner consolidation, unseen observation IDs are
pruned, and RemoveRunner 204/404/409/unexpected status are wired
through an injected pending-delete writer. The .92 patches are unchanged.

REST overlay fallback for acknowledged never-started jobs is not in this
derivative. JobAssigned does not bind GitHub job ID or run attempt, so
latest-name uniqueness is not authoritative demand or tombstone evidence.

Signed-off-by: rldyourmnd <danil@nddev.it.com>
Idle retirement stays best-effort: warnIdleRetirement runs before the
original consolidateRunnerState body, so a retirement API failure cannot
block absent-runner cleanup. Runner Unlock remains deferred until that
function returns, preserving the provider-vs-DB race guard. Local age
and min-idle decide whether any API call happens. Helper tests document
predicate and fake-client evidence only. The .92 patches are unchanged.

Signed-off-by: rldyourmnd <danil@nddev.it.com>
Signed-off-by: rldyourmnd <danil@nddev.it.com>
@rldyourmnd
rldyourmnd merged commit 3a299b3 into main Sep 7, 2026
9 checks passed
@rldyourmnd
rldyourmnd deleted the gds2/lifecycle-20260907 branch September 7, 2026 14:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant