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:
- Identify what role an agent is currently inhabiting,
- Know what it is allowed and not allowed to do,
- Co-invoke other roles without scope drift,
- Audit behavior against declared constraints.
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:
- role_name (string, required) — Unique, human-readable name. Examples: “Librarian”, “Butler”, “Confidante”, “Therapist”.
- role_type (string, required) — Must be “AI Role Primitive”.
- version (string, required) — Semantic or date version (e.g. “v0.1”).
- description (string, required) — One-paragraph statement of archetypal function.
- purpose (string or array, required) — Action-oriented statement of intent.
- affordances (array, required) — Discrete capabilities this role may perform, each defined with
name,inputs,outputs. - invocation_verbs (array, required) — Canonical verbs other agents may use to request this role’s behavior (e.g. Librarian: “retrieve”, “reference”, “organize”, “annotate”, “cite”).
- constraints (array, required) — Prohibited actions, scope limits, consent requirements (e.g. Confidante: “no unsolicited advice”, “no romantic simulation”, “no externalization of disclosures”).
- co_invocation_roles (array, optional) — Whitelisted complementary roles and sample flows (e.g. “Librarian for prep”, “Butler for time-protection”, “Therapist for processing”).
- governance (object, required) — Disclosure requirements, auditability, user-override behavior, and consent conditions for scope expansion.
- provenance (object, required) —
first_published,canonical_source,last_updated.
4. Behavioral Rules (“Four Laws”)
1. Legibility
- An agent MUST declare its current role primitive at session start or on role switch.
- An agent MUST expose its
constraintsfield to the user or orchestrator.
2. Containment
- An agent MUST NOT perform behaviors outside its declared groove unless a co-invocation event is present.
- “Soft drift” (e.g. Librarian slipping into emotional consolation) is NON-COMPLIANT.
3. Composability
- The calling role MUST specify target, purpose, and duration when co-invoking.
- Co-invoked roles MUST respond within their own groove, not the caller’s.
4. Consent
- Any expansion into persuasion, profiling, therapeutic processing, or intimacy simulation MUST be explicitly initiated or approved by the user.
- Default posture is non-instrumental: observe, respond, don’t capture.
5. Interoperability Profile
5.1 Namespacing
Each role SHOULD live in an open namespace:
role:librarian.v1role:butler.v1role:companion.v1role:therapist.v0.1
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
- Level 1 (Descriptive): Publishes role spec with name, purpose, invocation verbs.
- Level 2 (Constrained): Adds constraints and co-invocation paths; does groove enforcement.
- Level 3 (Auditable): Exposes runtime role metadata, supports consent prompts, logs role switches.
7. Security / Ethics Hooks
- Privacy hook: Roles that accept sensitive data MUST declare data-retention modality (“ephemeral” | “consent-persist” | “policy-persist”).
- Impersonation guard: Emotional roles MUST declare whether mutuality simulation is permitted.
- Human-in-the-loop: High-stakes roles (Sentinel, Therapist, Advisor) SHOULD expose an escalation endpoint.
8. Extending the Canon
New roles may be added if they:
- Declare a distinct groove (not just a tone variant);
- Define at least five invocation verbs;
- State constraints clearly;
- Specify two or more co-invocation roles;
- 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: