Repository navigation
fix: address #1939 P2/P3 review items - #1955
miyaontherelay wants to merge 3 commits into
Conversation
…ards) - CHANGELOG: move the PTY delivery entry from the released 13.1.1 section to [Unreleased - Minor] / Fixed, impact-first, without the release-only sentence. 6bdec7b is not an ancestor of v13.2.0 or main. - AGENTS.md: restore "When the PR is ready" as its own line so items 3 and 4 render as one ordered list with nested bullets. - fleet.rs: the enqueue_delivery_ack comment names process echo as acceptance evidence alongside activity and a cleared composer. - real-codex.mjs: `--broker` without a value falls back to the friendly error instead of path.resolve(undefined); a directory is rejected by the executable-file guard. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Session-Id: 2a0590dc-a82a-4174-9eff-c23d59571061
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
current_composer anchored on the last prompt-looking row, so a relay body containing a line such as `> b` cut the live composer short at that row. The tail check then missed a parked draft: observe_visible_composer never saw the echo, and assess_harness_acceptance returned Inconclusive instead of Parked, so the delivery failed without submit-key recovery. composer_holds_tail keeps the latest-anchor containment check and also accepts an earlier prompt anchor, but only when its composer ends with the body's tail at the cursor. A submitted body in the transcript above a fresh prompt does not end at the cursor and is not treated as parked. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Session-Id: 2a0590dc-a82a-4174-9eff-c23d59571061
There was a problem hiding this comment.
All reported issues were addressed across 5 files
You’re at about 90% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Reply with feedback, questions, or to request a fix.
View guided diff | Re-trigger cubic
- real-codex.mjs: a supplied option with no value now fails with "<flag> requires a value" instead of falling back, so `--broker --timeout-seconds 20` can no longer silently run the broker from RELAY_REAL_CODEX_BROKER_BINARY. - CHANGELOG: split the PTY delivery entry into three impact-first bullets and state the limit as three total attempts. - fleet.rs: process echo is acceptance evidence only for a plain `cat` recipient, where it proves transport receipt, not harness acceptance. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Session-Id: 2a0590dc-a82a-4174-9eff-c23d59571061
|
@codex review |
|
To use Codex here, create a Codex account and connect to github. |
…-submission #1945 carried the original #1891 PTY delivery change into main without the #1954/#1955 fixes. Resolved against the #1891 pre-image (origin/trunk, same content as d153837 for these files) so only #1945's own edits conflicted. Kept from #1945: file attachments (wrap-mode attachment references, attachment echo test), CRLF-normalized echo matching, word-boundary "working" busy detection, the delivery_unconfirmed SDK event for rejected delivery_verified frames, and the completed_replay non-confirmation guard. Superseded (orchestrator decision): #1945's M4 variant (event-loop delayed CR follow-up plus refusing human write_pty with pty_write_queue_full during recovery) in favour of #1954's drainer-level cancellation, which never refuses operator keystrokes. #1945's generic echo_left_composer acceptance is replaced by #1954's guarded rule (post-echo output, body not at/after the cursor); attachment deliveries do not depend on the shortcut (confirmed by #1945's author) and are covered by a new test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: a4d98f2e-cd4b-47a9-87f8-1deb0f44eb41
Addresses the P2/P3 review threads on #1939 (trunk → main, carrying #1891). The must-fix items M1–M6, and the OpenCode
any_outputthread (detection.rs:48), are in #1954.Changes
b8fb668: docs and the test harness
[13.1.1]section to[Unreleased - Minor]/ Fixed. It is rewritten impact-first, and the release-only "13.2.0 rollout" sentence is dropped.git merge-base --is-ancestor 6bdec7b2 v13.2.0→ 1 and… origin/main→ 1, so fix(broker): verify PTY turn submission #1891 has not shipped in any release.enqueue_delivery_ackcomment now lists process echo as acceptance evidence, alongside activity and a cleared composer.--brokerwith no value (or followed by another flag) falls back to the friendly "Pass --broker" error instead ofpath.resolve(undefined). A directory is now rejected by the executable-file guard (stat().isFile()).a80f920: delivery_verification.rs:312, prompt-like rows inside a body
current_composeranchored on the last prompt-looking row, so a body containing> bcut the composer short. A parked draft then read as Inconclusive (no submit-key recovery), and its visible-composer echo was never recorded.composer_holds_tailkeeps the latest-anchor containment check. It also accepts an earlier anchor, but only when that composer ends with the tail at the cursor, so a submitted body above a fresh prompt is not treated as parked.prompt_like_body_rows_do_not_hide_a_parked_draft(red on trunk, failing on the echo assertion; green now) and the controlsubmitted_prompt_like_body_above_a_fresh_prompt_is_not_parked(green both before and after).5447d54: review follow-ups on this PR
--broker requires a value.) instead of falling back toRELAY_REAL_CODEX_BROKER_BINARY.cat-only transport receipt.Verification (finn-mini, macOS arm64, rustc 1.99.0 stable, node v25.8.1)
cargo +stable fmt --all -- --checkcargo +stable clippy -- -D warnings(the CI form)cargo +stable test -p agent-relay-broker --libcargo +stable test -p agent-relay-broker --lib delivery_verification(after fmt)cargo +stable test -p relay-ptyThe 5 broker failures are
spawner::tests::broker_hook_*(git commit-hook trailer tests). The same 5 fail with this branch's code change stashed (git stash→cargo test … spawner::tests::broker_hook→ 5 passed, 5 failed), so they pre-exist and are environmental on this node, not caused by this PR.clippy --all-targets -D warningsalso reports 2 pre-existing errors innode_control.rstest code, which CI's clippy form does not lint.real-codex.mjs, red on trunk then green. Each run uses
env -i PATH=<dir containing only node> node tests/relayflows/cases/1891-codex-parked-composer-recovery/real-codex.mjs <args>, so the realcodexis never launched:--brokerTypeError [ERR_INVALID_ARG_TYPE]Error: --broker requires a value.--broker --timeout-seconds 20withRELAY_REAL_CODEX_BROKER_BINARY=/bin/lsError: --broker requires a value.Error: Pass --broker <built-agent-relay-broker> or RELAY_REAL_CODEX_BROKER_BINARY.--broker /tmpcodex must be on PATHError: broker must be an executable file: /tmp--broker /bin/ls(control)codex must be on PATHInteraction with #1954
Both PRs edit
crates/broker/src/broker/delivery_verification.rsin nearby but non-overlapping hunks; whichever merges second may need a small rebase. #1954 addsfailed_draft_released, which still usescurrent_composer(..).contains(tail). Once both land, it should callcomposer_holds_tailso a failed draft containing a>row is held as well.🤖 Generated with Claude Code
Agent Relay sessions
claudesession2a0590dc· opened viagh pr create· last active 2026-10-10