Operations guide

Large-repo mode

Enable the per-repository preset in instance.yaml:

repos:
  - provider: github
    owner: acme
    name: monolith
    token:
      env: GOOBERS_GITHUB_TOKEN
    largeRepo: true

The declaration resolves to:

SettingDefault
WorkspacePinned at workcopies/<repo-key>/pin
ConcurrencyOne whole-run lease; runs targeting the repo are serial
Pinned clean policynone
Deterministic stage timeout4h
Stalled-run watchdog6h
Maximum run duration24h
Path-length preflightEnabled, 260-character ceiling
Mirror refreshHeads and tags only
Deterministic stage environmentMSBUILDDISABLENODEREUSE=1
Worktree retentionExempt by construction because the pinned workspace is outside runs/

goobers validate prints the resolved values for each enabled repository. goobers config show renders those effective values as YAML or JSON.

The preset supplies defaults rather than locking the settings. Explicit repository settings win. For example, this keeps large-repo mode enabled while tightening warm-build timeouts and relaxing the workspace and path policies:

repos:
  - provider: github
    owner: acme
    name: monolith
    token:
      env: GOOBERS_GITHUB_TOKEN
    largeRepo: true
    workspace:
      pinned: false
    pathLength:
      disabled: true
    defaultStageTimeout: 45m
    runControls:
      stalledRunTimeout: 90m
      maxRunDuration: 8h

workspace.pinned: false disables the pinned workspace, whole-run lease, retention exemption, and narrowed pinned-mirror refresh together because those properties are structural consequences of pinned execution. Per-stage timeoutSeconds, gaggle runControls, and workflow runControls remain more specific than the repository defaults. A deterministic stage can override the MSBuild setting through its own run.env.

Windows operators should also follow the Windows large-repo runbook for Defender/Dev Drive setup, build-process cleanup, and the exact environment-isolation boundary.

Product source: docs/guides/large-repo-mode.md @ a512230a18fa