Commit Message Format
Structure
Section titled “Structure”A Lore-enriched commit message follows the standard git commit format:
<intent line>
<body>
<trailers>- Intent line (required): Describes why the change was made. Max 72 characters. This is the conventional git subject line.
- Body (optional): Narrative context. Wrap at 72 characters. Separated from intent by one blank line.
- Trailers (required: at least
Lore-id:): Separated from body by one blank line. Standard git trailer format (Key: value).
Size Guidance
Section titled “Size Guidance”| Guideline | Threshold | Enforced by |
|---|---|---|
| Intent line | Max 72 characters | lore validate (warning) |
| Body | No hard limit; wrap at 72 chars | Style only |
| Trailers per type | 1-5 recommended | lore validate (warning at >5) |
| Total message | Max 50 lines recommended | lore validate (warning), configurable |
If a commit needs more than 5 constraints or 5 rejected alternatives, the commit is likely too large — split it into smaller atoms.
Full Example
Section titled “Full Example”Prevent silent session drops during long-running operations
The auth service returns inconsistent status codes on tokenexpiry, so the interceptor catches all 4xx responses andtriggers an inline refresh.
Lore-id: a7f3b2c1Constraint: Auth service does not support token introspectionConstraint: Must not add latency to non-expired-token pathsRejected: Extend token TTL to 24h | security policy violationRejected: Background refresh on timer | race condition with concurrent requestsConfidence: highScope-risk: narrowReversibility: cleanDirective: [until:auth-v3] Error handling is intentionally broad (all 4xx) -- do not narrow without verifying upstream behaviorTested: Single expired token refresh (unit)Not-tested: Auth service cold-start > 500ms behaviorRelated: 9c8b7a6eRejected Alternative Format
Section titled “Rejected Alternative Format”The Rejected: trailer uses a pipe-separated format:
Rejected: <what was considered> | <why it was rejected>Examples:
Rejected: Extend token TTL to 24h | security policy violationRejected: Background refresh on timer | race condition with concurrent requestsRejected: Global error handler | too broad, masks other failures