Check a pull request against its story
The story check reads the ticket a pull request names and says, criterion by criterion, how far the ticket's pull requests deliver it.
On this page
A code review asks “is this code right?”. A story check asks “does this work do what the ticket asked for?”. Limn reads the ticket from your issue tracker, reads every open and merged pull request that names it, in any repository of yours, and judges each acceptance criterion against the code. It is one check per ticket, not per pull request, so a ticket split across three pull requests gets one answer.
#What you need
- An issue tracker for the workspace (Jira, GitHub Issues, Linear or Notion), so Limn can find the ticket a pull request names. Every story is read from the tracker.
- AI set up in Settings → AI, with Claude or Codex signed in.
#Where you see it
- In a pull request’s AI Review tab, in the Story check section: the ticket’s criteria this pull request delivers and what belongs in it, and a See the whole ticket link to the story view.
- In the story view: the whole ticket across all its pull requests, with how many criteria other pull requests meet and what each pull request adds.
- On This Sprint cards (“3 of 4 criteria met”) and on Open pull requests, as a coverage chip.
Story check starts in 1m 40s — waiting 2 quiet minutes after the last push to payments#612
Post 1 gap to this PR Re-check
#What the check says
- A summary of two or three short sentences: how far the pull requests deliver the ticket, and the most important thing left.
- Each criterion with a status: Met, Met outside code changes, Partly met, Not met or Can’t tell from the code, the pull request that does it, and the evidence. See Acceptance criteria.
- Asked for outside the criteria: things the title or description asks for that no criterion names and no pull request does.
- Not asked for: work in the pull requests that the ticket does not ask for.
- What each PR adds (in the story view): a plain description of each pull request’s part.
- Reference docs, when docs are on for reviews: passages from your library that support or contradict the story. See Docs in reviews.
#Run a check
- Open the pull request and choose the AI Review tab.
- In Story check, press Check (or Re-check when one has run). In the story view, press Re-check in the header.
- Wait for the result. A check usually takes a few minutes, as the agent reads every pull request.
To stop a check that is waiting in line or running, press Stop in its Story check section. A stopped automatic check does not start again by itself until something changes: a push, a pull request joining or merging, a change to the ticket or a new comment. The line says “No automatic story check — you stopped it”.
When the pull request names no ticket
Limn finds tickets in the pull request’s title and branch name (on GitHub Issues, in its “Fixes #12” links; on Linear, also in Linear’s own links). If the ticket is not there:
- Open Add tickets in the Story check section.
- Paste one or more ticket links or keys, like
PROJ-123. Limn shows a chip for each one it can read. - Press Check. Limn links the tickets to the pull request and starts one check per ticket.
A ticket on another tracker or another site is refused, because Limn only reads the workspace’s own tracker with its own sign-in. Without a tracker there is no story check.
#Automatic checks
When auto review is on for the workspace, Limn checks a ticket by itself when its pull requests change: a push, a pull request joining or merging, a change to the ticket text, or a new comment while a criterion is not done.
- A two-minute wait. Limn waits until the ticket’s pull requests have been quiet for 2 minutes, so a burst of pushes, or three pull requests linked a minute apart, gets one check. Every new change restarts the 2 minutes. After 20 minutes of changes it starts anyway.
- One line says when. The AI Review tab and the story view show the same line, for example “Story check starts in 1m 40s — waiting 2 quiet minutes after the last push to backend#615”, or why no check will start: “No automatic story check — auto review is off in this workspace”.
- Not when every criterion is met. When the latest check found every acceptance criterion met, Limn does not check the ticket again by itself. The line says “No automatic story check — the last one found every criterion met”. A change to the ticket text starts automatic checks again, because the criteria may have changed. This Sprint’s Refresh skips these tickets too.
- A daily limit. A workspace has up to 60 automatic story checks a day. After that the line says “Story check starts at 00:00 UTC”. Tickets with your own pull requests are not limited.
- The spend budget. An automatic check is skipped when your AI spend budget is used up.
#Post the gaps to GitHub
The criteria that are not met, and the things asked for outside the criteria, are “gaps”. Each gap belongs to one pull request: the one where the check says the code should go. Press Post 1 gap to this PR (the number changes) to post them as one comment on that pull request. A gap is posted once; a later check posts only new gaps, in a new comment.
#When a check is out of date
A check is tied to the ticket text and to each pull request’s latest commit. It goes out of date when the story is edited, a pull request is pushed, joins, leaves or merges, or a person comments while a criterion is not done. The header names what changed, for example “api#88 pushed since”, and the last result stays on screen until the next one.
#The pull request review and the ticket
The pull request’s own AI review does not judge the story; that is the story check’s job. It does use the ticket in one way: just before a review runs, Limn reads the ticket again and passes on its open points, the decisions the ticket left undecided (“wording to be confirmed by design”). The review lists them under Open points, marked Not blocking, with the code that depends on each. They never change the review’s verdict. Where open points come from is set per issue type in Ticket fields.
#Why it helps
Most “done” tickets that come back were not wrong; they were incomplete. A story check reads the whole ticket, across repositories, against the code, and puts what is left in front of the developer while the pull request is still open.