Thank you for helping improve the Development Coordination Protocol (DCP). DCP is a
vendor-neutral, machine-readable semantic protocol: it defines only the
structure of project communication. Please read this guide and SPEC.md
before opening a pull request.
DCP carries no trust. DCP describes project-state changes only.
DCP is a semantic layer. Transport, trust, identity, permissions, routing, delivery/retry, planning, scheduling, workflow/state-machine enforcement, approval, orchestration, and execution belong to other layers (for example a transport such as AgentixMesh) — never to DCP.
Pull requests that add transport, trust, identity, routing, permissions, planning, scheduling, workflow-engine, orchestration, or execution semantics will be rejected on single-responsibility grounds. Every new field MUST be justifiable as descriptive project-coordination metadata: DCP reports that something is so; it never acts on it.
DCP is intentionally scoped to project coordination. It may, in the future, become one protocol in a broader family of Agentix protocols — but DCP itself will remain focused on project coordination. Proposals to broaden DCP beyond project coordination are out of scope for this repository.
- Open an issue describing the problem and the smallest change that solves it. For anything touching schemas, vocabularies, or normative text, write it up RFC-style (motivation, proposal, alternatives, backwards-compatibility).
GOVERNANCE.mddescribes who reviews and accepts changes and how decisions are recorded.- For non-trivial design questions, expect an architecture- and security-oriented review focused on the single-responsibility boundary.
- Within a major version, only additive, optional changes are allowed. An older validator must keep accepting newer-but-compatible messages.
- New classification values (status, verb, severity, etc.) are added to the
controlled vocabulary in
SPEC.md; they are not breaking because these are open tokens and consumers tolerate unknown values. entity_typeand therelvocabulary are closed (structural / SRP guards). Changing them is a major-version concern.- Breaking changes go to the next major version under a new
schemas/vN/namespace; the previous major stays valid and supported.
npm install # installs Ajv (tooling only)
node reference/validate.mjs <file.json> # validate a DcpMessage
node reference/validate.mjs --schema task <file.json> # validate a bare entity
npm test # runs the schema/example/conformance testsThe schemas are language-neutral JSON Schema 2020-12; the Node/Ajv validator is a reference implementation and tooling only — not a runtime dependency of DCP.
A change to any schema or vocabulary MUST come with:
- at least one example under
examples/v1/(if a new message shape), and - conformance fixtures under
conformance/— both anacceptcase and at least onerejectcase — registered inconformance/manifest.json, and - green
npm test(examples validate, conformance corpus passes, schema-lint invariants hold).
- One logical change per commit; clear, imperative commit messages.
- Keep the diff scoped to the change; don't reformat unrelated files.
- A Developer Certificate of Origin sign-off (
git commit -s) is encouraged.
By contributing you agree that your contributions are licensed under the
project's terms: Apache-2.0 for code, schemas, examples, conformance, and
tests; CC-BY-4.0 for the specification text (SPEC.md) and docs/. See
LICENSE, LICENSE-docs, and NOTICE.