Sounds like a bug, but I do think the Optimist trait should be a variable.
Thing about it. Let’s assume that normally, Optimist is 25 Morale boost at all times ( just a random number ) by default.
Now go kill a group of children. You’ll get the usual moral debuff, but your Optimist morale should also drop. You did (probably) kill them in self-defence, but it should still affect you, unless you’re a psycho.
Same in the other direction. You wake up in a warm bed, stuff yourself with maple syrup pancakes, good alcohol, maybe smoke a cig or two. Life is good!
So in simple terms, depending on your current morale bonuses ( excluding Optimist ) the Optimist trait should fluctuate. Maybe like 1 point boost per 10 positive morale, and 1 point loss per 12-15 negative morale ( You are an optimist, after all. )
The buffs to the Optimist should be long-term, however it’s not like it would keep stacking up. Let’s say you got Optimist to 35 Morale buff ( So you had 100 morale boost from other sources ). Your other morale boost ends. Now you get your morale boost ( ex. Optimist ) to 50.
You will not get any bonus. You should only get a buff when you “break through the ceiling” so to speak.