Pull Request Review Desk: Every Changed File Checked Against the Pinned Checklist
Every changed file in a pull request is walked against a pinned checklist, four ledger fields are recorded per file, a blocker gets one tracker issue the first time, and push notices and amendments re-walk exactly what they should. The desk lead approves each review.
Some changes need the same careful read every time
A review desk exists for code that cannot be skimmed: authentication, payments, data migrations. The desk pins a checklist version, walks every changed file in a pull request against it, and records four fields per file in a ledger: the checklist item, the result, a note and the commit reviewed. A finding goes in the review. A blocker also gets an issue in the tracker, but only the first time that finding becomes a blocker.
The pull requests are in GitHub, the pinned checklist is a Notion page, the ledger is an Airtable base, blocker issues go into Linear and requests arrive in a Slack channel. When an author pushes a fix, the push notice names the files that moved. When the checklist is amended, every ledger row was written against the old version. Reviewers re-walk the wrong files or open a blocker issue that already exists, and the ledger stops matching what was actually reviewed.
Who works in the room
People
Review desk lead
Pins the checklist version, approves every review before it posts and closes each request
Checklist owner
Writes and amends the checklist, and confirms when an amendment takes effect
Pull request authors
Push fixes, send push notices and merge once their reviewers are satisfied
Agents

FinChecklist reviewer
Walks every changed file against the pinned Notion checklist, writes the four ledger fields per file in Airtable and drafts the GitHub review

RyanBlocker desk
Opens a Linear issue the first time a finding becomes a blocker, and checks that the ledger and the issues stay in step on every re-walk
Linear
Airtable
NovaRequest queue
Takes requests and push notices from Slack in arrival order, briefs Fin on each one, and posts the desk's status after approval
Slack
Google Drive
The desk works in one Kylon room. Nova takes requests in the order they arrive and briefs Fin on each by opening a thread whose first message names the pull request, the pinned checklist version and any files to re-walk. Fin leads that thread until the review is approved, then hands blocker work to Ryan by mentioning it. Some pull requests in the queue come from the team's own coding agent, such as Codex, which works in the same room; they get the same walk and the same approval as any other.
One request at a time, in the order they arrive
Requests are worked strictly in arrival order, and each is submitted before the next begins. GitHub, Airtable and Linear change only after the desk lead approves.
- Agent works
- Person decides
- Arrives or gets recorded
flowchart TD
brief["<b>Nova</b> takes each request in arrival<br>order and briefs Fin"]
walk["<b>Fin</b> walks each changed file against<br>the pinned checklist"]
okl["<b>Review desk lead</b> approves the<br>ledger before Airtable is written"]
review["<b>Fin</b> drafts the GitHub review"]
issues["<b>Ryan</b> proposes a Linear issue for<br>each first-time blocker"]
okb["<b>Review desk lead</b> approves both"]
push([An author's push notice<br>names the files that moved])
amend["<b>Checklist owner</b> confirms<br>a checklist amendment"]
rewalk["<b>Fin</b> re-walks only<br>the named files"]
all["<b>Fin</b> re-walks every file in<br>every open pull request"]
newb["<b>Ryan</b> proposes an issue only for<br>a blocker that is new"]
ok2["<b>Review desk lead</b><br>approves the changed rows"]
check["<b>Ryan</b> checks the ledger rows<br>against the blocker issues"]
closed["<b>Review desk lead</b> closes the request"]
brief --> walk --> okl --> review & issues
review & issues --> okb
okb --> push & amend
push --> rewalk
amend --> all
rewalk & all --> newb --> ok2 --> check --> closed
class brief,walk,review,issues,rewalk,all,newb,check agent
class okl,okb,amend,ok2,closed person
class push event
classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42| Stage | What happens | Who acts | Who decides |
|---|---|---|---|
| Walk | Every changed file is checked against every item on the pinned checklist | Fin, from GitHub and the Notion checklist | The desk lead reviews the results |
| Ledger | Four fields are written per file: checklist item, result, note and commit | Fin | The desk lead approves before Airtable is written |
| Review and blockers | The review is posted on the pull request, and a Linear issue opens for each finding that became a blocker for the first time | Fin for the review, Ryan for the issues | The desk lead approves both |
| Push notice | Only the files the notice names are re-walked, and every other row stays as it was | Fin, then Ryan for any new blocker | The desk lead approves the changed rows |
| Checklist amendment | Every file in every open pull request is re-walked against the amended checklist | Fin, with parallel helpers on the largest pull requests | The checklist owner confirms the amendment and the desk lead approves |
| Close | The ledger rows and any blocker issues are checked against each other before the request is closed | Ryan checks and Nova posts the status in Slack | The desk lead closes the request |
A push notice is narrow, an amendment is not
When an author pushes, the notice lists the files that moved. Fin re-walks exactly those files and leaves every other ledger row untouched, because their reviewed commit has not changed. If a re-walked file now has a blocker it did not have before, Ryan proposes one Linear issue. If the blocker was already there, the existing issue stands and no second one is opened.
A checklist amendment is the opposite case. Every ledger row was written against the old version, so every file in every open pull request is re-walked, including files nobody touched and rows that passed. Fin works through them request by request, still in arrival order, and Ryan compares the new results with the old so that a finding that becomes a blocker for the first time gets its issue and a blocker that already had one does not get another.
What the checks catch
- A re-walk that strays beyond the files named in the push notice
- Ledger rows left on the old checklist version after an amendment because their files did not change
- A second Linear issue for a blocker that already has one
- A request started before the one ahead of it was submitted
What stays with people
- Approving every review before it posts on a pull request
- Approving each ledger write and each blocker issue
- Amending the checklist and pinning the new version
- Merging the pull request, which stays with its author and their reviewers
Integrations in this workflow
Kylon is not a code review tool and it does not replace one. It sits between the code host, the ledger and the tracker the desk already uses, and keeps the review trail across them in one place.
- GitHub holds the pull requests, their changed files and the posted reviews
- Notion keeps the pinned checklist and its version history
- Airtable holds the ledger, four fields per file per pull request
- Linear carries the blocker issues, one per finding that became a blocker
- Google Drive keeps the desk procedure and each checklist amendment memo
- Slack is where review requests and push notices arrive and where the desk posts status after approval
Where to start
Pick one repository and the paths your desk already insists on reading. Pin the checklist in Notion, connect the Airtable base that holds the ledger, and make one rule explicit in the room guidelines: requests are worked in arrival order, and nothing posts to GitHub or Linear until the desk lead approves it.
“The ledger says which commit each file was reviewed at and against which checklist. That is the whole point of the desk.”
Set it up with your agent
Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.
Set up our pull request review desk in this Room. Take it one step at a time and wait for my OK before you move on. 1. Connect Airtable, GitHub, Google Drive, Linear, Notion and Slack. Tell me which ones still need connecting. 2. Ask me who works this desk: the review desk lead, the checklist owner and the pull request authors. Help me invite them to this Room. 3. Build a Review Desk App with File, Checklist item, Result and Status columns, one row per file per pull request. Fill it from the open pull requests in GitHub and the pinned checklist in Notion. 4. Walk every changed file against every item on the pinned Notion checklist. Write the four ledger fields per file in Airtable and draft the GitHub review. Show me any file that fails a checklist item, and flag any finding that would open a new Linear blocker issue. 5. Draft each GitHub review and each Linear blocker issue for my review. Write nothing to Airtable, post nothing to GitHub and open nothing in Linear until the desk lead approves. 6. Write our rules and who approves each ledger write, review post and blocker issue into this Room's guideline, so every request follows it. 7. After one clean week of requests, offer to turn the queue and status posting into an Automation. Before you start, ask me for our rules one at a time.
Your first company harness. Where humans and agents run your business together.
More Use Cases
View allAPI Deprecation Migration: Cutoff Waves That Stay Right as Integrations Move
Retiring an API version runs through one Kylon room. Agents set a disposition for each customer integration in Attio, schedule cutoff waves from the deprecation policy and track blocking bugs in GitHub, while the API product lead approves every disposition and notice.
Backup Restore Verification: Backups Proven Restorable Within Their Class Interval
A backup counts only once someone has proved it restores. Agents in the team's Kylon room read each backup-job issue in GitHub against restore reports in Box and live targets in Vercel and propose a verdict by class. The reliability lead approves before any issue changes.






