Thanks @sethmlarson!
That seems reasonable to me to mention! Thinking generally as well: technically there really aren’t any permanent states with this PEP, since the PEP (intentionally) doesn’t define any state transitions or a state machine.
Given that, perhaps it makes sense for me to add some overarching language that explains that a project’s state is whatever state it happens to be in, and that states are not guaranteed to be static over time (much like yanking)? That would cover quarantine transitively, but perhaps it would also be confusing to state so generally.
I like this idea and have no opposition to it
– the reason I left it out initially is because it wasn’t clear where the free-text should live in the index responses, but here’s one idea:
<meta name="pypi:project-status" content="quarantined">
<meta name="pypi:project-status-reason" content="the project is haunted">
and:
{
"project-status": {
"state": "quarantined",
"reason": "the project is haunted"
}
}
Thoughts on that?
(There are probably some additional considerations that come with that as well, e.g. how long reasons can be, support for links, etc. Curious if anybody has thoughts on those!)
Agreed; I think there’s probably a separate UI/UX component to further surfacing these states on PyPI that’s probably distinct from this PEP itself. But I suppose the PEP could also make it clear that project statuses aren’t contrapositive, i.e. a project that isn’t in the “archived” state isn’t inherently active, not quarantined doesn’t mean safe, etc.
Yeah, that was meant to be clarified by this line at the top of the Project status markers section:
A project always has exactly one status. If no status is explicitly noted, then the project is considered to be in the active state.
i.e. the implication is that an index that doesn’t implement this only has the “active” state, and all installers should treat all packages from that index as “active.”
Curious if you think it could use further clarification 
Thanks, will fix!