A profile defines one domain's meaning on top of the CommonPact core. A profile is not merely a list of custom fields; it is a complete contract for roles, lifecycle, proof, privacy, responsibility, and interoperability.
Every profile seeking Research RFC status MUST include:
- identifier, semantic version, status, maintainers, and repository;
- purpose, use cases, and explicit non-goals;
- parties, roles, authority, delegation, and required signer matrix;
- public discovery schema and maximum lifetime;
- data prohibited from public discovery;
- private negotiation fields and disclosure timing;
- canonical agreement terms and hashing input;
- proposal, counter, decline, and acceptance semantics;
- aggregate and thread lifecycle state machines;
- activation, handoff, or start proof;
- progress events and permitted authors;
- cancellation and abnormal termination rules;
- completion claims and exact receipt signer set;
- disputes, conflicting evidence, and external resolution references;
- ratings, attestations, warnings, and revocations;
- privacy, metadata, abuse, and coercion risks;
- accessibility requirements and prohibited inaccessible defaults;
- safety, legal, insurance, tax, licensing, and operational responsibility;
- payment, escrow, refund, chargeback, or settlement references;
- failure, retry, replay, migration, and older-client behavior;
- strict schemas and semantic validation rules;
- valid and invalid conformance vectors;
- at least one complete fictional transcript;
- a mapping showing which concepts remain profile-specific.
Every profile MUST publish a machine-readable manifest conforming to schemas/profile-manifest.schema.json. Registration is informational; it is not permission, certification, endorsement, or proof of safety.
A profile MAY be stricter than the CommonPact core. It MUST NOT weaken:
- canonicalization and event-ID rules;
- proof binding and signer uniqueness;
- provenance and causal references;
- conflict preservation;
- critical-extension handling;
- version negotiation;
- claims-versus-receipts distinction;
- data-minimization requirements declared by the profile itself.
A feature MUST NOT become core merely because one profile needs it. Before extraction it SHOULD:
- work naturally in at least two substantially different profiles;
- avoid domain terminology and hidden assumptions;
- preserve stricter profile safeguards;
- have documented privacy and security consequences in both domains;
- have compatible schemas, vectors, and migration behavior;
- be accepted through both projects' public governance.
- Concept — problem, actors, and boundaries only.
- Draft — coherent terms and lifecycle; artifacts incomplete.
- Research RFC — complete founder-authored profile package, schemas, vectors, and transcript.
- Interoperability candidate — independent implementations are testing the profile.
- Proven profile — published evidence satisfies the profile's conformance gates.
- Operational deployment — one accountable deployment exists; this is not universal safety or legality.
Reviewers SHOULD ask:
- Does the profile hide a domain-specific obligation inside a generic field?
- Can a malicious client make a user authorize different terms than displayed?
- Which data becomes public, linkable, or permanent?
- Who is responsible when the protocol evidence is insufficient?
- Does the profile assume one payment, identity, moderation, or transport provider?
- Can users export evidence and move to another compatible client?
- What does the profile explicitly refuse to solve?