Fleet run-manifest
The top-level config a fleet operator authors to run the miner across many repos at once -- which repos are in scope and how the worktree/concurrency budget is split.
The fleet run-manifest is the top-level config a fleet operator authors to run the miner
across many repos at once: it declares which repos are in scope for a fleet run and how a finite
worktree/concurrency budget is split between them. It is parsed by
parseFleetRunManifestContent / parseFleetRunManifest in @loopover/engine
(packages/loopover-engine/src/fleet-run-manifest.ts).
It is not the same file as .loopover-miner.yml (see the MinerGoalSpec field
reference) — the naming is easy to conflate. Same tolerant-parser
convention (every field optional, unknown keys ignored, a malformed field degrades to a
documented default with a warning rather than throwing), but the opposite author and the
opposite direction of intent:
- .loopover-miner.yml (goal spec)
- Author: a target repo's maintainer. Lives in: the target repo. Direction: how this one repo wants to be approached. Scope: one repo. Key fields: minerEnabled, wantedPaths, blockedPaths, preferredLabels, blockedLabels, maxConcurrentClaims, issueDiscoveryPolicy.
- Fleet run-manifest
- Author: the miner (fleet) operator. Lives in: the operator's fleet-run config. Direction: which repos to work across, and how to split the budget. Scope: many repos in one run. Key fields: repos (each owner/repo + maxConcurrentWorktrees), totalConcurrentWorktrees.
Schema
Every field is optional; unknown keys are ignored; a malformed field falls back to a documented default with a warning rather than hard-failing the run.
repos— a list of target repos. Each entry is either a bare"owner/repo"string (uses the default per-repo budget) or a{ repoFullName, maxConcurrentWorktrees }mapping. Invalid or duplicate entries are skipped with a warning.repoFullNameis a canonicalowner/repo, compatible withopportunity-fanout.js's target list. Default:[].repos[].maxConcurrentWorktrees— max concurrent worktrees (in-flight attempts) for that repo. A positive integer (floored; sub-1 falls back to the default). Default:1.totalConcurrentWorktrees— total concurrent worktrees across the whole fleet, regardless of per-repo budgets. A positive integer. Default:1.
Wiring
This module produces only the parsed, typed manifest. Driving the fleet concurrency allocator
from it is the allocator's own concern, and the cross-repo portfolio-queue.js backlog reads the
same repo list — both consume this manifest; neither wiring lives here.
Example (fleet-run.yml)
totalConcurrentWorktrees: 4
repos:
- owner/repo-a
- repoFullName: owner/repo-b
maxConcurrentWorktrees: 2yaml