Skip to content

Give the autonomous loop real CI/gate-status awareness before classifying an outcome #5394

Description

@JSONbored

Problem: loop-cli.js goes straight from a submitted attempt outcome to polling the PR's raw merge/close disposition (pr-disposition-poller.js) — it never checks CI status or the server's own authoritative gate verdict in between. Two real, already-built primitives exist for exactly this and are both unwired anywhere in the loop:

  • gate-verdict-poller.js (built for feat(miner-manage): maintainer-gate verdict watcher (read-only, webhook or poll) #4273, closed in Wave 2) reads the server-side gate_decision verdict directly — per its own header, deliberately MORE authoritative than deriving a verdict from raw CI check-runs.
  • manage-poll.js/ci-poller.js (also Wave 2) poll real GitHub check-runs, but are only reachable via the manually-invoked gittensory-miner manage poll subcommand — never from loop-cli.js.

Today, a PR that's failing CI or was gated-blocked by the review bot looks identical to the loop as "still open, keep waiting" until a human eventually closes or merges it — there's no earlier, more informative signal the loop acts on.

Area: Miner / Autonomous loop

Proposal: Wire gate-verdict-poller.js (preferred — it's the authoritative signal) into loop-cli.js's post-submission handling, polled alongside (or instead of) the raw merge/close disposition check. Use the resolved gate verdict to enrich the loop's own cycle summary and, where relevant, its re-entry classification (e.g., a gate-blocked PR is a meaningfully different signal from a genuinely disengaged/closed one).

Deliverables:

  • The loop records a real gate-verdict/CI-status observation for every submitted attempt, not just its eventual merge/close state.

Acceptance criteria:

  • A submitted PR's gate verdict (or CI status, if gate-verdict-poller isn't reachable for that repo) is polled and recorded in the loop's own event ledger before the PR reaches a terminal merge/close state.
  • The new signal is surfaced in --json cycle output for operator visibility.

Boundaries:

  • Do not change the loop's own re-entry circuit-breaker logic (shouldReenter's thresholds) — this issue only adds a new observed signal, not new decision logic.
  • If gate-verdict-poller.js is only meaningful for gittensory-reviewed repos, ci-poller.js's raw check-run polling is an acceptable fallback for repos without gittensory's own gate — note which path was used in the cycle summary either way.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.

Projects

Status
Done

Relationships

None yet

Development

No branches or pull requests

Issue actions