Newsroom workflows
Seven newsroom moments, one bus.
Each workflow is a real newsroom moment told as the SOM 1.0 messages your systems already exchange: who sends what, who receives it, and what the bus does at every step. Find your product, then see what a publisher gets and what a vendor proves.
- 01Breaking story, every screen in stepstory.context
- 02Media lands, the story knowsdelivery.media_available · story.context
- 03Tip-line clip to verified assetstory.context · skill.warning.raised
- 04Standards gate before airstory.context · link.* · system.audit · telling.*
- 05AI skill as a second pair of eyesstory.context · skill.warning.raised
- 06Kill a story everywherestory.context · link.* · telling.* · system.audit
- 07Plug a new system into a live newsroomstory.context · telling.* · skill.warning.raised
Find your product
Where your system plays a part.
Most products both publish and receive. Pick your row and follow the workflows it's marked in; those are the ones to test first.
| Your product | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
|---|---|---|---|---|---|---|---|
| Newsroom systemNCS, planning, rundown: owns the story | ● | ◐ | ◐ | ◐ | ◐ | ● | |
| Media storeMAM, ingest, tip line | ● | ● | |||||
| GraphicsLower thirds, maps, prompter | ○ | ○ | ◐ | ○ | ◐ | ||
| PlayoutBroadcast and stream playout | ○ | ◐ | ◐ | ||||
| Web CMSSite, app and social publishing | ○ | ○ | ○ | ○ | ○ | ◐ | |
| Skill executorAI skills beside a tool | ◐ | ◐ | |||||
| Standards deskCompliance and verification tooling | ○ | ○ | ○ | ◐ | ○ | ||
| AutomationStudio and channel automation | ◐ |
How to read a workflow
Every step is one message, and one decision by the bus.
202 accepted
Valid SOM 1.0, in order for its story, sent by a system allowed to send it. Delivered to every system that subscribed.
200 duplicate
The same message again. Safe to retry: nobody receives it twice.
400 / 403 / 409 refused
Refused before any system sees it, with the rule behind it. Every rule links to its page in the docs.
No message
Something you do in the portal or over the API, such as a replay from the archive. Each vendor runs its own part of a workflow in its own workspace; a publisher rehearses the whole workflow in its house.
Breaking story, every screen in step
A hurricane story goes from developing to breaking in three hours. The newsroom system publishes seven versions; graphics, the website, playout and the standards desk must all show the same one.
story.context- 1Newsroom system
story.contextVersion 1: story ACTIVE, phase DEVELOPING, priority HIGH, one verified wire source.
202 acceptedChecked against SOM 1.0, then delivered to every system that subscribed to story.context.
- 2Newsroom system
story.contextThe same version again, after a network timeout: same message_id, same content.
200 duplicateRecognised as a duplicate. Nobody receives it twice.
- 3Newsroom system
story.contextPhase BREAKING, priority URGENT. Versions 2 to 6 follow as the facts come in.
202 acceptedDelivered in order per story: every system sees version 5 before version 6.
- 4Newsroom system
story.contextA lagging replica re-sends version 2 after version 7 has gone out.
409 refusedRefused before anyone sees it. A stale version would roll every screen back.
sequence_number.not_increasing - 5Newsroom system
story.contextVersion 7: "Cat 4 landfall; 40,000 outages confirmed", with an official source added.
202 acceptedEvery consumer converges on version 7.
The publisher gets
Every screen shows the same version of the story, and no stale or repeated update can roll one of them back.
The vendor proves
Your newsroom system sends complete, strictly increasing snapshots. Your consumer keeps the highest version per story.
Media lands, the story knows
The press conference feed arrives in the media store. A speech-to-text model transcribes it, and a person confirms the transcript before anyone quotes it.
delivery.media_availablestory.context- 1Media store
delivery.media_availableThe feed has arrived: asset_id, where it lives (a media-store URI) and its time range.
- 2Newsroom system
story.contextThe next version lists the feed as a VIDEO asset, READY, the PRIMARY evidence, pointing at the store.
202 acceptedChecked against the story's history: assets are never silently dropped and never change type.
snapshot.assets_dropped - 3Newsroom system
story.contextA TRANSCRIPT asset derived from the feed, with provenance: author MODEL, confidence 0.97, review PENDING.
202 acceptedEvery system sees that it's machine-made and not yet reviewed.
- 4Newsroom system
story.contextThe standards desk has read it: review CONFIRMED, with the reviewer and the time.
202 acceptedThe website and graphics can now quote it.
The publisher gets
AI-made material is labelled as AI-made everywhere, and every system can see whether a person has confirmed it.
The vendor proves
Your media store announces arrivals the newsroom system can resolve. Your tools respect provenance and review state.
Tip-line clip to verified asset
A viewer sends a flood clip with no story attached. A model thinks it belongs to the hurricane story. Nobody uses it until a person has verified it.
story.contextskill.warning.raised- 1Media store
story.contextAn ORPHAN story holding the clip: source USER_GENERATED, UNVERIFIED. A model's MATCH to the hurricane story, confidence 0.91, review PENDING. A VERIFICATION gate blocks the clip.
202 acceptedThe orphan is a real story, so every system can see the clip exists and is waiting.
- 2Skill executor
skill.warning.raisedSeverity flag: the clip rests on an unverified source; confirm before matching it to a story.
202 acceptedChecked and delivered. A skill is meant to raise warnings and never publish story.context (RND's recommendation, not a SOM rule); what the bus checks is its grants.
- 3Standards deskVerify the clip
The verification desk checks the location and the sender, and approves.
No messageA decision people make, recorded in the next message.
- 4Newsroom system
story.contextThe hurricane story's next version adds the clip; gate APPROVED, match review CONFIRMED.
202 acceptedOrdered after the versions every system already has.
The publisher gets
User-generated content never goes out on a model's word. The match, its confidence and the person's decision travel with the story.
The vendor proves
Your ingest or matcher publishes MATCH assertions with provenance. Your tools honour a pending gate.
Standards gate before air
The outage lower third is built, but the figure is unconfirmed. It's booked into the bulletin and can't go to air until standards clears it.
story.contextlink.*system.audittelling.*- 1Newsroom system
story.contextA compliance flag, severity HIGH: "Outage figure unconfirmed pending authority statement".
202 acceptedDelivered to every system that shows or airs the story.
- 2Graphics
link.committedLower third → the one o'clock bulletin, compliance_gate_status PENDING.
202 acceptedPlayout receives the booking and knows it isn't cleared yet.
- 3Graphics
link.gate_changedGraphics tries to clear its own gate.
403 refusedThe graphics connection was granted link.committed only, so it can't clear a gate. In a house, the house grants each vendor connection what it may publish.
producer.message_type_not_allowed - 4Standards desk
link.gate_changedThe authority confirms 40,000 outages: gate CLEARED.
202 acceptedPlayout can now take it.
- 5Standards desk
system.auditAction CLEARED, target the link, who cleared it and why.
202 acceptedThe clearance is on the record, in order with the story.
- 6Playout
telling.startedThe lower third is on air: link_id, scheduled and actual start. telling.ended follows.
202 acceptedEvery system knows what aired, and when.
The publisher gets
Nothing airs past a pending gate, and every clearance says who, when and why.
The vendor proves
Graphics books with gate status. Playout airs only a cleared link. Compliance tooling clears and audits.
AI skill as a second pair of eyes
A house style skill and a standards skill read every version of a court story. They raise warnings for editors; they never edit.
story.contextskill.warning.raised- 1Newsroom system
story.contextA new version: the headline uses an informal term the style guide forbids.
202 acceptedDelivered to the skill executor, beside the tools that subscribed.
- 2Skill executor
skill.warning.raisedSeverity flag, rule house-style-001, affected field headline: "Informal term in headline."
202 acceptedChecked against SOM 1.0 and delivered. A flag marks for review; it withholds nothing.
- 3Skill executor
skill.warning.raisedSeverity hold on the casualty figure: unconfirmed.
202 acceptedCarried to every tool that subscribed. The tools withhold the held fields; the bus doesn't.
- 4Newsroom system
story.contextThe editor fixes the headline and, if needed, turns the hold into an editorial gate in the next version.
202 acceptedThe skill reads the new version and raises nothing new.
The publisher gets
Machine review on every version, with the rule behind each warning. Editors stay the editors.
The vendor proves
Your executor passes the skill harness for som-1.0.0+lib-0.2.2. Your tools honour a hold.
Kill a story everywhere
Legal kills the story. Every surface drops it, nothing can bring it back, and a package that never aired is recorded as suppressed.
story.contextlink.*telling.*system.audit- 1Newsroom system
story.contextVersion 8: story_type KILLED.
202 acceptedDelivered after version 7 to every consumer, in order.
- 2Newsroom system
story.contextA stale workstation saves the story as ACTIVE again.
- 3Graphics
link.withdrawnThe lower third is withdrawn from the bulletin.
202 acceptedPlayout drops the booking.
- 4Playout
telling.endedThe running telling ends, with its exposure end time.
202 acceptedThe record shows exactly how long it was on air.
- 5Automation
system.auditAction SUPPRESSED, target the package: "never linked to air".
202 acceptedThe trail shows what was stopped, not only what aired.
The publisher gets
One kill reaches every system in order, and no stale update can undo it.
The vendor proves
Your consumers act on KILLED. Graphics withdraws, playout ends, automation records the suppression.
Plug a new system into a live newsroom
The house adds a new web CMS in the middle of the season. It has to catch up on live stories without any other system changing a line.
story.contexttelling.*skill.warning.raised- 1Web CMSCreate a consumer connection
In the portal: the message types it wants, optionally filtered by topic.
No messageIts own queue and dead-letter queue. The other systems don't notice.
- 2Web CMSRead over HTTPS
The pull API, with a client-credentials token. No AWS account needed.
No messageMessages in order per story, received and acknowledged up to 10 at a time.
- 3Web CMSReplay from the archive
In the portal: a time range delivered again into its own queue only, to rebuild the state of stories already running.
No messageDe-duplicate on message_id and keep the highest version per story. The workspace is emailed when it finishes.
- 4Web CMSA message it can't handle
Fails five times.
No messageMoved to the dead-letter queue so the rest of the story flows; the workspace is emailed. Once fixed, redrive it from the portal.
- 5Web CMSConsumer test run
Consumer scenarios played into the workspace, graded case by case, then a results statement for the publisher.
No messageExpected against actual, for every case.
The publisher gets
Add or swap a vendor without touching the others, and read the results statement it shares with you before it goes live.
The vendor proves
Pass the consumer scenarios and share a results statement with the houses you choose.
What the bus doesn't do
Your systems stay in charge of the story.
It never edits a story
It checks, orders and delivers messages. The first system to publish a story owns it, and your workspace lists which systems may take a story over; a snapshot from any other system is flagged, or refused if you choose. Skills don't edit stories either: a skill raises warnings, and the story's owner decides what to do with them.
It doesn't enforce a hold
A skill's hold is carried to every tool that subscribed. The tools withhold the held fields, not the bus.
It isn't a media store
Messages should point at media in your stores. The bus enforces only the size: anything over 240 KB is refused.
Try one
Run these workflows on the live bus.
Vendors can publish whole stories, run consumer scenarios and the skill harness against the bus today, and share a results statement. Publishers bring their vendors into a house, their own sandbox, grant what each app may publish, and rehearse these workflows there, step by step. RND stand-ins play any part no vendor holds yet, so a new house can rehearse before its first vendor connects.