D261 - Shapes are the binding constraint, not vocabulary, by three to one
decided · 2026-08-25 · measured against names the grammar did not find
audit says the grammar can re-derive every name in the
database, which sounds like full coverage and is not. Most of those
names were found by the grammar, so it can necessarily spell
them - measuring coverage against them measures the search that produced
them.
tests/shapes.rs measures against the names found
without the grammar - read out of module strings, or
seen in a trace. Those owe nothing to the pattern list, so they are a
sample of what vendor identifiers actually look like. Of 183 such
names:
| reachable under the current pattern list | 28 (15%) |
| unreachable, needing a shape | 121 (66%) |
| not splittable into known words at all | 34 (19%) |
So the pattern list is short by more than three times what the
vocabulary is short by, and buying more words is spending on the weaker
lever. That confirms, with numbers, a prediction made independently from
the naming side: a word only pays in the shapes that exist, and
learned appears in two patterns, once each.
The first cut of this was wrong and the correction
matters. Counting every independently-found name gave a 68%
vocabulary gap - but 276 of those 464 names are POSIX or libc, which
every vendor pattern begins with the sce prefix and cannot
spell, and is not meant to. Scoped to vendor-shaped names the ratio
inverts.
Three shapes are nearly free and would spell fourteen of them today:
| names | cost | shape |
|---|---|---|
| 3 | +0% | prefix + learned + verb |
| 5 | +4% | prefix + module + learned + learned + verb |
| 6 | +11% | prefix + learned + verb + learned + learned |
The rest are not worth having at any vocabulary size - the ranked list runs to +789%, +1862% and, for one ten-part shape, five orders of magnitude beyond the whole current space. A name needing that has to come from somewhere other than the generator.