Skip to content

feat: agents can wait on pull request CI and review feedback - #3

Closed
flamboh wants to merge 622 commits into
mainfrom
async-ci-pr-monitoring
Closed

flamboh wants to merge 622 commits into
mainfrom
async-ci-pr-monitoring

Conversation

@flamboh

@flamboh flamboh commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Note

🤖 Claude Opus 5.5 on behalf of Oliver

ELI5

An agent can now say "tell me when CI finishes" and stop working. T3 Code keeps an eye on the pull request and wakes the agent back up when checks fail, finish, or a reviewer leaves feedback.

Problem

Agents waiting on CI either burn a turn polling gh or end the turn and forget. There was no durable way to resume a thread when a pull request changes.

Implementation

  • watch_pull_request / cancel_pull_request_watch MCP tools register one-shot watches for check_failed, checks_finished, and review_feedback.
  • Watches live in a plain service table (pull_request_watches, migrations 056-057), polled once a minute on the shared scheduler. Matches coalesce for 15s, freeze a payload, and deliver it as a server notification message with stable command/message ids so restarts never duplicate delivery.
  • Pending watches appear in the thread's background-task roster, so the thread reads as waiting. Web and mobile show a waiting notice with a cancel action, gated on the new pullRequestWatches capability.
  • GitHub only for now; other hosts report unsupported.

Built with Claude Opus 5.5 in Claude Code (T3 Code).

juliusmarminge and others added 30 commits September 20, 2026 22:32
Port main's pull-request discovery, active thread ordering, async question dismissal, settlement fixes, provider-session import, attachment context, and provider correctness changes into orchestration v2.

Keep the branch's intentional composer and subagent behavior while adopting main's web and mobile fixes. Prevent headless setup terminals from hanging on the color probe, and move the v2 migration block to 050-061 after main claimed 048-049.
Restore the failed-before-start timer guard, align two server fixtures with the reconciled behavior, and remove dead files, exports, and dependencies surfaced by Knip.

Drop the temporary branch push trigger now that the PR is mergeable, so each update runs the pull-request workflow once.
Keep main's batch machine-update banner and update action while preserving the v2 runtime-based environment lock used by draft load balancing.
Adopt TypeScript 7 and Effect rc.112 across orchestration v2, including the TaggedError API migration and updated Effect-aware tests. Restore main's composer-aware scroll-to-end clearance while retaining selected-model settings sync, preview recording transfer, image galleries, desktop context menus, and layout hit targets. Regenerate the lockfile on the upgraded dependency baseline.
Advertise bounded socket snapshots and authoritative dispatch validation, omit raw command output and inline file bodies at the wire boundary, and preserve compact status metadata across web and mobile. Add transport-budget coverage for snapshots, resume, commands, legacy import, and projection maintenance.
Restore pinned-thread shelf classification, server-owned unread state, hidden-subagent-safe project ordering, guarded jump hints, draft upload cleanup, and active-provider archive guards across the current and legacy sidebars.

Bring the surrounding current-main sidebar work forward as well: canonical project favicons, stable row layout, thread file drops, account-aware mobile provider badges, and deferred desktop keyring loading.
Keep collapsed model controls in a strip, contain transition overflow, and preserve timeline spacing. Render approval requests as regular grouped worklog entries.

Implemented with GPT-6-Astra via Codex.
Adapt question attachments and Android push verification to V2 requests and shell events. Preserve composer transitions and compact worklogs while integrating upstream loading, navigation, and mobile changes. Release consumed application replay pages without retaining earlier batches.
Accumulate owned step usage once and preserve partial or unavailable telemetry for failed, interrupted, or reconnected turns.
…dotgg#10880)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
juliusmarminge and others added 23 commits September 20, 2026 22:33
Read selected control records for commands, provider cleanup, thread polling, and MCP tools. Select timeline pages before loading payloads, query attachment IDs separately, and restrict handoff and delegated-result reads to relevant runs. Cover unreadable unrelated history, paging across forks, and control behavior with focused regressions.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…g#12747)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…g#12846)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 22, 2026
@github-actions

Copy link
Copy Markdown

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for e5b97c7.

This comment will update automatically after the next completed run.

@flamboh

flamboh commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #5, rebuilt on top of upstream's PR watch (pingdotgg#15057).

@flamboh flamboh closed this Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.