Relationship marks

Updated 2 min read
On this page

Version 0.4.0 of OPVS added three marks that say how a message relates to something else. They matter most for rules and for memory notes, where "this replaces what I said before" or "do not do this" changes how a note should be read.

Mark

Reads as

Example

/#tag

not this

/#refunds

<-ref

caused by ref

<-incident-215

!= ref

replaces ref

!= m_4f1

/#tag: not this

A negated tag says the message is about the absence of something, or that something is ruled out. It uses the same characters as a tag.

@lead>|support ! #billing /#refunds

Answer billing questions, but do not promise refunds. Send refund requests to finance.

The message is about billing (#billing) and explicitly not about refunds (/#refunds). A reader that filters by tag can tell "mentions refunds" apart from "rules refunds out".

<-ref: caused by

<- followed by an id, with no space, names the cause of this message: an earlier message, an incident, a task.

@monitor>team:ops ^ !!! <-incident-215 #outage

The payment API has failed health checks for 10 minutes. Paging the on-call lead.

!= ref: replaces

!= followed by an id says this message replaces the earlier one. The space after != is optional: != m_4f1 and !=m_4f1 mean the same. Without an id the mark means nothing.

@M>M . != m_4f1 #dec #api

Use REST, not GraphQL, for the partner API. This replaces the earlier note.

Ids in <- and != are letters, digits, _, and - inside the id.

Where these come from

We looked for these three marks in the agent protocols we checked in April 2026 and did not find them. Older non-agent messaging has close cousins. Usenet news, for example, has a "Supersedes" header that does the job of !=.

Relationship marks | OPVS