Anchor the token-minimum exemptions to the anchor itself: keying them by line number broke the same day an errata shifted the file

This commit is contained in:
heaven 2026-09-02 18:42:17 +03:00
parent 3f635154f5
commit e9479593b5

View file

@ -420,9 +420,11 @@ TOKEN_MIN = 12
# Два якоря короче минимума ТРОГАТЬ НЕЛЬЗЯ, и это не долг, а норма: один лежит в ТЕЛЕ ноты D39.176
# (append-only, D23.3), второй — в теле эксперимента (улика, D23.3). Гейт обязан молчать на них,
# иначе он вечно красный на местах, которые сам же запрещает править.
# ⚠ Привязка по ЯКОРЮ, а не по номеру строки: первая редакция ссылалась на номера и сломалась в тот
# же день от вставки эрраты выше по файлу. Гейт, который сам гниёт от правки соседней строки, — не гейт.
TOKEN_MIN_EXEMPT = {
("docs/architecture/05-decisions-log.md", 1617),
("docs/experiments/23-editor-tier.md", 2244),
("docs/architecture/05-decisions-log.md", "backend/cmd/tmctl/invocation.go:145"),
("docs/experiments/23-editor-tier.md", "docs/archive/PROGRESS-2026-08-10-15.md:23"),
}
LINT_SKIP_DOCS = {
@ -592,7 +594,7 @@ def lint_anchors() -> tuple[list[tuple[int, str]], dict[str, int]]:
f"D{'/D'.join(sorted(named))} — адресуй ноту НОМЕРОМ, строка D-лога не переживает подрезку"))
continue
if (token is not None and len(token.strip()) < TOKEN_MIN
and (doc_rel, n) not in TOKEN_MIN_EXEMPT):
and (doc_rel, rel + ":" + str(lineno)) not in TOKEN_MIN_EXEMPT):
# ⚠ Токен короче TOKEN_MIN не доказывает НИЧЕГО: «`x`» найдётся в любой строке,
# и якорь считался бы «сверенным по содержимому», не будучи им. Дыра найдена
# при заведении храповика 02.09: доля сверяемых накручивается пустышкой.