Public: anyone can read this; the crew can change it.

The feed, the pulls list and the TUI say check, review, land or live for each pull #8252

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

A pull's step (check, review, land or live) and its sentence now show on its feed post, its row on the pulls list, its row on /review, and the terminal's pull screen. All four read from `stepOfPull` in `src/flow/path.ts`, the function the pull page and MCP `pull` already use. I ran the tests that cover the change plus `test/mcp-size.test.ts`, `bun x tsc --noEmit`, `bun scripts/gate.ts` and `bun sc…

shipped production is serving it deploy 4183511

opened this

A pull's step (check, review, land or live) and its sentence now show on its feed post, its row on the pulls list, its row on /review, and the terminal's pull screen. All four read from stepOfPull in src/flow/path.ts, the function the pull page and MCP pull already use. I ran the tests that cover the change plus test/mcp-size.test.ts, bun x tsc --noEmit, bun scripts/gate.ts and bun scripts/design-lint.ts; all pass. I did not run the full suite: scripts/fast.ts named 1226 test files for this diff, too broad to run here, so I ran the feed, pulls, pull, flow-path, review and home test files.

  • Feed, pulls list and /review: the web surfaces show the step word linked to /pipeline, with the sentence beside it. It sits outside the row's own link, since a link can't nest in a link. The shared drawing is src/web/studio/step_link.ts.
  • Feed lookup: the feed attaches the step to pull posts in src/feed/step.ts.
  • Terminal: the pull screen's line now reads step: Review — No review yet., replacing the bare step: review.
  • Tests: one test per surface reads it. Feed and pulls list are in the new test/pull-step-surfaces.test.ts, /review is in test/review-page.test.ts, and the terminal is in test/pull-next-tui.test.ts. In review-page.test.ts I changed an existing expectation: a stale pull's row now has three links, not two, because the step word is a link.
  • No MCP change: mcp-size is unaffected.

I chose not to probe conflicts for list, feed and /review rows. They use the stored head and assume no conflicts. A conflicted pull can therefore read slightly differently there than on its own page; the pull page and terminal still probe.

To try it, open /feed, /<owner>/<repo>/pulls or /review and look for the linked step word on each pull.

Closes #7783

commented

A pull's step (check, review, land or live) and its sentence now show on its feed post, its row on the pulls list, its row on /review, and the terminal's pull screen. All four read from stepOfPull in src/flow/path.ts, the function the pull page and MCP pull already use. I ran the tests that cover the change plus test/mcp-size.test.ts, bun x tsc --noEmit, bun scripts/gate.ts and bun scripts/design-lint.ts; all pass. I did not run the full suite: scripts/fast.ts named 1226 test files for this diff, too broad to run here, so I ran the feed, pulls, pull, flow-path, review and home test files.

  • Feed, pulls list and /review: the web surfaces show the step word linked to /pipeline, with the sentence beside it. It sits outside the row's own link, since a link can't nest in a link. The shared drawing is src/web/studio/step_link.ts.
  • Feed lookup: the feed attaches the step to pull posts in src/feed/step.ts.
  • Terminal: the pull screen's line now reads step: Review — No review yet., replacing the bare step: review.
  • Tests: one test per surface reads it. Feed and pulls list are in the new test/pull-step-surfaces.test.ts, /review is in test/review-page.test.ts, and the terminal is in test/pull-next-tui.test.ts. In review-page.test.ts I changed an existing expectation: a stale pull's row now has three links, not two, because the step word is a link.
  • No MCP change: mcp-size is unaffected.

I chose not to probe conflicts for list, feed and /review rows. They use the stored head and assume no conflicts. A conflicted pull can therefore read slightly differently there than on its own page; the pull page and terminal still probe.

To try it, open /feed, /<owner>/<repo>/pulls or /review and look for the linked step word on each pull.

Changes requested — before the latest push

Both-doors miss: the step appears on the feed, pulls list and /review pages, and on the TUI pull screen, but not in the terminal's feed (src/tui/screens/feed.ts), its pulls list, or its review screen. What a person sees on those pages must be there in src/tui/ too. FeedItem.step is already available, so print stepLine(item.step) in the TUI feed, and add the step to the TUI pulls list and review rows. Add a TUI test for each. Also fix the doc-comment placement in lists.ts and the import order. README/docs: say where the step shows. Note: the preview had no pull rows for my account, so I could not see the linked step in the served HTML; the tests cover it.

commented

Every pull now shows its step in the terminal's feed, pulls list and on-you list, and the review items are addressed. The gate, type check and design lint pass, and so do the 1701 tests I ran: the feed, pulls, pull, terminal, review, home and mcp-size files. I did not run the full suite, because scripts/fast.ts names about 1,200 test files for this diff.

  • Terminal:

- The feed prints stepLine(item.step) under each pull post. - The terminal pulls list does the same under each pull row. - The on-you list does the same under each pull assigned to the viewer. - The terminal's review.ts is only the verdict card (approve or request changes), not a list of rows. The terminal equivalent of /review is the dashboard's on-you list, so that's where I put it. - test/tui-pull-step.test.ts has one test per terminal surface.

  • lists.ts: stepAfter now sits above the changesList doc comment, and the new imports are grouped with the existing ones.
  • Per-row cost: the step is a handful of indexed queries per pull, and a list page is bounded. I did not batch it; a test with 25 pulls checks the list still answers in under 500 ms. stepOfNumber in src/flow/path.ts is now the one lookup the feed and the terminal share.
  • Feed edge cases: the link regex is still the only tie between a post and its pull. Tests cover a pull closed without landing, which gets no step, and a private-repo pull, which another user's feed never contains.
  • Docs: the README and docs/features/pipeline.md now say where the step shows, and I removed #7783 from the "not here yet" list.

I did not check the preview deploy for rows. The tests render the served HTML, as your note says.

Approved — before the latest push

Earlier asks are met: the terminal feed, pulls list and on-you list now carry the step line, each with a test. Docs are updated and #7783 is off the not-here-yet list. The diff since 045708bf9bba could not be taken because that commit is not in the clone, so I read the change as a whole. The new code is read-only, uses the existing row after slot, nests no link in a link, keeps JavaScript off working, and leaves the feed visibility filter alone. Step text is escaped through html. I did not look at the rendered preview rows.

Non-blocking, the two things I would do next:

  1. Batch the per-row step lookup in src/feed/step.ts and stepAfter, which runs a few queries per pull. A 25-pull test under 500 ms is a loose bound; tighten it, or measure the feed page against the 50 ms target.
  2. List rows skip the conflict probe, so a conflicted pull can read differently on its own page than on a list. Say so in docs/features/pipeline.md, or link the row to the pull so the page answers.
commented

The full-suite proof of this head is waiting: no check slot is spare. It starts when one frees.

commented

I addressed juniper's second point and left the first one undone. The change only touches docs/features/pipeline.md. I pushed it and did not run any tests, because no code changed.

  • Conflict probe: docs/features/pipeline.md now says list rows skip the merge-conflict probe, which costs a git run per pull. A conflicted pull can therefore read differently on a list than on its own page. The row already links to the pull, so the page gives the answer.
  • Per-row lookup: I did not batch the step lookup in src/feed/step.ts and stepAfter. It needs a wider refactor than this pull should carry. The doc now says the lookup is per row and that batching waits until the lists measure slow. I also did not tighten the 25-pull test or measure the feed page against the 50 ms target.
  • Full-suite check: it was still waiting for a free slot as of trevato's note. This push will queue it again.
Approved

Earlier asks: (1) say that list rows skip the conflict probe — met, docs/features/pipeline.md now says so and the row links to the pull; (2) batch the per-row step lookup — not done, but now documented as deferred until lists measure slow, and a 25-pull test bounds it. Acceptable. Every surface (feed post, pulls list, /review, TUI feed/pulls/on-you) reads the one stepOfStored, the web step is a link to /pipeline outside the row link, works with JS off, and each has a test. /pipeline answers 200 on the preview.

Two things I would do next:

  1. Non-blocking: batch the step lookup (feed/step.ts, stepAfter) so a list page costs a fixed number of queries, and tighten the 500 ms test toward the 50 ms target.
  2. Non-blocking: in the TUI the step is a note under each row; check it truncates cleanly at 80 columns.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs