At the moment, the creator of an issue, or the owner of the repo are able to close issues. The same is true for pull-requests (PRs).
That's right. IMO it doesn't make sense to have more states. If an issue is "stale" in open state, it would be also stale in an "in-between" state. So the only possibility, I see is: Assigning labels see above.
If we have them labelled, it's relatively clear, what's going on.
As I wrote. There are many issues, that still have value. A different way, to remember them, would be to create 3 meta-issues.
eg:
1) new-features - closed but still valid
2) improvements - closed but still valid
3) discussions
Those 3 meta-issues will be always Open
Possible and simple workflow
a) Meta-issues 1,2,3 contain some description, AND a link like:
improvement b) If an issue with label 1,2,3 are open longer than 1 year, they will be closed with a reference to the meta-issue
c) Some issues may be closed, because they are outdated, not actionable ...
They don't get the link to meta issues.
If an issue is closed with b), github will automatically create a link to the meta-issue and a backlink to the issue, that will be closed. With this mechanism it is easy to follow the trails.
just some thoughts.
have fun!
mario