RFC: On-site Revision Proposals & Set Plans #4519
Replies: 13 comments 32 replies
|
This looks good to me - it might have to be a broader discussion outside of this RFC, but if we're streamlining the process, I wonder if it would be worth requiring the same discussion and vote time for rescores and self-revisions (if it has been more than 30 days since the dev's last claim)? Particularly with
listed as hardcoded behavior - since at the moment, we have devs opening discussions for rescores (like the recent rescore proposal for DDRMAX2), and when the player-submitted rescore thread was running, I believe most of those that were sponsored by a dev also went up for discussion. Likewise for self-revisions - if a dev just released a set/revision and needs a new revision claim to fix or add something that got overlooked, we don't want to block that, but for cases like a set having existed for a year and a dev wanting to halve/double the points, or a hack being updated to the latest version and achievements being added/removed as a result, it would be good to get some input from devs and players on those. |
What constitutes "played the game"? Is loading the game enough? A minimum amount of playtime? A minimum number of achievements unlocked? I would also include anyone who has contributed to the set (achievements, artwork, etc) even if they don't have recent playtime or a mastery. Maybe they should just be automatically opted in to "watch for revisions" so they can explicitly opt out. Can people who have mastered the game opt out? Will this be like subscriptions where there's an implicit set with explicit overrides?
What constitutes "eligible voters"? Is it just "invested" + "all developers"? How does a player become eligible after the revision is proposed so they can vote? |
|
I like this plan, broadly speaking. However, I question if simple retying only revisions should require a plan, notifications, etc. Retyping, unlike other revisions, just does not affect player experience at all. More importantly, most retyping are objective fixes, don't usually because of improper marking (usually from when markers were first added, as not all games were marked accurately when people were just trying to properly mark as many games as possible). It's rarely a subjective thing like most other revisions, so I don't believe it needs a rigorous process or notification. I also don't think all players who played a set should be instantly notified, just because it is not uncommon for a player to boot up a game, earn a single cheev, and never touch it again. I'd say that ~20% of the set should be earned for a player to be notified, just to avoid players who didn't spend too much time on a game being annoyed by it. |
|
A few of my thoughts on the RFC and the future or how revisions/subsets are handled, most that we have already discussed in private channels:
Those are some of my main thoughts written out. I'm definitely excited for seeing this become a reality because it addresses many pain points within both the player- and developer community, including lack of transparency and the community not having enough weight in the decisions made. It has been made clear over the past months that people are not very satisfied with how the current process works, for completely unique reasons, and this could tackle a lot of them all at once. |
|
While I like the idea of a minimum vote count / quorum, I'm not sure how well it would work in practice, as it provides a barrier to revisions that the plan proposer can't do anything about. For example, with a minimum vote count of 20:
Given how wildly voting turnout can vary, as can be seen in the current revision votes, I'm not sure what the best way to handle this is without knowing why some devs selectively vote - if it's a matter of the game in question then there's not much that can be done about it, but if it's a matter of "the plan was unclear so I didn't vote", then maybe the voting page could use some encouragement to vote against any proposal that is unclear, so it can be better refined. |
|
"They have at least 1 hour of playtime in the last 6 months (via player_sessions)." Will this account for playtime PRIOR to the proposal, or are you opening up a series of alts and trolls to load a game to derail conversation? |
|
First of all, I love this idea and I'm already super excited to see it on the site. We definitely need to move away from Discord for this - not necessarily because of what's been happening with Discord, although it doesn't help - primarily, I just agree that the decentralization is a problem. I think most of this is fantastic. Here's what I would say for feedback:
|
|
Can regular polls be made for discussion purposes or is there only the definitive approve/reject poll? (Sorry if I missed this while reading!) Because I think it can be really useful as a dev to create a poll with a couple options for how the revision should be done. Ideally you could even incorporate multiple options into the final deciding poll, though I imagine that'd be a good bit more complex so regular polls during discussion would definitely suffice. |
|
I'm a new developer working on my first revision. I can't offer many insights on improvements yet since I lack first-hand experience with the full revision process. Even so, there are some things I appreciate that are currently missing. In my experience, few players use the forums. Most prefer the game page comments, where notifications only reach those who have already posted. Making it easier to engage the community is a necessary fix. Even without a vote, players provide informed opinions that help eligible voters make better decisions. As a developer, I find it hard to vote on unfamiliar games. Player insights would help me feel confident enough to vote instead of abstaining, which would also help reach quorum. A valuable addition to "Invested Players" would be anyone who has commented on the affected achievements. Since unfair achievements usually have active comment sections, these players are already engaged and likely have relevant feedback. I also appreciate the plan for a standardized way to list changes. Currently, it is difficult for me to document a revision clearly without the plan becoming hard to follow. You're doing fantastic work! |
|
I'm going to be indelicate about this, but normal (even mastery) players deserve NO vote. Players have really awful opinions on what should and shouldn't be allowed, some players think no change will be a good change, some players think certain achievements should and should not be allowed. No player will vote for lower rescoring for instance. Players have invested interest that are not about "making a better set" but more importantly players think their opinion of how RA should work is the correct one, and have no understanding about some limitations, or even the rules. (Hell the number of people who think main sets should be just 100 percenting a game is ludicrous and any optional challenge shouldn't be allowed) Suppose I propose a revision but a player thinks damageless achievements are ALWAYS bad, (Which a decent amount of players do) if I have damageless achievements even though they are good achievements, that revision will never get through. Now people are already saying "we'll vet players" Nah, that's just a bad idea... I don't think only Devs deserve a say, but the voting will be bad if we allow players whims to change votes no matter the level of "investment" they have in a specific game. Like I said, I don't think "Dev only" Is the correct option. I propose we open it to " all roles". If you're a Confirmed tester if you're a certified art team member, if you're a writer. Have Guide writers get this privilege. This means contributing to the site in a meaningful way outside of "playing games". Each role can figure out rules. Jr. Devs for instance probably shouldn't vote until they understand how to make sets. Maybe only Artists who have completed the artquest can vote. Each role can decide what's the line. Perhaps if a tester doesn't test for 3 months, they lose their voting privilege. That also incentivize people to contribute to the site. And this doesn't mean we can't add roles. For those who submit a large number of tickets or created guides, but I'd recommend not making it based on the content of contributions (if we think they're adding good criticism or what not.) Make it based on actual actions we can see. ( X amount of submitted tickets that end up resolved, rather than if someone in charge thinks they wrote a good ticket. Less subjective applications.) If someone wants to be a participant in this, they can test 1 game a month or a quarter to get the permission. Or write 1 guide every three months... Point being if you want to be a part of this, you can be, but there should be a higher bar than just playing a game. Similarly "Suggesting revisions" I think there can be something where a player makes a revision request, but MUST have a developer approval. If we don't do that? We're going to have 50 revision requests... a day. Again "I don't like damageless, let's demote it" I guarantee with in 30 seconds of this change, many of those revisions will be made. We can limit it, but I think it'd be better to have a dev sign off. Maybe have a user create a proposal only they can see (or only if they share a link) and a dev can give it a check mark if they agree. Or perhaps again limit this ability to "all roles" but the general public able to make revision plans will create havoc, and a lot of really bad plans. Note: I'm not saying limit their visibility, or voice, they can complain about a revision but they really shouldn't have a say in the revision , without going through something that assists the site.
just want to say, love this option. I almost want to say that it should be on by default. Doesn't matter who is making the revision plan outside of the original author, judge it based on the plan not the person. Give the author the ability to speak as himself or as the "Author" but leave it anonymous. Admins should be able to see who it is, but I think it's better that we aren't influenced by who is making the revision. Is there any benefit from seeing that I submitted a revision if I'm not the original author? People can out themselves, but I think by default the expectation is the Author should attempt to remain anonymous on proposals. Edit: Also a plan creator should have a 1-2 day period where they can claim their approved revision plan, before the general developer list gets a crack at it. At least if the plan's creator was a developer. They don't HAVE to pick up the plan, but if I made a plan I'm passionate about, The revision is approved, and I turn around and someone else is trying to implement it, that would feel off, you know? I did the work to set it up, I should get first choice on if I do it. Similarly how do we know if achievements are even possible? Let's say someone suggests they want to add an achievement for X, but for what ever reason X isn't available in the memory, does that approve plan just die there? Also for Self-Revisions... Are we saying they can be auto approved with out a vote? Or if someone uses this, the comment period/vote period must happen? I like the idea I can document changes of what and why, but if using this system I am forced to go through comment/voting, I don't see a reason to do self-revisions. (It should be able to bypass the vote, and the comment is just to get feedback, basically if it's self-revision, give them the ability to "Auto approve" but still have a revision forum post.) Overall though, this is a huge step forward in a lot of ways. |
|
Quick question since dizzykei brought it up on a game wall:
Does this include completions (softcore masteries) as well? |
|
Based off seeing how recent revision discussions have gone, I'd like to propose that the revision form has the author being anonymous by default - that will encourage revision discussions being about the proposal itself, rather than any bias for/against the author (and mitigating risk of railroading/brigading resulting in a lower quality discussion as a result). |
Something to think about during the initial design, unless it's already present and I missed it - it would be good to have access gating based off the type of plan. For example, I could see rescores being a good first test of player-proposed plans (like the community rescore proposal thread we have today), and so it would be useful if players could be allowed to propose those without being able to propose full revisions that add/modify/remove achievements. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Version History
Summary
This RFC proposes moving the achievement set revision process from Discord to the website. Developers can draft revision plans on-site, get feedback through threaded discussions, and vote without ever touching Discord.
A plan may contain any combination of seven types of actions:
Plans move through defined states, have their own forum topics for discussion, and use a polling system for votes. Where possible, approved plans have their changes execute automatically.
Players who've mastered a game or played it recently get notified when someone proposes changes.
Voting is anonymous. Results stay hidden until the poll closes, then only the final approval percentage is shown.
Plans with subset transfers need sign-off from a review team before voting can start.
When a plan passes, the system auto-executes what it can (rescores, demotions, retypes, transfers). Plans that add new achievements or modify existing achievements need a developer to claim and implement them. Unclaimed approved plans that cannot be auto-executed go to an "approved plans pool" for any developer to claim.
Down the road, we could let players propose plans too. Player-proposed plans would need extra safeguards, such as lots of upvotes or a developer sponsor, before ever reaching a vote.
Table of Contents
Motivation
The Problem
The current revision process has several pain points:
Why move it on-site?
The revision process, as it exists right now, is a shadow site feature that isn't actually programmed into the website. Fundamentally: the revision process that currently exists is shaped how it is today because it's a workaround.
An on-site revision process is:
Glossary
Detailed Design
Data Model
GameAchievementSetPlanThe core plan entity.
Note
required_role_ids: Computed on submission by queryingplan_item_type_role_requirementsfor all plan item types present. The plan can't enter voting until all required roles have approved (ie:role_approvals_complete_atis set).Note
allowed_comment_roles: Controls who can comment on plan items. The plan author can always comment regardless of this setting. If null/empty, anyone can comment. Examples:[DEVELOPER][CODE_REVIEWER](author + code reviewers only)null(public)GameAchievementSetPlanItemIndividual achievement changes within a plan. A plan must have at least one item.
Note
proposed_subset_key: When targeting a new subset (target_achievement_set_idis null andproposed_subset_keyis set), items with the same key are grouped into the same new subset. Only the first item in each group needsproposed_subset_nameandproposed_subset_type. Subsequent items inherit those values. This lets a single plan potentially create multiple new subsets. BothTransferandNewAchievementitems can use this field: for example, a plan could transfer 3 existing achievements and propose 2 new achievements all targeting the same new subset.The
current_pointsandcurrent_typesnapshots capture values at plan creation time. At display time, the system compares these snapshots to the achievement's actual current values. If they differ, a warning is shown to inform viewers that the underlying achievement has changed since the plan was created. This keeps voters informed without blocking the plan.Example display:
PlanItemTypeRoleRequirementConfigures which roles must approve plans containing specific item types. This table is managed by RAdmin and drives the dynamic approval requirements. The initial values for this table should be inserted via a DB migration.
Example: if subset transfers require DevCompliance approval, this table would contain:
When a plan is submitted, the system queries this table for all item types in the plan and computes
required_role_idsas the union.Note
A
NewAchievementitem that targets a non-core achievement set (viatarget_achievement_set_idorproposed_subset_key) is treated as if the plan also contains atransferitem for the purpose of role requirement lookups. This ensures team review is triggered whenever a plan involves subset creation, even if no existing achievements are being transferred.GameAchievementSetPlanReviewTracks formal reviews of a plan, similar to GitHub PR reviews. Any developer can submit a review. Reviews from users with required roles additionally gate the plan from proceeding to voting.
If a plan requires approval from multiple teams and a user leaving a review belongs to all of those teams, they must select which role they're reviewing as when leaving their review. In other words, a user with multiple required roles must submit separate reviews for each role.
Note
role_id: When a user with a required role submits a review, they specify which role they're reviewing as androle_idis set. Regular developers submit withrole_idnull (expresses intent but doesn't gate). Reviews with nullrole_iddisplay grey. Reviews with arole_iddisplay a green checkmark (approve) or red X (request changes).The
user_id/sent_by_idpattern matches existing models likeForumTopicCommentandMessage:user_idis always the publicly displayed author.sent_by_idis null,user_idis the actual author (normal case).sent_by_idis set,user_idis the team account andsent_by_idis who actually wrote it.A role's current approval status is determined by the most recent review for that role. When the most recent review for all required roles has
verdict = approved, the plan'srole_approvals_complete_atis set and it can proceed to voting.GameAchievementSetPlanReviewCommentItem-level comments that are part of a review (or pending submission). This enables GitHub-style review comment batching.
Note
review_id: While drafting, comments havereview_id = null. On submit, all pending comments from that user for that plan are updated to reference the new review.Plan Comments
Plan item comments follow the GitHub PR model with a unified input experience and two submission options:
"Comment" button - Posts feedback immediately as a one-off comment. Uses the existing
Commentmodel withCommentableType::GameAchievementSetPlanItem. Good for quick clarifying questions or minor feedback."Start a review" button - Adds the comment to a pending review. Uses the
GameAchievementSetPlanReviewCommentmodel. The comment remains visible only to the author until they submit their review. Once a user has pending comments, they can continue adding more, then submit the review with a verdict (Approve, Request Changes, or Comment) and an optional overall summary.On the plan page, both types display together in item threads. Review comments are grouped under their review header showing the verdict and summary.
Users with
Role::DEVELOPERcan leave comments anonymously. For anonymous comments,user_idis set to a system "Anonymous" account (probably the Server account) whilesent_by_idtracks the actual author (visible to RAdmin for moderation).Warning
Migration required: The
commentstable needs a newsent_by_idcolumn:When
sent_by_idis null,user_idis the actual author (existing behavior). When set,user_idis the team account for public display andsent_by_idis who actually wrote it. Existing comments would havesent_by_id = null.PollA generic polling entity, designed to be reusable for achievement set plan votes, icon gauntlets, and future community voting needs.
Note
Vote visibility: For achievement set plan polls,
hide_results_until_closedistrueandresults_display_modeispercentage_only. During voting, no one sees results. After voting, everyone sees only the final approval percentage, never individual votes.PollOptionOptions available in a poll to be voted on. For achievement set plans, this is just "Approve" and "Reject". For icon gauntlets, options would include images.
Uses
spatie/laravel-medialibraryfor optional image attachments (eg: icon gauntlet options).PollVoteIndividual votes cast on a poll.
Enum Values
PlanReviewVerdictGameAchievementSetPlanStateState Transitions:
PlanItemTypePollTypePollStatePollResultsDisplayModeConfiguration
Core logic is hardcoded, but timing values and role requirements are configurable.
Site Settings
These values are persisted using
spatie/laravel-settingsand editable via Filament (filament/spatie-laravel-settings-plugin):achievement_set_plans.discussion_period_hoursachievement_set_plans.voting_period_rescore_hoursachievement_set_plans.voting_period_standard_hoursachievement_set_plans.minimum_vote_countachievement_set_plans.review_response_deadline_hoursachievement_set_plans.approval_threshold_percentachievement_set_plans.approved_plan_expiry_monthsRole Requirements
Which roles must approve a plan is determined by the
plan_item_type_role_requirementstable. RAdmin can configure this without code changes. Example configuration:With this configuration, any plan containing a transfer item would require approval from someone with the
dev-compliancerole before voting can begin.Hardcoded Behavior
The following rules are built into the system and cannot be configured:
NewAchievementorTriggerAdjustmentitems can auto-execute. Plans with new achievements or trigger adjustments require a developer to claim and implement them.Plan Type Rules
Given the default configuration, different plan compositions have these requirements:
On submission, the system checks all plan items, looks up required roles, and applies the strictest timing rules. For example, a plan with both rescores and new achievements would need a 48h discussion period, 72h voting, and wouldn't auto-execute.
A plan can auto-execute only if it contains no
NewAchievementorTriggerAdjustmentitems. Plans with transfers can auto-execute because the system can:Plans with new achievements or trigger adjustments require manual implementation, since a developer must write the actual trigger logic.
Process Flow
1. Plan Creation
Draft. The developer can continue editing as long as they like, or come back later to continue working on their plan.2. Submission
When a plan is submitted:
AwaitingApproval. Otherwise, the state becomesOpen.voting_eligible_atis set to 48 hours from submission. If the plan is inAwaitingApproval, the timer doesn't start until all required roles have approved and the plan moves toOpen.3. Discussion and Review Phase
spatie/laravel-activitylog, showing a timeline of changes to the plan and its items on the plan page.Important
If a plan requiring role approvals is edited after receiving approvals, all approvals are invalidated and the plan returns to
AwaitingApprovalstate. Reviewers always approve exactly what goes to vote.For plans requiring role approvals:
Reviewers with required roles can leave feedback via plan comments and submit formal reviews (Approve or Request Changes) with a required comment explaining the decision. If the author updates the plan, reviewers can submit a new review. The most recent review for each role determines that role's approval status.
Reviews can be submitted as a team account (using the
user_id/sent_by_idpattern).A user with multiple required roles sees separate review options for each role. The plan cannot enter voting until the most recent review for all required roles has
verdict = approved.Review response deadline: When a plan enters
AwaitingApproval, each required role has 7 days (configurable viareview_response_deadline_hours) to submit a review. A reminder notification is sent to the team at the halfway mark. If a role still hasn't responded by the deadline, the plan auto-advances as if that role approved. This prevents plans from being held up indefinitely by an unresponsive review team.4. Starting the Vote
The plan author manually triggers voting when:
voting_eligible_athas passed (48h minimum).When voting starts:
Pollis created with "Approve" and "Reject" options.Voting.voting_ends_atis set (24h for rescore-only plans, 72h otherwise).5. Voting
Openstate (orAwaitingApprovalif it still requires role approvals).A plan passes if the poll meets the minimum vote count (
minimum_vote_count, default 20) and approvals meet the configured threshold (approve_count / (approve_count + reject_count) >= approval_threshold_percent). The default threshold is 60%. Abstentions are not tracked. The minimum vote count may be raised over time as the notification system matures and more developers participate in voting.If the poll closes without reaching the minimum vote count, it automatically extends once for the same duration (24h for rescore-only, 72h otherwise). If quorum is still not met after the extension, the poll fails with an "Insufficient Votes" outcome and the plan returns to
Openstate so the author can try again later.6. Poll Resolution
If approved: The plan state becomes
Approvedand the game forum topic post is automatically edited to reflect the outcome. If the plan is auto-executable, its changes are applied immediately, its state becomesImplemented, and a completedAchievementSetClaimrecord is created on behalf of the plan author (ensuring the revision appears in the "Just Released" section on the home page). If the plan is anonymous, the claim record is attributed to either the RAdmin account or the RABot account so the plan author doesn't get doxxed. If the plan is not auto-executable, the plan enters an "approved plans pool" for any developer to claim.If rejected: The plan state becomes
Rejectedand the game forum topic post is edited to reflect the outcome.7. Implementation (Non-Auto Plans)
For approved plans that cannot auto-execute:
claimed_byandclaimed_atare set, and anAchievementSetClaimis created.Implemented.Plan claims follow the standard
AchievementSetClaimexpiration rules. When a claim expires, the plan returns to the approved pool for someone else to claim. Approved plans expire after 12 months (configurable viaachievement_set_plans.approved_plan_expiry_months) if no one claims and completes them. RAdmin can also manually close a plan at any time if it becomes irrelevant.Self-Revisions
If a developer is the sole author of all achievements being modified, no plan is required. They can just make changes directly. But, they can still use the plan system if they want visibility, auto-execution, or a permanent record/diff of the change.
QA Retypes
The QA team can retype achievements on inactive developer sets without a plan, as they do today. An "inactive developer set" is one where all achievement authors are no longer actively contributing to the platform. This avoids bottlenecking QA's existing workflow, which processes 7-10 missable/progression tag reports per week.
Retypes on active developer sets still require a plan and go through the standard process.
Discussion Spaces
Plans have two discussion spaces that serve different purposes:
The plan comments (on the plan page) are for design feedback from developers. These comments can target specific items (like code review comments) or the plan as a whole. This is the working space for technical review. Plan comments are locked once the plan reaches a terminal state. Only developers are allowed to leave plan comments.
The forum topic (in the new "Achievement Set Plans" forum section) is for public discussion. Anyone can participate - players, developers, whoever. The forum topic stays open even after the plan is done.
Basically: plan comments are where developers refine the proposal, and the forum topic is where everyone else talks about it.
Forum Integration
Plan Forum Topic
Each submitted plan gets a dedicated forum topic in a new "Achievement Set Plans" forum section with the following OP structure:
is_anonymous = true)If a plan is anonymous, the author can reply in the topic anonymously. The system tracks that they are the plan author internally but displays something like "Anonymous (Plan Author)" publicly.
Game Official Forum Topic Post
When a plan is submitted, a post is automatically created in the game's official forum topic:
When the plan reaches a terminal state, this comment is automatically edited:
Other possible statuses are: ⏳ Approved - Awaiting Implementation, ❌ Rejected, and 🚫 Closed.
Plan Reviews
The review system works like GitHub PR reviews. Any developer can participate through comments and formal reviews.
Review flow: Developers can batch multiple item comments into a single review. While drafting, comments are pending and only visible to the comment author. When ready, they submit with:
On submit, pending comments become part of the review and visible to everyone. Developers can also post one-off comments immediately without starting a review (see "Plan Comments" in the data model).
Verdicts:
Approve- approves the plan (body optional)Request Changes- requests changes before being willing to approve (body required)Comment- provides feedback without taking a stance (body required)Reviews display visual indicators based on the verdict and whether the reviewer has a required role:
Auto-voting: When voting starts, formal reviews automatically convert to votes. "Approve" reviews become approve votes. "Request Changes" reviews become reject votes. The following do not convert to votes:
If the plan was edited and reviews were invalidated, auto-votes don't carry forward. Developers can still manually cast or change their vote during voting. Auto-voting is just a convenience.
To change your auto-vote before voting starts, submit a new review with a different verdict. Your most recent review determines your auto-vote.
Team account reviews:
Formal reviews support the
user_id/sent_by_idpattern for team-based reviewing. Publicly, the review displays as from the team account. Team members see who actually wrote it. Ifsent_by_idis null, the review shows as from the user directly.If the author edits the plan, all reviews become stale and reviewers can submit new ones. The most recent review from each required role determines that role's status. Once all required roles approve, the plan can go to voting.
Team accounts automatically receive an on-site DM from the Server account when a plan is created that is awaiting the team's approval. This facilitates any internal discussion that needs to privately occur before the team leaves their review.
One Plan Per Game
Only one active plan per game is allowed at a time. Trying to create a plan for a game that already has one shows an error with a link to the existing plan. We might relax this later when player-submitted plans are supported.
Note
If multiple "awaiting implementation" plans are eventually supported per game, a conflict resolution strategy will be needed to handle cases where plans propose incompatible changes to the same achievements.
Notifications
This builds on the notification infrastructure from PR 4510.
Defining "Invested Players"
A player is "invested" if any of the following are true:
player_achievement_sets).player_sessions).comments).Note
The mastery and playtime criteria may seem redundant, but the playtime check catches players who made significant progress and then reset their progress for some reason. Mastery alone would miss them.
These groups are deduped - no duplicate notifications.
Opt-out model: Mastery holders, recent players, and set contributors are implicitly subscribed. Any user can explicitly opt in via the "Watch for revisions" toggle. Any implicitly-subscribed user can explicitly opt out via the same toggle. Explicit overrides always take precedence, similar to how forum topic subscriptions work. Users can also globally disable all set plan notifications in their notification settings, just like any other notification type.
Implicit subscriptions: Commenting or reviewing on a plan implicitly subscribes you to that plan's notifications, overriding any user-set global opt-out. If they cared enough to participate in the discussion, they should know when the vote starts and how it resolves.
Game Page Indicator
When a game has an active plan (
Open,AwaitingApproval, orVoting), the game page shows an indicator linking to it. Players who visit the page can see something's happening even if they didn't get a notification. Past plans (approved, rejected, closed) are also accessible from the game page, providing a history of why changes were made and preventing duplicate proposals.Notification Events
The system sends notifications for:
Role::DEVELOPERusers + Invested players (unless retype-only)Role::DEVELOPERusers + Users with required rolesRole::DEVELOPERusersAccess Control
Role::DEVELOPERallowed_comment_roles(public if null)plan_item_type_role_requirements)Role::DEVELOPERRole::DEVELOPERExample Plan Definitions
Rescore-Only Plan
Subset Transfer Plan
Mixed Revision Plan
Future Considerations
Player Voting on Tiebreakers
Currently, only developers can vote on plans. If quorum or close margins become a recurring problem, one option is to introduce a weighted tiebreaker poll for contentious votes (eg: where the developer vote lands between 50-60%). This secondary poll would be open to a vetted subset of players - such as set contributors, former developers in good standing, or players who have demonstrated knowledge of set design guidelines through other site contributions. Player votes would carry less weight than developer votes, ensuring developers retain final say while giving invested players a meaningful voice in borderline decisions.
Player-Proposed Plans
The Summary mentions allowing players to propose plans in the future. Player-proposed plans would need additional safeguards before reaching a vote, such as a minimum completion threshold on the game (eg: 80% progress), a minimum number of upvotes from other players, or sponsorship from a developer. The exact requirements would be designed once the developer-only system is established and we have data on how the process works in practice.
Footnotes
New achievements targeting a non-core set (via
target_achievement_set_idorproposed_subset_key) also require team approval, similar to subset transfers. ↩All reactions