Improve backport workflow: auto-resolve docs and lockfile conflicts, add DCO signoff#1770
Improve backport workflow: auto-resolve docs and lockfile conflicts, add DCO signoff#1770TooTallNate wants to merge 6 commits intomainfrom
Conversation
The docs/ directory is not maintained on the stable branch. When cherry-picking from main to stable, any conflicts in docs/ files are now auto-resolved by deleting them. Lockfile conflicts are resolved by re-running pnpm install. If these resolve all conflicts, the cherry-pick pushes directly to stable without needing AI resolution or a separate PR.
|
🧪 E2E Test Results❌ Some tests failed Summary
❌ Failed Tests🌍 Community Worlds (98 failed)mongodb (15 failed):
redis (15 failed):
turso (68 failed):
Details by Category✅ ▲ Vercel Production
✅ 💻 Local Development
✅ 📦 Local Production
✅ 🐘 Local Postgres
✅ 🪟 Windows
❌ 🌍 Community Worlds
✅ 📋 Other
|
📊 Benchmark Results
workflow with no steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 1 step💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 10 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 25 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 50 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.all with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.all with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.all with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.race with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.race with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.race with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 10 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 25 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 50 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 10 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 25 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 50 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Stream Benchmarks (includes TTFB metrics)workflow with stream💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express stream pipeline with 5 transform steps (1MB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express 10 parallel streams (1MB each)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express fan-out fan-in 10 streams (1MB each)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express SummaryFastest Framework by WorldWinner determined by most benchmark wins
Fastest World by FrameworkWinner determined by most benchmark wins
Column Definitions
Worlds:
❌ Some benchmark jobs failed:
Check the workflow run for details. |
There was a problem hiding this comment.
Pull request overview
This PR updates the backport.yml GitHub Action to automatically resolve common cherry-pick conflicts when backporting merged PRs from main to stable, reflecting the repo policy that docs/ is not maintained on stable.
Changes:
- Document the
docs/-on-stablepolicy and the backport auto-resolution behavior inAGENTS.md. - In the backport workflow, auto-resolve conflicts under
docs/by deleting conflicted files. - Auto-resolve
pnpm-lock.yamlconflicts by re-runningpnpm install, and push directly tostableif no conflicts remain.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| AGENTS.md | Documents the docs/ backport policy and updated conflict-resolution flow for backports to stable. |
| .github/workflows/backport.yml | Adds automatic conflict resolution for docs/ and pnpm-lock.yaml, and updates the AI prompt to reflect the docs policy. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
karthikscale3
left a comment
There was a problem hiding this comment.
Review
Regression Risk: Low
This PR only modifies CI infrastructure and documentation — no production code, no package code, no runtime behavior changes. The risk surface is limited to the backport workflow itself.
Potential Concerns
1. Dependency on PR #1771 (ordering matters)
The PR description clearly states #1771 should be merged first. If #1770 goes in first and a backport happens before #1771 cleans up stable, the auto-delete logic could remove docs files from stable that are still expected to exist there. Not a blocker if merge order is respected.
2. Duplicate Setup Node.js steps
The new unconditional setup (node-version: 22.x) is added before the cherry-pick, but the old conditional setup (node-version: 'lts/*', line 49) for the opencode step is not removed. This is functionally harmless (the second setup is a near-no-op) but slightly sloppy. The version mismatch (22.x vs lts/*) could theoretically matter if they diverge.
3. Pinned pnpm version
The new step pins version: 10.14.0. If the repo's packageManager field in package.json drifts from this, lockfile resolution could produce unexpected results. Other workflows (e.g., release.yml, tests.yml) may handle this differently — worth confirming they're consistent.
4. pnpm install failure during conflict resolution
If pnpm install --no-frozen-lockfile fails, the entire cherry-pick step fails with no status output. However, this is correctly handled: the "Comment on unexpected failure" step (which checks status != 'clean' && status != 'conflict') will fire and post a useful comment on the PR.
CI Status
All core tests pass. Community Worlds failures (MongoDB, Redis, Turso) are pre-existing and unrelated to this PR.
Verdict
No blockers. Well-thought-out workflow improvement. Review comments from Copilot and Vercel bot were addressed properly. Main thing: #1771 should land first to establish the docs/content/-only structure on stable.
Minor cleanup suggestions (non-blocking):
- Remove the now-redundant conditional
Setup Node.jsstep (or unify the two) - Consider reading the pnpm version from
package.json'spackageManagerfield instead of pinning10.14.0
Summary
docs/exceptdocs/content/) during backport cherry-picks by deleting them, since the docs app is not maintained onstabledocs/content/conflicts for normal resolution, since those markdown files are bundled into npm packages viaprepackscriptspnpm-lock.yamlconflicts by runningpnpm install(which resolves lockfile merge conflicts natively)stablewithout needing AI or a separate PR--signofftogit cherry-pickso backport commits pass the DCO checkpnpm installis available during conflict resolutiondocs/content/distinctionAGENTS.mdto document the policy