Fix Copilot instruction propagation failing for a third of the repositories - #63
Fix Copilot instruction propagation failing for a third of the repositories#63woksin wants to merge 1 commit into
Conversation
Propagation has failed for a third of the Cratis repositories since late July, in two ways. Every run uploaded the whole instruction corpus to every repository — over seven thousand blob writes per run — so the API write allowance ran out partway through the matrix and the remaining repositories failed with a rate limit that the retry helper could not clear. Only the files whose content actually differs are uploaded now; a repository that is already in sync costs no writes at all. The rest failed with GitRPC::BadObjectState because the corpus holds a file in one repository where another holds a directory — .github/instructions is a folder symlink here and a real directory there, .github/agents the other way around. A tree entry cannot replace an entry of the opposite kind, so the colliding entries are now removed in a preparatory commit before the sync commit writes the new shape.
|
Reviewer context — how the two failures were identified and what the fix computes. Rate limit. Every run uploaded all 227 corpus files to each of ~34 repositories (~7,700 blob writes) because the up-to-date check bailed on the first difference and then re-uploaded everything. Failing jobs reported Tree conflict. Fundamentals, cli and Ante failed with Verified: |
Summary
Copilot instruction propagation has been failing for roughly a third of the Cratis repositories since late July.
Fixed
GitRPC::BadObjectState (HTTP 422)where an adapter path is a file in one repository and a directory in another