Skip to content

Process and Review runs that skip command::start may not configure logs.waiting_line_minutes #1983

Closed

Description

@JacobStephens2

This was generated by AI while reviewing the pull request for #1495.

Finding

crate::poll::configure_waiting_lines(config.effective_waiting_line_interval()) runs in command::start (src/command.rs:116). The fix for #1495 adds the same call to the Experiment's own start, because the Experiment skips command::start and so its waiting lines ignored logs.waiting_line_minutes.

Other entry points also call logs::configured(&config) themselves, apparently without configure_waiting_lines:

  • src/processes.rs:650 and :742: Process runs, including Passes
  • src/processes/review.rs:22 and :202: Review runs by author
  • src/processes/source.rs:919

If any of these reaches a waiting stage without first configuring the interval, its waiting lines use the built-in 5 minutes. Examples are CI watch, Self-merge and host-resource waits. They would then ignore both logs.waiting_line_minutes and the half-silence fallback for a low inbox.silent_minutes. With inbox.silent_minutes = 4, for example, a waiting stage would still repeat every 5 minutes and could show as Silent.

Evidence

Why this was not decided in that pull request

#1495 is limited to an Experiment's Trial waiting lines. Changing how every other Command configures waiting lines is a separate behaviour change, and it has no Spec. It could mean folding the call into logs::configured or a shared start helper. Whether it is a real bug, and which shape to use, needs triage.

Activity

  1. added
    needs-triageMaintainer needs to evaluate this issue
    in-progressA Claim: thirdshift has taken this issue
    and removed
    needs-triageMaintainer needs to evaluate this issue
    on Nov 10, 2026
  2. JacobStephens2 commented on Nov 11, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    Agent Brief

    Confirmed on Base branch main at d7f9f18. Fix #1983 as one bounded startup-configuration change.

    Diagnosis

    Process and Review commands bypass command::start (src/main.rs:471–475). Their startup paths call logs::configured at src/processes.rs:650,742, src/processes/source.rs:919 and src/processes/review.rs:22,202, but that function only configures logging (src/logs.rs:313; src/logs/recording.rs:151). Waiting-line configuration currently happens only in command::start and Experiment startup.

    These paths reach real waits: Review Delivery calls CI watch (src/processes/review/delivery.rs), and a Custom process copied from processes/ticket-run.toml reaches Delivery and Self-merge. CI watch constructs WaitingLine at src/ci.rs:528. With no configured interval, WaitingLine uses 300 seconds (src/poll.rs:37), bypassing both logs.waiting_line_minutes and UserConfig::effective_waiting_line_interval (src/config.rs:145). Host-resource and Self-merge waits use the same mechanism.

    Reproduction

    A scratch probe reused tests/support::Scenario with real Git, fake GitHub and fake Harnesses. It held one successful check pending for 14 observations and set THIRDSHIFT_WAITING_MINUTE_MS=150.

    With logs.waiting_line_minutes=1, a normal Ticket run emitted seven unchanged CI waiting lines; a Custom process copied from the Built-in ticket-run, an explicit Review run and a Review --author Pass each emitted one. With waiting_line_minutes=5 and inbox.silent_minutes=4, the normal Ticket run emitted five lines; each affected command again emitted one. All eight commands completed successfully after CI passed. The reserved ticket-run name cannot be run directly as a Custom process; copy its definition under another name.

    Implementation and acceptance

    Capture the effective waiting interval at the existing common startup boundary, logs::configured or a helper it calls, before waits can begin. Remove redundant configuration calls if centralized. Preserve the existing OnceLock first-initialization behavior and test-minute scaling.

    Add CLI regression coverage for explicit waiting intervals and the half-silence fallback through Custom process and Review startup, including Review --author. Cover Process Pass and issue startup paths, and verify repeated waiting lines reach both stderr and the Command log. Reuse the fixtures in tests/ci.rs and tests/command_logs.rs. Keep the normal Ticket and Experiment behavior passing.

    The 300-second fallback exceeding a four-minute Silent threshold is confirmed by code; an actual Inbox transition to Silent was not observed. No production access or human decision is needed to implement this fix.

  3. added
    bugSomething isn't working
    ready-for-agentFully specified, ready for an AFK agent
    in-progressA Claim: thirdshift has taken this issue
    and removed
    in-progressA Claim: thirdshift has taken this issue
    ready-for-agentFully specified, ready for an AFK agent
    on Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions