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.
| Field | Meaning | Default |
|---|---|---|
kind | The tracker. github is the only one in v0.1.22. | github |
repo | owner/name | Parsed from the origin remote (HTTPS, ssh:// and user@host: forms) |
project | Accepted and not yet used | — |
[tracker]
kind = "github"
repo = "acme/shop"
[paths]
Where Carol looks for initiatives.
| Field | Meaning | Default |
|---|---|---|
initiatives | The directory holding <name>/scope.md initiatives | docs |
prds | Accepted and not yet used | — |
[paths]
initiatives = "planning"
[identity]
The GitHub App the engine loop writes as, and the people who may open its gates.
| Field | Meaning | Default |
|---|---|---|
app_id | The App's numeric id | Required |
installation_id | The id of its installation on this repository | Required |
acceptors | GitHub 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.
| Field | Gate | Default |
|---|---|---|
design | A design record | 1 |
h2 | The PRD pull request that specify opens | 1 |
h3 | The run pull request that run opens | 1 |
release | A release | 1 |
phase_review | The phase review | 1 |
contract | A contract | 1 |
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.
| Field | Meaning | Default |
|---|---|---|
in_flight | Epics that may be carol:running at once | 1 |
proposals_per_tick | Proposals one tick may open | 3 |
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.
| Field | Meaning | Default |
|---|---|---|
<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