When a planet is outposted, colonized or invaded, its defense troops are set to zero, and every turn including that one the meter grows to max., so that on the first turn you already have some troops there.
This makes "species exchange by fake conquest" too cheap compared to having to battle for a new species: while at war, each one sends a colony ship to an agreed system, the other sends one armed ship and the cheapest troop ship to arrive the turn the colony is stablished, next turn colony can be invaded, and voila, species exchange accomplished with minimum military investment. That is bad for balance with species gifting (that c/should imply an influence cost appart from any opinion/stability drawback to balance against military conquest to not make cooperation OP, as commented in the linked thread), and terrible for games with forbidden diplomacy (and hence no species gifting allowed).
The idea is to make all colonies to start with 6 def. troops (except NO_DEFENSE_TROOPS), which would force players exploiting exchange by conquest to spend PPs comparable to a player invading natives or a poorly defended (but defended nonetheless) colony, that is one medium troop ship and one small troop ship, which is still much less than what costs invading defended colonies (need more military strength and some more troop ships) but at leasts it takes a noticeable toll on PP allocation (now it's not the cost of a colony ship to get a new species, but a colony ship and a couple of troop ships, so your next outpost ship or colony building will have some delay).
|DEF_ROOT_DEFENSE||SetTroops value = min(Value + 1, Value(Target.MaxTroops))||SetMaxTroops value = Value + 6 (Early priority)|
SetTroops value = min(max(Value + 1, 6), Value(Target.MaxTroops))
|DEF_GARRISON_1||SetMaxTroops value = Value + 10||SetMaxTroops value = Value + 6|
|DEF_GARRISON_2||SetMaxTroops value = Value + Target.Population * 2 * [[TROOPS_PER_POP]]||No change|
|DEF_GARRISON_3||SetMaxTroops value = Value + 16||SetMaxTroops value = Value + 18|
|DEF_GARRISON_4||SetMaxTroops value = Value + Target.Population * 2 * [[TROOPS_PER_POP]]||SetMaxTroops value = Value + Target.Population * 4 * [[TROOPS_PER_POP]]|
Maybe 6 is not enough and it should be 10. It seems to call for a game rule.