Skip to content

Show Task work as a Flow across Desktop, CLI and chat - #195

Merged
madskronborg merged 29 commits into
masterfrom
madskronborg/run-pipeline-view-replacement
Oct 26, 2026
Merged

madskronborg merged 29 commits into
masterfrom
madskronborg/run-pipeline-view-replacement

Conversation

@madskronborg

Copy link
Copy Markdown
Collaborator

Show a Task's work as a Flow of Steps across Desktop, CLI and chat, so people can see and act on progress, waits and expected work. Include repository Waves, cross-Machine links, forge release progress, Step-scoped evidence, pause-before/note steering and usual durations; Renovate merges one MR per turn.

Verified on 8d1c18f1: gate-r2-final-tests (72 passed), gate-r2-final-typecheck, gate-r2-final-lint and gate-r2-final-format; Collie's three isolated gate reruns also passed. The full gate recorded 4,285 passed, 11 skipped and the three failures listed below before those reruns.

Required verification: check — /home/mk/.local/share/mise/installs/bun/latest/bin/bun run check (in /home/mk/.herdr/worktrees/.collie/madskronborg/run-pipeline-view-replacement).

The final gate fix was checked by the implementer and not re-reviewed: it added the lookup fixture's shown response, separated the five-answer summary assertions from the complete Flow, and matched the steering ledger's exact filename.

After merge, the planned release-build visual, keyboard/screen-reader and live pause-before-MR exercises remain.

Not settled by the run

The inherited “Flow is not on this branch” build note is superseded: this PR implements all 11 Flow tickets.

  • assumed in build: This branch is a fresh replacement off origin/master 0.87.0 and has no ea0b1c8, so I rebuilt the ticket here test-first rather than calling it already proven. The code is that commit's work as merged with master in 13d218f (PR Read a Run's waits once, for the board and the Flow alike #189), because the only difference between that branch's board.ts and this one's is this ticket.
  • assumed in build: parked is { reason } | null rather than the bare reason, because a Run that waits with no question and no recorded reason must still read as parked: the board's its pane stall line depends on it, and a bare null could not tell that Run from one that is not parked.
  • assumed in build: blocked in the board aggregate is now the first blocked agent among the Task's Runs, in everyRun order, rather than the first in the agent list. This makes no difference in practice, because agentsOf is built over the same everyRun, and the unedited board tests stay green.
  • assumed in build: The module's header comment no longer mentions the Flow (ticket 02), because the Flow is not on this branch.
  • check: interrupting a fixture command escalates when its leader ignores SIGTERM (test/command.test.ts) failed, then passed when run again alone on the same tree — a Flake, so this Run has not settled it.
  • check: with no agent profile a launch types and passes what it always has (test/agents.test.ts) failed, then passed when run again alone on the same tree — a Flake, so this Run has not settled it.
  • check: notes wait for B's first prompt, while a withdrawn note and a withdrawn pause do not (test/step-ahead.test.ts) failed, then passed when run again alone on the same tree — a Flake, so this Run has not settled it.

Mads Kronborg and others added 24 commits October 23, 2026 08:38
The board read each wait rule inline in its per-Task closure, so any other
view of a Run's waits could only copy them and keep the copies equal by hand.
run-waits.ts reads them for one Run; buildBoard aggregates its readings as
before, so no card, sentence or protocol field changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Run's work had no declared unit, so nothing could say where a Run is
in it. A module now makes Steps with `step`, lists the `path` it expects
and may `forecast` again; the host records each Step's entry, leave and
failure inside Activities, and builds one Run's Flow from those records,
its launches, its questions and children. RunDetail and `run show` carry
the same Flow. `run wait --follow` names operations, since a Step may
hold several or none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Run's Flow showed one Run in isolation, so a Task's children, its waits and
its merge request's way to production were invisible in the one model every
front door reads. The Flow is now the Task's: each of its Runs a row, each wait
on the Step it holds up, children of their own Task and Repo runs as links,
the primary offer at the end of the leading row, and a Release row once there
is a merge request. Each TaskView carries the strip a card will draw, and the
board, run show and chat's collie_run read the same value.

A wait for usage is recorded by the host so a Step can say whose session
resets and when.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@madskronborg madskronborg self-assigned this Oct 23, 2026
Mads Kronborg and others added 5 commits October 23, 2026 15:37
The Flow names a Step's agent before the host has polled that agent's
status, so CI could read the build node with no Watch, Tell or stalled
wait yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An agent's launch is recorded before its notes are taken and its prompt
written, so CI could read b.prompt.md before it existed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Master's #192 added the Stage Run and reshaped the release and implement
loops, leaving this branch in conflict. The merge keeps the Flow Steps of
release and implement, and declares the Stage Run's own Steps so every
shipped Workflow still draws its path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Master moved forge calls to HTTP with the CLI's login, asks when a criteria
hand-back stalls on a blocker, and offers a review's fix only where it can
run. The Build Step now wraps the stalled-hand-back loop, the review menu Step
wraps master's fix-aware menu, a GitHub check's address is read from the
GraphQL panel, and the Flow scenarios run on the HTTP fake forge.
…peline-view-replacement

# Conflicts:
#	src/README.md
#	src/launches.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant