Skip to content

A Pickup run reads "starting" and "(title unavailable)" for its whole life #889

Closed

Description

@JacobStephens2

This was generated by AI during triage.

A live Pickup run reads starting in thirdshift status for its whole life, and its row says (title unavailable). On stephens on 2026-10-20, the Pickup run for #776 had been live for 19 hr 46 min and still read:

Pickup run JacobStephens2/thirdshift#776 (title unavailable) · codex · gpt-6.1-sol · high · starting
  Spec run JacobStephens2/thirdshift#776 Spec: the Console, a web page for each machine's Commands · codex · gpt-6.1-sol · high · Tickets · 19 hr 46 min

Every Pickup row on the machine, ended ones included (#812, #806, #804), says (title unavailable).

Both come from the Command record, which thirdshift status --json shows as "stages": [] and "issue": {"title": null}:

  • Stage. A Pickup run never records a stage: its Work has no initial stage, and it writes none when it dispatches. Status falls back to starting for any live Command with no stage. A Security run has the same gap.
  • Title. The Pickup run already knows the title from the Ready issue listing, since it prints it in its "taking Ready issue" step, but it starts its Command record with only the Issue URL.

This matters more once the Console (#776) ships. Its Inbox shows each Run's stage and age (#776 story 10) from the same records, so a Pickup run reading starting above a Spec run 20 hours into Tickets looks like a stuck parent.

The fix wording was agreed in triage: once it has dispatched, a Pickup run reads dispatched <kind> · <age>, for example dispatched Spec run · 19 hr 46 min, timed from the dispatch.

Activity

  1. JacobStephens2 commented on Oct 20, 2026

    @JacobStephens2
    OwnerAuthor

    This was generated by AI during triage.

    Agent Brief

    Category: bug
    Summary: A Pickup run's Command record should name what it dispatched, and when, and carry its issue's title

    Current behavior:
    A Pickup run's Command record has no stages and a null issue title for its whole life. thirdshift status, thirdshift show and the Console render its stage as starting, even hours after it dispatched a Spec run or a Run, and render its subject as #<n> (title unavailable). A Security run that has dispatched a fix also has no stage, so it reads starting too.

    Desired behavior:

    • From the moment a Pickup run dispatches, its live row reads dispatched <kind> · <age>, where <kind> is the dispatched Command's kind as status already names it (Spec run or Run), and <age> is the time since the dispatch, in the same format as other stage ages (19 hr 46 min).
    • While a Security run's fix is dispatched, it reads the same way: dispatched Run · <age> or dispatched Spec run · <age>. Between fixes it reads as it does today.
    • Before dispatch, starting stays as it is.
    • A Pickup run's Command record carries its issue's title, the one from the Ready issue listing, so its row shows #776 Spec: the Console, a web page for each machine's Commands and not (title unavailable).
    • The record keeps the dispatch time and kind, so status --json exposes them and the Console can render the same words without parsing CLI text.
    • An ended Pickup run still shows its outcome, and a Pickup run that died after dispatching reads died at dispatched <kind>, or similar wording consistent with the existing died at <stage>.

    Key interfaces:

    • Work::PickupRun - carries only an IssueUrl today; the title has to reach the record it starts.
    • Work::initial_stage and the Command record's stages / current_stage() - the dispatch must be visible as a stage or an equivalent recorded fact.
    • stage_text in status - the fallback that produces starting and died before first stage.
    • The Stage enum and its persisted names, which are tolerant of new stages: any new stage name must be readable by older records' readers as well as newer ones.

    Acceptance criteria:

    • A Pickup run that has dispatched a Spec run renders dispatched Spec run · <age since dispatch> in thirdshift status, and dispatched Run · <age> when it dispatched a Run.
    • A Security run with a fix in flight renders dispatched <kind> · <age>.
    • A Pickup run that has not dispatched yet still renders starting.
    • A Pickup run's row and its thirdshift show output carry the issue's title from the Ready issue listing.
    • thirdshift status --json includes the dispatch stage (name and began-at) for a dispatched Pickup run.
    • Records written before this change (no stages, null title) still load and render as they do today.
    • Silent and Slow apply to the dispatched Command, not to the Pickup run's dispatch stage: a long Spec run never marks its parent Pickup run Slow, since a dispatch has no Usual range.
    • Tests cover the Pickup and Security dispatch cases and a pre-change record.

    Out of scope:

    • Stages for a Security run's own audit, reproduce and score steps before any fix is dispatched.
    • Any change to how the dispatched Spec run or Run records its own stages.
    • Console layout or Theme work beyond rendering the new stage words (Spec: the Console, a web page for each machine's Commands #776's own Tickets cover the Console).
  2. added
    bugSomething isn't working
    ready-for-agentFully specified, ready for an AFK agent
    in-progressA Claim: thirdshift has taken this issue
    and removed
    ready-for-agentFully specified, ready for an AFK agent
    on Oct 20, 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