Skip to content

Copyright

Facts that apply across a scope are definitions in RIDDL, not metadata options — the same principle that makes author and version definitions. A copyright completes the set, after which the rule "metadata options apply to the bearing definition only" holds without exception.

A copyright is a named leaf carrying the notice verbatim:

copyright House is "© 2026 Ossum Inc."

The Notice Is the Whole String

The quoted string is the notice in its entirety — symbol, year and holder. RIDDL does not decompose it into parts, because notices vary by jurisdiction, by holder and by license, and any decomposition RIDDL imposed would be wrong somewhere.

Why It Is Named

Copyrights at lower scopes routinely differ — a vendored external context bears a third party's notice — and vary in detail. The name lets a documentation generator gather a model's distinct notices and attribute each one properly in front matter, rather than emitting the same string many times or guessing at identity.

Nearest Wins

The copyright that applies to a definition is the one declared by the definition itself or, failing that, by the nearest ancestor that declares one.

domain Shopping is {
  copyright House is "© 2026 Ossum Inc."

  context Ordering is {
    // applies: House
  }

  external context StripePayments is {
    copyright Stripe is "© 2026 Stripe, Inc."
    // applies: Stripe -- it OVERRIDES House, it is not appended to it
  }
}

This is the deliberate semantic difference from version. A version composes a coordinate out of every versioned ancestor; a copyright does not accumulate at all. That is the whole point of allowing it at inner scopes: an external context bearing a third party's notice must override its enclosing domain's for everything inside it.

Where Copyrights May Be Declared

The same nine scopes as version: Root, Module, Domain, and all six processorsAdaptor, Context, Entity, Projector, Repository and Streamlet.

A processor's messages form an API and therefore a contract, so attribution has to be expressible per component. Saga and Function extend the vital-definition base rather than Processor, and are deliberately excluded.

Validation

A scope declaring more than one copyright is an Error, reported at the second declaration.

copyright as an identifier still works

Making copyright a keyword does not break models that use it as a field or type name. Keywords are not excluded from the identifier production.

Occurs In

Contains

Nothing — it is a leaf definition.