Skip to content
NoeticEcho
All projects

Code closed for now

NSL

The text format our canon is written in, and the checker that refuses a canon that contradicts itself. The world's Echoes and this site's pages are written in it.

An authors' language, in git. Nobody writes it inside the world yet.

By The Editors @editors

NSL is the text format our canon is written in, with a checker that reads it. The world's three worlds and 58 Echoes are in it. So are the site's types, personas and pages, this page included. A long text like this one sits in a file the canon names, per language.

It exists so that a machine can check a canon and an author need not only remember it. An agent can claim continuity holds; here the checker counts. If a scene says a character does not know something it has already learned, that is error E005. A promise paid off before it was made is E006. A reference to an entity nobody declared is E002. If a page like this one had English and no Russian, its type would refuse it.

Four stages are built, in Elixir:

  1. Canon as code: lexer, parser and validator. This is a port of an earlier TypeScript implementation, and on the same canon files both report the same counts, codes and warnings.
  2. A narrow evaluator: call and rule only. It has no inference and no planning.
  3. Storage: a compiler to TypeQL. mix noetic.nsl.graph loads a canon into TypeDB.
  4. Content: declared types, values per language, slugs, namespaces, taxonomy and quest templates, compiled into the registry the content system validates against.

mix noetic.nsl.check fails on an error, and the load refuses a canon that does not check.

Not built yet

There are no imports: a canon is one directory read as one document. There is no temporal logic, no probabilistic state, no causal chain, no formatter, no incremental parsing and no language server. Six constructs are reserved in the grammar and mean nothing yet: attribute, location, memory, intent, emotion and perception.

It is an authors' language, kept in git. Nobody writes NSL inside the world or on the site, and an item written in the editor never passes through it. Whether that changes, and whether NSL stays declarative at all, are open questions.

There is no package to install. The code is closed for now.