Skip to content

Commit e5cde38

Browse files
committed
Merge remote-tracking branch 'origin/main' into brophdawg11/codex-data-route-matcher
# Conflicts: # packages/react-router/lib/components.tsx # packages/react-router/lib/dom/server.tsx # packages/react-router/lib/router/router.ts
2 parents c37da29 + 8a22a65 commit e5cde38

81 files changed

Lines changed: 2991 additions & 5146 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/finish-line/SKILL.md

Lines changed: 5 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
22
name: finish-line
3-
description: Bring a blocked React Router community pull request across the finish line. Use when the user invokes `/finish-line` or `$finish-line`, provides a PR number or URL, and asks Codex to resolve merge blockers such as an unsigned CLA, missing change file, missing documentation, or stale contributor follow-up. Handles deciding whether to push small maintainer fixes onto the contributor PR branch or recreate the PR from main under a maintainer branch when the contributor's CLA is not signed.
3+
description: Bring a blocked React Router community pull request across the finish line. Use when the user invokes `/finish-line` or `$finish-line`, provides a PR number or URL, and asks Codex to resolve merge blockers such as a missing change file, missing documentation, missing tests, or stale contributor follow-up. Handles evaluating the blocker and pushing small maintainer fixes onto a contributor PR branch when authorized.
44
---
55

66
# Finish Line
77

88
## Overview
99

10-
Finish blocked community PRs in `remix-run/react-router` while respecting contributor ownership, CLA constraints, and the repo's PR packaging conventions.
10+
Finish blocked community PRs in `remix-run/react-router` while respecting contributor ownership and the repo's PR packaging conventions.
1111

1212
Treat the PR number or URL in `$ARGUMENTS` as the target PR. If no target is provided, ask for it before doing anything.
1313

@@ -31,8 +31,8 @@ gh pr view <pr> --repo remix-run/react-router --comments
3131

3232
4. Identify merge blockers. In particular:
3333

34-
- If a CLA check or comment shows the author has not signed the CLA, use the unsigned-CLA replacement workflow.
35-
- If the PR only needs repo-maintainer additions such as a change file or docs, use the contributor-branch workflow.
34+
- If the PR only needs repo-maintainer additions such as tests, a change file, or docs, use the contributor-branch workflow.
35+
- If the contributor branch cannot be modified, summarize the evidence and ask the user whether to wait for the contributor or recreate the work on a maintainer branch.
3636
- If the blocker is unclear, summarize the evidence and ask the user which path to take.
3737

3838
5. Evaluate test coverage before deciding the finish-line changes:
@@ -42,44 +42,9 @@ gh pr view <pr> --repo remix-run/react-router --comments
4242
- If tests are not needed because the change is documentation-only, packaging-only, a change file, or otherwise not executable behavior, note that rationale in the final report.
4343
- If a useful test is required but too large or risky for the finish-line scope, stop and ask the user before broadening the PR.
4444

45-
## Unsigned CLA Replacement
46-
47-
Use this path when the PR author's CLA is not signed. Do not merge, cherry-pick, rebase, or push the contributor's commits. Use the PR diff as the behavior/content reference and recreate the final file changes in maintainer-authored commits from current `origin/main`.
48-
49-
1. Save the original PR title, body, labels, changed-file list, and diff for reference.
50-
2. Create a fresh branch from current main:
51-
52-
```sh
53-
git checkout -B brophdawg11/finish-line-pr-<pr-number> origin/main
54-
```
55-
56-
3. Recreate the same resulting changes on the fresh branch. Keep the implementation as close as possible to the original PR unless main has moved and a tiny adaptation is required.
57-
4. Add any missing finish-line work, such as tests, a change file, or docs, if those are also required.
58-
5. Run focused validation that matches the touched area. Prefer the narrowest meaningful test/build command.
59-
6. Commit the recreated changes with a concise imperative subject.
60-
7. Before pushing/opening the replacement PR, read `.agents/skills/create-pr/SKILL.md` and follow its current branch, PR body, and label guidance unless this skill gives a more specific instruction for replacement PRs.
61-
8. Push the maintainer branch and open a replacement PR against `main`.
62-
- Reuse the original title unless it is misleading.
63-
- Use a similar description, but make it clear this is a agent/maintainer-authored replacement.
64-
- Include the old PR number in the description (`#<pr-number>`).
65-
- Default to a ready PR when validation passed and the original PR was otherwise mergeable; use a draft PR if validation is incomplete or the original PR was draft.
66-
- Apply the relevant labels from the original PR plus any package/feature labels required by `.agents/skills/create-pr/SKILL.md`.
67-
9. Comment on the original PR and close it after the replacement PR exists:
68-
69-
```markdown
70-
Thanks for the PR! We can't merge this without the CLA being signed, so we're going to re-implement this work in #<new-pr-number> to keep this moving.
71-
```
72-
73-
Then run:
74-
75-
```sh
76-
gh pr comment <old-pr-number> --repo remix-run/react-router --body-file <comment-file>
77-
gh pr close <old-pr-number> --repo remix-run/react-router
78-
```
79-
8045
## Contributor-Branch Workflow
8146

82-
Use this path when the contributor's CLA is signed and the missing work is small maintainer follow-up, such as a change file or docs.
47+
Use this path when the missing work is a small maintainer follow-up, such as tests, a change file, or docs, and the contributor branch can be modified.
8348

8449
1. Check out the PR branch:
8550

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Change File Check
2+
3+
on:
4+
pull_request:
5+
branches: [main, v7]
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: true
10+
11+
permissions:
12+
contents: read
13+
pull-requests: read
14+
15+
jobs:
16+
check:
17+
# Keep the existing required-check context while replacing its behavior.
18+
name: PR Checks
19+
if: github.repository == 'remix-run/react-router'
20+
runs-on: ubuntu-latest
21+
22+
steps:
23+
# Execute only the trusted main branch version of the check, never code
24+
# supplied by the pull request.
25+
- name: Checkout trusted main branch
26+
uses: actions/checkout@v7
27+
with:
28+
ref: main
29+
persist-credentials: false
30+
31+
- name: Setup pnpm
32+
uses: pnpm/action-setup@v6.0.10
33+
34+
- name: Setup node
35+
uses: actions/setup-node@v6
36+
with:
37+
node-version-file: ".nvmrc"
38+
cache: pnpm
39+
40+
- name: Install deps
41+
run: pnpm install --frozen-lockfile
42+
43+
- name: Check for package change files
44+
env:
45+
GITHUB_TOKEN: ${{ github.token }}
46+
PR_NUMBER: ${{ github.event.pull_request.number }}
47+
run: node scripts/change-file-check.ts
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Feature Request
2+
3+
on:
4+
pull_request_target:
5+
types: [labeled]
6+
7+
permissions: {}
8+
9+
jobs:
10+
close-feature-request:
11+
name: Close Feature Request
12+
if: >
13+
github.repository == 'remix-run/react-router' &&
14+
github.event.label.name == 'feature-request'
15+
runs-on: ubuntu-latest
16+
permissions:
17+
issues: write
18+
pull-requests: write
19+
20+
# SECURITY WARNING: This job runs in the privileged pull_request_target
21+
# context with write access to pull requests and issues. NEVER checkout PR
22+
# code, execute repository code, install dependencies, use a third-party
23+
# action, or interpolate PR-controlled values into commands. Keep this job
24+
# limited to fixed gh CLI commands using trusted event metadata.
25+
steps:
26+
- name: Comment and close
27+
env:
28+
GH_TOKEN: ${{ github.token }}
29+
PR_NUMBER: ${{ github.event.pull_request.number }}
30+
COMMENT_BODY: |
31+
To align with our new [Open Governance](https://remix.run/blog/rr-governance) model, we are now asking that all new features go through the [Proposal/RFC process](https://github.com/remix-run/react-router/blob/main/GOVERNANCE.md#new-feature-process) and that we don't open PRs until a proposal has been accepted and advanced to Stage 1.
32+
33+
If this feature doesn't have a Proposal, please [open one](https://github.com/remix-run/react-router/discussions/new?category=proposals) so we can evaluate/discuss the proposed feature. You can link to this PR as an example of a potential implementation and we can re-open it if the proposal advances.
34+
35+
If this PR already has a Proposal but it has not yet been accepted, let's continue the discussion in the Proposal until it gets accepted and then we can look to open a PR. Feel free to link to this PR or to a branch in a forked repo to show what a potential implementation might look like.
36+
37+
If you have any questions, you can always reach out on [Discord](https://remix.run/discord). Thanks again for providing feedback and helping us make React Router even better!
38+
run: gh pr close "$PR_NUMBER" --repo remix-run/react-router --comment "$COMMENT_BODY"

.github/workflows/format.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ jobs:
3333
- name: Install deps
3434
run: pnpm install --frozen-lockfile
3535

36-
- name: Sort contributors.yml
37-
run: sort --ignore-case --output contributors.yml contributors.yml
38-
3936
- name: Format
4037
run: pnpm format
4138

0 commit comments

Comments
 (0)