An ICPC penalty charges for verdicts, and a tie is a tie - #104
Merged
Conversation
Floors the minute, counts judged rejections rather than positions, and shares a place between level rows on both boards. A `?` now says which of three things it is. `check:ranking` holds the arithmetic and gates.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The boards are assembled here — the Server sends results and no ranking — so
nothing in any repository's gate was looking at the arithmetic. Three faults
were live at once, and all three were found by reading rather than by anything
going red.
What was wrong
minutes. Up to a minute nobody spent, on every solved problem, and enough to
swap two teams that were level.
whatever order the Server happened to send the contestants in. Stable,
arbitrary, and it reads as a ruling.
A submission whose evaluation
failedor which a managercancelledcosttwenty minutes. The Runner sends no score at all for a failure precisely
because a zero would read as a wrong answer on every board that shows it —
and the board charged it anyway.
What was already right: nothing after the accepted submission counts. ICPC
charges for every previously rejected run, and the word does the work.
What changed
minuteOffloors.IcpcCellcarriesattemptsandrejectedas two numbersinstead of deriving the cost from a position, and only a judged result short
of full marks is charged;
failedandcancelledjoin the queue — shown as?, costing nothing, cleared by a rejudge or by the manager ruling thesubmission out, which the Server already keeps off the board entirely.
placeshares a rank between level rows and the place after a shared one is theposition, so two firsts are followed by a third. It is shared, so the points
board gets it too, on an equal total.
A
?says which of three things it is — withheld by the freeze, not judged yet,or no verdict returned.
pendingLabelis one wording for both tables; two newkeys in both catalogues.
The fixture said something the Server never says
The fake modelled
team-7's compilation error asstate: "failed", which iswhat an infrastructure failure leaves. A compilation error is judged —
compilation_failedreturnsEvaluated::Judged— so it iscompletedwith 0,and it is charged. Left alone, this change would have made the demo board show
a compilation error costing nothing.
That surfaced a second thing:
resultDocumentgave a compilation error theordinary three-test table, with test 1a passing 30/30, describing a program
that was never built. It now gets the document the Runner attaches — every test
carrying that verdict, worth nothing, with no measured memory. The seed also
gains one genuine unjudged run, before the freeze so the state is reachable
without
ranking:read:unfrozen.AlgoJudge/AlgoJudge-Server#95mirrors the same two rows inParityWorld.Verification
scripts/check-ranking.mjsis new and gates: 35 assertions over the penalty,the three pending reasons, ties, and the points board, driving the real
compiled module.
Every fix was sabotaged and reddened exactly the assertions that cover it —
floor→round 2, tie→position 2, charging the unjudged 4, one pending label for
all 2, counting past the accepted run 1. The two new browser assertions were
sabotaged the same way.
Green: lint (silent),
lint:deps, typecheck, build,check:i18n,check:ranking, and the fullcheck:ui— 51 scripts.One note on running
check:uilocally: a checkout carrying a.envwithVITE_APP_API_BASE_URLfailssign-in-redirect, because the provider challengeis built from that origin and the redirect leaves for a Server the fake run has
not got. Nothing to do with this change — it reproduces on
main— and CI hasno
.env.