dev: bootstrap linked worktrees before local quality gates #79
Copy link
Copy link
Open
Labels
area:runtimeRuntime portability or public API behaviorRuntime portability or public API behaviorstatus:readyReady to pull into implementationReady to pull into implementationtype:debtKnown technical debt or cleanupKnown technical debt or cleanuptype:designDesign doc or proof-plan workDesign doc or proof-plan work
Milestone
Description
Activity
- addedtype:debtKnown technical debt or cleanupKnown technical debt or cleanuparea:runtimeRuntime portability or public API behaviorRuntime portability or public API behaviorstatus:readyReady to pull into implementationReady to pull into implementation
on Jul 18, 2026 coderabbitai commented
on Jul 18, 2026 coderabbitaiboton Jul 18, 2026 – with coderabbitaiMore actions🔗 Related PRs
#3 - feat(cas): M3 Launchpad — native Bun/Deno adapters, async crypto, and OIDC/JSR release workflow [merged]
#19 - docs: rewrite roadmap and prepare v5.3.2 [closed]
#71 - fix: isolate pre-push Git environment [merged]
#73 - release: prepare git-cas v6.3.0 [merged]
#78 - release: prepare git-cas v6.4.0 [open]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.- Create Plan
🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:issue_enrichment: auto_enrich: enabled: false
💬 Have feedback or questions? Drop into our discord!
- addedtype:designDesign doc or proof-plan workDesign doc or proof-plan work
on Jul 18, 2026
Metadata
Metadata
Assignees
Labels
area:runtimeRuntime portability or public API behaviorRuntime portability or public API behaviorstatus:readyReady to pull into implementationReady to pull into implementationtype:debtKnown technical debt or cleanupKnown technical debt or cleanuptype:designDesign doc or proof-plan workDesign doc or proof-plan work
Problem
Git hooks are shared by linked worktrees, but ignored build state such as
node_modulesis not. A clean release worktree can therefore reachpre-pushwithout the executables required by that hook.This happened while publishing v6.4.0: the first signed-tag push stopped locally because
eslintwas unavailable in the release worktree. Nothing reached the remote, and the retry passed after dependencies were made available, but the failure exposed an avoidable and poorly diagnosed worktree bootstrap gap.Native Git behavior
Git has no dedicated
post-worktree-addhook. It does runpost-checkoutaftergit worktree addunless--no-checkoutis used:https://git-scm.com/docs/githooks#_post_checkout
Because
post-checkoutalso runs for ordinary checkout/switch operations and clone, any bootstrap must be idempotent and cheap when current.Proposed contract
Add a repository-owned linked-worktree bootstrap path:
post-checkouthook delegates to a tested bootstrap command;pnpm-lock.yamlso unchanged worktrees are a no-op and changed dependency graphs are refreshed;pnpm install --frozen-lockfile --prefer-offline, preserving branch-correct links while reusing pnpm's content-addressed package store;git worktree add --no-checkoutand an explicit opt-out are documented;Do not solve this by permanently symlinking one worktree's entire
node_modulesinto another. That couples branches to one dependency layout and can become incorrect when lockfiles diverge.Acceptance criteria
git worktree addcan leave a linked worktree ready to run repository hooks and tests.post-checkoutinvocations with an unchanged lockfile perform no install.--no-checkout, opt-out, failure, and recovery behavior are documented.Release impact
This is developer tooling and release-process hardening. It is not a blocker for the already reviewed v6.4.0 artifact and should land independently.