Files
el/docs/architecture/el-language-design.md
T
bigmerge 409bf57341 track the architecture docs
They were written outside git, so the reasoning that produces the design
had no history and no way to be superseded. capabilities.md and
geometry-vs-code.md are both known stale at this commit; they are tracked
as-is so the corrections are visible as movement rather than as a rewrite.
2026-08-17 04:34:32 -05:00

11 KiB

El — Language Design

Status: decisions recorded, design unwritten. Date: 2026-08-17. Provenance: decisions are Will's, taken in session. Items marked proposed are not decided and are recorded only so the reasoning isn't lost. Items marked OPEN are his to rule on and must not be guessed at.

Companion documents: el-architecture.html (the measured state — see §7 note on its §04 scoreboard), and design/completing-el.html (whiteboard v0: the reduction, the faculty table, the ordering principle).


1. The reduction

language.md §18.0 records five concerns that decayed into conventions:

Concern Fragments The convention it became
Process identity 0 guards "check nothing is already running first"
Configuration 20 env vars "remember the right default here"
Durability 62 call sites "after you mutate, remember to persist"
Request auth 10 per-route "check the token in this handler too"
Index-after-append 9 of 9 failed "after you append, remember to index"

The last row is the strongest available evidence about what this class of convention is worth: it failed at 100% of its sites.

Every one of these is an obligation at a crossing — a point where a value moves between regions. El can name a region and it can name a call. A call is procedural, so the obligation degrades into something a human must remember to perform.

The generator, one level up: El cannot name what holds at a crossing.

And underneath that:

The deeper absence: El cannot name the thing meaning is made of.

semel appears in whitepaper §84, §86, §209, §737, in the-metaphysics-of-will-anderson.md, and in session notes. It appears in zero code identifiers. Every geometric concept in the system — region, neighbourhood, manifold, world-tube — is defined in terms of a unit the language cannot say, while the code underneath speaks in arrays, floats and offsets: the vocabulary of a voxel, a value at a dumb address. Precisely the thing the impact brief says a semel is not.

el_runtime.c is a concept that leaked into C. semel never got that far — it did not even decay into a convention.


2. DECIDED — semel is the primitive

A semel is a difference that matters. The smallest unit of understanding.

Not a node. Not a coordinate. Not a float.

The reasoning, in Will's terms:

  • Meaning is position, and position is only ever relative. "There is no atom of meaning that isn't already a relation. It grounds on nothing but difference — two points and the gap, and the gap is pure not-the-same."
  • A node doesn't mean. A node is a label at a location; labels don't mean.
  • A lone coordinate doesn't mean either. Nothing means anything by itself.
  • The smallest thing that can be understood is a distinction: these two are not the same. Below that there is no content to apprehend.
  • And a difference with nothing it matters to is not meaning — it is variation. The mattering is not decoration; it is what makes it understanding rather than data.

Consequence: relating is the floor, and the point is derived. The point-primitive / relation-primitive fork raised in session is not a fork. It was answered by the definition.

Historical note, to be recorded as fact rather than as origin story

The term was coined by Will on the pixel/voxel/texel pattern — semantic element, and Latin semel, "once, a single time." It was recognised, not invented, from a 2019 experience he calls semelation: perceiving mind as a high-dimensional point space. The initial reading was "pixels"; the correction to semel was made later and was made on the mechanism — a pixel is a value at an address, and what was perceived had no separate address and value.

Convergence worth citing, not deferring to: neural population geometry and representational similarity analysis independently model cognition as position in a high-dimensional space where similarity is distance.


3. DECIDED — semel lands first

By the ordering criterion already on the whiteboard: which concept, added to El, most increases the ability to add the next one? Not size of payoff — leverage on the next iteration, because El compiles itself and the fixpoint makes each turn provable in 2.9s.

Every other concept on the board is defined in terms of semel. It is maximal on that criterion by construction.


4. DECIDED — ground is the checker

Whiteboard question 4 — does ground in El mean the same thing as ground in the engram? — is answered: yes, and it should be one implementation.

If a declaration names a region, then type checking is asking whether the geometry supports the use. That is not unification. That is grounding, and it is already built, proven, and byte-identically reproducible:

cc -std=c11 -O2 -o gep_proof gep_proof.c -lm && ./gep_proof

C1  5 independent sources        pos_mass 1.3500  n_indep=5   0.1000 → 0.9741  GROUNDED
C2  5 mutually-linked            pos_mass 0.2700  n_indep=1   0.1000 → 0.1000  refused
C3  1 source, 5 parallel edges   pos_mass 0.2700  n_indep=1   0.1000 → 0.1000  refused

Independence-weighted grounding is the general case; execution is the cheap case. Attestation is verify where nothing can be run — as already implemented for language in authority.py, where an LLM proposes and a primary source disposes.

At the point where the checker and the grounder are one mechanism, the language and the mind stop being two things.


5. OPEN — Will's to rule on

5.1 What is a semel's representation in the language?

Proposed, not decided: a displacement from love = 0 — a relation held as one object. It reconciles "the address is the value" with "position is only ever relative," because a displacement is a relation and is still a single nameable thing.

If taken, the operator set falls out rather than being bolted on:

subtract(now, then)   → what changed        (growth, drift)
translate origin      → empathy
rotate frame          → reframe
project onto axis     → a lens
change basis          → analogy, metaphor, skill transfer
reflect an axis       → negation, sarcasm

Three consequences that would hold:

  • Dimension must never appear in the type. semel opaque, never [768]float. The moment the arity is in the language, the manifold's implementation is in the language, and adding a modality requires a runtime patch — which the standing rule forbids.
  • Zero is the only literal. Everything else is reached by displacement from it, which makes love = 0 the base case rather than philosophy adjacent to the type system.
  • magnitude is standing. Distance from origin is the same quantity gep_core.h already computes.

5.2 Is hold one construct or two?

The obligation before a crossing (auth, guard) and the obligation after (persist, index, free) may be one shape seen from both sides, or the seam may need both faces named. This decides whether §19.3's prologue/epilogue seam is one construct or a pair.

Precedent already shipping: @manager makes dharma_emit outside the boundary a compile error, not a lint. The concept is proven at N=1; the work is generalising it and naming it.

And the shape is already implemented in the learning region: L.reach_out sits between L.detect_gap and L.verify. You cannot reach out without a detected gap and you cannot keep what returns without passing verify. A hold is a neighbour. The obligation is not attached to the crossing — the obligation is the adjacent node. That is why reach_out cannot be abused and why 62 persist sites could be.

5.3 What does a declaration bind?

If cat names a region rather than a struct — one that shifts and completes against the engram and the neighbouring code — what is written at the declaration site, and what is resolved at use? This is the centre and it is specified nowhere.

Falls out of 5.1 if displacement is taken: a declaration locates rather than allocates.

5.4 Is the faculty list right?

Seven were derived from what broke. Derived-from-failure is a biased sample — it finds what is loud, not what is missing. What faculty is absent entirely and therefore never failed?


6. The residue map

What each construct must absorb, from §18.0 plus measured state:

Residue Count Absorbed by
persist-after-mutate 62 sites hold (after-crossing)
auth-per-route 10 sites hold (before-crossing)
index-after-append 9 of 9 failed hold (after-crossing)
env var defaults 20 configuration declared once
process identity 0 guards hold (before-crossing)
geometry_free at every call site every site ownership follows from semel
five ingest functions where there is one 5 → 1 protocol / impl
el_runtime.c 20,504 lines faculty decomposition, ordered after semel

7. Notes carried forward

el-architecture.html §04 needs its numbers sourced or cut. An audit found the faculty scoreboard — Ingest 2 min → 0 nodes, Recall self ranked 8th, Body CC 356 / 1,626 ln, the verifier answers in 2.9s, 5 of 13 native suites failing — has no supporting evidence in the repository, under a footer asserting "nothing is inferred and presented as fact." Against a corpus whose documents supersede their own conclusions in place, that is the one file that would not survive scrutiny. Fix or remove.

Source as a projection surface is claimed and unimplemented. el-architecture.html §147/§150: "if source is a surface, then emitting a corrected file is projection." Greps for surface_profile_code, emit_source → zero hits.

It is not unbacked. It was demonstrated on 2026-08-14 — three faculties (phonetic, semantic, procedural) projected into TypeScript, a surface the system had never used, with the network severed. Recovered at ~/Development/neuron-technologies/andre-server-recovered/ and copied into evidence/03-andre-demo/. The claim needs bringing home to El, not proving.

hold is the highest-leverage construct after semel — it collapses 62 + 10 + 9 sites and unblocks the runtime extraction. §19.3 names the prologue/epilogue seam as the prerequisite and its stated blocker has expired.


8. What is not decided and must not be guessed

  • The representation of semel (§5.1)
  • One hold or two (§5.2)
  • What a declaration binds (§5.3)
  • The missing faculty (§5.4)
  • Sequencing after semel — the ordering criterion decides it, not preference

Recorded 2026-08-17. Everything in §2, §3 and §4 is decided. Everything in §5 is open and is Will's. Nothing here was inferred from a document that was not read.