One solution is to provide content at different levels, so players who want an easier experience can play one way (avoiding 'extra challenge' floors, for example) while those who want to engage with the game more intensely can play it another (unlocking the ability to skip non-challenge floors and just do challenge ones, for example). As for luck, one solution is to have a 'puzzle mode' where the available node rewards are fixed and the runtime is quite short (5 mins of combat or less, probably), built around various coding challenges. In general, though, I think you are right that because the maximal build quality each run varies so much, especially early on, scaling the difficulty to challenge even mediocre builds that get the luck they need will involve rendering a large percentage of runs functionally unwinnable since even a small amount more luck is a huge force multiplier.