# Contributing to NeuroGlyph

NeuroGlyph is a semantic substrate for digital communication — «Unicode for meanings».
It does not replace natural languages; it is a layer a message can carry with it.

Contributions land via the community-renders workflow — see
[community-renders.md](community-renders.md).

## Where to contribute

- **Renders of the 65 NSM semantic primes in your language** (primary path):
  open an issue via the template, then submit a PR with the render batch.
- **Corrections to existing renders** (allolex audit, cultural notes).
- **Not yet:** macros — crystallization requires 500+ annotated phrases and human
  review of decomposition, round-trip, and cultural stability (Phase 3).

## Before you open a PR

- Read `community-renders.md`: priority tiers, PR checklist, maintainer review.
- Native speaker confirmation is required for render batches.
- `~` marks genuine allolexes (same concept, different surface form);
  synonyms go in `alternatives`.
- Every render needs a `source` (NSM table / reference / own knowledge as native speaker).
- No emoji in renders — the visual layer is SVG/typography only.

## Gate

The build + validator run automatically on PRs (**fail-closed**): a PR that breaks
`build_registry.py` or `validate_registry.py` cannot merge, even with a maintainer
review. Maintainer review is the second line of defense, not the only one.

## Freeze rule (governance, I5)

Changes to the *core ontology* (grammar, axes, roles) do not freeze until validated
on **≥3 typologically different languages** — enforced via the expressibility layer
in `ng check` (`codec/expressibility.py` + `codec/typology.json` + canary set in
`corpus/canaries.json`). Renders and macros still follow the community workflow
above; this rule guards the *representation itself* against RU/EN bias.
