Skip to content

validate-md-links: recognize explicit HTML anchors - #126

Closed
prikotov-agent[bot] wants to merge 3 commits into
masterfrom
task/md-links-html-anchors
Closed

prikotov-agent[bot] wants to merge 3 commits into
masterfrom
task/md-links-html-anchors

Conversation

@prikotov-agent

Copy link
Copy Markdown
Contributor

Задача

TASK-fix-md-links-html-anchors

Постановка

validate-md-links строит индекс якорей только из заголовков ATX (#…######). Пакет prikotov/git-workflow использует в глоссарии явные HTML-якоря <a id="..."> (валидные на GitHub), из-за чего валидатор ложно помечает #deployment, glossary.md#release-publishing как broken-anchor. Обнаружено при обновлении prikotov/git-workflow до v0.4.0 в проекте prikotov/task-orchestrator (PR prikotov/task-orchestrator#404).

Что сделано

  • bin/validate-md-links: новый extractHtmlAnchors() + включён в buildAnchorIndex() — цели якорей теперь и заголовки ATX, и явные <a id="..."> / <a name="..."> (регистронезависимо, кавычки обоих видов, id принимается как есть, без slug-преобразования — как разрешает GitHub). Обновлён docblock скрипта.
  • Фикстуры (tests/fixtures/md-links/): валидные локальный <a id>-якорь, межфайловый (subdir/target.md#shared-term), legacy <a name>; битый явный якорь #no-such-explicit.
  • Тесты: testRecognizesExplicitHtmlAnchors, testDetectsBrokenExplicitAnchor; счётчик ожидаемых ошибок 5 → 6.
  • Дока: docs/conventions/ops/validate-md-links.md — поддержка HTML-якорей описана в «Общих правилах».

Проверки

  • vendor/bin/phpunit tests/MdLinksValidator/ — 21 тест OK.
  • composer check — полностью зелёный (289 тестов, PHPStan, sniff-test, validate-docs, phpcs, language).
  • Контрольный кейс: php bin/validate-md-links <git-workflow>/docs/git-workflow/ — все ссылки валидны (исходная проблема закрыта).

Breaking changes

Нет: индекс якорей только расширяется; новые ошибки возможны лишь для ссылок на несуществующие явные якоря (корректное срабатывание).

@prikotov-agent prikotov-agent Bot added the pi Pi Coding Agent label Sep 21, 2026
@prikotov-agent

Copy link
Copy Markdown
Contributor Author

Закрыто по решению владельца: политика чистого Markdown — якоря только через заголовки, сырой HTML () не поддерживаем. Фикс переносится в prikotov/git-workflow (глоссарий переделывается на заголовки).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pi Pi Coding Agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant