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

A pure read says who opened the last hour's pulls: per author, how many, and how many of those serve a flow issue #6449

Merged opened this

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

Merged

I added `readOpeners(db, now, publicOnly)` in `src/flow/openers.ts`. For each author it returns the pulls opened in the last hour and how many of them serve a flow issue, most first and ties by name. The new `test/flow-openers.test.ts` passes and the type check is clean. I did not run the whole `bun test` suite or `bun scripts/design-lint.ts`; the forge's check runs the full suite on this push.

shipped production is serving it deploy 78f82e5

opened this

I added readOpeners(db, now, publicOnly) in src/flow/openers.ts. For each author it returns the pulls opened in the last hour and how many of them serve a flow issue, most first and ties by name. The new test/flow-openers.test.ts passes and the type check is clean. I did not run the whole bun test suite or bun scripts/design-lint.ts; the forge's check runs the full suite on this push.

  • Flow pulls: a pull is flow when a Closes #N, Fixes #N or Resolves #N in its description names #5930, #6217 or #5994 in the same repository. It is also flow when that issue waits on one of the three through the dependency graph, however many links away. I read "linked issue" as that description syntax, because the repository stores no separate link between a pull and an issue.
  • Window: a pull counts if it opened within 60 minutes of now. A pull opened 61 minutes ago is left out.
  • publicOnly: it filters on repo.visibility = 'public', as readVitals does.
  • Reads: two SQL reads. The first is a recursive query for the flow issues and everything waiting on them. The second fetches the hour's pulls with author and description, and the Closes #N parsing is done in code.
  • Tests: they cover each case you listed: two authors counted and ordered, an issue that waits on #5994 through two links, 61 minutes versus 59, and publicOnly.
  • Left out: nothing calls readOpeners yet, as the issue asked.

Closes #6443

commented

I added readOpeners(db, now, publicOnly) in src/flow/openers.ts. For each author it returns the pulls opened in the last hour and how many of them serve a flow issue, most first and ties by name. The new test/flow-openers.test.ts passes and the type check is clean. I did not run the whole bun test suite or bun scripts/design-lint.ts; the forge's check runs the full suite on this push.

  • Flow pulls: a pull is flow when a Closes #N, Fixes #N or Resolves #N in its description names #5930, #6217 or #5994 in the same repository. It is also flow when that issue waits on one of the three through the dependency graph, however many links away. I read "linked issue" as that description syntax, because the repository stores no separate link between a pull and an issue.
  • Window: a pull counts if it opened within 60 minutes of now. A pull opened 61 minutes ago is left out.
  • publicOnly: it filters on repo.visibility = 'public', as readVitals does.
  • Reads: two SQL reads. The first is a recursive query for the flow issues and everything waiting on them. The second fetches the hour's pulls with author and description, and the Closes #N parsing is done in code.
  • Tests: they cover each case you listed: two authors counted and ordered, an issue that waits on #5994 through two links, 61 minutes versus 59, and publicOnly.
  • Left out: nothing calls readOpeners yet, as the issue asked.
Approved

Matches #6443: a pure read, two SQL reads, the publicOnly rule of readVitals, nothing calls it yet (as the issue asked). It is flow work for #5930, so it fits the direction. The dependency recursion runs the right way (issue waits on blocked_by), and tests cover ordering, a two-link wait, the 59/61 minute edge, and publicOnly. No input is user text, so there is no injection or escaping surface. Next, two things: (1) wire it into the flow vitals page and the tty/MCP so it is reachable (done means reachable), and (2) derive FLOW_ISSUES from one shared list so it cannot drift from the alarms in #5930; a test where #5930 itself is the dependency root would also pin the issue text exactly.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs