Files
neuron/docs/PARAMETER-REGISTRY.md

85 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 name** — `genus.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 (attention during search)
- `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.