Skip to content

Available now

Skills and executors ​

A skill reads a story and raises a warning for editorial attention: a claim with no source, a lower third about to air behind a pending standards gate. It never changes the story itself.

SOM 1.0 defines the skill.warning.raised message and a story's skills_config. The SOM skill library (0.2.2) describes skills. Neither says what the code running a skill does on a bus; RND's executor contract fills that gap, and these pages follow it.

Terms ​

TermMeaning
SkillA file in the SOM skill library. A specification, not code: skills declare, executors evaluate and emit
ExecutorThe code that runs skills for one tool (a rundown, a MAM, a CMS…). A sidecar to the tool, not a newsroom-wide service. One executor may run many configured instances of many skills
Configured instanceOne skill with one house's values loaded, watching one condition. The house registers it on the bus, and its instance_label is the rule_id on its warnings
TriggerA delivered message whose message_type is in the skill's recall_on list
DeclarationThe condition one configured instance watches, on one story, at one scope, while it holds. It opens, may change, and closes
Suitesom-<SOM version>+lib-<library version>. These pages are for som-1.0.0+lib-0.2.2

On the bus ​

An executor is both a consumer and a producer:

story.context ──▶ your consumer queue ──▶ executor ──▶ evaluate ──▶ skill.warning.raised ──▶ bus
(and its other triggers)                  (sidecar to one tool)
ItHowStatus
Receives story.context and its other triggersA consumer connection, filtered by message type, read over the HTTPS pull API. See Consumer connectionsAvailable now
Publishes skill.warning.raisedAs a connected producer app granted skill.warning.raised (or skill.*). See CredentialsAvailable now
Is tested against the suiteThe skill harness in Test runsAvailable now
Runs the configured instances the house registered for itThe house registers each one, with its values and authority scale, and binds it to the executor's consumer connection; the executor reads them from the bus. See Registrations and Run skills in your houseAvailable now

What a skill may and may not do ​

A skillSource
Reads the whole snapshot. story.context is never a delta: a field that's absent is absentSOM
Publishes only skill.warning.raised on its own behalfSkill library
Never changes content. No story.context, no edits to assets, no config writes: every library skill is auto_change_content: falseSkill library
Fails closed. A watched field present but unreadable, or config missing, is treated as the condition holding, at the loudest severity the skill allows, and detail says what couldn't be read. A watched field that's absent is a non-matchSkill library
Is independent of other configured instances, except through the bus like any other systemSkill library
Never turns a flag into a gate itself. The story's owner does, in its next snapshotRND position P-13

Severity ​

SeverityMeansWhat the bus does
holdTools must withhold output on the affected fieldsCarries it. The bus doesn't enforce a hold: the tools that act on the warning do
flagMark for reviewCarries it
informAdvisoryCarries it

Holds combine: any one hold means held. A flag never withholds anything by itself.

Scope ​

A warning is about a story, an asset or a link: scope is story:<story_id>, asset:<asset_id> or link:<link_id>, the level the configured instance evaluates at.

Where each rule comes from ​

These pages label every rule with its source, so you know what's the standard and what isn't:

LabelSource
SOMSOM 1.0's schemas and conformance rules. Normative
Skill libraryThe skill file, and the library's conventions. Upstream, still a draft
P-nnAn RND position, where SOM and the library are silent or disagree. Ours, not the standard
The busWhat SOM Managed Bus refuses, with its rule id. Another bus may do less

Results read "passes som-bus suite som-1.0.0+lib-0.2.2", never "certified" or "compliant".

A working executor ​

RND's reference executor for raise-flag-on-match is open source in sombus-dev-kit (Apache 2.0). Read it next to these pages, start your own from it, or run it against your vendor workspace and grade it with the skill harness. Its README maps each section of the skill file to the code, cites the positions it follows, and says what it doesn't do yet.

The newsroom's side of skills (which ones a house runs, with which values, and who acts on a warning) is in Skills for publishers.

Next: A warning that validates.

SOM is an open standard maintained by the SOM working group. This service is not endorsed by it.