List the monitored repos explicitly, in repos.yml - #11
Merged
Conversation
The fleet was assembled two ways at once, and neither was under your control. A whole-org GitHub sweep decided membership from the org side - a new repo appeared unasked, and a shared org like cvxgrp dragged in 100+ repos that were not yours - while a directory walk under one mounted root decided it from the disk side, admitting any checkout that happened to sit there with an origin that looked right. Both are replaced by repos.yml: one entry per repo, `path` to a checkout with owner/name read from its origin, or a bare `repo:` for one you have not cloned. scripts/gen-repos.py turns it into docker-compose.repos.yml - a read-only bind mount per checkout at the canonical /repos/<owner>/<name>, plus the matching JQ_REPOS - so an unlisted repo is not merely filtered out, it is never visible to the container. Both halves of the collector read that one list, so the GitHub panels and the working-copy panels cannot disagree about who is in scope. The server stack keeps naming its fleet in JQ_REPOS, since there are no checkouts there to derive it from, and now refuses to start without it rather than serving an empty board. repos.yml and the generated override are gitignored: they describe the folder layout of one machine. That, plus the MIT license, is what this repo needed to be public. Verified against the live stack: 3 repos exported, 2 with working copies, local refresh 0.1s. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Prep for making this repo public, and the config change that makes it safe to.
The fleet is now an explicit list
It used to be assembled two ways at once, and neither was under your control: a
whole-org GitHub sweep decided membership from the org side, and a directory
walk under one mounted root decided it from the disk side. Both are replaced by
repos.yml:scripts/gen-repos.pyturns it intodocker-compose.repos.yml— one read-onlybind mount per checkout at the canonical
/repos/<owner>/<name>, plus thematching
JQ_REPOS.up.shregenerates it every run, so editrepos.yml, runup.shis the whole workflow. An unlisted repo is not merely filtered out; itis never visible to the container.
Both halves of the collector read that one list, so the GitHub panels and the
working-copy panels cannot disagree about who is in scope. Gone:
JQ_ORGS,JQ_SCAN_DEPTH,JQ_REPO_ROOT_HOST,_find_clones,Config.wants().The local scan still checks each mount's origin, so a wrong path in
repos.ymlis refused rather than filing one repo's dirty files under another's name.
Server stack
No checkouts there to derive a list from, so it keeps naming its fleet directly
in
JQ_REPOS— now required, so it refuses to start rather than serving anempty board.
Going public
repos.ymland the generated override are gitignored: they describe the folderlayout of one machine. Added the house MIT
LICENSE. History is clean —.envwas never committed, and the only token-shaped strings are
github_pat_...placeholders in docs.
Verification
Ran against the live stack, not just the tests:
jquantstatscorrectly has GitHub panels and no local row;monitoringitselfis absent only because
JQ_PUBLIC_ONLY=trueand it is still private.38 tests pass (13 new in
collector/tests/test_fleet.py, covering the localhalf, the GitHub half and the generator), ruff clean, both dashboards valid. CI
now generates a
repos.ymlthe way a new user would and checks the mergedcompose files parse.
🤖 Generated with Claude Code