job.finished

A job ended, with what it did: counts, duration

Profile

Written with

Level

info

Job intents

Example

TS
log('job.finished', 'Redirects synced', { count: 40, tookMs: 1830 });
Writes
TS
{
"intent": "job.finished",
"level": "info",
"alert": false,
"message": "Redirects synced",
"data": {
"count": 40,
"tookMs": 1830
},
"time": "2026-10-09T12:00:00.000Z"
}

Choosing between neighbours

Find the row that describes your case, and use the intent on the right.

  • If it is

    Use

  • A job ended, with what it did: counts, duration

    job.finished this page
  • A job that stopped on an error

    incident.failed
  • Anything someone running the app needs to see

    rather than debug.trace
    job.finished this page

Connections

Declared in the registry, both directions. Where an intent is used in your own code is something check and the gallery see; this site has no app code.

For registry authors

Starter intents. These are the intents prongs add logs puts in your registry. Change levels through the level.* intents, and point log() at your logger.

The entry prongs add logs writes into your registry. Change the level through its level.* ref.

TS
'job.finished': {
kind: 'semantic',
description: 'A job ended, with what it did: counts, duration',
refs: ['level.info'],
notFor: [
{
context: 'a job that stopped on an error',
instead: 'incident.failed',
},
],
},