Let a cluster with no usable host still be named
Commit

--cluster asked hostBySlug whether a cluster EXISTS, but that map drops
any cluster whose publicUrl fails validation — while placementCluster
still renders those placements under the slug. So the filter refused the
one spelling its own rows ever print for such a cluster, told the reader
to pass a HOST instead, and entire cluster list prints - for that
host. Unfollowable advice on top of a wrong refusal, where main simply
matched the slug and worked.
fetchRepoDirCatalog now hands back the catalog next to the map: existence is a question for the catalog, spelling a question for the map. The test fixture carries a real unsafe publicUrl rather than a hand-built map, so the same omission is reachable from a test again.
That is the third defect at this seam — the sort key and the clone-URL fallback were the first two — all of them from asking the slug→host map something it is not a record of.
Four comments alongside, each naming something this branch removed: the
mirror subtree's get verb, renderCoreObject's cluster caller (the
layer is inlined, since sharing was its only reason and one caller is
left), and the conventions routing readers to repo mirror get twice.
warnRedundantProjectFlag's rationale needed less than it looked: --json
carries owningProjectId again, so only "prints its project" was stale.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com Entire-Checkpoint: 01M3PKKHSWM8Z08YKV91M0X203