-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Hold for Payment 2024-09-10][$2000][Tracking] ProposalPolice™ 👮🏼 #35108
Comments
Current assignee @mallenexpensify is eligible for the NewFeature assigner, not assigning anyone new. |
Credit to @ikevin127 for the proposal. Comment for assignment 😉 |
Happy to assist with the review, co-assigning myself |
Comment ? Cheers! |
@roryabraham @marcochavezf what are you thoughts about starting with an MVP that adds the above to a comment that's been edited? Then, we (all) can review how it's working then consider additional improvements. |
@mallenexpensify are you basically suggesting that for the MVP we remove this piece?
I don't want the edited by proposal-police to appear above any comment that's edited because that will cause false positives and discourage people from fixing typos or adding minor clarifications. That's where ChatGPT comes in to help enforce Rule #2 - only substantive edits need to be called out. |
(POC) Bot source: https://github.com/ikevin127/proposal-police
For reference these are the current (POC) assistant instructions: InstructionsYou are a GitHub bot using GPT-4 to monitor and enforce proposal comments within a GitHub repo’s issues. PROPOSAL TEMPLATE: Proposal (mandatory line)Please re-state the problem that we are trying to solve in this issue. - (mandatory line){user content here} What is the root cause of that problem? - (mandatory line){user content here} What changes do you think we should make in order to solve the problem? - (mandatory line){user content here} What alternative solutions did you explore? (Optional) - (optional line){optional user content here} IMPORTANT NOTES ON THE PROPOSAL TEMPLATE:
BOT ACTIONS:
CHANGES CLASSIFICATION: When comparing an initial proposal (unedited) with the latest edit of a proposal comment, only consider the following ‘CHANGES’ CLASSIFICATIONS: a. MINOR: These will be small differences like correcting typos, adding permalinks, videos, screenshots to either the first, second or third proposal template mandatory lines or adding the (Optional) alternative - all these without considerable changes to the RCA aka (### What is the root cause of that problem?) or SOLUTION aka (### What changes do you think we should make in order to solve the problem?) initial text. b. SUBSTANTIAL: With focus on the RCA / SOLUTION sections, these will be big differences on the RCA and / or SOLUTION sections (either one of them, or both of them) - meaning if initially the proposal’s RCA / SOLUTION text was mentioning a certain root cause or suggesting a certain solution and the latest edit is mentioning a completely different RCA and / or considerable solution changes.
IMPORTANT NOTE: It is paramount to ALWAYS respond with the exact text provided in quotes (""). If neither case 1 nor 2 apply, only respond with "[NO_ACTION] - {describe the edge case here}." - it is PARAMOUNT that there's no other prose in the response. Feel free to take apart the paragraphs where needed in order to change the AI's behaviour / response. Currently on the AI side we return templates of either "NO_ACTION" (when proposal template was followed or edit changes are minor) or cases like "{user} Your proposal will be dismissed because you did not follow the proposal template." that include variables which we replace within the bot's code, variables we get from the github context depending on the triggered webhook (new comment, edited comment, etc). |
How does Chat GPT inclusion help keep the _edited by proposal-police _ from being above the comment? I might me missing or not understanding a step or detail. |
Hey y'all 👋 I created the expensify-proposal-testing repo for testing purposes. Sent you all collaborator invitations to the repo so you can create issues and play around. Note: make sure to add the Help Wanted label to new issues, otherwise the proposal-police won't act. Currently we're using this format |
Thanks @ikevin127 ,
Does it make sense to have the above read
The main problem we're wanting to solve is making the timestamp for edits easily noticeable for everyone, right? |
True - for those proposals where the previous vs current edit has substantial changes in the RCA and solution sections 🫣 I updated the bot according to #35108 (comment) requirements 🚀 This is how it looks after the update - basically when the proposal-police edits the comment, it will mention the updated_at as timestamp of when the last significant edit was posted by the Contributor. |
Tested here but I suppose the GH bot is not running, correct? Also, what do you suggest as the next steps to implement it in the App repo? |
@marcochavezf Hey 👋 It is running, has been for the past few days - what happened (I checked the logs) is that with all your 3 comments the gpt assistant responded with NO_ACTION 😅 You can check out some of my past comments on that issue and try different scenarios like:
Obviously for those you tried and there was no action taken we'll need more fine-tunning if we all agree that it should've done something😁 As for the next steps to implement it within the App repo: Note To be taken with a grain of🧂
|
Hi @ikevin127, apologies for the late reply. The plan sounds good, thanks! A few thoughts:
I think we can do it programmatically and just pass the API key as ENV param from the GH action, no?
It would be great to go with both. What would you need to fine-tune the solution?
I think when the label
One idea is to add a label |
@marcochavezf No worries 😁 Even though this is a Weekly issue, I wasn't expecting a reply every week.
Unfortunately, OpenAI only allows using assistants within the same org (account) therefore we will need to:
Both sounds good then 🎉 About fine-tunning: I was talking more in terms of general small adjustments of the assistant's instructions regarding specifics of what we consider minor / major proposal edits and so on such that the bot triggers the right action / response. But since we can create a new label like
I think this would be great, this way we can safely test it out and fine-tune it live! This being said, once we have the setup completed, installed the bot in the E/App repo and added the new |
Sounds good, thanks @ikevin127! Besides the assistantID and the OpenAI API key, do you think you can create a PR with the bot? Or would we need to set up something else first? |
@marcochavezf Sure, here's the proposal-police repo, it's public. How do you think I should use the existing repo to create a PR and where ? |
@ikevin127 can you take a look at these two issues to see if Proposal Police would have been helpful? |
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.16-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue: If no regressions arise, payment will be issued on 2024-08-13. 🎊 For reference, here are some details about the assignees on this issue:
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.17-2 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue: If no regressions arise, payment will be issued on 2024-08-14. 🎊 For reference, here are some details about the assignees on this issue:
|
Payment Summary
BugZero Checklist (@mallenexpensify)
|
I did a lot of reviews for this one so I'm co-assigning myself |
@ikevin127 , what's status here? Anything else we're waiting on? |
@mallenexpensify Hey, as mentioned in this expensify comment:
The latest discussion regarding additional work / changes in code on the proposal police is this slack comment ragarding some issues with the date on a small percentage of proposals that were had significant changes in edits and the date outputted by the proposal police bot, which I plan to work on whenever I get up to date with current PRs / issues. ^ This is not a disruptive issue in any way as, in case the wrong (same 2023 date) is posted by the bot when the proposal is edited significantly, the C+ can click on the comment's edit history and see the edit before the bot's edit and get the correct date - which I'm sure most C+ already do because of the UTC format which we chose for the bot output date. Other than that one date-related issue which happens every now an then which I plan to address in the near future, I think we're good here for moving forward with the final checklist of requirements before we can proceed to payment. |
Thanks @ikevin127
What are the requirements we need to ✅ ? For payment, I think we discussed finishing the project first, then discussing payment. If so, what do you propose for the amount? (let's only focus on this core project and not any future work for deciding the payment amount). |
@mallenexpensify By requirements I was referring to things like waiting a bit after proposal police is live to give it some time and show success before discussing payment - I think that happened and we can move forward here. ♻️ Summary⏳ Timeline of events
🟢 Present day: Overall the bot's activity good, it's doing its job as instructed and polices proposals for new comments (checking for proposal template match) and for significantly edited proposals. 🤖 Some recent examples of Proposal Police in actionCASE 1 - Proposal template match check
CASE 2 - Proposal edited w/ significant changes
💰 Payment amountGiven the amount of work involved to bring this from a 📓 P/S state to 🔴 live and considering the somewhat standard amount paid to C+ for completing projects, I think $2000 would be a fair amount as payment for this project. |
|
Thanks for the thorough breakdown @ikevin127 , $2000 seems fair. I'm created a job, please accept I'll wait til Tuesday to pay, in case @marcochavezf or others have feedback |
Sure, thanks Matt! 💯 |
@mallenexpensify Everything set for payment or we're waiting on more feedback ? |
Contributor: @ikevin127 paid $2000 via Upwork Do we need any regression tests for this? Guessing not cuz it's only in GH. |
@mallenexpensify ✅ Correct, no regression tests needed here. Regarding small stuff like tweaks / improvements there's no need for payments in the next 30 days or ever. In case some major work / changes are required (doubt) then the standard issue rate works for me 👍 🗒️ To do
|
Thanks, sounds good and makes sense. Closing. |
Slack context: https://expensify.slack.com/archives/C01GTK53T8Q/p1706120841703079
Proposal
develop a GitHub 🤖 using GPT-4 capabilities to standardize and monitor proposals.
Strategy
The purpose of the Expensify Open-Source Community is to provide a global community of all the best React Native developers in the world streamlined access to contribute to the Expensify product. In order to attract and retain talented developers, the Expensify Open-Source Community must be inclusive, fair, and provide equitable opportunity to all community members, including newcomers.
Problem
There is a tendency among the open-source community to perform what I call speedrun proposals – a contributor will post an incomplete or otherwise low-quality proposal very quickly in order to be the first proposal, then subsequently edit it multiple times. Sometimes these edits significantly alter the RCA or solution and/or derive from later proposals without clear acknowledgement.
When the C+ or Expensify engineer go to review those proposals, they will tend to choose the first proposal of sufficient quality that solves the problem – and in the case of edited proposals it takes some extra sleuthing to understand the true timeline of proposals.
In short, this practice of speedrun proposals inhibits open collaboration amongst contributors and makes it harder for reviewers to fairly evaluate proposals against each other.
Solution
Create a open-source GitHub bot (tentatively named the proposal-police™ 👮🏼🚨) that helps to enforce the documented best practices for proposals, and aids the reviewers in maintaining a clearer timeline of proposals.
More specifically, the proposal-police™ would leverage GPT-4 to:
Last edited: timestamp
, making the timeline clearer to proposal reviewers.In conclusion, the proposal-police™ will help promote higher quality proposals and a more informed and trust-based review process 🤝, improving baseline fairness and allowing community members and Expensify employees to better focus on getting shit :done:!
Issue Owner
Current Issue Owner: @ikevin127The text was updated successfully, but these errors were encountered: