bcquality/custom/knowledge/architecture/commit-message-must-include-bc-task-id.md
Michael Dieringer dd5637b1db Custom-laget bestaar nu begge CI-checks: 72 validator-fejl -> 0
Normalisering af alle 39 custom knowledge-filer til READ-kontraktens
skema (validate_frontmatter.py + Test-KnowledgeIndex.ps1 begge groenne):

- R01/R02: 28 filer manglede frontmatter eller brugte aeldre skemaer
  (title/category/severity/rule-id m.fl.) - alle har nu praecis de 6
  kraevede noegler; keywords haandskrevet pr. fil da de driver
  worklist-selektionen i INDEX/knowledge-index
- R09: manglende Description-sektion - regel-agtige foersteoverskrifter
  (Core Rule/Rule/Regel/Core Principle) omdoebt, eller sektion indsat
  efter titlen hvor intro-tekst fandtes
- R10: fenced code blocks konverteret til 4-space indrykkede blokke
  i alle filer (indhold uaendret)
- R11: 4 filer over 100 linjer fortaettet redaktionelt uden semantisk
  tab (ai-eval-scores 143->100, git-lifecycle 121->97,
  permission-sets 113->99, test-feature-scenario-tags 105->91)
- R05: AL0197->al0197, add_repo->add-repo; keyword-lister trimmet
  til maks 10

Ingen regler er fjernet eller aendret i betydning - kun form.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:47:31 +02:00

72 lines
2.6 KiB
Markdown

---
bc-version: [all]
domain: architecture
keywords: [commit-message, bc-task, task-id, traceability, git]
technologies: [al]
countries: [w1]
application-area: [all]
---
---
name: commit-message-must-include-bc-task-id
description: >
Every commit message must begin with the BC task ID in [#id] format,
where id is the global taskId from the CUR MCP Active Tasks page.
layer: 2
category: architecture
---
# Commit Message Must Include BC Task ID
## Description
Every commit must reference the BC sub-task it belongs to by prefixing the
message with `[#taskId]`, where `taskId` is the globally unique, sequential
task identifier from the **CUR MCP Active Tasks** page (field `taskId`).
This links code history directly to customer-facing work items in BC, enables
time registration traceability, and is consistent with the convention already
used across Curabis teams.
## Anti Pattern
Add Price Lookup feature — FindPrice page, tier prices, currency conversion
No traceability. Impossible to find the BC task from git history.
## Best Practice
[#8738] Add Price Lookup feature — FindPrice page, tier prices, currency conversion
[#8738] Add 22 UI tests for PRICING LOOKUP feature
[#8738] Add translations, shared project memory and cspell config
## The two task numbers — use taskId, not taskNo
The sub-task has two numbers — do not confuse them:
| Field | Description | Use for |
|---|---|---|
| `taskNo` | Sequential within the project (e.g. 42) | Referencing within a project |
| `taskId` | Globally unique across all projects (e.g. 8738) | **Commit messages** |
Always use `taskId` in commit messages. It is unambiguous across all projects
and repos.
> **Gotcha:** Users and conversations refer to tasks by `taskNo` — e.g. "opgave 51"
> or "task 42". This is the natural shorthand and is correct for conversation.
> But `taskNo` is NOT what goes in the commit message. Always look up `taskId`
> from the MCP response before committing — they are different fields.
## How to find the taskId before committing
1. Get the current branch: `git branch --show-current`
2. Find the linked project via BC MCP (see `[[bc-mcp-find-active-task-for-branch]]`)
3. In the MCP response, read the **`taskId`** field — NOT `taskNo`
4. Prefix every commit on this branch with `[#taskId]`
If no task exists for the branch, create one first (see bc-mcp.agent.md
create-task workflow) or ask the project manager to register the work.
## Scope
All commits that reach the main branch — feature, fix, test, chore, docs.
Merge commits and auto-generated commits (renovate, al-go) are exempt.