docs: [No QA] Document MelvinBot workflow for contributors and C+#93066
Conversation
Adds a dedicated guide for proposal review, C+ PR ownership, and CME merge on MelvinBot issues, and links it prominently from CONTRIBUTING.md. Co-authored-by: Cursor <cursoragent@cursor.com>
|
@ShridharGoel Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
Co-authored-by: Cursor <cursoragent@cursor.com>
Fixes spellcheck failure on the Melv acronym in CONTRIBUTING.md. Co-authored-by: Cursor <cursoragent@cursor.com>
C+ who cannot edit Melvin-authored PR descriptions should post the full body or checklist in a details block and ask Melvin to apply it; CMEs may review that comment directly. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder Phase 1 so C+ recommends via 🎀👀🎀, CME approves, then C+ asks Melvin to implement—not immediately after C+ review. Co-authored-by: Cursor <cursoragent@cursor.com>
| C+ members who cannot edit the PR body directly should use this workaround: | ||
|
|
||
| 1. On the **pull request**, post a comment with the exact content you want in the PR description. Put the full body inside a `<details>` block so the PR thread stays readable. Include the complete [PR template](https://github.com/Expensify/App/blob/main/.github/PULL_REQUEST_TEMPLATE.md) when possible: Explanation of Change, Fixed Issues, Tests, Offline tests, QA Steps, a fully checked PR Author Checklist, and Screenshots/Videos sections as needed. | ||
| 2. In the same comment, ask Melvin to copy that content into the pull request body, for example: |
There was a problem hiding this comment.
No we don't want contributors to workaround Melvin's permissions like this. Leaving the comment is fine
There was a problem hiding this comment.
I disagree that this is working around Melvin's permissions. Melvin has the ability to update its own PRs of course. In this process the C+ is the human author working with Melvin to write a PR. It would be great if we could give them the ability to edit the description directly, but since they aren't technically the author they don't have write access. If they had used AI in Cursor or Claude Code they could manually edit the PR description since they would have write access in that case; so this should work the same.
As a reviewer, I also think it's easier if the PR description is properly filled out, vs having to dig for a specific comment. Is that ok with you or is there some specific vulnerability here I'm missing? If there is, we should fix it at the MelvinBot permission level, since a C+ can already ask Melvin to do this today.
There was a problem hiding this comment.
Yeah we need a better long-term permissions fix. I do agree with the easy of the main checklist, that's the ideal solution.
But the problem is that we are not fully confident with Melvin's permissions being properly locked down, and haven't had any time to improve how it works yet. We needed to crack down on external contributors pushing the boundaries of Melvin with smart prompting, this being one case. @mallenexpensify may recall more details.
Clarify MelvinBot Help Wanted exception, first-come-first-serve proposal order, proposal link when asking Melvin to implement, @MelvinBot tagging for PR tweaks, and Reviewer-only screenshots/videos. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Thanks for your reviews @Julesssss @ShridharGoel. Updated and ready for another review. |
Julesssss
left a comment
There was a problem hiding this comment.
Not sure about this still. We've told contributors to not ask Melvin to do things they don't have permission to do themselves. This would be an exception so if you merge please share an update and tag the team to let them know.
|
🚧 @neil-marcellini has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/neil-marcellini in version: 9.4.7-0 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Deployed to production by https://github.com/puneetlath in version: 9.4.7-4 🚀
|
| |------|----------------------------------| | ||
| | **MelvinBot** | Posts the first proposal on the issue. Implements the accepted solution when asked. Opens a draft PR with MelvinBot as the GitHub author. | | ||
| | **Contributor** | May submit their own proposal if they have a meaningfully different approach. Must not open a PR until a proposal is accepted and they are hired on the job. | | ||
| | **Contributor+ (C+)** | Reviews proposals (Melvin's and any contributor proposals) using the same standards as any other job. Recommends acceptance to the CME. After the CME approves, asks Melvin to implement, then owns the PR as the human author before sending it for final review. | |
There was a problem hiding this comment.
asks Melvin to implement
This is only if Melv's proposal is accepted. I think it should be
asks the assigned contributor to create a PR or Melvin to implement
There was a problem hiding this comment.
Since this PR is already merged, I opened a follow-up draft PR with mallenexpensify's suggested change: #93735
The C+ row now reads "asks the assigned contributor to create a PR or Melvin to implement". Please mark it "Ready for review" when it looks good.
Explanation of Change
(Neil's AI agent)
Adds
contributingGuides/HOW_TO_WORK_WITH_MELVINBOT.mddocumenting how contributors, C+, and CMEs work with MelvinBot on App issues: proposal review before implementation, C+ PR ownership after Melvin implements, and CME review/merge. Links the guide prominently fromCONTRIBUTING.mdandHOW_TO_BECOME_A_CONTRIBUTOR_PLUS.md.Fixed Issues
$ #93064
PROPOSAL:
Tests
N/A
Offline tests
N/A — documentation only
QA Steps
N/A — documentation only
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
N/A
Android: Native
N/A — documentation only
Android: mWeb Chrome
N/A — documentation only
iOS: Native
N/A — documentation only
iOS: mWeb Safari
N/A — documentation only
MacOS: Chrome / Safari
N/A — documentation only