The Problem
Sometimes, two or more runners set a new world record in the same category on the same day. To properly display the world record history of that category it would be best if the records would be displayed in the WR history in the chronological order they happened. Sadly, this is not the case on SRC. A few years ago the category history would only show one WR per day. (I don't remember exactly but I think it only showed the lowest time achieved on that day.) Nowadays, the system has improved: multiple world records can be displayed as such if achieved on the same day. There is one flaw however: as far as I can tell the records are sorted by the time they were submitted. This can create several issues.
Examples
Let me give you an example. The WR on a game is 10:02. Runner A achieves a 9:58 run. Afterwards, Runner B gets a 9:50 time. Let's say Runner B submits their run at 5:00 pmand Runner A submits their PB at 5:30 pm, Runner B will be credited for achieving the WR (which is correct!) but Runner A will not be listed as a former WR holder since the site thinks their runs was performed after Runner B achieved their time which is lower.
This system can cause the exact opposite issue as well. Another example, this time from my own experience. On the same day MsTruffles and I were both speedrunning the game Buffet Knight. MsTruffles achieved the WR with a time of 4:05. My PB on that day was a 4:32. I got my time after MsTruffles achieved the WR as my stream layout clearly states her 4:05 run as the current WR. However, on the leaderboard I am credited as a former WR holder:

The reason for this is simple: I submitted my run at 16:20...

...while MsTruffles submitted her PB only 2 minutes later at 16:22.

Solutions?
I am not aware of any tools moderators currently have to prevent the issues mentioned above. If you do please comment. I would strongly suggest SRC staff implements a tool to circumvent this problem. Until then, true friendship is when you wait for your speeedrun rival to submit their runs first if they got the record first.
It is possible to change the time on run's play date.
Internally, the date is stored in unix time. This can be seen on a user's leaderboard page, if you hover your mouse over any run's date, a time is displayed.
So the WR History tab is sorted by the date, and not the submitted date.
It's possible to set a run's date by using API v2 with PutRunSettings.
On a run's edit page, when you manually use the date picker to choose a date, it sets the time to 00:00 UTC. But when you press the "Now" button, it sets the date and time to your current time.
When dates are displayed on the site, they're converted into your local timezone. This results in another issue, because if you're in a negative UTC timezome, and a date is at 00:00 UTC, taking away any hour from it will display the previous day, rather than the one chosen in the date picker. Which is a bug that a lot of people have reported.
So I'm not sure how precise you want to be if you edit the run's time to when you started the run. I guess just as long as the WR afterwards has an older time. And due to that bug I just mentioned, it doesn't matter too much lmao as the timezone information is lost.
It's possible to set a run's date by using API v2 with PutRunSettings.
Thanks for sharing, sadly I do not understand how to use this. It's interesting what you shared about the submission time and that bug. I wish there was a built-in way to change the time of run. Honestly, shouldn't be too hard to implement, right?
@Laika_the_Spacedog late response but this is how it could be done.
-
Go onto the run that you want to edit
-
Press Ctrl + Shift + J (in Chrome) to open the dev tool's console
-
Type "allow pasting", if necessary
-
Copy and paste the JavaScript below and press Enter. It edits the run that you are currently on, and it will ask for the Unix time, in seconds, that the new run should be updated to.
const opts = { headers: { Accept: "application/json", "Content-Type": "application/json" }, method: "POST" };
const { runId } = new URLPattern({ pathname: "{/*}?/{*}?/runs/:runId{/*}?" }).exec(location.href).pathname.groups;
const { settings } = await fetch("/api/v2/GetRunSettings", {
...opts,
body: JSON.stringify({ runId }),
}).then(x => x.json());
settings.date = parseInt(prompt("Enter the Unix time (in seconds)", settings.date));
const isVerified = (await fetch("/api/v2/GetRun", {
...opts,
body: JSON.stringify({ runId })
}).then(x => x.json())).run.verified === 1;
const { session } = await fetch("/api/v2/GetSession", {
...opts,
body: JSON.stringify({ runId }),
}).then(x => x.json());
await fetch("/api/v2/PutRunSettings", {
...opts,
body: JSON.stringify({
csrfToken: session.csrfToken,
settings,
autoverify: isVerified
}),
}).then(x => x.json());


