kb-health: объективная метрика качества KB (karpathy-style val_bpb)

6 категорий штрафов со взвешенной суммой:
- broken_wikilinks (×10) — [[foo]] не ведёт никуда
- broken_paths (×10) — [text](./foo.md) не существует
- missing_frontmatter (×3) — .md без frontmatter-заголовка
- orphan_files (×2) — нет входящих wikilinks и не в служебных папках
- undated_todos (×1) — "- [ ]" без YYYY-MM-DD
- duplicate_basenames (×5) — одинаковое имя в разных папках

Baseline сегодня: score=493 (158 файлов).
Выход: audit/DATE-health.md (человекочит) + audit/health-latest.json (для agent-loop).

False-positives зачинены:
- wikilinks внутри backticks/fenced code игнорим
- ../ и ./ пути резолвятся от файла-источника
- CLAUDE.md/README.md не требуют frontmatter
This commit is contained in:
dttb
2026-04-18 20:14:43 +03:00
parent 9b33688311
commit 4508bc7339
3 changed files with 512 additions and 0 deletions

21
audit/health-latest.json Normal file
View File

@@ -0,0 +1,21 @@
{
"date": "2026-04-18",
"score": 493,
"counts": {
"broken_wikilinks": 0,
"broken_paths": 4,
"missing_frontmatter": 70,
"orphan_files": 90,
"undated_todos": 48,
"duplicate_basenames": 3
},
"weights": {
"broken_wikilinks": 10,
"broken_paths": 10,
"missing_frontmatter": 3,
"orphan_files": 2,
"undated_todos": 1,
"duplicate_basenames": 5
},
"files_scanned": 158
}