diff --git a/.agents/skills/pr-creation-checker/SKILL.md b/.agents/skills/pr-creation-checker/SKILL.md index 0a269d05b..e75ba4e51 100644 --- a/.agents/skills/pr-creation-checker/SKILL.md +++ b/.agents/skills/pr-creation-checker/SKILL.md @@ -30,7 +30,9 @@ Use this skill before `gh pr create`, before `gh pr edit`, or when reviewing whe - Treat introducing a new hardcoded literal where a project constant already exists as a likely regression risk; require either a refactor to reuse the constant or an explicit exception explanation in the PR body. 3. Verify readiness requirements -- Require `make pre-commit` before marking the PR ready. +- Require `make pre-commit` before marking PRs ready when the diff changes Rust code, product behavior, CI behavior, runtime configuration, security-sensitive logic, migrations, storage, auth, networking, or other high-risk paths. +- For documentation-only, agent-instruction-only, or local developer-tooling-only changes, allow focused verification instead of `make pre-commit` when it directly validates the changed surface. +- For focused verification, explain why the full gate was not run and list the scope-specific commands in the PR body. - If `make` is unavailable, use the equivalent commands from `.config/make/`. - Add scope-specific verification commands when the changed area needs more than the baseline. - If required checks fail, stop and return `BLOCKED`. @@ -79,7 +81,8 @@ Use this skill before `gh pr create`, before `gh pr edit`, or when reviewing whe ## Blocker rules -- Return `BLOCKED` if `make pre-commit` has not passed. +- Return `BLOCKED` if a code, behavior, CI, runtime configuration, security-sensitive, migration, storage, auth, networking, or other high-risk change has not passed `make pre-commit`. +- Return `BLOCKED` if a documentation-only, agent-instruction-only, or local developer-tooling-only change lacks focused verification for the changed surface. - Return `BLOCKED` if the diff contains unrelated changes that are not acknowledged. - Return `BLOCKED` if required template sections are missing. - Return `BLOCKED` if the title/body is not in English. diff --git a/.agents/skills/pr-creation-checker/references/pr-readiness-checklist.md b/.agents/skills/pr-creation-checker/references/pr-readiness-checklist.md index 61a9c65dd..8314d75b7 100644 --- a/.agents/skills/pr-creation-checker/references/pr-readiness-checklist.md +++ b/.agents/skills/pr-creation-checker/references/pr-readiness-checklist.md @@ -3,7 +3,8 @@ - Confirm the branch is based on current `main`. - Confirm the diff matches the stated scope. - Confirm no secrets, logs, temp files, or unrelated refactors are included. -- Confirm `make pre-commit` passed, or document why it could not run. +- Confirm `make pre-commit` passed for code, behavior, CI, runtime configuration, security-sensitive, migration, storage, auth, networking, or other high-risk changes. +- For documentation-only, agent-instruction-only, or local developer-tooling-only changes, confirm focused verification covered the changed surface and the PR body explains why the full gate was not run. - Confirm extra verification commands are listed for risky changes. - Confirm the PR title uses Conventional Commits and stays within 72 characters. - Confirm the PR title does not use tool-specific prefixes such as `[codex]`. diff --git a/.config/make/lint-fmt.mak b/.config/make/lint-fmt.mak index 5e96dc10a..03337bff9 100644 --- a/.config/make/lint-fmt.mak +++ b/.config/make/lint-fmt.mak @@ -1,5 +1,7 @@ ## —— Code quality and Formatting ------------------------------------------------------------------ +.NOTPARALLEL: fix + .PHONY: fmt fmt: core-deps fmt-deps ## Format code @echo "🔧 Formatting code..." @@ -13,9 +15,21 @@ fmt-check: core-deps fmt-deps ## Check code formatting .PHONY: clippy-check clippy-check: core-deps ## Run clippy checks @echo "🔍 Running clippy checks..." - cargo clippy --fix --allow-dirty cargo clippy --all-targets --all-features -- -D warnings +.PHONY: clippy-fix +clippy-fix: core-deps ## Apply clippy fixes + @echo "🔧 Applying clippy fixes..." + cargo clippy --fix --allow-dirty + +.PHONY: fix +fix: fmt clippy-fix ## Format code and apply clippy fixes + +.PHONY: quick-check +quick-check: core-deps ## Run fast workspace compilation check + @echo "🔨 Running fast compilation check..." + cargo check --workspace --exclude e2e_test + .PHONY: unsafe-code-check unsafe-code-check: ## Check unsafe_code allowances have SAFETY comments @echo "🔒 Checking unsafe_code allowances..." diff --git a/.config/make/pre-commit.mak b/.config/make/pre-commit.mak index 1857f2030..c816076f4 100644 --- a/.config/make/pre-commit.mak +++ b/.config/make/pre-commit.mak @@ -1,5 +1,7 @@ ## —— Pre Commit Checks ---------------------------------------------------------------------------- +.NOTPARALLEL: pre-commit dev-check + .PHONY: setup-hooks setup-hooks: ## Set up git hooks @echo "🔧 Setting up git hooks..." @@ -7,5 +9,9 @@ setup-hooks: ## Set up git hooks @echo "✅ Git hooks setup complete!" .PHONY: pre-commit -pre-commit: fmt unsafe-code-check architecture-migration-check logging-guardrails-check clippy-check compilation-check test ## Run pre-commit checks +pre-commit: fmt-check unsafe-code-check architecture-migration-check logging-guardrails-check clippy-check test ## Run full pre-commit checks @echo "✅ All pre-commit checks passed!" + +.PHONY: dev-check +dev-check: fmt-check unsafe-code-check architecture-migration-check logging-guardrails-check quick-check ## Run fast local development checks + @echo "✅ Fast development checks passed!" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9482f3b91..947c4ffbb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,30 +3,9 @@ repos: - repo: local hooks: - - id: cargo-fmt - name: cargo fmt - entry: cargo fmt --all --check - language: system - types: [rust] - pass_filenames: false - - - id: cargo-clippy - name: cargo clippy - entry: cargo clippy --all-targets --all-features -- -D warnings - language: system - types: [rust] - pass_filenames: false - - - id: cargo-check - name: cargo check - entry: cargo check --all-targets - language: system - types: [rust] - pass_filenames: false - - - id: cargo-test - name: cargo test - entry: bash -c 'cargo test --workspace --exclude e2e_test && cargo test --all --doc' + - id: rustfs-dev-check + name: rustfs dev-check + entry: make dev-check language: system types: [rust] pass_filenames: false