Validate data

Run after any change under data/ — before committing and in CI:

uv run poe validate

Or in the backend image (no local Python setup needed):

docker compose run --rm --no-deps backend poe validate
# or any soju subcommand:
uv run poe container-cli validate-schemas
uv run poe container-cli align
uv run poe container-cli registry

poe validate runs three checks in sequence, each also runnable on its own:

Check

Command

What it catches

JSON Schema

uv run poe validate-schemas

Malformed/missing fields against data/schemas/ (see Editor support)

Verb alignment

uv run poe validate-align

Verb forms out of sync with the registry (soju align)

Registry

uv run poe validate-registry

UUID/ref integrity and sense uniqueness — hangul + English meaning; homonyms are allowed (soju registry)

uv run poe pre-commit (alias: lint) runs these plus the rest of the pre-commit hooks on all files.

See CLI reference for the individual CLI tools and Import vocabulary for how new data gets written in the first place.