On July 27 I opened a pull request of mine that had been sitting for eight days. It was against swiftarr, an open-source Swift server, and GitHub showed it as CHANGES_REQUESTED. I went in expecting to find work I had left unfinished. The code was already done.
A maintainer had reviewed it on July 19 and left three inline comments. The pagination type I added did not belong in the Foundation extensions file and should not have been an enum. The controllers needed a general initializer that read start and limit off the request query. And one handler was a function calling a function that could collapse into a property. I pushed both fix commits the next morning, about fifteen hours after the review.
What I never did was reply on the threads. CHANGES_REQUESTED is a state on the pull request, not a description of the code. A push does not clear it. Only the reviewer clears it, and a reviewer looking at an unanswered review has no reason to spend time re-reading a diff. A second reviewer had approved the pull request fourteen seconds after the changes were requested, so approval was never the missing piece.
The comment I finally wrote took each of the three points and named the commit that addressed it, with what changed and why. I also disagreed with two pieces of it. I kept an explicit initializer next to the new one, because several handlers decode a combined options struct and would otherwise parse the query twice. And I did not take the suggestion to pass the response paginator in as the input type, because it carries a total that the input side does not have. I said both plainly and offered to change either one.
The maintainer approved it six hours and forty-two minutes later and merged it that night. Eight days from the requested change to the merge, and seven of those days had nothing to do with the code. A different pull request of mine merged the same evening on the Open Policy Agent repository. That one opened thirty-five hours earlier and never carried a requested change.
The rule I am keeping is that a commit is not a reply. If a reviewer wrote three points, the answer names three points, points at the commit for each one, and says out loud where I disagreed and why. Nobody should have to re-derive that mapping from a diff. Eight days of a finished fix sitting still was the price of assuming the code would speak for itself.