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.
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.