-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathcommitlint.config.js
More file actions
100 lines (99 loc) · 2.23 KB
/
Copy pathcommitlint.config.js
File metadata and controls
100 lines (99 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Commitlint config — Conventional Commits enforcement.
// Closes gap #10. CI checks the PR title via .github/workflows/lint-pr-title.yml.
// Locally: install via `npm install --no-save @commitlint/cli @commitlint/config-conventional`
// then `npx commitlint --from=HEAD~1`. The pre-commit-hooks `commit-msg` stage hooks it in.
module.exports = {
extends: ["@commitlint/config-conventional"],
rules: {
// Type must be one of these (mirrors src/.coding_rules.md and PR template).
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"build",
"ci",
"chore",
"revert",
],
],
// Scope optional — but when present must be a known package or milestone tag.
// Soft check: warn rather than fail.
"scope-enum": [
1,
"always",
[
// Backend areas
"dtwin",
"ontology",
"mapping",
"registry",
"domain",
"session",
"agents",
"mcp",
"shacl",
"sparql",
"r2rml",
"owl",
"reasoning",
"triplestore",
"graphdb",
"databricks",
"lakebase",
"api",
"graphql",
"front",
"shared",
// Tooling
"ci",
"build",
"deps",
"tests",
"docs",
"changelog",
"release",
// Milestone tags (per ROADMAP)
"M1.P1",
"M1.P2",
"M1.P3",
"M1.P4",
"M1.P5",
"M1.P6",
"M1.P7",
"M2.P1",
"M2.P2",
"M2.P3",
"M2.P4",
"M2.P5",
"M2.P6",
"M2.P7",
"M3.P1",
"M3.P2",
"M3.P3",
"M4.P1",
"M4.P2",
"M4.P3",
// Testing milestone tags
"T-M0",
"T-M1",
"T-M2",
"T-M3",
"T-M4",
"T-M5",
"T-M6",
],
],
// Subject line — imperative mood, lower-case, no trailing period, <=72 chars.
"subject-case": [2, "always", "lower-case"],
"subject-empty": [2, "never"],
"subject-full-stop": [2, "never", "."],
"header-max-length": [2, "always", 100],
},
};