fix(issue-30-33): review 5ec8ef33 - a multi-line codex draft is not an empty box, blocked notices reach the loop while the job runs, and both clocks are labelled on every close path
- R1 (P1): without rules the input region runs from the last prompt line to the end of the pane; only a last line matching the adapter's footer pattern (codex: ` <model> · ~/<cwd> · …`) is dropped, so a draft on a second line keeps the nudge withheld. - R2: while the synchronous submit runs, a relay thread finds the job it registers (same session, created since the submit) and prints its stalled:/stall_watch: notices; before, they appeared only after the job. - R3: the broker-unavailable disk wait that runs into the deadline is the wall clock: wall_clock_timeout (caller rc stays 3). - R4: a state_change_seq change seen right before the judgement restarts the idle window (decision 9: S seconds of continuous idle). Regression tests are the reviewer's reproductions, each with its passing twin; the wrapper-level #30 tests now use this environment's broker instead of the #18 harness's public default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
47e42744e7
commit
bf0f5c1014
8 files changed
+269
-12
No files matched your search
@@ -322,3 +322,22 @@ def test_b5_a_wall_clock_close_is_closed_unconfirmed(tmp_path, monkeypatch, requ
|
||||
_publish(env, reg, c, "error", "--detail", detail)
|
||||
block = _runner(tmp_path, monkeypatch)._subjobs_block([p])
|
||||
assert f"| CLOSED-UNCONFIRMED | {detail} |" in block, block
|
||||
|
||||
|
||||
# Review 5ec8ef33 R3: the broker-unavailable wait that runs into the deadline
|
||||
# is the wall clock too (caller rc stays 3); broker_up is the passing twin.
|
||||
@pytest.mark.parametrize("broker_up", [True, False])
|
||||
def test_r3_a_budget_spent_waiting_on_an_unreachable_broker_is_wall_clock_timeout(tmp_path, broker_up):
|
||||
env = _env(tmp_path, broker=broker_up)
|
||||
reg = tmp_path / "jobs"
|
||||
p = _run_wrapper_bg(env, reg, "--timeout", "4", "--idle-timeout", "30")
|
||||
try:
|
||||
out, err = p.communicate(timeout=90)
|
||||
jid = next(reg.glob("*.json")).stem
|
||||
assert p.returncode == (2 if broker_up else 3), out + err
|
||||
assert _record(reg, jid)["status"] == "error"
|
||||
assert _last_error(reg, jid) == "wall_clock_timeout", err
|
||||
finally:
|
||||
if p.poll() is None:
|
||||
p.kill()
|
||||
p.communicate(timeout=10)
|
||||
Reference in new issue
Block a user