Configuration

Every table of .carol/config.toml in v0.1.22: tracker, paths, identity, gates, limits and triage.

Carol v0.1.22

Carol works without configuration. To set something, commit .carol/config.toml at the repository root, beside Zurdo's .zurdo/config.toml.

An unknown key, a wrong type or a malformed file is a usage error (exit 2). Carol checks the file before it reads anything else. The [labels] and [roles] tables are accepted and not yet used.

Tables

[tracker]

Which tracker Carol writes to, and which repository on it.

FieldMeaningDefault
kindThe tracker. github is the only one in v0.1.22.github
repoowner/nameParsed from the origin remote (HTTPS, ssh:// and user@host: forms)
projectAccepted and not yet used—
[tracker]
kind = "github"
repo = "acme/shop"

[paths]

Where Carol looks for initiatives.

FieldMeaningDefault
initiativesThe directory holding <name>/scope.md initiativesdocs
prdsAccepted and not yet used—
[paths]
initiatives = "planning"

[identity]

The GitHub App the engine loop writes as, and the people who may open its gates.

FieldMeaningDefault
app_idThe App's numeric idRequired
installation_idThe id of its installation on this repositoryRequired
acceptorsGitHub user ids (not logins) of the people who may open a gate. Must not be empty or list the App's bot.Required

Without this table, propose, specify, run, report, tick and watch stop with config missing [identity] table (exit 3). See GitHub App setup.

[identity]
app_id          = 1234567
installation_id = 89012345
acceptors       = [201984135, 9184212]

[gates.approvals]

How many distinct acceptors must approve each gate's pull request on its latest commit.

FieldGateDefault
designA design record1
h2The PRD pull request that specify opens1
h3The run pull request that run opens1
releaseA release1
phase_reviewThe phase review1
contractA contract1

Each value is a positive integer or "all". In v0.1.22 the loop enforces h2 and h3; the rest are checked and stored. The design, findings, release and phase-review pull requests are merged by hand. See Human gates.

[gates.approvals]
h2 = 1
h3 = "all"

[limits]

Caps on what one tick starts, so the loop never outruns its reviewers.

FieldMeaningDefault
in_flightEpics that may be carol:running at once1
proposals_per_tickProposals one tick may open3

Each value is a non-negative integer. A propose or run you type yourself isn't capped.

[limits]
in_flight          = 2
proposals_per_tick = 5

[triage.area_globs]

Area names mapped to path globs, for carol triage.

FieldMeaningDefault
<area>A list of globs. A matching path in an issue adds area:<area>.—

carol triage exits 2 without this table. An invalid glob is a usage error naming its area. See Triage.

[triage.area_globs]
api     = ["src/api/**", "openapi/**"]
billing = ["src/billing/**"]
docs    = ["docs/**", "*.md"]

Next: File formats