Skip to content
Insights · Engineering

Which context did that status name?

Name the context that status named: the id, the context, and the state. A different status can name another context. Another repository omits it.

Scroll
EngineeringOct 30, 202612 min readBy Salman Naqvi, Founder & CEO
Which context did that status name?

A client says the build passed, or says the wrong service posted the green mark. Tonight, three proofs, in a repository the agency or the client can open. Name the context that status named: the status id, the context, and the state. If the list for that commit is empty, write that, and do not invent a context to fill the hole. Show a different status whose id, or whose context, is not this one. Show another client's repository that does not list this status. If any of the three needs the person who installed the app, you have not named the context. You have a green mark and a guess.

This is one commit status. It is not the check a commit reported. Which check did that commit report? is a check-run id, a name, and a conclusion. A check conclusion can be null while this status stores a state. GitHub's own page says a check is a different API from a status. It is not the person a repository added. Which person did that repository add? is a login and a permission. A login is not a context. It is not the item a subscription held. Which item did that subscription hold? is a subscription item id and a quantity. It is not the search a response called. Which search did that response call? is a search-call id and a type. A context string is not a search id.

None of what follows is a finding that this context is the right one for the client, and none of it is legal advice. The fields below are the current examples on GitHub's commit status API. The combined example prints two statuses. The list example prints one. The figures below that are a 2016 study of other repositories and a 2020 study of other builds. A percentage of other people's builds is not the context in the repository you opened.

The combined status for one reference prints a rollup and two rows, and the rollup is not a row. state on the wrapper is success. 7 characters. total_count is 2. The sha is 6dcb09b5b57875f334f61aebed695e2e4193db5e. 40 characters. The first status id is 1. node_id is MDY6U3RhdHVzMQ==. 16 characters. state is success. description is Build has completed successfully. 32 characters. target_url is https://ci.example.com/1000/output. 34 characters. The path ends in 1000. 1000 is not the id 1. context is continuous-integration/jenkins. 30 characters. created_at and updated_at are both 2012-07-20T01:19:13Z. 20 characters each. The same timestamp twice is not two statuses. The second status id is 2. node_id is MDY6U3RhdHVzMg==. 16 characters, the same length as the first node id, and not the same string. The last character before the padding differs. state is success again. description is Testing has completed successfully. 34 characters, the same length as the first target url, and not that url. target_url is https://ci.example.com/2000/output. 34 characters again. 2000 is not 1000, and 2000 is not the id 2. context is security/brakeman. 17 characters. 17 is not 30. created_at is 2012-08-20T01:19:13Z. The month moved from 07 to 08. The gap is 31 days. The page does not print 31. The repository id is 1296269. node_id is MDEwOlJlcG9zaXRvcnkxMjk2MjY5. 28 characters. name is Hello-World. 11 characters. full_name is octocat/Hello-World. 19 characters. The owner login is octocat. 7 characters, the same length as success, and not the same string. The owner id is 1, the same integer as the first status id, on a user, not on a status. The owner node_id is MDQ6VXNlcjE=. 12 characters. 12 is not 16. The page says the combined state is failure if any context reports error or failure, pending if there are no statuses or a context is pending, and success if the latest status for every context is success. Three rollup names. The status state enum has four names: error, failure, pending, and success. 4 is not 3. error is 5 characters. failure, pending, and success are each 7, and they are not the same string. A rollup of success is not a reason to skip the second context (GitHub, Get the combined status for a specific reference).

The create request and the published response example do not print the same description. The request sends state success, target_url https://example.com/build/status, 32 characters, description The build succeeded!, 20 characters, and context continuous-integration/jenkins, 30 characters. The published response example prints description Build has completed successfully, 32 characters, and target_url https://ci.example.com/1000/output, 34 characters. 20 is not 32. 32 on the request url is not 32 on the response description, because they are not the same string. 34 is not 32. The response example id is 1, the same integer as the first combined row, and the context string matches the request. A matching context is not a matching description. The page says the default context, if you omit it, is default. 7 characters, the same length as success, and not the same string. The page says there is a limit of 1000 statuses per sha and context. 1000 is the integer in the sample target path, and it is not the status id 1. Attempts past 1000 are a validation error. A validation error is not a second context. The call returns 201. The list call returns 200, or 301 on the legacy route. 201 is not 200. 301 is not 404, and 404 is what the combined call returns when the reference is missing. The API version on the page is 2026-03-10. 10 characters. 10 is not 40, and 10 is not the id 1. per_page defaults to 30 and the maximum is 100. 30 is not 100. 100 is not 1000. The page does not print 30 times 100 (GitHub, Create a commit status).

The list example prints one status, and the combined example printed two. The list row is the first status again: id 1, context continuous-integration/jenkins, state success, description Build has completed successfully, target_url ending in 1000. The creator login is octocat, id 1. The creator id 1 and the status id 1 are the same integer on different objects. A user id is not a status id. The list does not include the second context, security/brakeman. A list of one is not total_count 2. Statuses come back in reverse chronological order, and the first in the list is the latest. On the combined sample the later timestamp is the August row, id 2, and the list sample is the July row, id 1. Do not treat the list's first row as the combined sample's latest row. The two examples are not one history (GitHub, List commit statuses for a reference).

Hilton, Tunnell, Huang, Marinov, and Dig measured other repositories, which is not this status. The 2016 paper analyzed 34,544 open-source projects from GitHub, 1,529,291 builds from the most commonly used CI system, and 442 survey responses. It also names a depth subset of 620 projects. 620 is not 34,544. The breadth projects were split into 64 groups of around 540. 64 times 540 is 34,560. 34,560 is not 34,544. The gap is 16, which the paper does not print, and around 540 is why the product is not exact. In the most popular group, 70% of projects use CI. The least popular end of that curve is 23%. 70 is not 23. Of projects that use CI, 14% use more than one CI. 14 is not 70. Projects that use CI average .54 releases per month. Projects that do not average .24. .54 divided by .24 is 2.25. The conclusion says projects that use CI release twice as often. Twice is 2. 2 is not 2.25. The paper does not print 2.25. The average build time is just under 500 seconds. 500 is not the status id 1, and it is not the 1000 in a sample URL. The survey went to 4,508 email addresses. 4,508 is not 442. A count of other people's projects is not the context continuous-integration/jenkins (Hilton, Tunnell, Huang, Marinov, and Dig, Usage, Costs, and Benefits of Continuous Integration in Open-Source Projects).

Durieux, Le Goues, Hilton, and Abreu measured a different set of builds, and it still is not this status. The live window is 8 October 2019 through 19 December 2019. The table prints 3,286,773 builds, 9,215,866 jobs, and 171,057 repositories. Passed builds are 2,306,130, marked 70%. Failed are 583,415, marked 18%. Errored are 367,963, marked 11%. Canceled are 29,265, marked 0.9%. Those four counts sum to 3,286,773, which the table also prints. 2,306,130 divided by 3,286,773 is not the integer 70. The page prints both figures and does not print the quotient. Restarted builds are 56,522. The abstract says 1.72%. The table marks the same count 1.7%. 1.7 is not 1.72. 1.72 percent of 3,286,773 is not the integer 56,522. The page does not print that product. The four restarted-state counts are 9,707 passed, 27,006 failed, 17,621 errored, and 2,186 canceled. Those four sum to 56,520. 56,520 is not 56,522. The gap is 2, which the page does not print. Restarted repositories are 22,345, marked 13%. 22,345 is not 171,057. The paper says 46.77% of restarted builds change a failing state to passing, and that 0.80% of builds in the set are flaky, written as 46.77% of 1.72%. 46.77 is not 0.80. The abstract says 54.42% of restarted builds are analyzed and restarted within an hour. A later section prints 42.01% restarted in less than 30 minutes and 63.01% within 2 hours. 54.42 is not 42.01, and 42.01 is not 63.01. The abstract says restarted builds bring median merging time from 16 hours to 48 hours, a factor of three. 48 divided by 16 is 3. A later sentence says the median moves from 4 hours to 48 hours, and another says the median is 11 times larger. 4 is not 16. 48 divided by 4 is 12, which is not 11. The page does not print 12. One sentence says 171,057 repositories have at least one restarted build, 13.06% of repositories that triggered a build. The table prints 22,345 restarted repositories, marked 13%. The conclusion says the 56,522 builds come from 22,345 projects, and that 13.06% of the restarted builds are passing. 171,057 is not 22,345. 13.06 is not 13, and 13.06 is not the table's 17% on passed restarts. None of those percents is the context security/brakeman (Durieux, Le Goues, Hilton, and Abreu, Empirical Study of Restarted and Flaky Builds on Travis CI).

Gigbase is a multi-user agency workspace for projects, teams, clients, and contracts, distinct from the next client's repository. It is not a commit-status ledger. No headcount, duration, or result figure belongs in that sentence. Gigbase does not supply the context continuous-integration/jenkins.

When the engagement is real and the repository cannot name the context, the missing object is specific. A record the agency or the client can open, that shows one status id, one context, and one state, shows a different status that is not that one, and shows another client's repository without it. A white label software development partner that expects this will have that list in the client's repository, under the agency's process, before a stranger's green mark is the way the client discovers who posted the status. One that needs a call in order for the agency to see the context is telling you who holds the token. The partner does not keep a private copy of the client's status list as the only copy. If the first slice is a fixed capability, an AI integration sprint is the shape where the acceptance sentence can include the three proofs. If you do not yet know which host stores the statuses, a two-week AI readiness assessment maps the systems. The findings are yours. They are not a promise that 70% of your repositories post a context.

There is a version of this afternoon where an agency should not take the work. The work is not sold under the agency's name. The client asked to meet the builders. The room only has a slide. The buyer only wants a template. Or the buyer wants a legal opinion. None of those is a missing status id. A paper's 1.72% will not become your state because a paragraph was confident, and a sample description of 32 characters will not become the request's 20 characters because both strings were on the same page.

Before you tell them which context the status named, do the three proofs and write the name. Name the id, the context, and the state, or write that the list was empty. Show a different status that is not that one. Show another repository that does not hold it. Do not paste a 70%, a 1.72%, or the word success from a sample and call it the client's build. The combined sample printed two contexts. Your repository has to print the one you mean.

Questions

Three records, in a repository the agency or the client can open. The status id, the context, and the state, or a written line that the list was empty. A different status whose id or context is not this one. Another client's repository that does not list this status. A 404 is not a context.

No. A share of other people's repositories is not the context on this status. A context you can defend is the id, the context, and the state, or a written line that no status was stored. 70 in one study is not continuous-integration/jenkins, and 1.72 in another is not state success.

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.

Let's put AI to work in your business.

A 30-minute call. You bring the workflow or the roadmap — we'll tell you what's feasible, what it costs, and what we'd build first.

Book a call→