Skip to content

Going as far as it can: Failed spec runs #144

Closed

Description

@JacobStephens2

Parent

#139

What to build

A Spec run goes as far as it can, and ends as a Failed spec run when any Ticket isn't done.

  • Which Tickets run. A Ticket is ready when it is open, is not an Unready Ticket (labelled ready-for-human, needs-info, wontfix or needs-triage), has no sub-issues of its own, has every blocker closed, is not running, and hasn't failed in this Spec run. An open Ticket with no triage label is taken.
  • What never runs. Unready Tickets, Tickets with sub-issues (treated as unready), Tickets blocked by an open issue outside the Spec, Tickets in a dependency cycle, and every Ticket downstream of any of these or of a failed Ticket. A blocker outside the Spec that is closed is satisfied.
  • Failures. A Ticket whose Run fails is not retried in this Spec run; it stops only the Tickets it blocks, and every other reachable Ticket still runs.
  • Re-reading the graph. The graph is read again from GitHub whenever a Ticket's Run ends, so labelling a Ticket, adding one, or closing one by hand takes effect in the same Spec run.
  • The end. When nothing is running and nothing is ready: if every Ticket is done, go on to the Spec PR as before. Otherwise the Spec run is a Failed spec run: no Spec review, exit 1, and a summary on stderr with one line per Ticket not done: failed (with its cause and session log), blocked (by which Ticket or outside issue), unready (with which label, or "has sub-issues"), or in a cycle (naming it). Landed Tickets are listed with their PR.

Help and the README explain what makes a Ticket unready and that a Spec run takes every Ticket it can reach.

Acceptance criteria

  • A Ticket labelled needs-info is not run, nor is a Ticket it blocks; an independent Ticket still lands; exit 1 with both named in the summary
  • Each of ready-for-human, wontfix and needs-triage makes a Ticket unready; an unlabelled open Ticket is run
  • A Ticket whose Run fails stops only its dependents; independent Tickets still land; the summary gives its cause and session log
  • A failed Ticket is not started a second time in the same Spec run
  • A Ticket blocked by an open outside issue waits; one blocked by a closed outside issue runs
  • Tickets in a cycle don't run and the summary names the cycle
  • A Ticket with its own sub-issues is not run and is reported as unready
  • Removing a Ticket's needs-info label while another Ticket runs lets it run in the same Spec run
  • A Failed spec run starts no Spec review
  • Help and README explain Unready Tickets

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions