Nerthus.Lang¶
Nerthus.Core (until cutover). This page describes the frozen system that runs today and is deleted at cutover. Replaced by: not yet written.
The language layer: Polish lemmas and named-entity spans over the lore corpus, generated in CI and committed as sidecars.
Read at nerthus.lang c51f6ef (2026-08-25).
What the language layer is for owns the subject. This page is about the repository.
What it owns¶
- The annotation pipeline. It reads a lore checkout, writes one sidecar per source file under
nerthus.lang/, and opens a merge request with the result. - The frame layer over those sidecars - the grammar, its floors, and the training loop.
It is a build-time repository. The daemon never calls it. It consumes the committed sidecars the way it consumes any other file in the tree, so nothing at request time depends on Python, Morfeusz or a model being installed anywhere.
That is the design decision worth carrying: running the taggers once in CI and committing the output gives every host identical lemmas from the same commit. Per-host processing would give each host its own answer.
Where its CI runs¶
python:3.12-slim, on a runner of its own. The project overrides NERTHUS_RUNNER_TAG at project
level, because a language model does not fit the shared runner's job cap.
Six jobs: test, lint, pipeline-smoke, frames-floors, frames-train, frames-yardstick.
What it pins, and what pins it¶
It pins its model by URL. The spaCy model and Morfeusz are installed from
NERTHUS_LANG_SPACY_MODEL_URL and NERTHUS_LANG_MORFEUSZ_URL rather than from a version range, so
an annotation run is reproducible from the variables alone.
Nothing in the estate pins Nerthus.Lang. What downstream consumers pin is its output: the sidecars are committed, so a host reads the annotation tree at whatever commit it converged on.
What breaks if it stops¶
No new sidecars. The layer does not go dark, because what a host reads is committed and stays committed - name resolution, search and normalization keep the answers already in the tree and stop gaining new ones. A source file added after the pipeline stops has no sidecar, and every surface that reads one degrades for that file the way it already degrades for a host with no annotation tree at all.
See also¶
- What the language layer is for - the subject
- The language pipeline - running the job
- Annotation sidecars - the format
- Work on Nerthus.Lang - running it by hand