Skip to content

[split 2/3] Reborn queued-message steering into busy threads - #5963

Closed
ilblackdragon wants to merge 1 commit into
codex/reborn-other-hardeningfrom
codex/reborn-queued-messages-steering
Closed

ilblackdragon wants to merge 1 commit into
codex/reborn-other-hardeningfrom
codex/reborn-queued-messages-steering

Conversation

@ilblackdragon

Copy link
Copy Markdown
Member

Summary

Split 2 of 3 extracted from #5279. Stacked on #5962 (codex/reborn-other-hardening) — review/merge that first; this PR targets its branch so the diff is just the queued-steering slice.

Queue a user message sent to a busy thread as active-run steering input, and surface queued status in the WebUI.

  • Input queue: durable FilesystemHostInputQueue + InMemoryHostInputQueue (loop_support), HostInputEnqueuePort / RejectingInputEnqueue, CAS-guarded run-scoped persistence.
  • Steering gateway: product_workflow/steering.rs (enqueue_busy_steering, typed SteeringEnqueueError); busy-submit returns DeferredBusy; mark_message_queued_or_replay.
  • Thread transitions: Queued message status + Queued → Submitted on both thread backends (idempotent per run).
  • Agent loop: prompt_context_cursor consume, post-tool steering drained before the reply model call, model-port coalescing of consecutive text-only user messages.
  • Runtime wiring: Filesystem/InMemory host input queue selection; with_input_enqueue on webui / openai-compat / slack inbound.
  • Chat frontend: queued/optimistic message status (message-status.js, optimistic-message.js), strict invocationId gate-argument join (gate-arguments.js), gate-kinds.js, generic gate-kind title, tool.error* i18n.
  • Tests: real WebUI → runtime → tool-loop queued-followup e2es; thread/loop-support/agent-loop contracts.

Notes

  • cargo check --tests --features webui-v2-beta green; focused chat JS tests pass.

🤖 Generated with Claude Code

Extracted from #5279 — queue a user message sent to a busy thread as
active-run steering input and surface queued status in the WebUI:
- durable + in-memory host input queue (loop_support), steering gateway
  (product_workflow/steering.rs), DeferredBusy busy-submit path
- thread Queued/Submitted transitions (threads service + backends)
- agent-loop input-cursor / prompt_context_cursor consume, post-tool
  steering drained before the reply model call, model-port coalescing of
  consecutive text user messages
- runtime wiring (Filesystem/InMemory host input queue), webui/openai-compat/
  slack input_enqueue
- chat frontend queued UX: message-status, gate-arguments, gate-kinds,
  optimistic-message, generic gate-kind title, tool.error i18n
- real WebUI -> runtime -> tool-loop queued-followup e2es

Builds on PR1 (other).
@ironloopai

ironloopai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

🔎 IronLoop Review Status

Head: 8bc0e6372f40984e182182b88768e351b31b2dbf
Result: Reviewer planning is blocked by the trusted agent configuration.
Next: Fix the target repository's .ironloop/agents.yaml and agent instruction files, then re-run @ironloopai review or update the pull request.
Updated: 2026-07-10T21:54:35.743Z

Stage Status Detail
received reached GitHub delivered the event to IronLoop.
admitted reached The event passed routing and authorization.
config blocked Unable to load trusted agent config from .ironloop/agents.yaml.
reviewer jobs pending No reviewer jobs were queued because configuration loading failed.
Configuration error

Message: Unable to load trusted agent config from .ironloop/agents.yaml.

Available commands
  • @ironloopai help
  • @ironloopai agents
  • @ironloopai review
  • @ironloopai review --agent <agent>
  • @ironloopai status
Run metadata

Origin: auto
Event: pull_request.opened
Config path: .ironloop/agents.yaml
Trusted ref: 6ba9e77059b241eea6500fa8d691c8a10fc12ea3
Delivery: efabffa0-7ca9-11f1-991d-ffbbce409831

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (2)
  • staging
  • reborn-integration

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6e74cb0a-3ae5-4443-8c15-8fc9955818d7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-5963 July 10, 2026 21:54 Destroyed
@github-actions github-actions Bot added size: XL 500+ changed lines risk: low Changes to docs, tests, or low-risk modules contributor: core 20+ merged PRs scope: docs Documentation labels Jul 10, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request implements active-run steering queues, allowing user messages sent to a busy thread to be queued as steering input for the active run instead of being rejected. It introduces a durable, filesystem-backed FilesystemHostInputQueue alongside an in-memory fallback, adds a new Queued message status, and updates the executor pipeline to drain and acknowledge these inputs correctly. Additionally, consecutive plain-text user messages are now coalesced before being sent to the provider gateway, and the WebUI has been updated to support queuing composer sends, exact tool-activity argument mapping for approval gates, and localized tool error messages. I have no feedback to provide as there are no review comments to assess.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@railway-app

railway-app Bot commented Jul 10, 2026

Copy link
Copy Markdown

🚅 Deployed to the ironclaw-pr-5963 environment in ironclaw-ci-preview

Service Status Web Updated (UTC)
ironclaw ✅ Success (View Logs) Web Jul 10, 2026 at 10:03 pm

@ilblackdragon

Copy link
Copy Markdown
Member Author

Obsolete: based on #5279's pre-refactor base. main has since refactored (crate rename ironclaw_reborn→ironclaw_runner, error_summary→error_detail, WebUI JS→TS). Replaced by the forward-ported stacked split #5981 (queue) → #5982 (budget).

@ilblackdragon
ilblackdragon deleted the codex/reborn-queued-messages-steering branch July 11, 2026 05:00

This branch was successfully deployed

No deployments
ironclaw-ci-preview / ironclaw-pr-5963 — 8bc0e637 Deployed Jul 10, 2026 by railway-app[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: low Changes to docs, tests, or low-risk modules scope: docs Documentation size: XL 500+ changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant