diff --git a/spec/2025-09.md b/spec/2025-09.md index edf132b2..53d1ec08 100644 --- a/spec/2025-09.md +++ b/spec/2025-09.md @@ -1307,7 +1307,8 @@ Note that the visualizer would not typically be invoked by the judging system, t ## Output visualizer An output visualizer is an optional [program](#programs) that is run after every invocation of the output validator in order to generate images illustrating the submission output. -An output visualizer program must be an application (executable or interpreted) capable of being invoked with a command line call. It is invoked using the same arguments as the output validator, except that `output_validator_args` is replaced with `output_visualizer_args`. +An output visualizer program must be an application (executable or interpreted) capable of being invoked with a command line call. +It is invoked using the same arguments as the output validator, except that `output_validator_args` is replaced with `output_visualizer_args`. It must be provided as a program (as specified [above](#programs)) in the directory `output_visualizer/`. If the problem type is `interactive`, the file `team_output` passed via stdin will be an empty file. If the problem type is `multi-pass` but not `interactive`, then `team_output` will contain the output of the submission from the last pass. @@ -1318,7 +1319,20 @@ If the output visualizer does not have sufficient data to generate an adequate v The visualizer may overwrite or create image files in the feedback directory with the name `teamimage.ext` or `judgeimage.ext`, where `ext` is one of: `png`, `jpg`, `jpeg`, or `svg`. It must not write to `score.txt`, `teammessage.txt`, or any other files in the feedback directory other than those of the form `teamimage.ext` or `judgeimage.ext`. -Compile or run-time errors in the visualizer are not judge errors. The return value and any data written by the visualizer to standard error or standard output are ignored. +Compile or run-time errors in the visualizer are not judge errors. +The return value and any data written by the visualizer to standard error or standard output are ignored. +Judge systems may impose limits on the output visualizer's usage of resources, including runtime, memory or the amount of output written to stdout. +Exceeding any of these limits is not a judge error. +It is recommended that the judge system allows the output visualizer at least 5 seconds of runtime. +To avoid timeouts, it is advisable to limit the output size, as the input to the visualizer is typically user-controlled. + +When writing an output visualizer, one should take care to ensure that it is portable. +In particular: +- Avoid using precompiled binary libraries or executables, such as FFmpeg. +- Avoid languages not guaranteed to be present, such as Java. +- Avoid relying on libraries not included in the standard library, such as Pillow. + +To generate `png`, `jpg` or `jpeg` files, it is recommended to use an image-writing library that is not precompiled. ## Result aggregation