Skip to content

Configuration

.lore/
config.toml # Project configuration

Single file, in a directory for future extensibility. The .lore/ directory is committed to the repo (shared config for the team).

[protocol]
version = "1.0" # Protocol version (required)
[trailers]
required = [] # Trailers that must be present
# e.g., ["Constraint", "Confidence"]
# Empty = no required trailers (default)
custom = [] # Team-defined custom trailer names
# e.g., ["Ticket", "Domain-context"]
[validation]
strict = false # true = required trailers are errors
# false = required trailers are warnings
max_message_lines = 50 # Warn if commit exceeds this
intent_max_length = 72 # Max subject line length
[stale]
older_than = "6m" # Default staleness age threshold
drift_threshold = 20 # Commits-since-atom threshold
[output]
default_format = "text" # Default output format: text | json
[follow]
max_depth = 3 # Max depth for --follow traversal

required — List of trailer names that must be present in every Lore-enriched commit. Enforcement severity depends on [validation].strict:

[trailers]
required = ["Constraint", "Confidence", "Scope-risk"]

custom — Team-defined trailer names. Custom trailers are preserved and queryable but have no built-in semantics:

[trailers]
custom = ["Ticket", "Domain-context", "Review-status"]

strict — When true, missing required trailers are errors (exit code 1). When false, they are warnings (exit code 2).

max_message_lines — Trigger a warning if the commit message exceeds this many lines. Default: 50.

intent_max_length — Maximum length for the intent (subject) line. Default: 72.

older_than — Time threshold for the age staleness signal. Supports d (days), w (weeks), m (months), y (years). Default: 6m.

drift_threshold — Number of commits to a file since an atom before it’s flagged as potentially stale. Default: 20.

max_depth — Maximum traversal depth for --follow queries. Prevents runaway traversals in heavily-linked projects. Default: 3.

For monorepos, place additional .lore/config.toml files in subdirectories:

repo/
.lore/config.toml # root config
packages/
auth/
.lore/config.toml # auth package overrides
billing/
.lore/config.toml # billing package overrides

The CLI uses the nearest .lore/config.toml walking up from the target path. Root config is the fallback.

Configs are merged, not replaced — child configs override specific keys from parent.