No. GitHub REST API returns a success response when it accepts the request. Provely proves merged, open and succeeded as separate promises.

Skill facts from the signed manifest.
FactValue
Skill version0.1.0
PublisherBuilt and signed by Provely.
CertificationProvisional
Last conformance run2026-09-05T12:00:00Z: 41 of 41 cases passed, 0 critical false VERIFIED
Provider API versions2022-11-28
Default provider API version2022-11-28
Compiled2026-09-05
Manifest hashac807598930f9c4a
Manifest hash checkthe document hashes to the value the manifest states
Signaturevalid, key provely-skill-2026-09, trusted by this build

What does this page prove?

ClaimProven byEvidenceStatus
A closed pull request is not a merged one, and merge_commit_sha holds a test merge commit while the pull request is open.github.pull_request.mergedE2 + E3proven
The record exists with the intended head branch and base branch. It does not prove that the commits reached the base branch.github.pull_request.openE2 + E3proven
A completed run is not a successful run. The contract reads the conclusion of the run and an event that carries it.github.workflow_run.succeededE2 + E3proven
An outcome outside GitHub REST API, such as a bank credit or a person who read a messagenot provenno E5 channelnot proven
The meaning of a GitHub REST API state that no source statesnot provenno source states itnot proven
The agent report that the action workednever countsE0not proven

Which completion levels does the GitHub REST API skill expose?

Each level is one promise with one contract. An agent picks the level that matches the promise it makes. It cannot upgrade a level. Read the completion level definition.

LevelContractPromiseEvidenceCertification
mergedgithub.pull_request.merged v1.0.0A closed pull request is not a merged one, and merge_commit_sha holds a test merge commit while the pull request is open.E2 + E3Provisional
opengithub.pull_request.open v1.0.0The record exists with the intended head branch and base branch. It does not prove that the commits reached the base branch.E2 + E3Provisional
succeededgithub.workflow_run.succeeded v1.0.0A completed run is not a successful run. The contract reads the conclusion of the run and an event that carries it.E2 + E3Provisional

Which ways can a GitHub REST API action look done and not be?

ContractCaseVerdict
github.pull_request.mergedduplicate side effectCONTRADICTED
github.pull_request.mergedpre existing stateCONTRADICTED
github.pull_request.mergedwrong subjectCONTRADICTED
github.pull_request.openduplicate side effectCONTRADICTED
github.pull_request.openpre existing stateCONTRADICTED
github.pull_request.openwrong subjectCONTRADICTED
github.workflow_run.succeededduplicate side effectCONTRADICTED
github.workflow_run.succeededotherCONTRADICTED
github.workflow_run.succeededpre existing stateCONTRADICTED
github.workflow_run.succeededwrong subjectCONTRADICTED

What did the last conformance run show?

The last conformance run on 2026-09-05T12:00:00Z passed 41 of 41 cases with 0 critical false VERIFIED. One critical false VERIFIED rejects a skill.

The certification of each contract.
ContractCertification
github.pull_request.mergedProvisional
github.pull_request.openProvisional
github.workflow_run.succeededProvisional

The weakest contract is github.pull_request.merged. It reaches Provisional. The package level is Provisional, because a package level never rises above its weakest contract. Read the level of the contract you use.

The conformance result by case class.
Case classPassedTotal
duplicate side effect33
error after execution33
error before execution33
evidence unavailable33
pre existing state33
stale readback33
still transitional33
terminal failure11
terminal success33
timeout after commit33
version mismatch33
webhook duplicate33
webhook out of order33
wrong subject33
wrong terminal state11

The conformance artifact digest is 0800a56c529af7ce. The harness signs the run, so a reader can check that these numbers come from that run.

What remains uncertain?

The level is Provisional because of it. Provely does not guess a rule that a source does not state.

Where do these facts come from?

Every claim above cites a source assertion in the skill provenance. The compiler records the source, its hash, and the retrieval date. A page never states a provider rule without one.

SourceKindRetrievedExcerpt
github.docs.pullsdocs2026-09-08authored
github.docs.versionsdocs2026-09-08authored
github.docs.webhooksdocs2026-09-08authored
github.docs.workflowsdocs2026-09-08authored
github.eventsevent sample2026-09-08authored
github.openapiopenapi2026-09-08trimmed

How do I verify a GitHub REST API action?

Verify a GitHub REST API action with Provely

  1. Begin the operation.Call begin with the contract github.pull_request.merged and the input. Keep the operation id.
  2. Make the GitHub REST API call you make today.Send the request with the correlation metadata that begin returned.
  3. Submit the acknowledgement.Call action_result with the GitHub REST API response. This is evidence level E1. It is not completion.
  4. Verify.Call verify. The runtime reads the evidence that the contract names, from GitHub REST API and not from the agent, and evaluates the contract.
  5. Report the verdict exactly as returned.VERIFIED comes with a signed receipt. PENDING comes with the operation id. CONTRADICTED and UNVERIFIABLE are not success.

Questions developers ask

Does the merged level prove the succeeded level?

No. A closed pull request is not a merged one, and merge_commit_sha holds a test merge commit while the pull request is open. A completed run is not a successful run. The contract reads the conclusion of the run and an event that carries it. Use github.workflow_run.succeeded to prove succeeded.

What does the agent say while the GitHub REST API action is still in progress?

It says: "The action is accepted but not yet verified. Operation: <id>." The verdict is PENDING. The runtime observes again on the contract timing policy.

Which GitHub REST API API versions does the skill support?

2022-11-28. An operation on another version returns UNVERIFIABLE with the reason version_unsupported. The runtime never guesses.

Does Provely need write access to GitHub REST API?

No. The agent keeps its write key. The verifier reads with a separate read-only credential where GitHub REST API permits it, and it never shares that credential with the agent.