# Contributing

> Ways to help: report a problem, map a tool, add an example, or propose a change.

OCP is developed in the open, in the [loopmath repository](https://github.com/loopmath/loopmath). Everything that defines the format lives under `spec/`:

| Path | What it is |
|---|---|
| `spec/OCP.md` | The normative note: what is normative, every rule the schema cannot express, and the configuration id algorithm. |
| `spec/VERSIONING.md` | The versioning promise. |
| `spec/ocp-v0.3.schema.json` | The JSON Schema for 0.3, next to those for 0.1 and 0.2. Its description strings are normative too. |
| `spec/examples/` | Example documents: one 0.3 run per workflow shape, a document with every 0.3 field, and 0.1 and 0.2 documents. |
| `spec/examples/golden/v0.3/` | A passing and a failing document for each 0.3 rule; `expected.json` lists the codes each must produce. |

The reference checker is `loopmath.ocp.conformance`, under `src/loopmath/ocp/`, with a standalone copy at `spec/ocp_conformance.py`.

## Ways to help

- **Report a problem**: Something ambiguous, contradictory or wrong in the specification, or a document the checker judges wrongly. Open an issue with the smallest document that shows it.
- **Map a tool**: Add a tool to [Implementations](https://orchestrationcontextprotocol.io/docs/implementations): where an exporter hooks in, what it fills, and an example document that passes `loopmath ocp validate`.
- **Add an example**: A document for a workflow shape or an edge case the examples do not cover yet.
- **Propose a change**: A new field, rule or vocabulary. See [Proposals](https://orchestrationcontextprotocol.io/community/proposals).

## Before you open a pull request

- Every example document passes `loopmath ocp validate`.
- A change to a rule comes with a passing and a failing document for it.
- A change to the schema keeps the [versioning promise](https://orchestrationcontextprotocol.io/specification/0.3/versioning), and says what existing documents and older readers do after it.

## License

The specification, the schemas and the examples are released under the MIT license, as is loopmath. Contributions are accepted under the same license.
