just tested this and yep, level 7 officers can't level up any more if you demote them
however, level 7 officers do have this in their bit in the save file (cba to upload my whole file rn), hopefully this helps
<e>
<st>$exceptionalSleeperPodOfficer</st>
<bp>true</bp>
</e>
Thanks for finding that flag! Upon testing myself, I believe that this is vanilla behavior. You can actually confirm this yourself as follows: retrain an "exceptional cryopod" officer and deselect some elite skills (but don't reassign them). After you confirm the retraining, try to retrain again -- you'll see that the maximum number of elite skills has gone down.
Internally, this is because of how OfficerLevelUpPluginImpl.getMaxEliteSkills works. You can see the code here:
public int getMaxEliteSkills(PersonAPI person) {
int bonus = 0;
if (person != null) {
MutableCharacterStatsAPI stats = person.getFleetCommanderStats();
if (stats != null) {
bonus = (int) stats.getDynamic().getMod(Stats.OFFICER_MAX_ELITE_SKILLS_MOD).computeEffective(0);
}
}
return (int) Global.getSettings().getFloat("officerMaxEliteSkills") + bonus;
}
It is only considering the OFFICER_MAX_ELITE_SKILLS_MOD of the officer's fleet commander -- that's you, the player. This is the same for the max level calculation. I searched around and found no mention of any special behavior with the $exceptionalSleeperPodOfficer flag enabled.
Since I think this is a bug, I'll try to find a way to fix it for the next update (which, by the way, will be rather big, and should be coming soon).
Edit:
0.4.0 is up. @Jaghaimo: I ended up finding a ... let's say very interesting ... way of implementing the feature you requested where only assigned officers would count toward the officer limit. Turns out the officer's panel in the dialog has its own flag for whether an officer is a mercenary, so turning that flag on causes it to disregard any "is past max" checks while not actually affecting the underlying officer.