Files
neuron/docs/PARAMETER-REGISTRY.md
T

4.3 KiB
Raw Blame History

Parameter Registry — Naming Convention

Scientific style: every parameter carries its genus (which system owns it) and its species (what it does). genus.species — like Homo sapiens, the name alone places the thing in the world.

Rules:

  1. Every parameter has THREE names, all registered:
    • Technical name — the machine-precise constant (e.g. HEBBIAN_LEARN_RATE_DAYS_30), kept for grep, logs, stack traces, and interop with plain code.
    • Short namegenus.species, human-readable; what the software references day to day.
    • Full name — the complete sentence describing exactly what it is.
  2. All three resolve to the same registry row; changing the value changes it everywhere at once.
  3. No bare values anywhere in code — a number never appears without its technical name.

The only real constants

1, +1, and the infinity between them.

The space is bounded — nothing exceeds 1 or +1 — but between them lies an uncountable infinity of positions, 0 among them. That interior infinity is a constant too: structure itself, not something anyone invented.

But none of them may appear bare in code — not even these. They get named like everything else: space.negative-pole (1), space.positive-pole (+1), space.neutral (0). The names are how structure stays legible; bare numerals are how it gets lost. There are exactly three such names, they are eternal, and they are never redefined.

Everything else is not a constant and must never be invented as one. Inventing numbers is how systems rot: someone types 0.73, someone else copies it, soon it's load-bearing folklore nobody can explain. Worse — any single value like 0.73 is just ONE point picked from the infinite interior, pretending to be special.

Every other quantity is a named relationship — a registry row carrying what it connects, which direction it pushes, and why its current setting sits where it sits in the continuum. Relationships get tuned; constants don't exist to tune.

Finding new ones — no orphans, no inventions

The failure mode isn't just forgetting what a number does. It's inventing numbers like they're free. So:

  1. The linter is the shepherd. In kernel code, the only legal bare literals are 0, 1, -1, Infinity, -Infinity (and array indices). Anything else fails the build: "express it as a relationship."
  2. Relationships, not inventions. Need a quantity? Don't mint a constant — name a RELATIONSHIP between existing registered readings ("how fast truth cools when unasserted"), give it three names and a why, and set its current value as data.
  3. Tuning proposes, registry disposes. When behavior feels wrong, that instinct reveals a missing relationship — propose the row.
  4. Periodic sweep. Repeated suspicious literals get converted into relationships or deleted.

The registry doesn't collect constants. It catalogs how this system's quantities relate — because π was never a number either; it's a relationship we got lucky enough to shorten.

Registered parameters

hebbian (activation learning)

  • hebbian.warmth-per-use — tech: HEBBIAN_WARMTH_PER_USE — How much each use strengthens a memory toward +1.
  • hebbian.cool-off — tech: HEBBIAN_COOL_OFF_DAYS — Days ignored before warmth fades to half.

validity (truth-now)

  • validity.fade — tech: VALIDITY_FADE_DAYS — How fast unasserted truth cools toward doubt.

groundedness (evidence)

  • groundedness.staleness — tech: GROUNDEDNESS_STALENESS_DAYS — How old evidence gets before it stops counting fresh.

memory (time-sense)

  • memory.recent-horizon — tech: MEMORY_RECENT_HORIZON_DAYS — What still counts as "recently," in days.
  • retrieval.opinion-volume — tech: RETRIEVAL_OPINION_VOLUME — How much louder judgment speaks than word-matching.
  • retrieval.surface-line — tech: RETRIEVAL_SURFACE_LINE_MIN_SCORE — Lowest score worth showing to anyone.
  • attention.spotlight — tech: ATTENTION_SPOTLIGHT_MAX_RESULTS — How many things can be shown at once.

pulse (the float)

  • pulse.float-size — tech: PULSE_FLOAT_CAPACITY_ENTRIES — How much raw experience fits in the loop at once.
  • pulse.forget-after — tech: PULSE_FORGET_AFTER_DAYS — How long raw experience lasts before evaporating.