No. OpenAI Platform API returns a success response when it accepts the request. The batch then holds one of 8 states. Only completed is terminal success. Provely proves all_requests_succeeded, completed and succeeded as separate promises.
| Fact | Value |
|---|---|
| Skill version | 0.1.0 |
| Publisher | Built and signed by Provely. |
| Certification | Provisional (score 49 of 100) |
| Last conformance run | 2026-09-05T12:00:00Z: 41 of 41 cases passed, 0 critical false VERIFIED |
| Provider API versions | spec_2_3_0 |
| Default provider API version | spec_2_3_0 |
| Compiled | 2026-09-05T12:00:00Z by compiler 0.1.0 |
| Manifest hash | 43f3e094fd9eea85 |
| Manifest hash check | the document hashes to the value the manifest states |
| Signature | valid, key provely-skill-2026-09, trusted by this build |
What does this page prove?
| Claim | Proven by | Evidence | Status |
|---|---|---|---|
| A batch that reaches the status completed is not a batch in which every request succeeded. This level reads request_counts and refuses a batch with a failed count above zero. | openai.batch.all_requests_succeeded | E2 + E3 | proven |
| The provider ran the batch and the results are ready. This level does not prove that every request inside the batch succeeded. Read openai.batch.all_requests_succeeded for that promise. | openai.batch.completed | E2 + E3 | proven |
| The job reached the status succeeded and the member fine_tuned_model holds a name. The level does not prove that the model answers a request. No published operation states that. | openai.fine_tuning_job.succeeded | E2 + E3 | proven |
| An outcome outside OpenAI Platform API, such as a bank credit or a person who read a message | not proven | no E5 channel | not proven |
| The agent report that the action worked | never counts | E0 | not proven |
Which completion levels does the OpenAI Platform 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.
| Level | Contract | Promise | Evidence | Certification |
|---|---|---|---|---|
all_requests_succeeded | openai.batch.all_requests_succeeded v1.0.0 | A batch that reaches the status completed is not a batch in which every request succeeded. This level reads request_counts and refuses a batch with a failed count above zero. | E2 + E3 | Provisional |
completed | openai.batch.completed v1.0.0 | The provider ran the batch and the results are ready. This level does not prove that every request inside the batch succeeded. Read openai.batch.all_requests_succeeded for that promise. | E2 + E3 | Provisional |
succeeded | openai.fine_tuning_job.succeeded v1.0.0 | The job reached the status succeeded and the member fine_tuned_model holds a name. The level does not prove that the model answers a request. No published operation states that. | E2 + E3 | Provisional |
What is the OpenAI Platform API lifecycle?
Which states can a openai.batch be in?
| State | Class | Verdict | Meaning | Source |
|---|---|---|---|---|
validating | transitional | PENDING | The input file is being validated before the batch can begin. | openai.openapi |
in_progress | transitional | PENDING | The input file was successfully validated and the batch is currently being run. | openai.openapi |
finalizing | transitional | PENDING | The batch has completed and the results are being prepared. | openai.openapi |
completed | terminal success | VERIFIED | The batch has been completed and the results are ready. The status states nothing about the requests inside the batch. Read request_counts. | openai.openapi |
failed | terminal failure | FAILED | The input file has failed the validation process. | openai.openapi |
expired | terminal failure | FAILED | The batch was not able to be completed within the 24-hour time window. The provider cancelled the unfinished requests. | openai.openapi |
cancelling | transitional | PENDING | The batch is being cancelled. The change may take up to 10 minutes. | openai.openapi |
cancelled | terminal neutral | FAILED | A person or an agent cancelled the batch. The provider reports no failure. | openai.openapi |
In openai.batch under provider API version spec_2_3_0, completed is the only state that means terminal success. Every other state gives PENDING, FAILED, or UNVERIFIABLE.
Source: openai.openapi · retrieved 2026-09-09
Which states can a openai.fine_tuning_job be in?
| State | Class | Verdict | Meaning | Source |
|---|---|---|---|---|
validating_files | transitional | PENDING | The provider is checking the training file and the validation file. The job has not started. | openai.openapi |
queued | transitional | PENDING | The provider accepted the job. No training has started. | openai.openapi |
running | transitional | PENDING | The provider is training the model. The members fine_tuned_model, finished_at, and trained_tokens are null while the job runs. | openai.openapi |
succeeded | terminal success | VERIFIED | The training finished. The member fine_tuned_model names the new model, and the member finished_at records the time. | openai.openapi |
failed | terminal failure | FAILED | The training did not finish. The member error states the code, the message, and the invalid parameter. | openai.openapi |
cancelled | terminal neutral | FAILED | A person or an agent cancelled the job. The provider reports no failure. | openai.openapi |
In openai.fine_tuning_job under provider API version spec_2_3_0, succeeded is the only state that means terminal success. Every other state gives PENDING, FAILED, or UNVERIFIABLE.
Source: openai.openapi · retrieved 2026-09-09
How does Provely tie the evidence to this exact operation?
A matching state that already existed must not verify. Every contract names the correlation keys that bind the evidence to the operation, and the idempotency key that stops a duplicate side effect.
| Strategy | Assurance | Keys | Required | Window |
|---|---|---|---|---|
resource_id | strong | batch_id from $action.result.id | yes | none |
fingerprint | weak | input_file_id from $input.input_file_id; endpoint from $input.endpoint | no | 600000 ms |
resource_id | strong | fine_tuning_job_id from $action.result.id | yes | none |
fingerprint | weak | training_file from $input.training_file | no | 600000 ms |
In words
- E0 agent assertion: never sufficient.
- E1 action response: the provider acknowledged the request.
- E2 provider readback: the runtime read the resource back.
- E3 provider event: the provider reported the change.
- E4 independent system: a system outside the action path agrees.
- E5 external outcome: the result is observable in the world.
Which evidence channels does the skill read?
The runtime prefers the channel that is more independent from the action path. Read the evidence level definition. An acknowledgement from OpenAI Platform API is E1 and never terminal success.
| Channel | Level | Independence | Verifier | Deterministic | Typical latency |
|---|---|---|---|---|---|
batch_action_response | E1 | same response | action_result | yes | not stated |
batch_completed_events | E3 | provider event | webhook | no | 5000 ms |
batch_readback | E2 | provider readback | http | yes | 400 ms |
fine_tuning_job_action_response | E1 | same response | action_result | yes | not stated |
fine_tuning_job_readback | E2 | provider readback | http | yes | 400 ms |
fine_tuning_job_succeeded_events | E3 | provider event | webhook | no | 5000 ms |
Which ways can a OpenAI Platform API action look done and not be?
| Contract | Case | Rule | Verdict |
|---|---|---|---|
| openai.batch.all_requests_succeeded | wrong subject | The batch reads a different input file than the intent named. | CONTRADICTED |
| openai.batch.all_requests_succeeded | wrong subject | The batch calls a different endpoint than the intent named. | CONTRADICTED |
| openai.batch.all_requests_succeeded | pre existing state | The batch is older than the operation. It proves nothing. | CONTRADICTED |
| openai.batch.all_requests_succeeded | partial completion | The batch finished, and requests inside it failed. Do not retry the batch: the requests that succeeded would run a second time. Ask a person. | CONTRADICTED |
| openai.batch.all_requests_succeeded | observed state | The batch finished, and requests inside it failed. A retry would run the requests that succeeded a second time. Ask a person. | CONTRADICTED |
| openai.batch.all_requests_succeeded | observed state | The provider ended the batch without results. Read the errors of the input file. | FAILED |
| openai.batch.all_requests_succeeded | observed state | A person or an agent cancelled the batch. Ask a person before a new batch runs. | CONTRADICTED |
| openai.batch.all_requests_succeeded | observed state | The batch has not reached a terminal status. The runtime observes again later. | PENDING |
| openai.batch.completed | wrong subject | The batch reads a different input file than the intent named. | CONTRADICTED |
| openai.batch.completed | wrong subject | The batch calls a different endpoint than the intent named. | CONTRADICTED |
| openai.batch.completed | pre existing state | The batch is older than the operation. It proves nothing. | CONTRADICTED |
| openai.batch.completed | observed state | The provider ended the batch without results. Read the errors of the input file. | FAILED |
| openai.batch.completed | observed state | A person or an agent cancelled the batch. Ask a person before a new batch runs. | CONTRADICTED |
| openai.batch.completed | observed state | The batch has not reached a terminal status. The runtime observes again later. | PENDING |
| openai.fine_tuning_job.succeeded | wrong subject | The job trained on a different file than the intent named. | CONTRADICTED |
| openai.fine_tuning_job.succeeded | pre existing state | The fine-tuning job is older than the operation. It proves nothing. | CONTRADICTED |
| openai.fine_tuning_job.succeeded | observed state | The training did not finish. The member error of the job states the cause. | FAILED |
| openai.fine_tuning_job.succeeded | observed state | A person or an agent cancelled the fine-tuning job. Ask a person before a second run starts. | CONTRADICTED |
| openai.fine_tuning_job.succeeded | observed state | The job has not reached a terminal status. The training may take hours, so the runtime observes again later. | PENDING |
What did the last conformance run show?
| Dimension | Score | Maximum |
|---|---|---|
| Documentation | 14 | 20 |
| Schema alignment | 13.88 | 15 |
| Lifecycle certainty | 20 | 20 |
| Evidence strength | 16 | 20 |
| Causal correlation | 15 | 15 |
| Sandbox conformance | 10 | 10 |
| Raw score | 88.88 | 100 |
| Score after the caps | 49 | 100 |
The raw score is 88.88. 2 hard caps apply, so the score is 49 and the level is Provisional.
| Reason | Highest score it allows |
|---|---|
| 15 uncertainty records are open. The lowest cap is 49. | 49 |
| 3 mandatory cases are missing. Example: openai.batch.all_requests_succeeded:duplicate_side_effect. | 74 |
| Contract | Raw score | Score after the caps | Certification |
|---|---|---|---|
openai.batch.all_requests_succeeded | 89.12 | 49 | Provisional |
openai.batch.completed | 88.64 | 49 | Provisional |
openai.fine_tuning_job.succeeded | 88.75 | 49 | Provisional |
The weakest contract is openai.batch.all_requests_succeeded. It scores 49 and 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 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.
| Case class | Passed | Total |
|---|---|---|
| error after execution | 3 | 3 |
| error before execution | 3 | 3 |
| evidence unavailable | 3 | 3 |
| pre existing state | 3 | 3 |
| stale readback | 3 | 3 |
| still transitional | 3 | 3 |
| terminal failure | 3 | 3 |
| terminal success | 3 | 3 |
| timeout after commit | 3 | 3 |
| version mismatch | 3 | 3 |
| webhook duplicate | 3 | 3 |
| webhook out of order | 3 | 3 |
| wrong subject | 3 | 3 |
| wrong terminal state | 2 | 2 |
The conformance artifact digest is 5d615bdc87a754e5. 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. 15 uncertainty records are open. The lowest cap is 49. 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.
| Source | Kind | Retrieved | Excerpt |
|---|---|---|---|
| openai.docs.batch | docs | 2026-09-09 | authored |
| openai.docs.fine_tuning | docs | 2026-09-09 | authored |
| openai.docs.versions | docs | 2026-09-09 | authored |
| openai.docs.webhooks | docs | 2026-09-09 | authored |
| openai.events | event sample | 2026-09-09 | authored |
| openai.openapi | openapi | 2026-09-09 | trimmed |
How do I verify a OpenAI Platform API action?
Verify a OpenAI Platform API action with Provely
- Begin the operation.Call
beginwith the contractopenai.batch.all_requests_succeededand the input. Keep the operation id. - Make the OpenAI Platform API call you make today.Send the request with the correlation metadata that
beginreturned. - Submit the acknowledgement.Call
action_resultwith the OpenAI Platform API response. This is evidence level E1. It is not completion. - Verify.Call
verify. The runtime readsbatch_action_response,batch_completed_events,batch_readback,fine_tuning_job_action_response,fine_tuning_job_readbackandfine_tuning_job_succeeded_eventsand evaluates the contract. - 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 all_requests_succeeded level prove the succeeded level?
No. A batch that reaches the status completed is not a batch in which every request succeeded. This level reads request_counts and refuses a batch with a failed count above zero. The job reached the status succeeded and the member fine_tuned_model holds a name. The level does not prove that the model answers a request. No published operation states that. Use openai.fine_tuning_job.succeeded to prove succeeded.
What does the agent say while OpenAI Platform API reports validating, in_progress, finalizing and cancelling?
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 OpenAI Platform API API versions does the skill support?
spec_2_3_0. An operation on another version returns UNVERIFIABLE with the reason version_unsupported. The runtime never guesses.
Does Provely need write access to OpenAI Platform API?
No. The agent keeps its write key. The verifier reads with a separate read-only credential where OpenAI Platform API permits it, and it never shares that credential with the agent.