Saxonberg Server API
    Preparing search index...

    Type Alias TraitBandName

    TraitBandName: "unformed" | "defined" | "entrenched"

    TraitBand — the form→define→entrench lifecycle band a disposition axis sits in, surfaced instead of a raw evidence mass.

    A character starts unformed (near-neutral, little evidence); as disposition-valenced acts accumulate an axis becomes defined (a pronounced, recognizable trait); a heavy aggregate is entrenched ("set in their ways"). The band is a function of the accumulated evidence mass (the decayed Σ of |valence|), NOT the signed position — a strongly Generous and a strongly Greedy character are both entrenched on generosity, just at opposite poles.

    Entrenchment-resists-drift is emergent, not enforced here: position is a clamped decayed sum (see TraitPosition), so an entrenched axis already pinned at the rail barely moves under more same-direction evidence, while an unformed axis moves freely. This band is the readable label for that lifecycle stage.

    A static-method value-object (no instances) — the band IS its name. The mass cutoffs are passed in (AppSettings-driven via the Logic layer); the defaults here serve only the unwarmed unit-test path.