Level=1: max die + Con modifier
Level>1: max of {die roll, Con modifier, or new BAB÷2} + Con modifier
Example: Fighter 1 with Con 16 (+3) starts with 13 HPs. When leveling to 2nd fighter rolls a 2, but Con mod is +3, so new HPs are 3 + 3 (Con) = 6. Total HPs are 13 + 6 = 19.
Example: Wizard 7 with Con 10 has 20 HPs. When leveling to 8th level wizard rolls a 1, but new BAB÷2 is 2 so new HPs are 2. Total HPs are 20 + 2 = 22.
Example: Fighter 19 with (lots of) HPs. When leveling to 20th level, Fighter rolls a 1, but new BAB÷2 is 10 so new HPs are 10.
I think this might be even better than my first idea. It puts a slowly increasing floor on HPs based on ability to fight, doesn't marginalize Con, and leaves some variability in the system.
Might be wonky with multiclassed characters though... hm.
Level>1: max of {die roll, Con modifier, or new BAB÷2} + Con modifier
Example: Fighter 1 with Con 16 (+3) starts with 13 HPs. When leveling to 2nd fighter rolls a 2, but Con mod is +3, so new HPs are 3 + 3 (Con) = 6. Total HPs are 13 + 6 = 19.
Example: Wizard 7 with Con 10 has 20 HPs. When leveling to 8th level wizard rolls a 1, but new BAB÷2 is 2 so new HPs are 2. Total HPs are 20 + 2 = 22.
Example: Fighter 19 with (lots of) HPs. When leveling to 20th level, Fighter rolls a 1, but new BAB÷2 is 10 so new HPs are 10.
I think this might be even better than my first idea. It puts a slowly increasing floor on HPs based on ability to fight, doesn't marginalize Con, and leaves some variability in the system.
Might be wonky with multiclassed characters though... hm.