feat(miner): wire per-repo kill switch, real claim-ledger, and CI-status observation - #5429
Merged
Merged
Conversation
Contributor
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 3986cb9 | Commit Preview URL Branch Preview URL |
Jul 12 2026, 07:33 PM |
2 tasks
…tus observation into the real attempt/loop pipeline Closes #5392, Closes #5393, Closes #5394 - attempt-cli.js now resolves the real MinerGoalSpec from the already-cloned worktree and threads killSwitch.paused into both checkMinerKillSwitch and the governor context, closing the per-repo pause gap attempt-input-builder.js's own header had documented since #5132. - attempt-cli.js now records a real soft-claim via claim-ledger.js's claimIssue once an attempt passes feasibility, releasing it on every terminal outcome -- the ledger was previously never written to in the real pipeline, so freshness/dedup checks against it were always no-ops. - loop-cli.js polls real GitHub check-run status (ci-poller.js) for every submitted PR before the disposition poll, recording a ci_status_observed event and surfacing ciConclusion in --json cycle output. gate-verdict-poller.js (#4273) was the originally preferred source but has no real caller-reachable endpoint today (documented in its own header) -- ci-poller.js is the issue's own documented fallback.
JSONbored
force-pushed
the
feat/killswitch-claim-wiring-5392-5393
branch
from
July 12, 2026 19:32
3daf596 to
3986cb9
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5429 +/- ##
=======================================
Coverage 94.46% 94.46%
=======================================
Files 554 554
Lines 44426 44438 +12
Branches 14663 14663
=======================================
+ Hits 41967 41979 +12
Misses 1784 1784
Partials 675 675
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This was referenced Jul 12, 2026
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
.gittensory-miner.ymlkill switch intoattempt-cli.js's live pipeline (checkMinerKillSwitch+ the Governor context), closing a gap that was previously only checked globally.claim-ledger.jsfromattempt-cli.js-- claimed once an attempt passes feasibility, released on every terminal outcome. The local claim ledger was never actually written to in the real pipeline before this.loop-cli.js's post-submission handling, usingci-poller.js's real GitHub check-run polling, recorded to the event ledger and surfaced in--jsoncycle output asciConclusion.A note on scope vs #5394's stated preference
#5394 named
gate-verdict-poller.js(#4273) as the preferred source for this signal. Investigation found it has no real caller-reachable endpoint today: the only matching route (GET /v1/contributors/:login/open-pr-monitor) returns a list of{ classification: OpenPrWorkClassification }packets across every open PR for a login, not the single decided{ disposition | gateDisposition | verdict }fieldgate-verdict-poller.js's ownreadGateDispositionexpects for one PR. Wiring it as-is would have silently always resolved topending. Usedci-poller.jsinstead -- the issue's own documented fallback -- and left a header comment ongate-verdict-poller.jsexplaining the mismatch for whoever picks up a real single-PR gate-decision route later.Test plan
tsc --noEmit --incremental falsecleannpx vitest run test/unit-- 15091/15104 passing (1 unrelated pre-existing flake inminer-repo-clone.test.ts, a real-git-clone test that occasionally exceeds its 15s timeout under load; unrelated to any file in this PR)npm run test:coverage(unsharded) -- same resultattempt-cli.js,attempt-input-builder.js, andloop-cli.jsnpm audit --audit-level=moderate-- 0 vulnerabilitiesgit diff --checkclean