Migration methodology · Updated 27 Aug 2026

How we test MEE6 level compatibility.

See how Guardy checks the MEE6 XP curve against 800 real player records, stages imports, handles reward roles, and limits what parity claims mean.

Answer first

The short version

  • Guardy independently implements the MEE6 XP curve and checked it against 800 real leaderboard records from three servers.
  • The measured result was zero XP or level differences for that corpus, which is strong evidence but not a promise about every possible future MEE6 change.
  • Every import is staged for review before an atomic apply, and reward-role changes require a separate decision.
  • Source-specific limitations remain visible: a direct MEE6 response can carry more information than generic files or other bot exports.

The claim, stated precisely

Guardy’s MEE6 curve implementation was compared with 800 real player records across three Discord servers. For that measured corpus, Guardy produced the same stored XP totals and the same levels: zero XP differences and zero level differences.

That is evidence about a concrete sample and implementation. It is not a claim that Guardy controls MEE6, that every third-party export has the same shape, or that MEE6 can never change its system.

The formulas Guardy checks

The XP needed to advance from level L is:

5L² + 50L + 100

The cumulative XP through level L is:

5L(2L² + 27L + 91) / 6

Guardy uses the cumulative form to determine the level that corresponds to a stored XP total. The same boundary cases are implemented in the dashboard preview and in the bot-side leveling runtime, so the import screen and the live member commands do not use separate interpretations.

Why 800 records matter

A few hand-picked examples can prove that a formula runs. They cannot give much confidence about real leaderboard distributions. The 800-record corpus includes new members, members near level boundaries, high-XP members, and the less tidy values that accumulate in active servers.

The important test is not only whether a known level maps to a formula. It is whether the imported XP value produces the level the member already recognizes, especially immediately below and above a threshold.

The corpus contains player records, not message content. The comparison needs only the source XP and level values required to test parity.

What happens during an import

1. Read the source completely

The preferred path reads a public MEE6 leaderboard page by page. A captured MEE6 leaderboard JSON response is the fallback. Guardy checks pagination, row shape, identifiers, duplicates, and numeric bounds before accepting the staged set.

2. Recompute and compare

Each accepted XP total is run through Guardy’s independent curve. If the source level and computed level disagree, the preview treats that as a parity problem instead of silently choosing one.

3. Show the administrator the proposed change

The preview separates accepted, skipped, rejected, and conflicting rows. The administrator chooses whether the import replaces existing totals or keeps the higher XP value.

4. Apply in one transaction

The live leaderboard changes only after the preview is approved. The apply is transactional, so a failure does not leave half the source imported and half the server unchanged.

Reward roles are a separate decision

A direct MEE6 source may expose the source reward-role ladder. Guardy presents that proposal separately from member XP. Importing a leaderboard does not automatically rewrite server roles.

Generic CSV files and other source profiles do not inherit the same reward-role claim. The interface names what each source can and cannot supply.

If an imported reward ladder exceeds Guardy’s free limit, the excess configuration is preserved read-only instead of being deleted. New rewards cannot be added until the server is back under the cap or the plan changes.

What this methodology does not prove

It does not prove that every MEE6 plugin is replaceable, that unrelated MEE6 data can be imported, or that an undocumented future MEE6 curve change would be recognized automatically. It also does not turn an unverified Amari or Polaris file into a MEE6-compatible source.

This is why Guardy keeps source profiles separate and dates its external evidence. A migration tool should be precise about the format it understands and stop when the input no longer matches.

How an administrator can verify the result

Before applying a large import, compare a small sample that includes a low-XP member, a member close to a level boundary, a mid-level member, and one of the highest-XP members. Record the source XP and level, then confirm the same values in Guardy’s preview.

After apply, check the public or dashboard leaderboard and one member rank card before removing the old bot. That final check is not a substitute for the automated parity test. It is the operational proof that the correct server and source were selected.

Ready when you are

Put the research beside the real workflow.

Open Guardy's shipped modules and current pricing before you decide what belongs in your server.