Colour from two anchors
In a TextureScript palette you never type an interior shade. For each material you give a dark
anchor, a light anchor and a number of shades, and palette interpolates the rest.
Why not pick every shade
Vanilla textures use materials, not colours. A leaf is a ramp of three to six greens; a kernel is a ramp of yellows. Adjacent shades in a vanilla ramp are about 7 OKLab lightness units apart, which is close to the limit of what the eye can tell apart in isolation. A person or an agent choosing shades by hand cannot reliably hit that spacing, and small errors show up as banding or muddy steps. Interpolation gets the spacing right every time and matches vanilla ramps within what the eye can see.
What remains a decision is what actually matters: how dark the darkest shade is, how light the lightest, and how many steps lie between.
Why OKLCH
Interpolating in sRGB makes the middle of a ramp dull and uneven in lightness. OKLCH is a perceptual space: equal steps in its lightness look like equal steps. TextureScript interpolates there, so a four-shade ramp looks evenly spaced.
The vanilla envelope
palette compares each anchor with the range measured on vanilla ramps of the same class:
foliage, cool materials or warm produce. Vanilla foliage has its darkest shade near lightness
45, its lightest near 66, and chroma never above 24; warm produce never goes above chroma 19. A
red that "pops" is usually above vanilla's chroma, which is why the comment lines warn when an
anchor is outside the envelope. A warning is advice, not a refusal.
One palette per family
A crop, its growth stages and its items share one palette file. That keeps the seed, the plant and the harvested item visibly the same material. When an item needs an outline darker than the plant uses, lower that material's dark anchor and add a shade; keep the light anchor so the two match.