85 lines
4.3 KiB
Markdown
85 lines
4.3 KiB
Markdown
# 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.
|