
A client says the change landed on main, or says it never left the branch they were shown. Tonight, three proofs, in a repository the agency or the client can open. Name the branch that pull targets: the pull number, the base ref, and the head ref. Show a different pull whose base ref, or whose number, is not this one. Show another client's repository that does not list this pull. If any of the three needs a laptop the client cannot open, you have not shown the branch. You have a title and a guess.
This is the method on one pull request. It is not the ruleset. Which ruleset did that push hit? is the ruleset id, the name, and the enforcement. A pull can be open while no ruleset names its base, and a ruleset can be active while this pull targets a different ref. It is not the review. Which review blocked that merge? is the review that held the merge. A base ref is not a review id. It is not the commit the client is running. Name the commit the client is running is the sha on the deploy. A sha can match the head and still not be the base the pull asked for. It is not the product a price sells, and it is not the store a file joined. Those are different objects, and they are not this number.
None of what follows is a promise about this client's merge time, and none of it is legal advice. The fields below are GitHub's published examples of a pull request, on two pages that do not agree about the head. The counts below that are a 2022 study of other people's public projects. A ref is not a census of your delivery. A median that never opened this repository cannot name the branch the pull targeted tonight. They do tell you which numbers people mix up when they try to sound precise about a pull they have not opened.
The create example on the current REST page sends a string, not an object. The body is title Amazing new feature, body Please pull these awesome changes in!, head octocat:new-feature, and base master. octocat:new-feature is 19 characters. new-feature is 11. master is 6. base, in that request, is a string. The response schema on the same page says base is an object, with a label, a ref, and a sha. A string is not an object. The page also says that getting, creating, or editing a pull request makes GitHub create a test merge commit, and that the test commit is not added to the base branch or the head branch. mergeable can be true, false, or null. Three values. null means a background job has started and you should ask again. true means merge_commit_sha is the sha of that test commit, not the sha of the head. The state enum is open or closed. Two names. Two is not three (GitHub, REST API endpoints for pull requests).
The response example GitHub still publishes on the Enterprise Server 2.18 reference is the same title and the same body, and it is not the same head. number is 1347. state is open. locked is true. draft is false. merged is false. mergeable is true. rebaseable is true. mergeable_state is clean. author_association is OWNER. The title is Amazing new feature. The body is Please pull these awesome changes in!. Those two strings match the create example. The head does not. head.label is octocat:new-topic, which is 17 characters, and head.ref is new-topic, which is 9. 17 is not 19. 9 is not 11. new-topic is not new-feature. base.label is octocat:master, which is 15 characters, and base.ref is master, which is 6. master matches the request string. The head ref does not. Do not collapse the two pages into one response because the title is shared. Write the ref the repository you opened actually stored (GitHub, Pulls, Enterprise Server 2.18).
The shas on that example are the next place a title gets treated as a branch. head.sha and base.sha are the same 40-character string, 6dcb09b5b57875f334f61aebed695e2e4193db5e. merge_commit_sha is a different 40-character string, e5bd3914e2e596debea16f433f57875b5b90bcd6. 40 is not 1347, and the two shas are not each other. The current page's prose says a true mergeable value points merge_commit_sha at the test commit, which is not added to either branch. The example can therefore print mergeable true and a merge sha that is not the head sha. That is the documented split. It is not a reason to call the head sha the base, even though this particular example sets them equal. Equal shas are a fact about the sample. They are not a rule that every pull's head is its base.
The dates and the flags do not describe one moment. created_at, updated_at, closed_at, and merged_at are all the string 2011-01-26T19:01:12Z. Four copies of one timestamp. state is open, merged is false, and closed_at and merged_at are still filled. An open pull is not a merged pull, and a filled merged_at is not the boolean true. locked is true while state is open. draft is false. The milestone on the same object has number 1, state open, open_issues 4, and closed_issues 8. 4 plus 8 is 12. 12 is not 1. The milestone's state is open and its closed_at is 2013-02-12T13:22:01Z. Its created_at is 2011-04-10T20:09:31Z, which is a later calendar day than the pull's 2011-01-26. The sample pull points at a milestone the same sample says was created afterwards. Do not repair that by editing one of the dates. The integer commits on the pull is 3. 3 is not 1347, and 3 is not 12.
The people on the sample are one id worn three times. The user, the assignee, and one of the assignees are login octocat, id 1, site_admin false. A second assignee is login hubot, id 1, site_admin true. A requested reviewer is login other_user, id 1, site_admin false. Three logins. One id. Two values of site_admin. The node_id MDQ6VXNlcjE= is 12 characters, and it is the same on all three. 12 is not 1, and 1 is not 1347. true on hubot is not false on octocat. A label on the pull has id 208045946, name bug, and color f29513, which is 6 characters. The milestone id is 1002604. The repository id is 1296269. Those three integers are not each other, and none of them is the pull number. subscribers_count is 42. network_count is 0. 42 is not 0. permissions on the head repo print admin false, push false, and pull true. pull true is a permission. It is not the pull number 1347.
The study people reach for when they want a merge time did not open this client's repository. Gunnar Kudrjavets, Nachiappan Nagappan, and Ayushi Rastogi selected 100 projects, 10 from each of 10 languages, and analyzed 845316 pull requests. After dropping changes the diff tools did not treat as text, they had 842303. 845316 minus 842303 is 3013. They then removed one pull request whose merge time was earlier than its creation, and they removed the rows whose time-to-merge was zero. The final sample is 826259. 842303 minus 826259 is 16044. 16044 is not 1. If the one inconsistent row sits inside that gap, the zero-time removals are 16043. The page does not print 3013, 16044, or 16043. Do not cite 845316 as if it were the set they modeled (Kudrjavets, Nagappan, and Rastogi, Do Small Code Changes Merge Faster?).
Three additions in that paper do match, and the interesting cells are the ones that do not. The seven weekdays are 132488, 145908, 146326, 143626, 131587, 65845, and 60479. They add to 826259. The ten language counts, from C through TypeScript, also add to 826259. The eight Gerrit and Phabricator projects add to 401790, which is the number the prose prints for those code reviews. Those three sums match the printed totals. The before-and-after table's before row is also N 826259. Its after row, once a Tukey fence is applied, is N 613007. 826259 minus 613007 is 213252. The page does not print 213252. The language table's counts add to the before row, not to 613007. A correlation table uses the same per-language counts, so it is the before set as well. The caption does not say before.
The percentages and the means are not the quotients. They say 100 pull requests, 0.01% of the total, account for 23% of code churn, 1000 (0.12%) account for 53%, and 10000 (1.21%) account for 76%. 100 divided by 826259 is 0.0121%, and the page prints 0.01%. 1000 divided by 826259 is 0.121%, and the page prints 0.12%. 10000 divided by 826259 is 1.210%, and the page prints 1.21%. Do not cite 0.01% as if it were 100 over 826259. The means, they say, differ by orders of magnitude. Before, time-to-merge mean 182 and median 17. After, mean 28 and median 9. 182 divided by 28 is 6.5. One order of magnitude is 10. 6.5 is not 10. Source lines mean 584 before and 32 after. 584 divided by 32 is 18.25, which is not 100. Median 17 is not twice 9, because twice 9 is 18. Median source lines 22 before and 12 after: twice 12 is 24, and 22 is not 24.
The industry cut is a sample, not the branch. They identify 12 projects owned by Apple, Facebook, Microsoft, or Square. 12 is not 10 projects per language, and 12 is not 100 repositories. Industry median size is 43 lines. Non-industry median size is 20. 43 is the Java median in the language table. 20 is not the before-outlier median 22, and 20 is not Shell's median 8. Industry median time is 14.13 hours. Non-industry median time is 17.43 hours. 14.13 is not 17, the before-outlier median. 17.43 is not 17 either. The tests use N 100000 and N 100000. 100000 plus 100000 is 200000. 200000 is not 826259. The Kruskal-Wallis statistics are written H(9) = 9788.44 for time and H(9) = 23475.83 for size, beside 10 languages. 10 minus 1 is 9. The page does not print that subtraction. 9788.44 is not 23475.83. The prose says the medians vary by two to three times. Java's size median is 43 and Shell's is 8. 43 divided by 8 is 5.375. Three times 8 is 24. 43 is not 24, and 5.375 is not between 2 and 3.
Do the three proofs on one real pull, in the repository that actually holds it. First, the binding. Copy the number, the state, the base ref, the head ref, and the two shas. If the request said new-feature and the stored ref is new-topic, write both. Do not keep the title because the title matches and drop the ref because it does not. If state is open and merged_at is filled, write both. If head sha equals base sha, write that they are equal on this pull, and do not promote the equality into a rule. Do not infer 1347 because a sample prints it. Second, the other pull. A different pull, with a different number, or a different base ref, is not this one. A median of 17 hours is not that second pull. If you cannot show a pull that is not this one, you have a counter, not a record. Third, the other repository. A list that belongs to another client does not contain this number. If the only remote is a single shared organization and you cannot say whose pull it is, write that. A tenant you cannot name is the finding.
Three moves feel like the proof and are a second problem. Merging because the title looks finished, before you have copied the base ref. A merge does not tell you which branch you were looking at. Quoting 17 hours, or 0.01%, because it looks precise, while the pull you were asked about is one number, and the projects that produced that median had not opened this repository. Asking a model which branch it was. The model will pick a plausible name. It will not open the pull. A ruleset you have not kept, while the client is arguing about what the push was allowed to do, is which ruleset did that push hit?. Opening that screen does not name the base ref.
The path is ordinary when an operator can open one client's pull without opening the next client's pull as the way to prove it. Cove is an operator portal, a headless CMS, and a marketing platform consolidated into one operator experience. The shape that matters here is one client's repository you can point at, distinct from the next client's repository. That case is not a pull-request ledger. Nothing in the description is a headcount, a duration, or a result figure. If the only remote on the screen changes every client's default branch together, you do not have this proof. You have a shared trunk.
There is a version of this afternoon where taking the work is the wrong purchase. The work is not sold under the agency's name. The client asked to meet the builders, and a hidden bench is the thing they said they did not buy. The room only has a slide, and the repository is not one you can open. The buyer only wants a template. Or the buyer wants a legal opinion about who owns the branch. Those are not this proof. The terms on a white label software development partner page are the arrangement itself: the work stays in the client's repositories, under the agency's name. The page is the offer. It does not name this pull, and it does not turn 1347 into a branch.
When the pull is real and the repository cannot name the base, the missing object is specific. A read, in a repository the agency or the client can open, that shows one number, one base ref, and one head ref, shows a different pull that is not that one, and shows another client's repository without it. A white label software development partner that expects this will have put that read in the client's organization before the first pull, because a ref that lives on a laptop the client cannot open cannot be named by the person whose name is on the invoice. One that can only describe the branch by forwarding a title is telling you who holds the case. If the next slice is one capability, an AI integration sprint is the shape where the acceptance sentence can include the three proofs. If you do not yet know which remotes the current engagements already use, a two-week AI readiness assessment maps them. The findings are yours. They are not a promise that a paper's median applies, and they are not 17 hours.
The product a price sold, and the store a file joined, are different objects: which product did that price sell? and which store did that file join?. Do not record either on this page. A product id is not a base ref. A store id is not a pull number. The label an issue carried is a different object: which label did that issue carry?. Do not record it here. A label name is not a base ref.
Before you tell them the change landed on main, do the three proofs and write the refs. Name the number, the base, and the head, or write that no pull was stored. Show a different pull that is not that one. Show another repository that does not hold it. Do not merge to avoid reading the ref, and do not ask a model which of the sample names it was. A paper can tell you how long other projects took. The binding is the branch you can defend.
Questions
Three records, in a repository the agency or the client can open. The pull number, the base ref, and the head ref. A different pull whose base ref or number is not this one. Another client's repository that does not list this pull. If the request string and the response ref disagree, write both.
No. A median of hours in someone else's public projects is not the ref on this pull. A branch you can defend is the number, the base ref, and the head ref the API stored, or a written line that a field was null. 17 hours is not master, and 1347 on a sample is not your pull.
When the work is not sold under the agency's name, when the client asked to meet the builders, when the room only has a slide, when the buyer only wants a template, or when the buyer wants a legal opinion.
Find this useful? Tell Google to show you more of it.
