internal/web/handler.go's defaultStuckRepos (cad-atlas#11) hardcodes the same 7-repo estate
list that mathias/dispatch's dispatch-repos.txt is the canonical source for:
dispatch-repos.txt's own header already warns about exactly this kind of drift: it's "the
PRIMARY source of the dispatch scope." Whenever a repo is added to or removed from dispatch-repos.txt, cad-atlas's stuck overlay silently goes stale until someone remembers to
update this list too and redeploy — no error, no signal, just a badge count that quietly stops
matching reality (the same shape of bug cad stuck itself exists to catch elsewhere).
Why it wasn't fixed inline
cad-atlas has no filesystem access to mathias/dispatch's dispatch-repos.txt at runtime,
and adding one more live Gitea fetch (GET /repos/mathias/dispatch/contents/dispatch-repos.txt,
parsed the same way cmd/cad/stuck.go's readRepoList already does) was judged out of scope
for cad-atlas#11, which was about the overlay itself, not a new live-fetch dependency. The CAD_ATLAS_STUCK_REPOS env var override exists as the interim mitigation.
Suggested fix
Fetch dispatch-repos.txt live (same parsing rule already implemented once in mathias/cad's cmd/cad/stuck.go: one repo per line, # comments and blanks ignored) with a
short TTL cache (mirrors the existing 30s liveTTL pattern in handler.go), falling back to
the hardcoded list only when the fetch fails — never silently to an empty list.
Closed by the infra#419 archived-repo sweep, 2026-09-16.
mathias/cad-atlas is archived in Gitea: read-only, and its comments endpoint returns HTTP 423. This disposition is in the body because a comment is not possible here.
Superseded by mathias/cad#20, which carries this work in the repo that is still live.
If this work is still live, it belongs on the successor repo, not here — nothing in an archived repo can be worked, labelled or reopened usefully.
## Gap
`internal/web/handler.go`'s `defaultStuckRepos` (cad-atlas#11) hardcodes the same 7-repo estate
list that `mathias/dispatch`'s `dispatch-repos.txt` is the canonical source for:
```go
var defaultStuckRepos = []string{
"mathias/dispatch-sandbox", "mathias/cobalt-dingo", "mathias/parallax",
"mathias/cad-atlas", "mathias/brain-gardener", "mathias/hyperguild", "mathias/brain",
}
```
`dispatch-repos.txt`'s own header already warns about exactly this kind of drift: it's "the
PRIMARY source of the dispatch scope." Whenever a repo is added to or removed from
`dispatch-repos.txt`, `cad-atlas`'s stuck overlay silently goes stale until someone remembers to
update this list too and redeploy — no error, no signal, just a badge count that quietly stops
matching reality (the same shape of bug `cad stuck` itself exists to catch elsewhere).
## Why it wasn't fixed inline
`cad-atlas` has no filesystem access to `mathias/dispatch`'s `dispatch-repos.txt` at runtime,
and adding one more live Gitea fetch (`GET /repos/mathias/dispatch/contents/dispatch-repos.txt`,
parsed the same way `cmd/cad/stuck.go`'s `readRepoList` already does) was judged out of scope
for cad-atlas#11, which was about the overlay itself, not a new live-fetch dependency. The
`CAD_ATLAS_STUCK_REPOS` env var override exists as the interim mitigation.
## Suggested fix
Fetch `dispatch-repos.txt` live (same parsing rule already implemented once in
`mathias/cad`'s `cmd/cad/stuck.go`: one repo per line, `#` comments and blanks ignored) with a
short TTL cache (mirrors the existing 30s `liveTTL` pattern in `handler.go`), falling back to
the hardcoded list only when the fetch fails — never silently to an empty list.
## Related
- cad-atlas#11, mathias/dispatch's `dispatch-repos.txt`
---
<!-- infra#419:archived-repo-sweep -->
**Closed by the infra#419 archived-repo sweep, 2026-09-16.**
`mathias/cad-atlas` is archived in Gitea: read-only, and its comments endpoint returns HTTP 423. This disposition is in the body because a comment is not possible here.
Superseded by mathias/cad#20, which carries this work in the repo that is still live.
If this work is still live, it belongs on the successor repo, not here — nothing in an archived repo can be worked, labelled or reopened usefully.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Gap
internal/web/handler.go'sdefaultStuckRepos(cad-atlas#11) hardcodes the same 7-repo estatelist that
mathias/dispatch'sdispatch-repos.txtis the canonical source for:dispatch-repos.txt's own header already warns about exactly this kind of drift: it's "thePRIMARY source of the dispatch scope." Whenever a repo is added to or removed from
dispatch-repos.txt,cad-atlas's stuck overlay silently goes stale until someone remembers toupdate this list too and redeploy — no error, no signal, just a badge count that quietly stops
matching reality (the same shape of bug
cad stuckitself exists to catch elsewhere).Why it wasn't fixed inline
cad-atlashas no filesystem access tomathias/dispatch'sdispatch-repos.txtat runtime,and adding one more live Gitea fetch (
GET /repos/mathias/dispatch/contents/dispatch-repos.txt,parsed the same way
cmd/cad/stuck.go'sreadRepoListalready does) was judged out of scopefor cad-atlas#11, which was about the overlay itself, not a new live-fetch dependency. The
CAD_ATLAS_STUCK_REPOSenv var override exists as the interim mitigation.Suggested fix
Fetch
dispatch-repos.txtlive (same parsing rule already implemented once inmathias/cad'scmd/cad/stuck.go: one repo per line,#comments and blanks ignored) with ashort TTL cache (mirrors the existing 30s
liveTTLpattern inhandler.go), falling back tothe hardcoded list only when the fetch fails — never silently to an empty list.
Related
dispatch-repos.txtClosed by the infra#419 archived-repo sweep, 2026-09-16.
mathias/cad-atlasis archived in Gitea: read-only, and its comments endpoint returns HTTP 423. This disposition is in the body because a comment is not possible here.Superseded by mathias/cad#20, which carries this work in the repo that is still live.
If this work is still live, it belongs on the successor repo, not here — nothing in an archived repo can be worked, labelled or reopened usefully.