This repository was archived by the owner on Sep 11, 2026. It is now read-only.
Repository navigation
feat(lint): worktree-only гейт для lint --full + bring-back/cleanup для taze - #138
Merged
Merged
Conversation
…назад і прибирати його Якщо worktree був автостворений самим taze (ensureRunningInWorktree), по завершенню прогону — і при успіху, і при кинутому винятку всередині try (finally) — зміни копіюються назад у вихідне дерево як untracked/незакомічені файли (bringChangesBackToOriginal, за `git status --porcelain` у worktree), а сам worktree разом з ефемерною гілкою прибирається (removeAutoCreatedWorktree, npx @7n/mt worktree remove). Якщо викликач уже сидів у своєму worktree (autoCreated: false) — це не наш worktree, нічого не переноситься й не прибирається. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…back + cleanup npx @7n/rules lint --full мав main.json.worktree: true, але єдиний реальний JS-гейт (assertCwdIsProjectRoot) перевіряв лише «корінь git-репо», не ізоляцію в .worktrees/ — запуск --full прямо з основного дерева тихо мутував його на місці, без throw і без ізоляції. Спільну логіку з taze (ensureRunningInWorktree/bringChangesBackToOriginal/ removeAutoCreatedWorktree) винесено в npm/scripts/lib/auto-worktree.mjs; taze тепер лише тонкий виклик з suffix:'taze'. Гейт активний лише для full && !noFix (реальна full-repo мутація) — delta-лінт і --no-fix (detect-only) не чіпаються: delta має працювати на живому дереві задачі, detect-only нічого не мутує. Новий запобіжник (requireCleanTree, дефолт true): auto-create worktree — checkout HEAD, без незакомічених змін вихідного дерева; перенесення результату назад копіюванням файлів затерло б їх версією без цих правок. Гейт кидає на брудному дереві замість мовчки ризикувати чужою роботою. Той самий запобіжник тепер діє і для taze (раніше — лише документована, не enforced передумова). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
vitaliytv
force-pushed
the
claude/taze-worktree-automation-70c1e1
branch
from
July 19, 2026 05:15
df0f03b to
001f38c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Продовження #133 (уже змерджено) — та сама гілка отримала два додаткові коміти вже ПІСЛЯ мержу, тож вони лишились поза
main. Ця PR містить лише їх:finally) зміни копіюються назад у вихідне дерево як untracked-файли (bringChangesBackToOriginal, заgit status --porcelain), а сам worktree разом з ефемерною гілкою прибирається (removeAutoCreatedWorktree,npx @7n/mt worktree remove). Якщо викликач уже сидів у своєму worktree — нічого не переноситься й не прибирається.npx @7n/rules lint --fullмавmain.json.worktree: true, але єдиний реальний JS-гейт (assertCwdIsProjectRoot) перевіряв лише «корінь git-репо», не ізоляцію в.worktrees/— запуск--fullпрямо з основного дерева тихо мутував його на місці. Тепер підключено той самий auto-create + bring-back + cleanup, але лише колиfull && !noFix(реальна full-repo мутація) — delta-лінт і--full --no-fix(detect-only) не чіпаються.npm/scripts/lib/auto-worktree.mjs(ensureRunningInWorktree/bringChangesBackToOriginal/removeAutoCreatedWorktree) —tazeтепер лише тонкий виклик зsuffix: 'taze'.requireCleanTree(дефолтtrue). Auto-create worktree — це checkout HEAD, без незакомічених змін вихідного дерева. Якщо вихідне дерево брудне, bring-back копіюванням файлів мовчки затер би незакомічені правки версією без них. Гейт тепер кидає на брудному дереві замість ризикувати чужою роботою — це заодно закрило ту саму латентну діру й уtaze(раніше — лише документована, не enforced передумова з SKILL.md).Test plan
bun run vitest run npm/scripts/lib/tests/auto-worktree.test.mjs npm/skills/taze/js/tests/orchestrate.test.mjs npm/scripts/lib/lint-surface/tests/ npm/scripts/tests/cli-entry.test.mjs— 194/194 passednpx @7n/rules lint— чистоorchestrate.md, новийauto-worktree.md,index.md) перегенеровані, CRC свіжий🤖 Generated with Claude Code