Контекст
PostToolUse-hook (npx --no @nitra/cursor post-tool-use-fix) у репо nitra/task після кожного Edit/Write маршрутизує змінений файл у npx @nitra/cursor fix <rules>. LLM-фіксери правил (локальна omlx-модель) при цьому переписують конфіги репо шаблонами, що не відповідають типу воркспейсу, і роблять семантичні правки коду. Виявлено 2026-07-05 у сесії роботи над nitra/task (v5.3.1).
Баги
-
js-lint фіксер: хибна детекція типу воркспейсу. У Tauri/Vue-репо eslint.config.js перезаписано шаблоном npm-воркспейсу: getConfig({ node: ['npm'] }) замість getConfig({ vue: ['app'] }); ignores (app/src-tauri/**, .claude/worktrees/**, docs/**) втрачено. Наслідок: усі .vue падають з Parsing error: Unexpected token <.
-
text/cspell фіксер: знищення локального словника. .cspell.json перезаписано мінімізованим скаффолдом: words: [] (втрачено ~30 проектних слів), ignorePaths без **/target/** і **/src-tauri/gen/**, додано ru-ru у language. Наслідок: lint-text — 50k+ помилок у 2168 файлах. Аналогічно обрізається .v8rignore (з ~10 рядків до 3).
-
ga фіксер: відкат SHA-пінів. .github/workflows/*.yml переписуються з запінених SHA (actions/checkout@df4cb1c0… # v6.0.3) назад на floating-теги (@v6) — прямий конфлікт із zizmor-політикою пінів, яку той самий lint-ga і вимагав.
-
Семантичні правки слабкою моделлю. app/src/App.vue: фіксер замінив getVersion() з @tauri-apps/api/app на захардкоджений computed(() => '0.3.0') з коментарем «For this fix, we simulate it being available» — зламано відображення версії назавжди + unused import (сам же створює lint-помилку). Пропозиція: фіксерам заборонити семантичні зміни — лише механічні/форматні; семантика тільки через явний /n-fix із сильною моделлю.
Репро
Репо nitra/task @ 88d3d28, hook з .claude/settings.json. Редагування будь-якого .vue → баги 1–2; редагування .github/workflows/*.yml → баг 3. Диффи пошкоджень видно в історії робочого дерева між комітами 5e58ff8…88d3d28.
🤖 Generated with Claude Code
Контекст
PostToolUse-hook (
npx --no @nitra/cursor post-tool-use-fix) у репоnitra/taskпісля кожного Edit/Write маршрутизує змінений файл уnpx @nitra/cursor fix <rules>. LLM-фіксери правил (локальна omlx-модель) при цьому переписують конфіги репо шаблонами, що не відповідають типу воркспейсу, і роблять семантичні правки коду. Виявлено 2026-07-05 у сесії роботи над nitra/task (v5.3.1).Баги
js-lint фіксер: хибна детекція типу воркспейсу. У Tauri/Vue-репо
eslint.config.jsперезаписано шаблоном npm-воркспейсу:getConfig({ node: ['npm'] })замістьgetConfig({ vue: ['app'] }); ignores (app/src-tauri/**,.claude/worktrees/**,docs/**) втрачено. Наслідок: усі.vueпадають зParsing error: Unexpected token <.text/cspell фіксер: знищення локального словника.
.cspell.jsonперезаписано мінімізованим скаффолдом:words: [](втрачено ~30 проектних слів), ignorePaths без**/target/**і**/src-tauri/gen/**, доданоru-ruу language. Наслідок: lint-text — 50k+ помилок у 2168 файлах. Аналогічно обрізається.v8rignore(з ~10 рядків до 3).ga фіксер: відкат SHA-пінів.
.github/workflows/*.ymlпереписуються з запінених SHA (actions/checkout@df4cb1c0… # v6.0.3) назад на floating-теги (@v6) — прямий конфлікт із zizmor-політикою пінів, яку той самий lint-ga і вимагав.Семантичні правки слабкою моделлю.
app/src/App.vue: фіксер замінивgetVersion()з@tauri-apps/api/appна захардкодженийcomputed(() => '0.3.0')з коментарем «For this fix, we simulate it being available» — зламано відображення версії назавжди + unused import (сам же створює lint-помилку). Пропозиція: фіксерам заборонити семантичні зміни — лише механічні/форматні; семантика тільки через явний /n-fix із сильною моделлю.Репро
Репо
nitra/task@ 88d3d28, hook з.claude/settings.json. Редагування будь-якого.vue→ баги 1–2; редагування.github/workflows/*.yml→ баг 3. Диффи пошкоджень видно в історії робочого дерева між комітами 5e58ff8…88d3d28.🤖 Generated with Claude Code