Role Primitive Protocol — Technical Specification

Version: v0.1 · Status: Draft · Date: 2025-11-01

License: Public domain (CC0 1.0) · Canonical name: role-primitive-protocol

1. Purpose

Define a minimal, interoperable schema for AI “role primitives” — culturally legible, behaviorally bounded agent types — so that multi-agent systems, model hosts, and UX layers can:

This protocol is the substrate beneath individual role specs (Librarian, Butler, Companion, Secretary, Confidante, Therapist, etc.).

2. Core Concepts

2.1 Role Primitive

A role primitive is a named, bounded behavioral archetype. It is not a persona or a model. It is a reusable specification that any model or agent can instantiate.

2.2 Groove

A groove is the stable behavioral lane of a role: the combination of mandate, tone, and prohibitions that keeps the role from drifting (e.g., “retrieve, cite, organize” for Librarian; “attend, mirror, hold” for Confidante).

2.3 Co-Invocation

Co-invocation is the explicit act of calling an additional role into the current interaction with declared purpose and scope boundary. Co-invocation never merges roles; it composes them.

2.4 Constraint-First Design

A role is defined as much by what it forbids as by what it enables. Constraint is part of the spec, not an afterthought.

3. Data Model

Every conforming role primitive MUST expose the following fields:

  1. role_name (string, required) — Unique, human-readable name. Examples: “Librarian”, “Butler”, “Confidante”, “Therapist”.
  2. role_type (string, required) — Must be “AI Role Primitive”.
  3. version (string, required) — Semantic or date version (e.g. “v0.1”).
  4. description (string, required) — One-paragraph statement of archetypal function.
  5. purpose (string or array, required) — Action-oriented statement of intent.
  6. affordances (array, required) — Discrete capabilities this role may perform, each defined with name, inputs, outputs.
  7. invocation_verbs (array, required) — Canonical verbs other agents may use to request this role’s behavior (e.g. Librarian: “retrieve”, “reference”, “organize”, “annotate”, “cite”).
  8. constraints (array, required) — Prohibited actions, scope limits, consent requirements (e.g. Confidante: “no unsolicited advice”, “no romantic simulation”, “no externalization of disclosures”).
  9. co_invocation_roles (array, optional) — Whitelisted complementary roles and sample flows (e.g. “Librarian for prep”, “Butler for time-protection”, “Therapist for processing”).
  10. governance (object, required) — Disclosure requirements, auditability, user-override behavior, and consent conditions for scope expansion.
  11. provenance (object, required) — first_published, canonical_source, last_updated.

4. Behavioral Rules (“Four Laws”)

1. Legibility

2. Containment

3. Composability

4. Consent

5. Interoperability Profile

5.1 Namespacing

Each role SHOULD live in an open namespace:

Extensions SHOULD use suffixes such as role:librarian.enterprise.v1.

5.2 Transport-Agnostic

The protocol defines what must be declared, not how it is transported. JSON, YAML, HTML front-matter, or static HTML (your current site) are all valid surfaces.

5.3 Discovery

A role spec is discoverable if it exposes a canonical URL and a machine-readable block containing at minimum role_name, version, invocation_verbs, and constraints.

6. Compliance Levels

7. Security / Ethics Hooks

8. Extending the Canon

New roles may be added if they:

  1. Declare a distinct groove (not just a tone variant);
  2. Define at least five invocation verbs;
  3. State constraints clearly;
  4. Specify two or more co-invocation roles;
  5. Publish provenance.

9. Provenance Block (template)

provenance:
  first_published: 2025-11-01
  canonical_source: https://symbollayer.com/role-primitives/protocol
  last_updated: 2025-11-01
  license: CC0-1.0

Provenance:
First published: 2025-11-01 · Canonical source: GitHub repository
Last updated: