A Nix-based framework for competitive programming problem authoring, analysis, and packaging.
Visit the documentation home page to learn more.
Hull treats a problem as one reproducible pipeline rather than a collection of scripts.
- Reproducible problem pipelines. Nix definitions connect programs, generated data, validation, official outputs, solution predictions, documents, and packages in one buildable problem model. A build checks the relationships between them. It does not merely compile files.
- Deterministic WASIp1 execution. Hull runs authoritative source WASM with explicit tick, memory, filesystem, standard-stream, and per-resource file-size contracts, including deterministic multi-program interaction.
- Data-driven Typst documents. Generate multilingual statements, technical overviews, and contest booklets from analyzed problem data. Templates can inject samples and subtasks. They can render validator-backed visualizations.
- Programmable judging. Start with batch, standard-input/standard-output interaction, or answer-only judging. Define a custom judger when a problem needs multiple evaluation stages, a specialized protocol, or custom scoring.
- Targets are an extension point. Package a problem or contest for supported judge systems and participant environments. Define a target for a project-specific directory, archive, or deployment format when needed.
- End-to-end parallel execution. Hull uses available CPU parallelism by default across problem builds, contest builds, judging, and stress testing. Artifact builds and final packaging retain Nix's own parallel scheduling. This lets high-core-count servers process large solution and testcase sets with high throughput.
- Designed for AI agents. Hull publishes Agent Skills,
llms.txt, Typst source mirrors, and generated Nix option references. An agent can use these machine-readable entry points to discover exact configuration. It can also follow a complete problem-authoring workflow.
Copyright (c) 2025-present, rindag-devs
Contributions are welcome. See CONTRIBUTING.md for the development workflow and the Hull Contributor Licence Agreement that applies to submitted contributions.