The three classes
These classes are not moral labels. They describe how Akron records and guards an attempt.
How Akron decides
Akron starts from the most conservative question: “Could this affect how the attempt was played, judged, or proven?” If the answer is yes, the feature is usually stricter than a plain presentation option.
When a feature has mixed behavior, Akron classifies the smallest behavior it can track. A parent row can be clean while a suboption is stricter.
Goldberry/Hardlist clear
Goldberry/Hardlist clear is Akron’s strict clean bucket. It is for behavior that Akron treats as safe for the strictest supported contexts because it is passive, proof-oriented, or already accepted by the policy model. Common reasons:- It displays local inputs without changing them.
- It records or warns about proof setup.
- It confirms destructive actions before they happen.
- It reports simple counters without giving hidden routing advantage.
Normal clear
Normal clear is for behavior Akron allows in ordinary play but does not treat as strict-approved by default. This is the right class for most quality-of-life, accessibility, overlay, and workflow features that do not change gameplay. Common reasons:- It changes presentation or readability.
- It displays broad local status rather than precise hidden state.
- It helps with workflow outside the actual execution of a clear.
- It integrates with external tools without delegating control or restoring state.
Normal clear does not mean “accepted by every leaderboard.” It means Akron did not record Cheat behavior.
Cheat
Cheat is for behavior that changes the attempt, exposes information that normal play would not provide, or changes the assumptions used to judge evidence. Common reasons:- It mutates player state, level state, save data, physics, resources, or position.
- It restores a snapshot or jumps to a different room state.
- It reveals hidden map, entity, trigger, hitbox, flag, or exact resource information.
- It changes simulation cadence, frame behavior, timing, or proof assumptions.
- It automates or synthesizes execution inputs.
Cheat tools are still valid practice and debugging tools. Akron marks them so submitted-run context is not ambiguous.
Suboptions can be stricter
Do not judge a row only by its parent label. A clean parent row can include a stricter popup option when that option changes the behavior. Examples:
For players, the practical rule is simple: read the badge and tooltip for the exact option you are enabling, not only the row title.
Attempt status only escalates
During an attempt, Akron records the strictest behavior that happened. Turning a feature off later does not erase earlier use. This is intentional. Akron tracks what happened during the attempt, not only the current menu state.Contributor checklist
When assigning a policy class to a new feature, classify the observable behavior first and the UI location second.- If the feature changes gameplay, state, timing, control, or proof assumptions, classify it as Cheat.
- If it exposes hidden or exact internal state during active play, classify it as Cheat.
- If it only changes presentation, workflow, or broad local status, classify it as Normal clear unless strict policy already accepts it.
- If it is passive proof support or local input display, consider Goldberry/Hardlist clear.
- If one popup option is stricter than the parent row, classify the suboption separately.
- Write the policy reason as behavior, not intent.
Displays local inputs without changing gameplay.Draws hidden trigger volumes for map inspection.Changes simulation cadence and gameplay timing.
Useful for practice.Convenient.Probably safe.
Source/Core/AkronFeatureRegistry.cs. Public docs should explain the model here and list current row behavior in the Feature guide.