RunJobFailedPayload run.job.failed@1
Generated at from
openvibe-contracts v0.97.0 and
openvibe-sdk v0.26.0.
- Version
- 1.0.0
- Owner
- run
- Visibility
- first-party
- Status
- planned
- Compatibility
- backward
- Decision
- ADR-034
- Schema
https://openvibe.network/contracts/events/payloads/run.job.failed.v1.json
run.job.failed v1 (OpenVibe.Run; PLANNED: the Run service does not exist yet, plan T14 R1). The job ended failed: job_exit with a non-zero code or reason limit, stopped or failed, or an input digest mismatch before the process started. A projection of run.job-read-result@1 without args, inputs, result or output. Envelope: subject { type: job, id: <job_id> }, visibility internal, priority important, actor service:run.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
job_id | string | yes |
| |
project_id | string | yes |
| |
requester | identity.subject-ref | yes | ||
state | const | yes | The job state (run.job-read-result@1 state). |
|
class | platform.runtime-class | yes | ||
artifact | one of | yes | ||
egress | https://openvibe.network/contracts/run/job-create-request.v1.json#/$defs/egress | yes | ||
placement | one of | yes | ||
timings | object | yes |
| |
timings.created_at | string | yes |
| |
timings.placed_at | string | null | yes |
| |
timings.started_at | string | null | yes |
| |
timings.finished_at | string | yes |
| |
exit | one of | yes | ||
usage | https://openvibe.network/contracts/run/job-read-result.v1.json#/$defs/usage | yes | ||
error | https://openvibe.network/contracts/run/job-read-result.v1.json#/$defs/error | yes |
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: limit
{
"job_id": "job_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"project_id": "prj_01JAB2C3D4E5F6G7H8J9K0MNPR",
"requester": {
"type": "app",
"id": "app_01JAB2C3D4E5F6G7H8J9K0MNPV"
},
"state": "failed",
"class": "function",
"artifact": {
"name": "thumbnail",
"version": "1.2.0"
},
"egress": "none",
"placement": {
"node": "dev_01JAB2C3D4E5F6G7H8J9K0MNPT",
"provider": null,
"region": "us-west"
},
"timings": {
"created_at": "2026-10-04T10:00:00.000Z",
"placed_at": "2026-10-04T10:00:00.400Z",
"started_at": "2026-10-04T10:00:00.650Z",
"finished_at": "2026-10-04T10:00:03.000Z"
},
"exit": {
"reason": "limit",
"code": null
},
"usage": {
"seconds": 2.35,
"wall_ms": 2350,
"cpu_ms": 1800,
"mem_peak_bytes": 41943040
},
"error": {
"code": "run.job.limit",
"detail": "mem_bytes exceeded"
}
}Rejected: without-error
{
"job_id": "job_01JAB2C3D4E5F6G7H8J9K0MNPQ",
"project_id": "prj_01JAB2C3D4E5F6G7H8J9K0MNPR",
"requester": {
"type": "app",
"id": "app_01JAB2C3D4E5F6G7H8J9K0MNPV"
},
"state": "failed",
"class": "function",
"artifact": {
"name": "thumbnail",
"version": "1.2.0"
},
"egress": "none",
"placement": {
"node": "dev_01JAB2C3D4E5F6G7H8J9K0MNPT",
"provider": null,
"region": "us-west"
},
"timings": {
"created_at": "2026-10-04T10:00:00.000Z",
"placed_at": "2026-10-04T10:00:00.400Z",
"started_at": "2026-10-04T10:00:00.650Z",
"finished_at": "2026-10-04T10:00:03.000Z"
},
"exit": {
"reason": "limit",
"code": null
},
"usage": {
"seconds": 2.35,
"wall_ms": 2350,
"cpu_ms": 1800,
"mem_peak_bytes": 41943040
},
"error": null
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('run.job.failed@1', value); // { valid, errors: [{ path, message }] }