Skip to content

Commit Message Format

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).
GuidelineThresholdEnforced by
Intent lineMax 72 characterslore validate (warning)
BodyNo hard limit; wrap at 72 charsStyle only
Trailers per type1-5 recommendedlore validate (warning at >5)
Total messageMax 50 lines recommendedlore 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.

Prevent silent session drops during long-running operations
The auth service returns inconsistent status codes on token
expiry, so the interceptor catches all 4xx responses and
triggers an inline refresh.
Lore-id: a7f3b2c1
Constraint: Auth service does not support token introspection
Constraint: Must not add latency to non-expired-token paths
Rejected: Extend token TTL to 24h | security policy violation
Rejected: Background refresh on timer | race condition with concurrent requests
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: [until:auth-v3] Error handling is intentionally broad (all 4xx) -- do not narrow without verifying upstream behavior
Tested: Single expired token refresh (unit)
Not-tested: Auth service cold-start > 500ms behavior
Related: 9c8b7a6e

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 violation
Rejected: Background refresh on timer | race condition with concurrent requests
Rejected: Global error handler | too broad, masks other failures