Skip to content

Nothing detects a repository that exists but has no registry entry, so the fleet reports read as complete while under-counting #550

Description

@ptr727

Every hub tool iterates registry/repos.json, so a repository absent from it is not audited, not reported, and not counted. Nothing anywhere asks the inverse question, whether a repository that exists is in the registry, so an omission at standup is permanent and silent, and the fleet reports read as complete while it stands.

Audited against hub develop 362aec8. Found while cataloging Blog (#547), which had been operational and releasing for two days without any hub tool ever having measured it.

The procedure is not the gap

[STANDUP.md][standup] section 1A already says to write the entry, naming every field. The gap is that nothing verifies it happened. spec/validate.py proves the catalog is internally consistent, which is a statement about the file and not about the fleet, and both spec/audit.py and spec/fidelity_honesty.py take the registry as their input set. A missing entry is therefore invisible to the exact tools built to find drift.

The consequence is worse than a gap, because the reports are confidently wrong rather than silent. reports/divergences.md counted 19 repos owing AGENTS.md > Fleet Bootstrap. The real number was 20.

It is not one repository

Comparing the non-fork public repositories under the owner against the catalog on develop:

$ gh api users/ptr727/repos --paginate --jq '.[] | select(.fork==false) | .name' | LC_ALL=C sort > live.txt
$ ... registry names ... | LC_ALL=C sort > cataloged.txt
$ LC_ALL=C comm -23 live.txt cataloged.txt
Blog
DiskSpeedTest
GEM-Echo-Server
GoogleTo1Password

Blog is resolved by #547. The other three are unexamined here, and each is either a fleet repo owing an entry or a deliberate exclusion owing a way to say so. Private repositories are not covered by this listing, so the true count is at least four.

What would close it

A membership check that reads the owner's repositories and reports any non-fork repository with no registry entry. It is a natural addition to spec/audit.py, which already holds a gh client and already runs owner-initiated before fleet-wide changes.

It needs a way to record a deliberate exclusion, or it becomes a permanent four-line complaint that people learn to scroll past. The registry already carries status with cataloged and backlog, so a third value, or a separate excluded[] list carrying a reason per entry, would let the check distinguish "not yet triaged" from "deliberately outside the fleet". The reason matters more than the mechanism: an unexplained exclusion is the same silent omission in a different file.

Worth noting that the check has to run somewhere it will actually be seen. Neither validate.py in CI nor an owner-initiated audit.py run catches an omission at the moment it is made, which is the standup itself, and that is the moment where the cost of fixing it is a single line.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions