You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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.
Problem:
loop-cli.jsgoes straight from asubmittedattempt 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-sidegate_decisionverdict 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-invokedgittensory-miner manage pollsubcommand — never fromloop-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) intoloop-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:
Acceptance criteria:
--jsoncycle output for operator visibility.Boundaries:
shouldReenter's thresholds) — this issue only adds a new observed signal, not new decision logic.gate-verdict-poller.jsis 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.