Job

Field

Type

Repeated

Description

job_id

JobId

description

string

tags

Job.TagsEntry

✅

Free-form labels, searchable through JobFilter. Some keys are RESERVED — written by the Manager (bundle expansion) or the AutoManager, and silently overwritten if a client sets them: auto-manager "true" on every job under AutoManager control bundleId the bundle the job was expanded from replicaIndex 0 = primary, 1 = backup jobName the BundleJobSpec.job_name the job was expanded from startMode the BundleJobSpec.start_mode ("auto" / "manual") nodeService the node service the job implements (Phase F) * any key starting with two underscores is the AutoManager’s (e.g. stopDateTime)

start_date_time

google.protobuf.Timestamp

current_hash

int64

manager_configuration

string

Opaque to the Manager. (Until cloud existed the SDK also read it as JSON for autoConfig.cloud to guess the job’s cloud, and still does when cloud is unset.) Nothing on the worker path carries it.

services

Service

✅

norsk_media_version

Version

norsk_service_parameters

ServiceParameters

volumes

string

✅

state

Job.JobState

shape

string

architecture

string

subnet

string

availabilityDomain

string

write_files

WriteFile

✅

norsk_cpu_list

uint32

✅

auto_placement

AutoPlacement

AutoManager v1 — present iff the job is under AutoManager’s bundle/placement control; absent for plain createJob. Existing SDK consumers ignore this field.

product_template

ProductTemplateRef

Product-template-shaped jobs (task 39). Both opaque to Manager — stored and forwarded as-is to the worker. If product_template is set, the worker launches via the product-template path; otherwise the legacy services/volumes path runs unchanged.

product_template_parameters

Job.ProductTemplateParametersEntry

✅

Resolved env-var overrides for the product-template compose stack. Map shape — empty / absent are equivalent on the wire.

terminal_state

JobTerminalState

Durable terminal verdict written back by AutoManager (restart ceiling exceeded / bronze drop). Present ⇒ the job has fully failed and must not be re-placed; absent ⇒ no terminal verdict. Survives a daemon restart.

launch_config_json

OptionalString

Host/operator launch config for the product-template path, as the JSON encoding of norsk-ctl’s ProductTemplateLaunchConfig — two tiers carried separately so the worker’s fusion (the single merge implementation) combines template-author custom fields with operator intent itself rather than trusting a pre-merged blob. Opaque to Manager: stored and forwarded, validated by the worker’s zod schema at launch.

template_launch_defaults_json

OptionalString

extra_security_groups

string

✅

Extra security groups this job needs on whatever node it lands on (worker-security-groups.md): a node’s SG set is base ∪ extras(bound jobs). Labels as discovered from the SG tag, resolved to ids by the Manager at reconcile/provision time.

cloud

string

The cloud the job is for: "aws", "oci" or "cluster"; "" = not said. Stored and read back as given — it is the client’s (the SDK’s Job.cloud), not interpreted by the Manager. Until 2026-09-30 it was not on the wire at all, and a job read back with the cloud the SDK guessed from architecture ("" → aws, else oci) unless manager_configuration happened to be JSON naming it.

lease_protected

bool

Lease-protected (task 115 Phase 6): the job carries data that must never be in use on two encoders at once (an Akamai entry point, a multicast address, a SIP number — the Manager does not interpret it). A job whose holder was lost uncleanly is not started again until its grace has passed since the holder was last known alive (StartJob answers FAILED_PRECONDITION "lease grace until <ms>"); one the worker reported gone may be started at once. The worker stops its lease-protected jobs when it can no longer refresh with a live Manager. Bundle expansion copies both fields from the job template onto every replica.

lease_grace_ms

uint64

This job’s grace in ms; 0 takes the deployment’s (sys.config nodeControllerConfig.leaseGraceMs, default 60 s).

Argument of

Method

Description

CreateJob

UpdateJob