Skip to content

Deliver waited-on lifecycle notifications to root and child Claude runs - #106

Open
warp-agent-staging[bot] wants to merge 1 commit into
factory/quality-2393-wait-for-eventsfrom
factory/orchestration-waited-on
Open

warp-agent-staging[bot] wants to merge 1 commit into
factory/quality-2393-wait-for-eventsfrom
factory/orchestration-waited-on

Conversation

@warp-agent-staging

@warp-agent-staging warp-agent-staging Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Description

Activate coordination hooks for Oz-backed root and child runs. Render run_waited_on records as read-only status without parent authority, skip mailbox delivery acknowledgments for synthetic records, and preserve ordinary messages. Reconnects do not restage consumed event sequences. Support current driver-managed listener environment names while retaining legacy aliases.

Stacked above #105; preserves its wait skill and bumps the platform plugin from 1.1.4 to 1.1.5. Do not land before that layer. Tracks warpdotdev/warp-server#21004.

Testing

Complete lifecycle hook suite: 46 assertions pass, including root delivery, read-only formatting, synthetic-ack exclusion, ordinary acknowledgments, reconnect/cursor behavior, managed roots, and inert non-Oz sessions. Shell syntax and diff-check pass. Client GUI verification was declined.

Related changes and landing order

Protocol: warpdotdev/warp-proto-apis#413; server formatting: https://github.com/warpdotdev/warp-server/pull/21731 (after #21020); Claude hooks: #106 (after #105); Codex hooks: warpdotdev/codex-warp#11 (after #10); client: warpdotdev/warp#16809 (after both plugin releases).

Historical parent-stack UI evidence

The automated appendix below belongs to earlier web-timeline work in the parent task, not proof of this notification change. New client computer-use verification was explicitly declined.

Computer-use video recordings (8)

Opens the seeded Waiting run in the Factory MSW app, inspects history, resumes via mocked state, and follows the target link.
Factory Waiting run: open, history, resume, target link: Opens the seeded Waiting run in the Factory MSW app, inspects history, resumes via mocked state, and follows the target link.

Opens the seeded Waiting run in the Oz MSW app, expands lifecycle history, resumes via mocked state, and follows the target run link.
Oz Waiting run: history, resume, target link: Opens the seeded Waiting run in the Oz MSW app, expands lifecycle history, resumes via mocked state, and follows the target run link.

Opens the Waiting Factory trace, inspects the waiting segment tooltip and wait target, mutates the MSW fixture to resumed state, observes separated work segments, and follows the target link.
Factory waiting trace to resumed trace: Opens the Waiting Factory trace, inspects the waiting segment tooltip and wait target, mutates the MSW fixture to resumed state, observes separated work segments, and follows the target link.

Navigating Factory and Oz MSW run pages for waiting and resumed states, expanding timelines, then clicking a target link in the debugger.
Factory, Oz and debugger waiting/resumed flows: Navigating Factory and Oz MSW run pages for waiting and resumed states, expanding timelines, then clicking a target link in the debugger.

Loads Factory MSW, opens run-msw-idle-gap (waiting on two targets), inspects links and trace, then navigates to run-msw-debugging (resumed working).
Factory MSW waiting and resumed traces: Loads Factory MSW, opens run-msw-idle-gap (waiting on two targets), inspects links and trace, then navigates to run-msw-debugging (resumed working).

Reloads factory.html, navigates client-side to run-msw-debugging, hovers trace segments, and checks footer links, then run-msw-idle-gap.
Factory resumed trace tooltips and waiting footer: Reloads factory.html, navigates client-side to run-msw-debugging, hovers trace segments, and checks footer links, then run-msw-idle-gap.

Full reload of Factory MSW entry, client-side navigation to the debugging run and the idle-gap waiting run, showing footer links and trace, then the resumed trace.
Waiting and resumed run traces: Full reload of Factory MSW entry, client-side navigation to the debugging run and the idle-gap waiting run, showing footer links and trace, then the resumed trace.

Seeds MSW state for a waiting run, inspects Agents timeline and target links, then the debugger waiting-parent page and child-beta navigation.
Waiting timeline in Agents app and debugger: Seeds MSW state for a waiting run, inspects Agents timeline and target links, then the debugger waiting-parent page and child-beta navigation.

Computer-use screenshots (10)

run-msw-debugging after reload+client nav: single Coding agent Active segment, plain Follow up footer
run-msw-debugging after reload+client nav: single Coding agent Active segment, plain Follow up footer

run-msw-idle-gap: Waiting segment, Idle for 2d 9h gap, footer with child-alpha and child-beta links
run-msw-idle-gap: Waiting segment, Idle for 2d 9h gap, footer with child-alpha and child-beta links

Resumed run trace: short historical Waiting segment (1m→2m) at top and long current Active segment after idle gap
Resumed run trace: short historical Waiting segment (1m→2m) at top and long current Active segment after idle gap

Waiting run footer "Waiting for child-alpha and child-beta agents…" with child-beta target (/runs/child-beta?tab=agents&from=parent) in status bar; alpha target is /runs/child-alpha?tab=agents&from=parent
Waiting run footer "Waiting for child-alpha and child-beta agents…" with child-beta target (/runs/child-beta?tab=agents&from=parent) in status bar; alpha target is /runs/child-alpha?tab=agents&from=parent

Agents run-msw-1 collapsed timeline: "Agent waiting" with full sentence and two underlined links; Status badge Waiting
Agents run-msw-1 collapsed timeline: "Agent waiting" with full sentence and two underlined links; Status badge Waiting

Debugger waiting-parent Timeline: Agent waiting event with yellow marker and child-alpha/child-beta links
Debugger waiting-parent Timeline: Agent waiting event with yellow marker and child-alpha/child-beta links

Debugger child-beta timeline: INPROGRESS run with retained Agent working → Agent waiting → Agent working history
Debugger child-beta timeline: INPROGRESS run with retained Agent working → Agent waiting → Agent working history

Collapsed Agent waiting row with orange circular pause marker and "waiting for messages from child-alpha, child-beta" sentence
Collapsed Agent waiting row with orange circular pause marker and "waiting for messages from child-alpha, child-beta" sentence

Collapsed Agent blocked row: orange rounded-square-in-circle marker, "The run needs attention before it can continue."
Collapsed Agent blocked row: orange rounded-square-in-circle marker, "The run needs attention before it can continue."

Final state: collapsed Agent waiting row with orange pause marker and child-alpha/child-beta links
Final state: collapsed Agent waiting row with orange pause marker and child-alpha/child-beta links

@warp-agent-staging

Copy link
Copy Markdown
Contributor Author

This PR was generated with Warp.

Comment @warp-staging-factory on this PR to send it follow-up work.

View run View conversation View on Slack

@warp-agent-staging

Copy link
Copy Markdown
Contributor Author

This PR was generated with Warp, requested by @seemeroland.

Comment @warp-staging-factory on this PR to send it follow-up work.

View run View conversation View on Slack

@warp-agent-staging warp-agent-staging Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

Root and child hooks separate read-only waited-on notifications from mailbox messages and avoid synthetic mailbox acknowledgments. Examined design, correctness, standards, complexity, naming, comments, test value/coverage, and security; no outstanding source findings.

Verdict

Checks: shell syntax pass, tests 46/46 pass, CI green, visual proof n/a.

Found: 0 critical, 0 important, 0 suggestions, 0 nits. Approve the source change; land after #105 and before the client plugin minimum increases.

Responding as eng-factory-slim: Open session · View in factory

seemeroland pushed a commit to warpdotdev/warp-proto-apis that referenced this pull request Nov 13, 2026
## Description
Add the additive `WAITED_ON` lifecycle type and `waited_on` detail. The
sender identifies the waiting run, independently of parent/child
direction. Regenerate checked-in Go bindings.

## Justification
Support recipient-owned `run_waited_on` events so both native and
third-party agents can learn that another run is waiting for them. Part
of warpdotdev/warp-server#21004.

## Sensitive Fields
- [x] No sensitive string fields are added.

## Testing
Go generation and generated-package tests, Rust build/tests, npm ci, and
TypeScript generation pass. Generation used protoc 29.3 and the
repository-pinned Go plugin; Rust has no unit tests.

## Related changes and landing order
Protocol: #413; server
formatting: warpdotdev/warp-server#21731 (after
#21020); Claude hooks:
warpdotdev/claude-code-warp#106 (after #105);
Codex hooks: warpdotdev/codex-warp#11 (after
#10); client: warpdotdev/warp#16809 (after both
plugin releases).

## Historical parent-stack UI evidence
The automated appendix below belongs to earlier web-timeline work in the
parent task, not proof of this notification change. New client
computer-use verification was explicitly declined.

<!-- warp:pr-description-artifacts start -->
<!-- oz:computer-use-videos start -->
<details>
<summary>Computer-use video recordings (8)</summary>

[![Opens the seeded Waiting run in the Factory MSW app, inspects
history, resumes via mocked state, and follows the target
link.](https://staging.warp.dev/api/v1/agent/artifacts/01a18f3a-56fd-76d5-bb5a-4f81d49039b4/download)](https://platform.staging.warp.dev/artifacts/01a18f3a-54ae-7ef6-8c52-1ec3c29e5d7b)
**Factory Waiting run: open, history, resume, target link**: Opens the
seeded Waiting run in the Factory MSW app, inspects history, resumes via
mocked state, and follows the target link.

[![Opens the seeded Waiting run in the Oz MSW app, expands lifecycle
history, resumes via mocked state, and follows the target run
link.](https://staging.warp.dev/api/v1/agent/artifacts/01a18f3c-3e1d-7da4-80e6-be3ccc10ef7b/download)](https://platform.staging.warp.dev/artifacts/01a18f3c-3b2f-768d-b2b2-11f4eb8c173f)
**Oz Waiting run: history, resume, target link**: Opens the seeded
Waiting run in the Oz MSW app, expands lifecycle history, resumes via
mocked state, and follows the target run link.

[![Opens the Waiting Factory trace, inspects the waiting segment tooltip
and wait target, mutates the MSW fixture to resumed state, observes
separated work segments, and follows the target
link.](https://staging.warp.dev/api/v1/agent/artifacts/01a18f42-ce41-7ae0-9fa7-2042d5965751/download)](https://platform.staging.warp.dev/artifacts/01a18f42-cbb7-7d7c-a007-cf651e9e0681)
**Factory waiting trace to resumed trace**: Opens the Waiting Factory
trace, inspects the waiting segment tooltip and wait target, mutates the
MSW fixture to resumed state, observes separated work segments, and
follows the target link.

[![Navigating Factory and Oz MSW run pages for waiting and resumed
states, expanding timelines, then clicking a target link in the
debugger.](https://staging.warp.dev/api/v1/agent/artifacts/01a1a96a-e413-747e-871b-e05bdb889d90/download)](https://platform.staging.warp.dev/artifacts/01a1a96a-e113-705f-8b31-b2f6de652e9a)
**Factory, Oz and debugger waiting/resumed flows**: Navigating Factory
and Oz MSW run pages for waiting and resumed states, expanding
timelines, then clicking a target link in the debugger.

[![Loads Factory MSW, opens run-msw-idle-gap (waiting on two targets),
inspects links and trace, then navigates to run-msw-debugging (resumed
working).](https://staging.warp.dev/api/v1/agent/artifacts/01a1a96d-deeb-7479-bdd1-afec128812f9/download)](https://platform.staging.warp.dev/artifacts/01a1a96d-dc40-755d-8f3f-956700dfa919)
**Factory MSW waiting and resumed traces**: Loads Factory MSW, opens
run-msw-idle-gap (waiting on two targets), inspects links and trace,
then navigates to run-msw-debugging (resumed working).

[![Reloads factory.html, navigates client-side to run-msw-debugging,
hovers trace segments, and checks footer links, then
run-msw-idle-gap.](https://staging.warp.dev/api/v1/agent/artifacts/01a1a96f-b183-74c9-9267-36f99fafde35/download)](https://platform.staging.warp.dev/artifacts/01a1a96f-af19-7b5a-b641-2c4d9c222e11)
**Factory resumed trace tooltips and waiting footer**: Reloads
factory.html, navigates client-side to run-msw-debugging, hovers trace
segments, and checks footer links, then run-msw-idle-gap.

[![Full reload of Factory MSW entry, client-side navigation to the
debugging run and the idle-gap waiting run, showing footer links and
trace, then the resumed
trace.](https://staging.warp.dev/api/v1/agent/artifacts/01a1a971-bbd4-71c5-89d9-1ba896f83fb3/download)](https://platform.staging.warp.dev/artifacts/01a1a971-b9a2-779a-97fa-306ec44a9ae7)
**Waiting and resumed run traces**: Full reload of Factory MSW entry,
client-side navigation to the debugging run and the idle-gap waiting
run, showing footer links and trace, then the resumed trace.

[![Seeds MSW state for a waiting run, inspects Agents timeline and
target links, then the debugger waiting-parent page and child-beta
navigation.](https://staging.warp.dev/api/v1/agent/artifacts/01a1cd25-d3ac-71d5-94fe-4201d0b5bc6b/download)](https://platform.staging.warp.dev/artifacts/01a1cd25-cf66-76c6-9ad0-437aefff1c77)
**Waiting timeline in Agents app and debugger**: Seeds MSW state for a
waiting run, inspects Agents timeline and target links, then the
debugger waiting-parent page and child-beta navigation.

</details>
<!-- oz:computer-use-videos end -->
<!-- oz:computer-use-screenshots start -->
<details>
<summary>Computer-use screenshots (10)</summary>

![run-msw-debugging after reload+client nav: single Coding agent Active
segment, plain Follow up
footer](https://staging.warp.dev/api/v1/agent/artifacts/01a1a96f-6c18-7e32-9b10-0937eeb50650/download)
run-msw-debugging after reload+client nav: single Coding agent Active
segment, plain Follow up footer

![run-msw-idle-gap: Waiting segment, Idle for 2d 9h gap, footer with
child-alpha and child-beta
links](https://staging.warp.dev/api/v1/agent/artifacts/01a1a96f-a89d-7a0f-a313-1d4bc3383b01/download)
run-msw-idle-gap: Waiting segment, Idle for 2d 9h gap, footer with
child-alpha and child-beta links

![Resumed run trace: short historical Waiting segment (1m→2m) at top and
long current Active segment after idle
gap](https://staging.warp.dev/api/v1/agent/artifacts/01a1a971-5153-7d79-a45b-5b90bacd4fb8/download)
Resumed run trace: short historical Waiting segment (1m→2m) at top and
long current Active segment after idle gap

![Waiting run footer "Waiting for child-alpha and child-beta agents…"
with child-beta target (/runs/child-beta?tab=agents&amp;from=parent) in
status bar; alpha target is
/runs/child-alpha?tab=agents&amp;from=parent](https://staging.warp.dev/api/v1/agent/artifacts/01a1a971-99c0-705a-a2a5-41f3cf9dd85f/download)
Waiting run footer "Waiting for child-alpha and child-beta agents…" with
child-beta target (/runs/child-beta?tab=agents&amp;from=parent) in
status bar; alpha target is /runs/child-alpha?tab=agents&amp;from=parent

![Agents run-msw-1 collapsed timeline: "Agent waiting" with full
sentence and two underlined links; Status badge
Waiting](https://staging.warp.dev/api/v1/agent/artifacts/01a1cd25-22c3-7041-ad49-7c485b7192ad/download)
Agents run-msw-1 collapsed timeline: "Agent waiting" with full sentence
and two underlined links; Status badge Waiting

![Debugger waiting-parent Timeline: Agent waiting event with yellow
marker and child-alpha/child-beta
links](https://staging.warp.dev/api/v1/agent/artifacts/01a1cd25-8f66-79aa-bac3-be3f6a5e0595/download)
Debugger waiting-parent Timeline: Agent waiting event with yellow marker
and child-alpha/child-beta links

![Debugger child-beta timeline: INPROGRESS run with retained Agent
working → Agent waiting → Agent working
history](https://staging.warp.dev/api/v1/agent/artifacts/01a1cd25-c62a-77e5-ba1a-f5e1f45569e3/download)
Debugger child-beta timeline: INPROGRESS run with retained Agent working
→ Agent waiting → Agent working history

![Collapsed Agent waiting row with orange circular pause marker and
"waiting for messages from child-alpha, child-beta"
sentence](https://staging.warp.dev/api/v1/agent/artifacts/01a1cd45-e5cb-7dc6-a097-243696b2112d/download)
Collapsed Agent waiting row with orange circular pause marker and
"waiting for messages from child-alpha, child-beta" sentence

![Collapsed Agent blocked row: orange rounded-square-in-circle marker,
"The run needs attention before it can
continue."](https://staging.warp.dev/api/v1/agent/artifacts/01a1cd46-a9e7-7625-b149-20eaccfbdda0/download)
Collapsed Agent blocked row: orange rounded-square-in-circle marker,
"The run needs attention before it can continue."

![Final state: collapsed Agent waiting row with orange pause marker and
child-alpha/child-beta
links](https://staging.warp.dev/api/v1/agent/artifacts/01a1cd46-eba2-7b3c-a5ee-7d15bb32a443/download)
Final state: collapsed Agent waiting row with orange pause marker and
child-alpha/child-beta links

</details>
<!-- oz:computer-use-screenshots end -->
<!-- warp:pr-description-artifacts end -->

---------

Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants