The 49ers understand the concept of sunk costs. Once you've made the initial investment, you can't get it back, so you don't let it influence your future decisions.
He had one good game as a starter against a tanking Houston team. He was bad in his other two starts (not counting the one where he threw 3 passes before getting hurt), not completing over 50% of his passes in either. But that's not enough data to tell us anything one way or another. Asking "is 8 games enough to know if he is going to be good" is begging the question. They only gave him 8 games (really only 4) because they believed, based on what they saw from him every day, that he wasn't good enough to play more.
The possibilities are:
(1) The 49ers assessed that the potential wasn't there, and they were correct in that assessment.
(2) The 49ers assessed that the potential wasn't there, and they were wrong in their assessment.
(3) The 49ers saw potential but didn't think he'd fit their system.
(4) The 49ers saw potential but were willing to sacrifice it because they're in win-now mode and he doesn't fit their short-term plans.
Of these, (1) seems by far the most likely to me. I could sort of see (3) and (4) but I struggle with the decision to keep Darnold over him in those cases.