diff --git a/.claude/skills/review-prs/SKILL.md b/.claude/skills/review-prs/SKILL.md new file mode 100644 index 00000000000..9704e519d8d --- /dev/null +++ b/.claude/skills/review-prs/SKILL.md @@ -0,0 +1,17 @@ +--- +name: review-prs +description: "Show PRs across Platform, rust-dashcore, Tenderdash, GroveDB and Dash Evo Tool awaiting your review, their waiting time, and blockers on your own PRs. Use for /review-prs or requests to inspect the human review queue." +--- + +# Review PRs + +Use the shared policy reporter in `dashpay/stale_prs_are_bad`. Clone or locate that repository (`$PR_REVIEW_HOME` if set, else `gh repo clone dashpay/stale_prs_are_bad` into a temporary directory) and read its `guides/PR_REVIEW_ARCHITECTURE.md` for the policy and `guides/PR_REVIEW_OPERATIONS.md` for setup and limitations. + +1. Resolve the current GitHub user with `gh api user --jq .login`, unless the user names another reviewer. +2. From that checkout's root run `python3 -m pr_review.aggregate report --user USER`. For structured output add `--format json`; to limit repositories add `--repo dashpay/REPOSITORY`. For one PR run `python3 -m pr_review.main report --repo dashpay/REPOSITORY --pr NUMBER`; the policy comes from that checkout's `policies/`. +3. Present actionable human reviews first, oldest first, with links, touched areas, and the next action. Separately summarize blockers on the user's own PRs. Use repository-qualified PR identifiers. Distinguish author action, bot work, missing access, and the five-PR admission queue within each repository. Combined totals above five are workload warnings, not a global hard cap. +4. Waiting time is the current recorded human-review cycle. If no controller state exists, say the age is not recorded. Do not equate total PR age with review waiting time. + +This command is read-only. It does not perform the code review itself. Never post `/self-reviewed`, submit an approval, request reviewers, change labels, or send Slack messages merely because this skill was invoked. Author self-review is a personal attestation after inspecting the current diff and bot outcomes; it cannot be inferred from a bot run. + +If any repository evidence is incomplete or inaccessible, name that repository and state that totals are partial. Preview policy rows are computed recommendations, not live enforcement. Report the error. Do not invent readiness or approval. Report preview results as computed policy, not proof that repository enforcement has been activated. diff --git a/.github/workflows/pr-review-policy.yml b/.github/workflows/pr-review-policy.yml new file mode 100644 index 00000000000..6704732f844 --- /dev/null +++ b/.github/workflows/pr-review-policy.yml @@ -0,0 +1,22 @@ +name: PR review policy +on: + pull_request_target: + types: [opened, reopened, synchronize, ready_for_review, converted_to_draft, closed, edited] + issue_comment: + types: [created, edited, deleted] + workflow_run: + workflows: [PR review signal] + types: [completed] + workflow_dispatch: + schedule: + - cron: '*/15 * * * *' +permissions: + contents: read + pull-requests: write + issues: write + statuses: write +jobs: + policy: + uses: dashpay/stale_prs_are_bad/.github/workflows/pr-review-reusable.yml@cc4d18484ceabf121886e47606b4b10628aafefa + with: + engine_revision: cc4d18484ceabf121886e47606b4b10628aafefa diff --git a/.github/workflows/pr-review-signal.yml b/.github/workflows/pr-review-signal.yml new file mode 100644 index 00000000000..2a7f6776c2c --- /dev/null +++ b/.github/workflows/pr-review-signal.yml @@ -0,0 +1,10 @@ +name: PR review signal +on: + pull_request_review: + types: [submitted, edited, dismissed] +permissions: {} +jobs: + signal: + runs-on: ubuntu-latest + steps: + - run: echo 'Review changed; trusted policy workflow will refetch GitHub evidence.' diff --git a/CODEOWNERS b/CODEOWNERS index d66e34d8765..97962029396 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,21 +1,28 @@ -* @QuantumExplorer - -# SDK packages -/packages/rs-sdk/ @QuantumExplorer @shumkov @lklimek -/packages/rs-sdk-ffi/ @QuantumExplorer @shumkov @lklimek -/packages/rs-sdk-trusted-context-provider/ @QuantumExplorer @shumkov -/packages/js-dash-sdk/ @QuantumExplorer @shumkov -/packages/js-evo-sdk/ @QuantumExplorer @shumkov -/packages/wasm-sdk/ @QuantumExplorer @shumkov -/packages/swift-sdk/ @QuantumExplorer @shumkov @llbartekll @ZocoLini - -# Platform wallet stack -/packages/rs-platform-wallet/ @QuantumExplorer @shumkov @lklimek @llbartekll @ZocoLini -/packages/rs-platform-wallet-ffi/ @QuantumExplorer @shumkov @lklimek @llbartekll @ZocoLini -/packages/rs-platform-wallet-storage/ @QuantumExplorer @shumkov @lklimek @llbartekll @ZocoLini - -# Proof verification -/packages/rs-drive-proof-verifier/ @QuantumExplorer @shumkov @lklimek - -# WASM DPP v2 -/packages/wasm-dpp2/ @QuantumExplorer @shumkov +# Generated from dashpay/stale_prs_are_bad policies/platform.json; do not edit by hand. +# Owners and reviewers are combined here for native review routing. +* @QuantumExplorer @shumkov +/packages/rs-drive/ @QuantumExplorer @shumkov +/packages/rs-drive-abci/ @QuantumExplorer @shumkov +/packages/rs-dpp/ @QuantumExplorer @shumkov +/packages/rs-platform-wallet/ @llbartekll @ZocoLini @HashEngineering @romchornyi +/packages/rs-platform-wallet-ffi/ @llbartekll @ZocoLini @HashEngineering @romchornyi +/packages/rs-platform-wallet-storage/ @lklimek +/packages/swift-sdk/ @llbartekll @romchornyi +/packages/rs-sdk/ @lklimek @shumkov +/packages/rs-sdk-ffi/ @lklimek @shumkov +# Unresolved ownership or reviewer identities; see responsibility documentation. +/packages/dashmate/ @shumkov +/packages/js-dash-sdk/ @shumkov +/packages/js-evo-sdk/ @shumkov +/packages/wasm-sdk/ @shumkov +/packages/rs-dapi/ @lklimek @QuantumExplorer @shumkov +/packages/data-contracts/ @QuantumExplorer @shumkov +/packages/dashpay-contract/ @QuantumExplorer @shumkov +/packages/dpns-contract/ @QuantumExplorer @shumkov +/packages/masternode-reward-shares-contract/ @QuantumExplorer @shumkov +/packages/withdrawals-contract/ @QuantumExplorer @shumkov +/packages/wallet-utils-contract/ @QuantumExplorer @shumkov +/packages/token-history-contract/ @QuantumExplorer @shumkov +/packages/document-history-contract/ @QuantumExplorer @shumkov +/packages/keyword-search-contract/ @QuantumExplorer @shumkov +/packages/kotlin-sdk/ @HashEngineering