Skip to content

fix(garm): exact identity and dispatch occupancy for v0.2.1-nddev.94 - #431

Open
rldyourmnd wants to merge 2 commits into
mainfrom
fix/garm-94-stale-job-identity-20260907
Open

fix(garm): exact identity and dispatch occupancy for v0.2.1-nddev.94#431
rldyourmnd wants to merge 2 commits into
mainfrom
fix/garm-94-stale-job-identity-20260907

Conversation

@rldyourmnd

@rldyourmnd rldyourmnd commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Bind stale scale-set job mutation to check-run external_id, check_run_url path ID, repository, attempt, numeric job ID and SHA. A name is not identity. Omitted or changing page totals retain the intent.
  • Scaling uses live MESSAGE TotalAssignedJobs; idle retirement needs a recent messageID greater than 0. Replay of the same session/message and late messages from a replaced session do not refresh idle freshness. Session-create zeros and 202/nil long-polls are not idle evidence. Start failure deletes the new session and cancels the listener context.
  • JobStarted of another GUID does not delete or rename an assigned waiter. A request-less JobAssigned yields occupancy when a different GUID becomes JobAvailable, including while still unexpired; the original waiter and FIFO stay. Same-GUID JobAvailable keeps occupancy. Listener JobCompleted is not REST workflow-job terminal.
  • Official build stops the container before deleting the bind-mounted source. Derivative v0.2.1-nddev.94, binary SHA-256 44721568b2f8839e643a1976414de56a41e453854b5f41467a2cf2775b99bdad, Go 1.26.6, glibc 2.34. Published .92/.93 patches and the .93 artifact 8f6519500e90ad028c62b7fc3f5c8f2c7784fd82ef653c37c8db9e45afcfa841 are unchanged. Source/artifact candidate only; not a fleet rollout.

Test plan

  • go test -tags testing -race -count=1 ./runner/pool ./workers/scaleset ./util/github/scalesets on the patched tree with Go 1.26.6 vendor
  • Official scripts/build-garm-nddev.sh two-cache path twice; second run matches pin 44721568b2f8839e643a1976414de56a41e453854b5f41467a2cf2775b99bdad
  • make verify with Go 1.26.7
  • gds generate repository --check against immutable 0.8.0 bundle: no projection drift
  • govulncheck v1.6.0 source-mode ./cmd/garm on the prior frozen tree: 0 called, 0 imported, 27 module-only; go.mod unchanged in this follow-up
  • Coordinator review, private pin, runtime adoption — out of this PR

rldyourmnd and others added 2 commits September 8, 2026 01:23
Bind stale-job mutation to check-run identity, take scaling from the live
MESSAGE session, and stop request-less JobAssigned tokens from blocking a
different GUID that GitHub actually made available. Replay and replaced
sessions cannot refresh idle freshness. This is a source/artifact candidate,
not a fleet rollout.

Signed-off-by: rldyourmnd <danil@nddev.it.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Reject omitted or changing GitHub list totals, bind check_run_url by path ID,
cancel the listener context when Start fails, drop idle TryLock before the next
candidate, and stop the build container before deleting its bind source. Pin
the frozen two-cache artifact. Source/artifact candidate only.

Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: rldyourmnd <danil@nddev.it.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
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