Skip to content

Conversation

niemela
Copy link
Member

@niemela niemela commented Sep 1, 2025

Fixes #463

Copy link
Contributor

@hairez hairez left a comment

Choose a reason for hiding this comment

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

Some small details to fix. Requesting changes.

Each such test data group must have `pass-fail` aggregation.
The group specifying `require_pass` will only be run if the group being referred to receives an accepted verdict for all test cases in the group.
If the group is not run, the group score is 0, and it did not receive an accepted verdict for all test cases in the group.
The `require_pass` is set to the name of a single test data group, or `sample`, or a sequence of such names, or `sample`.
Copy link
Contributor

Choose a reason for hiding this comment

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

A bit confusing thatsample is mentioned twice here.

Suggestion:

Suggested change
The `require_pass` is set to the name of a single test data group, or `sample`, or a sequence of such names, or `sample`.
The `require_pass` is set to the name of a single test data group, or `sample`, or a sequence of such names.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yours read a lot better, but technically sample is not defined to be a "name". That said... I'm inclined to merge your change.

Anybody thinks differently?

A path consists of zero or more directory names followed by a directory or file name, with a `/` character separating consecutive names. Each name must conform to the [general requirements](#general-requirements) on directory and file names and the specified test data group must exist.

The path of a group, relative to the `data/` folder, must come later lexicographically than the paths of all test cases and groups it depends on.
A test data group, or `secret` may specify that it depends on some other test data groups, or `sample` by setting `require_pass`.
Copy link
Contributor

Choose a reason for hiding this comment

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

As I understand it, secret can only depend on sample, right? Maybe that should be specified.
And sample cannot depend on anything else, since it is the first group. But it is allowed to have a require_pass key.

Suggested change
A test data group, or `secret` may specify that it depends on some other test data groups, or `sample` by setting `require_pass`.
A test data group, or `secret` may specify that it depends on some other test data groups. `secret` may only depend on `sample`. `sample` cannot depend on any other group, but it may still have a `require_pass` key.

Copy link
Member Author

Choose a reason for hiding this comment

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

That is correct, and those are good points.


The path of a group, relative to the `data/` folder, must come later lexicographically than the paths of all test cases and groups it depends on.
A test data group, or `secret` may specify that it depends on some other test data groups, or `sample` by setting `require_pass`.
Each such test data group must have `pass-fail` aggregation.
Copy link
Contributor

Choose a reason for hiding this comment

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

I got a bit confused if it was the groups that depend on others, or the groups dependent on that needs a pass-fail aggregation.

We should specify that this only applies to the test data groups being dependent on.

Suggested change
Each such test data group must have `pass-fail` aggregation.
Each group mentioned under `require_pass` must have `pass-fail` aggregation.

A test data group, or `secret` may specify that it depends on some other test data groups, or `sample` by setting `require_pass`.
Each such test data group must have `pass-fail` aggregation.
The group specifying `require_pass` will only be run if the group being referred to receives an accepted verdict for all test cases in the group.
If the group is not run, the group score is 0, and it did not receive an accepted verdict for all test cases in the group.
Copy link
Contributor

Choose a reason for hiding this comment

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

and it did not receive an accepted verdict for all test cases in the group.

A bit confusing. I assume this is to clarify that even if a group $A$ has max score 0 and is not run, the other groups that depends on $A$ will also not be run?

@@ -576,7 +577,7 @@ Key | Type | Default
`max_score` | Integer or `unbounded` | 100 in `secret`, otherwise `unbounded` | The maximum possible score of the test data group. Must be a non-negative integer or `unbounded`. This key is only permitted for the `secret` group and its subgroups.
`score_aggregation` | `pass-fail`, `sum`, or `min` | `sum` in `secret`, otherwise `pass-fail` | How the score is determined based on the scores of the contained groups or test cases. [See Result Aggregation](#result-aggregation). This key is only permitted for the `secret` group and its subgroups.
`static_validation_score` | Integer or `pass-fail` | | The maximum score of the static validation test case, or `pass-fail`. See [Static Validator](#static-validator).
`require_pass` | String or sequence of strings | empty sequence | Other test data groups whose test cases a submission must pass in order to receive a score for this test group. [See Result Aggregation](#result-aggregation). This key is only permitted for the `secret` group and its subgroups.
`require_pass` | String or sequence of strings | empty sequence | Names of other test data groups, or `sample`, whose test cases a submission must pass in order to receive a score for this test group. [See Result Aggregation](#result-aggregation). This key is only permitted for the `secret` group and its subgroups.
Copy link
Contributor

Choose a reason for hiding this comment

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

This key is only permitted for the `secret` group and its subgroups.

This is not correct. It is technically also allowed for sample, as mentioned further down under "Group Dependencies".

Also it should not refer to Result Aggregation, and refer directly to Group Dependencies.

Suggested change
`require_pass` | String or sequence of strings | empty sequence | Names of other test data groups, or `sample`, whose test cases a submission must pass in order to receive a score for this test group. [See Result Aggregation](#result-aggregation). This key is only permitted for the `secret` group and its subgroups.
`require_pass` | String or sequence of strings | empty sequence | Names of other test data groups, or `sample`, whose test cases a submission must pass in order to receive a score for this test group. See [Group Dependencies](#group-dependencies).

Comment on lines +594 to +595
The name of a test data group is the path under secret.
For example, the test data group defined by the directory `data/secret/group1` has the name `secret/group1`.
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe move the lines

The name of a test data group is the path under secret.
For example, the test data group defined by the directory `data/secret/group1` has the name `secret/group1`.

under

That is, if there are any directories under `data/secret/` there must not be any `.in` files directly in `data/secret/` and vice versa.

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.

Clarify dependent groups
2 participants