Skip to content

Bench 0.4-alpha — phases

Latest

Choose a tag to compare

@istos istos released this 03 Aug 04:56
· 3 commits to main since this release

Phases. Work that is a run of related cards rather than one card now
has a shape on the board. A phase is a card like any other, marked
**Type:** Phase, with a ## Cards section naming its members in the
order they run — document order is run order, and membership runs one
direction only, so a member's phase and position are derived rather than
written twice.

Running one cuts phase/<stem> from the newest main it can see. Each
member is branched from the phase's tip, run headless exactly as
start work
runs any card, and merged back into the phase branch when
its checks are green; then the next one starts. Five conditions halt the
run rather than stepping over a card, main is merged into the phase
branch on every beat so a long run never drifts into one enormous
conflict, and nothing retries by itself. At the end: one PR, from the
phase branch into main, for a human. Merging it moves every card the
phase carried to done/ and clears the worktrees and branches behind
them — in a single commit naming all of them.

The runner is a beat, not an agent, and it is stateless. Each pass
recomputes what has landed from git and from the phase card's own
## Phase log, so a restarted board resumes a phase by looking rather
than by remembering.

Where a phase is drawn. The Board is the work you are personally
holding, so a phase's members are not listed there — nothing is moved,
deleted or marked, and each column says how many it is not showing. They
live in Phases, a fourth view with one swimlane per phase: a head
carrying the run's progress and its controls, five stage columns whose
last one is Merged in rather than done/, the cards drawn exactly as
the Board draws them, and the phase's own log beneath the lane. A halt is
impossible to miss — the header chip holds it, the view switcher marks it
from wherever you are, a toast fires, and the member card wears its own
failure independently.

Also in this release

  • ⟶ phase on a backlog/ or to-do/ card appends it to a waiting
    phase's list, without the file being opened.
  • A board with no agent commands says so — a header chip naming the
    setting and the file that holds it, and a line on every launch that
    would have run them. It never refuses a launch.
  • A work agent refuses a phase card, naming ▸ run phase instead;
    the read-only pair are still allowed.
  • Headless runs are told they get one turn, because nobody is there
    to answer "shall I continue?".
  • An archive ⌸ chip on the card, for the tidy-up the length of the
    board is too far to drag.
  • A redraw keeps where you were looking — scroll position survives
    every live update.
  • A pinned port stays pinned across a restart: the probe now binds
    the way the board binds, so a socket left in TIME_WAIT no longer hops
    a restart off its own port.
  • Sync rides one resolved remoteBOARD_GIT_REMOTE, else the
    checkout's first — and stalls saying so when there is none, rather than
    looking healthy while syncing nothing.

Docs

bench.12vectors.com has the phases chapter
in three pages — Phases,
Running a phase
and Where a phase is
drawn
— cut,
like every other page, from AGENTS.md itself.

Install or update

mkdir .task-manager && curl -L \
  https://github.com/12vectors/bench/releases/latest/download/bench.tar.gz \
  | tar -xz -C .task-manager
./.task-manager/start.sh

An existing install updates in place with ./.task-manager/update.sh,
which replaces manager/core/ and the top-level scripts and touches
nothing under manager/local/.