Skip to content

fix(lint-surface): блокувати in-file collateral у fix-ladder - #208

Merged
vitaliytv merged 4 commits into
mainfrom
claude/fix-ladder-collateral-damage-f35dd7
Jul 25, 2026
Merged

fix(lint-surface): блокувати in-file collateral у fix-ladder#208
vitaliytv merged 4 commits into
mainfrom
claude/fix-ladder-collateral-damage-f35dd7

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Що змінено

  • додає hunk-level collateral veto для правок поза ділянкою порушення в тому ж файлі;
  • зберігає rollback і передає причину наступній сходинці fix-ladder;
  • покриває сценарій тестами.

Перевірено

  • bun test npm/scripts/lib/lint-surface/tests/run-fix.test.mjs
  • npx @7n/rules lint changelog

vitaliytv and others added 4 commits July 24, 2026 22:19
Cross-file collateral-veto не бачив колатеральних правок ВСЕРЕДИНІ вже-
таргетованого файлу поза ділянкою самого порушення — LLM-rung міг
виправити violation і заодно тихцем видалити сусідній задокументований
воркараунд у тому ж файлі (реальний кейс: видалення Bun SQL workaround-у
в upsert-order.js, що зламало проєктний тест, але пройшло canonical
re-detect).

findInFileCollateralEdits() рахує грубий (common-prefix/common-suffix)
змінений рядковий діапазон між pre-image і поточним вмістом файлу й
звіряє його з вікном навколо кожної violation.data.line — fail-open,
якщо рядок порушення невідомий. Той самий rollback/feedback/телеметрія
шлях, що й у наявного cross-file veto.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- npm/scripts/lib/lint-surface/tests/run-fix.test.mjs: неправильний відносний
  шлях у JSDoc-типі (`../../types.mjs` → `../types.mjs`) — knip unresolved import.
- npm/rules/doc-files/docgen-gen/main.mjs: дедуплікувати pre-send guard +
  факт-лист (jscpd 30-рядковий клон між generateDoc і prepareBatchItem) у
  спільний loadSrcAndFacts(); поведінка ідентична (68/68 тестів модуля зелені).
- .cspell.json: додати "післястартовий" (helyx typo-report на acp/docs/session.md,
  вже existed on main до цього PR).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…eless-assignment

Мердж трьох veto-механізмів (cross-file collateral, in-file hunk-level,
test-gate) у runRung підняв cognitive complexity до 47 (allowed 20, eslint
sonarjs/cognitive-complexity). Виносить обчислення collateral (cross-file +
in-file hunk), test-gate-виклик і побудову errorSuffix/silentFailureNote у
окремі чисті функції (computeCollateral, detectBrokenTest, describeVetoOutcome)
— поведінка та телеметрія незмінні (34/34 тестів run-fix.test.mjs зелені).

Заразом прибрано no-useless-assignment: `let current = null` перед try, що
завжди перезаписує current до першого читання.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…fix.mjs

oxlint jsdoc(require-param-description)/jsdoc(require-returns-description) —
@param/@returns без описового тексту у computeCollateral/detectBrokenTest/
describeVetoOutcome (типи-only, без прози).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vitaliytv
vitaliytv merged commit d88f232 into main Jul 25, 2026
14 of 15 checks passed
@vitaliytv
vitaliytv deleted the claude/fix-ladder-collateral-damage-f35dd7 branch August 15, 2026 04:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant