Practical middle path, since "kill it" sounds more final than it needs to be and that finality is part of what makes it hard.
Archive it properly rather than deleting it. Mark the repository archived, and before you do, write one file at the top: what it was for, how far it got, what was actually hard, what you would do differently, and why you stopped. Half an hour. That file is the only part with lasting value, and it is the part that evaporates if you just walk away again.
What that gets you:
- The recurring guilt ends, because the thing is now finished-as-archived rather than perpetually pending.
- Nothing is lost, so the decision is reversible and therefore much easier to make.
- The next attempt, if there is one, starts from a document instead of from a broken build. Which is the actual value in there: the understanding, not the code.
One more thing. Put a date in your calendar six months out to read that file. Not to restart it: to read it. If you get there and feel nothing, you have your answer and it cost you nothing. If you get there and immediately want to build it, you will be starting from a clean sheet with everything you learned, which is a far better position than another three weeks of dependency upgrades.
That framing was what let me stop. Not "this is dead", but "this is finished for now and written down."