Part of #5016. Depends on #5028 (isInstalled reliability).
Problem
opsScanRepos (src/review/ops-wire.ts:149-165), selfTuneRepos (src/review/selftune-wire.ts:91-119), and recapScanRepos (src/review/maintainer-recap-wire.ts:98-113) all still filter listRepositories().filter(isRegistered) before narrowing to isAgentConfigured. Their own comments claim parity with the regate sweep ("same scoping ... the regate sweep uses" / "SAME scoping the ops scan + regate sweep use") — but that's now stale. fanOutAgentRegateSweepJobs (src/queue/processors.ts:822-900) already dropped the isRegistered prefilter entirely: it unions ALL listRepositories() with the GITTENSORY_REVIEW_REPOS allowlist, then narrows via isConvergenceRepoAllowed || isAgentConfigured. These three were never updated to match when that fix landed.
Target
Drop the isRegistered prefilter in all three, mirroring the regate sweep exactly: start from all repos, narrow via isAgentConfigured (effectively isInstalled-gated in practice, since only installed repos have meaningful autonomy settings).
Risk note
Ops-alerts and maintainer-recap are pure observability/digest — low risk. Selftune is different: it can tighten qualityGateMinScore, which feeds the auto-merge/auto-close gate. Under-scoping selftune (missing installed-but-unregistered repos) doesn't cause a WRONG action, only a missed tightening opportunity — but give this one its own careful test pass given its adjacency to the write/action gate. No direct write/action permission was found gated on isRegistered anywhere in the codebase — this is the only indirect touch-point worth flagging.
Deliverables
- Updated scoping in all three files, comments corrected to stop claiming stale parity.
- Regression tests for each: an installed-not-registered repo is now included in the scan/tune/recap pass.
- Full local gate green, 99% patch coverage on the diff.
Part of #5016. Depends on #5028 (isInstalled reliability).
Problem
opsScanRepos(src/review/ops-wire.ts:149-165),selfTuneRepos(src/review/selftune-wire.ts:91-119), andrecapScanRepos(src/review/maintainer-recap-wire.ts:98-113) all still filterlistRepositories().filter(isRegistered)before narrowing toisAgentConfigured. Their own comments claim parity with the regate sweep ("same scoping ... the regate sweep uses" / "SAME scoping the ops scan + regate sweep use") — but that's now stale.fanOutAgentRegateSweepJobs(src/queue/processors.ts:822-900) already dropped theisRegisteredprefilter entirely: it unions ALLlistRepositories()with theGITTENSORY_REVIEW_REPOSallowlist, then narrows viaisConvergenceRepoAllowed || isAgentConfigured. These three were never updated to match when that fix landed.Target
Drop the
isRegisteredprefilter in all three, mirroring the regate sweep exactly: start from all repos, narrow viaisAgentConfigured(effectivelyisInstalled-gated in practice, since only installed repos have meaningful autonomy settings).Risk note
Ops-alerts and maintainer-recap are pure observability/digest — low risk. Selftune is different: it can tighten
qualityGateMinScore, which feeds the auto-merge/auto-close gate. Under-scoping selftune (missing installed-but-unregistered repos) doesn't cause a WRONG action, only a missed tightening opportunity — but give this one its own careful test pass given its adjacency to the write/action gate. No direct write/action permission was found gated onisRegisteredanywhere in the codebase — this is the only indirect touch-point worth flagging.Deliverables