OpenViST Rust task report — version 0.1.0, MIT Tested with Rust 1.90.0, Edition 2024 on Linux. Standard library only. Save these files together in a new practice folder: Cargo.toml.txt as Cargo.toml task_report.rs.txt as task_report.rs tasks.tsv.txt as tasks.tsv rust-project-LICENSE.txt as LICENSE From that folder: cargo test --offline cargo run --offline --bin task-report -- tasks.tsv The report on stdout is: records=3 open=2 closed=1 Cargo prints build/run messages on stderr. To see only program output, use: cargo run --quiet --offline --bin task-report -- tasks.tsv Contract: Exactly one ordinary local file argument. At most 65,536 bytes, strict UTF-8, no BOM, LF line endings only, header statustitle, 1..1,000 records. Status is exactly open or closed. Title is 1..100 Unicode scalar values, with no control characters. Spaces and Unicode line separators U+2028/U+2029 are allowed in a title; this is a TSV counter, not a configuration-key validator. Exactly one separating tab per record. Duplicate rows count separately. One final LF is optional; other blank records are invalid. No quoted-field or CSV rules. No network requests, file writes, Unicode normalization or secrets redaction. Titles are never printed. Output appears only after full validation. Input errors: empty stdout, 'error: invalid input' on stderr, exit 2. Output write failure: exit 1. Successful report: exit 0. The byte limit does not impose a time limit on opening/reading a file. Use ordinary practice files, not devices, pipes or remote filesystems. The tool is an educational example, not a sandbox or a production deployment guide. Sixteen built-in tests cover the recorded cases; they do not prove exhaustive correctness. Run tests again after changing source, limits, or dependencies.