Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
set -euo pipefail

ignored_staged_paths=(
":(exclude).agents/**"
":(exclude).claude/**"
":(exclude).clawpatch/**"
":(exclude).codex/**"
":(exclude).agents/rules/**"
":(exclude).agents/*.md"
":(exclude).agents/**/*.md"
)

git diff --cached --check -- . "${ignored_staged_paths[@]}"
Expand Down Expand Up @@ -70,10 +72,9 @@ run_script() {

if [[ -f pnpm-lock.yaml ]] && command -v pnpm >/dev/null 2>&1; then
if has_staged_changes package.json pnpm-lock.yaml pnpm-workspace.yaml; then
# Order matters: dedupe is the cheaper read-only check, so fail fast on
# lockfile bloat before the heavier lockfile-vs-package.json sync check.
# Materialize first: dedupe --check can purge a topology-mismatched node_modules before its check-only phase.
pnpm install --frozen-lockfile --ignore-scripts --config.confirm-modules-purge=false --config.optimistic-repeat-install=false
pnpm dedupe --check --config.confirm-modules-purge=false
pnpm install --frozen-lockfile --ignore-scripts --config.confirm-modules-purge=false
fi
fi

Expand Down
15 changes: 14 additions & 1 deletion .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,23 @@ on:
pull_request:
types: [opened, reopened, synchronize]

# pnpm 11 defaults verify-deps-before-run to "install": the first `pnpm
# <script>` or `pnpm exec` whose deps-status check sees drift re-runs a full
# install with lifecycle scripts enabled, silently dropping this workflow's
# install flags — a prepare hook the hardened --ignore-scripts install skipped
# then runs in CI. Only this spelling disables it: pnpm reads
Comment on lines +10 to +14

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Condense the pnpm explanation to one line

This newly added seven-line comment block violates the repository requirement that comments remain one short line and avoid multi-line blocks. Retain only the non-obvious invariant—for example, that disabling automatic reinstalls preserves the hardened install flags—so the workflow remains compliant and maintainable.

AGENTS.md reference: AGENTS.md:L87-L87

Useful? React with 👍 / 👎.

# pnpm_config_verify_deps_before_run raw from the environment, and the
# npm_config_ spelling is silently ignored.
env:
pnpm_config_verify_deps_before_run: "false"

jobs:
quality-checks:
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
matrix:
node: ["24.15.0", "26.5.0"]
steps:
- name: Checkout code
uses: actions/checkout@v6
Expand All @@ -25,7 +38,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: "package.json"
node-version: ${{ matrix.node }}
cache: "pnpm"

- name: Verify install secret
Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/commit-msg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ jobs:
timeout-minutes: 5
env:
COMMITLINT_PACKAGE_VERSION: "1.0.3"
# npm's fetch-timeout defaults to 300s — exactly this job's cap — so one
# stalled request eats the whole budget in silence and the job is killed
# before npm's own retry ever fires. Observed as five consecutive 5m00s
# timeouts across align and cluster while the same install took 6s when
# it worked. Bounding the request keeps the retries useful and turns the
Comment on lines +19 to +23

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Shorten the network-timeout rationale

This six-line incident narrative violates the repository's explicit one-short-line limit for comments. Reduce it to the durable reason the settings exist, such as keeping retries within the job timeout, rather than preserving historical timing details in the workflow.

AGENTS.md reference: AGENTS.md:L87-L87

Useful? React with 👍 / 👎.

# tail from minutes into seconds; the cap below then means what it says.
npm_config_fetch_timeout: "30000"
npm_config_fetch_retries: "3"
npm_config_fetch_retry_mintimeout: "1000"
npm_config_fetch_retry_maxtimeout: "10000"
steps:
- uses: actions/checkout@v6
with:
Expand All @@ -24,7 +34,8 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "24"
# Deliberately policy-pinned: this workflow runs only a version-pinned npm package and takes no toolchain input from the PR tree — the template, not node-version-file, supplies the fleet baseline.
node-version: "26.5.0"

- name: Cache conventional-commit-msg download
uses: actions/cache@v5
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/dedupe-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ on:
paths:
- pnpm-lock.yaml

# pnpm 11 defaults verify-deps-before-run to "install": the first `pnpm
# <script>` or `pnpm exec` whose deps-status check sees drift re-runs a full
# install with lifecycle scripts enabled, silently dropping this workflow's
# install flags — a prepare hook the hardened --ignore-scripts install skipped
# then runs in CI. Only this spelling disables it: pnpm reads
Comment on lines +14 to +18

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Condense the duplicated pnpm explanation

This newly introduced multi-line block also conflicts with the repository rule requiring comments to be a single short line. Preserve only the underlying safety constraint—that automatic dependency verification must not reinstall without the hardened flags—and remove the extended operational description.

AGENTS.md reference: AGENTS.md:L87-L87

Useful? React with 👍 / 👎.

# pnpm_config_verify_deps_before_run raw from the environment, and the
# npm_config_ spelling is silently ignored.
env:
pnpm_config_verify_deps_before_run: "false"

jobs:
dedupe-check:
runs-on: ubuntu-latest
Expand All @@ -29,7 +39,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: "package.json"
node-version-file: ".node-version"
cache: "pnpm"

- name: Verify install secret
Expand Down
44 changes: 0 additions & 44 deletions .github/workflows/pr-review.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/release-npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: "package.json"
node-version-file: ".node-version"
cache: "pnpm"

- name: Verify install secret
Expand Down
1 change: 1 addition & 0 deletions .node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
26.5.0
2 changes: 2 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
".claude/",
".clawpatch/",
".codex/",
"!.agents/skills/**",
".agents/**/*.md",
"AGENTS.md",
"CLAUDE.md"
]
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Running `worktree-remove`:

## Requirements

- Node.js ≥ 24.0.0
- Node.js ≥ 24.15.0
- Git with `git worktree` support
- Optional: set `WORKTREE_REMOVE_GIT_PATH` to override the git executable

Expand Down
3 changes: 2 additions & 1 deletion knip.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"$schema": "https://unpkg.com/knip@6/schema.json",
"entry": ["src/cli.ts", "types/**/*.d.ts"],
"project": ["src/**/*.ts", "types/**/*.d.ts"]
"project": ["src/**/*.ts", "types/**/*.d.ts"],
"ignoreDependencies": ["conventional-changelog-conventionalcommits"]
}
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
"devDependencies": {
"@j4k/oxlint-config": "^2.11.0",
"@total-typescript/ts-reset": "^0.6.1",
"@types/node": "^25.9.3",
"@types/node": "^24.0.0",
"@vitest/coverage-v8": "^4.1.8",
"fta-check": "^1.5.4",
"fta-cli": "^3.0.0",
Expand All @@ -79,7 +79,7 @@
"vitest": "^4.1.8"
},
"engines": {
"node": ">=24.0.0"
"node": ">=24.15.0"
},
"packageManager": "pnpm@11.22.0"
}
Loading
Loading