From 1d5a5adbcc059a540d400acd591f84f654113a1a Mon Sep 17 00:00:00 2001 From: Emma Thorpe Date: Thu, 6 Aug 2026 15:20:53 +0100 Subject: [PATCH] chore(claude): exempt repos without an issue tracker from the ticket scope The previous commit required a ticket scope on every commit in every repository. This repository has no Jira project, so the rule as written would either block a commit or invite a fabricated WSP number. Record the exception: in personal repositories the scope is the area of the change (claude, deps, hosts) and conventional form still applies. The ticket requirement is scoped to the Jira-backed work repositories that enforce it in CI. --- home/claude/memory/git_conventions.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/claude/memory/git_conventions.md b/home/claude/memory/git_conventions.md index 5b11cb7..9ce660c 100644 --- a/home/claude/memory/git_conventions.md +++ b/home/claude/memory/git_conventions.md @@ -21,6 +21,8 @@ metadata: If none of those yield an ID, ask which ticket to file the work under. Do not guess, do not reuse the ID from an unrelated earlier task in the session, and do not invent a plausible-looking number. Every commit in a branch normally carries the same ID; if the work genuinely spans two tickets, split the commits accordingly rather than picking one at random. +**Exception — repos with no issue tracker.** Personal repos such as `nixfiles` have no Jira project. There the scope is the area of the change, not a ticket: `chore(claude): ...`, `chore(deps): ...`, `feat(hosts): ...`. Conventional form is still required; only the ticket scope is dropped. Never invent a WSP number to satisfy the rule in a repo that has no tickets. The ticket requirement applies to the work repos under `~/code` that are backed by the WSP Jira project and gated by CI. + **This format is mandatory and overrides the repo's existing log style.** Many repos (`multicluster`, `core-services-cloud`) have histories full of bare `: summary` subjects written by other people. Do not copy that. Match repo style for *branch names* only; commit subjects are always full Conventional Commits with the ticket scope. CI enforces this, and a failure means Lyra rebases the history by hand. **Known failure mode — scope decay across a session.** The first commit gets `fix(): ...` correctly, then follow-up commits in the same sitting degrade to bare `test: add tests for class`, `refactor: hoist middleware`, `chore: tidy`. This has caused real rebase work in `core-services-cloud`. The second, third and fifth commits need the ticket scope exactly as much as the first. Re-read the subject against the format before every single `git commit`. @@ -37,4 +39,4 @@ Must print nothing. Writing each subject carefully is not a substitute for runni **Why:** Lyra's standard workflow for traceability, and a hard CI gate. A malformed subject is manual rebase work for her, not just a red build. -**How to apply:** On every commit in every repo. Format first, repo style second. Run the verification grep before every push. Relates to [[git_check_state]]. +**How to apply:** Conventional form on every commit in every repo; the ticket scope additionally on every commit in a Jira-backed work repo. Format first, repo style second. Run the verification grep before every push. Relates to [[git_check_state]].