Plando item pool shrinks the base item pool too much
I may not have a complete understanding of this issue. This is as far as I got:
Plandomizer has two item pools to draw from: the base item pool and the item pool specified in the plando.
https://github.com/OoTRandomizer/OoT-Randomizer/blob/068f85ee6b49fc5cd6307cd409f65f43bcfdedc1/Plandomizer.py#L517-L518
This saves the base pool created in ItemPool.py based on world settings and enabled locations' vanilla items. It then removes all instances of items defined in the plando item pool (self.item_pool) without considering how many are removed.
https://github.com/OoTRandomizer/OoT-Randomizer/blob/068f85ee6b49fc5cd6307cd409f65f43bcfdedc1/Plandomizer.py#L546-L549
I believe this is why deleting the item pool from plandos usually lets them work, but keeping the item pool will almost always fail for strict item pools. Junk items should be added to make up the difference when too many items are removed to fill all locations. If the plando specifies less than required major items, that could be handled but should probably be an error message instead as something like one Hookshot in the pool is likely intentional as long as reachable_locations is beatable.
Separately, I think there is overzealous deletion of junk items going on somewhere. With the following call stack starting in Plandomizer.fill:
https://github.com/OoTRandomizer/OoT-Randomizer/blob/068f85ee6b49fc5cd6307cd409f65f43bcfdedc1/Plandomizer.py#L916
https://github.com/OoTRandomizer/OoT-Randomizer/blob/068f85ee6b49fc5cd6307cd409f65f43bcfdedc1/Plandomizer.py#L988
https://github.com/OoTRandomizer/OoT-Randomizer/blob/068f85ee6b49fc5cd6307cd409f65f43bcfdedc1/Plandomizer.py#L638
https://github.com/OoTRandomizer/OoT-Randomizer/blob/068f85ee6b49fc5cd6307cd409f65f43bcfdedc1/Plandomizer.py#L476
https://github.com/OoTRandomizer/OoT-Randomizer/blob/068f85ee6b49fc5cd6307cd409f65f43bcfdedc1/Plandomizer.py#L1512-L1514
Junk items are being exhausted before all junk items from the plando are placed in the world. Manually inspecting all pools in the debugger at this line shows some shields and "non-junk" junk like Deku Nuts (10), in addition to remaining major items. Since there aren't any junk items left, the randomizer fails to fill the location. The location it fails for me has a red rupee specified in the plando. This applies with and without the item pool specified in the plando.
This is using a plando generated with Randomize Main Rules with the spoiler updated with randomize_settings: false, which may result in an incorrect item pool if the shuffle settings don't match between rando state and the plando (see #2116). This was generated on Dev-Rob 7.1.195 Rob-49 (commit: 4697c68), but should apply to the main repository. The version listed in the attached plando is misleading as I merged some minor changes in a local copy.