This repository has been archived on 2026-07-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
pick/REQUIREMENTS.md
T
2026-07-04 20:44:28 +02:00

14 lines
1.4 KiB
Markdown

# REQUIREMENTS
## pick
0 001 `pick` must be a compiled single-file Zig CLI with no runtime dependencies beyond the OS. [core]
0 002 `pick` must read TSV records from stdin and write selected TSV fields to stdout only. [stream]
0 003 `pick` must have no filesystem mutation, network access, shell execution, expression language, regex evaluation, hidden config, prompts, color, pager, JSON default, or daemon behavior. [agent-safe]
1 004 `pick FIELD...` must select 1-based numeric fields from headerless TSV input and preserve input record order.
1 005 `pick --header FIELD...` must resolve field names from the first TSV record, emit the selected header, and then emit selected fields from subsequent records.
1 006 Missing fields must emit empty TSV fields rather than failing a pipeline.
1 007 Usage errors must exit nonzero and write diagnostics to stderr, never stdout.
1 008 `zig build test` must prove numeric selection, header selection, missing fields, help/error stdout-stderr separation, CRLF input tolerance, invalid field rejection, and one forbidden near miss. [verification]
1 009 Project smoke tests must run under POSIX `sh` and exercise `pick` through pipe-oriented stdin/stdout/stderr behavior without leaving required generated artifacts. [posix]
1 010 `pick` must process stdin incrementally for pipeline-sized streams and must not print noisy diagnostics when downstream consumers close stdout early. [pipeline]