Skip to content

Commit fe8fc48

Browse files
authored
docs: roadmap, CLI config schema, and rules-engine spec (#40)
## What Adds the strategic + contract docs for the next phase. **Docs/config only — no source changes.** - **`roadmap.md`** — phased roadmap in two tracks: *parity* (dead code, duplication, health, boundaries, audit gate, output formats, suppressions, LSP) and *differentiation*. Flagship: **Highways** — data-flow convergence that detects divergent "cowpaths" for one logical data operation and **proposes the canonical unified path** (name, location, signature, reroute plan). Read-only stance; LSP yes; no auto-fix / no VS Code extension. - **`schema.json`** — JSON Schema (draft 2020-12) for the CLI config: ESLint-style `rules` (incl. `no-comments`), `boundaries`, `thresholds`, `ci` gate. - **`codebase-intelligence.json`** — example/default config (schema-linked, dogfooded). - **`specs/backlog/2026-06-02-config-rules-engine.md`** — config discovery + loader, ESLint-style rules engine, `no-comments` rule, and CI gate (exit codes, formats, GitHub/GitLab). ## Notes - No competitor referenced anywhere. - Implementation of the engine is **not** in this PR — spec only. ## Test Docs/JSON only. `schema.json` + `codebase-intelligence.json` validated (parse + rule-name alignment).
1 parent 29c546a commit fe8fc48

4 files changed

Lines changed: 948 additions & 0 deletions

File tree

codebase-intelligence.json

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{
2+
"$schema": "./schema.json",
3+
"root": ".",
4+
"include": ["src/**/*.ts"],
5+
"exclude": ["src/**/*.test.ts", "tests/**", "dist/**"],
6+
"entry": ["src/cli.ts"],
7+
"ignore": {
8+
"exportsUsedInFile": false
9+
},
10+
"rules": {
11+
"no-circular-deps": "error",
12+
"no-dead-exports": "warn",
13+
"no-dead-files": "warn",
14+
"no-unused-deps": "warn",
15+
"no-duplication": ["warn", { "minTokens": 50, "mode": "mild" }],
16+
"max-cyclomatic-complexity": ["warn", { "max": 20 }],
17+
"no-boundary-violations": "warn",
18+
"no-divergent-paths": "off",
19+
"no-comments": "off"
20+
},
21+
"boundaries": {
22+
"zones": [
23+
{ "name": "types", "patterns": ["src/types/**"] },
24+
{ "name": "parser", "patterns": ["src/parser/**"] },
25+
{ "name": "graph", "patterns": ["src/graph/**"] },
26+
{ "name": "analyzer", "patterns": ["src/analyzer/**"] },
27+
{ "name": "core", "patterns": ["src/core/**"] },
28+
{ "name": "surfaces", "patterns": ["src/cli.ts", "src/mcp/**"] }
29+
],
30+
"rules": [
31+
{ "from": "types", "forbid": ["parser", "graph", "analyzer", "core", "surfaces"] },
32+
{ "from": "parser", "allow": ["types"] },
33+
{ "from": "graph", "allow": ["types", "parser"] },
34+
{ "from": "analyzer", "allow": ["types", "graph"] }
35+
]
36+
},
37+
"thresholds": {
38+
"health": { "minScore": 80 }
39+
},
40+
"output": {
41+
"format": "text",
42+
"quiet": false
43+
},
44+
"ci": {
45+
"gate": "new-only",
46+
"failOn": "error",
47+
"maxWarnings": -1
48+
}
49+
}

0 commit comments

Comments
 (0)