Skip to content

Conversation

@evouga
Copy link
Collaborator

@evouga evouga commented Mar 7, 2025

Addresses #329

I've also cleaned up the scoring semantics of the static validator to align with the output validator: the default score is computed via maximum score inference from the parent test group, and this score can be overridden using score.txt or score_multiplier.txt as normal.

@niemela
Copy link
Member

niemela commented Mar 10, 2025

The "Static Validators" section really should not be after "Verdict/Score Aggregation". The logical places would be before "Input Validators" or after "Output Visualizer". I think I prefer the former.

@evouga Does it makes sense to make that change in this PR (I think so)?

Updated the scoring section to take into account this score
Moved static validators to after output validators
`output_validator/` | No | [Output Validator](#output-validator) | Custom program for judging solutions
`output_visualizer/` | No | [Output Visualizer](#output-visualizer) | Program to generate images illustrating submission output
`static_validator/` | No | [Static Validator](#static-validator) | Custom program for judging solutions with source files as input
`output_visualizer/` | No | [Output Visualizer](#output-visualizer) | Program to generate images illustrating submission output
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The order here seems strange:

input_validators
input_visualizer
output_validator
static_validator
output_visualizer

I would suggest:

static_validator
input_validators
input_visualizer
output_validator
output_visualizer

or possibly:

input_validators
input_visualizer
output_validator
output_visualizer
static_validator

(But I think the former is better)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The static validator is much closer in function to the output validator (which judges contestant submissions) than to the input validator (which checks the judge data only).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can see an argument for putting the static validator right before the output validator, but I prefer the current ordering as it lets us say that the static validator shares the judgement semantics of the output validator.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here’s a categorisation by problem life cycle:

Output validation (statically or not) belongs to submission-time. It is performed when a solver submission is validated.

Input validation belongs to installation-time of a problem. It is performed when a problem is installed on a judge system.

Visualisation belongs to problem’s construction-time. It is performed when the problem is designed. (Like input generation.)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can see an argument for putting the static validator right before the output validator, but I prefer the current ordering as it lets us say that the static validator shares the judgement semantics of the output validator.

It feels strange to me to group input_validators and input_visualizer together, but then put static_validator between output_validator and output_visualizer.

The most logical order of the validators would be input_validators (mainly install time), static_validator (run-time, but in some sense "early" run-time), an then output_validator ("later" run-time). If we want to group the visualizers with "their" validators we would get:

input_validators
input_visualizer
static_validator
output_validator
output_visualizer

But actually... I think the logical grouping would be to have all the validators together and all the visualizers together. visualizers belong to judge-time, which is after run-time, so:

input_validators
static_validator
output_validator
input_visualizer
output_visualizer

I think this would be the best order?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let us discuss this in a separate issue?

@niemela niemela dismissed their stale review March 12, 2025 15:42

The remaining issue has been broken out into #383.

@niemela
Copy link
Member

niemela commented Mar 12, 2025

@evouga I think this is ready to merge, but it needs to be rebased.

@niemela niemela merged commit 98883e1 into master Mar 12, 2025
@niemela niemela deleted the static-validators branch March 12, 2025 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants