pyproject.toml:130 is test_on_windows = true. The definition of v1 is a harness that
asserts byte-identical stdout/stderr against goldens recorded on a developer machine.
That fails on \r\n alone, before you reach cp1252 console encoding, .exe console-script
shims, and shlex.split — which the spec concedes is POSIX-only and then offers "the list
form of prog" as the Windows path, which is not the format read_cases parses.
Nothing in the research programme states which way this goes. Decide it before the gate is
written, or the gate is red on a third of the matrix on day one.
Options
- A. Normalise: goldens store
\n-normalised text; comparison normalises newlines and
forces PYTHONIOENCODING=utf-8 + COLUMNS in the subprocess env. Parity runs everywhere.
- B. Exempt: the parity job is
if: runner.os != 'Windows', and the definition of v1 is
explicitly "parity on POSIX; import + unit tests on Windows".
Recommendation: A, with the newline decision made in the goldens issue so it is baked into
the format rather than bolted onto the comparator. read_cases must accept the list form of a
case so Windows never needs shlex.
Acceptance criteria
Depends on
Research & rationale: the canonical spec and the full fleet audit live in the private research ledger (https://github.com/thorwhalen/priv/discussions/65). Effort: small.
pyproject.toml:130istest_on_windows = true. The definition of v1 is a harness thatasserts byte-identical stdout/stderr against goldens recorded on a developer machine.
That fails on
\r\nalone, before you reach cp1252 console encoding,.execonsole-scriptshims, and
shlex.split— which the spec concedes is POSIX-only and then offers "the listform of
prog" as the Windows path, which is not the formatread_casesparses.Nothing in the research programme states which way this goes. Decide it before the gate is
written, or the gate is red on a third of the matrix on day one.
Options
\n-normalised text; comparison normalises newlines andforces
PYTHONIOENCODING=utf-8+COLUMNSin the subprocessenv. Parity runs everywhere.if: runner.os != 'Windows', and the definition of v1 isexplicitly "parity on POSIX; import + unit tests on Windows".
Recommendation: A, with the newline decision made in the goldens issue so it is baked into
the format rather than bolted onto the comparator.
read_casesmust accept the list form of acase so Windows never needs
shlex.Acceptance criteria
cw.testing.normalise_usageand the tier-1 comparator both newline-normalise; atest feeds
\r\ngolden text and passes.read_casesparses both ashlexline form and a JSON list form; a test coversboth.
pyproject.toml'stest_on_windowsand the CI matrix are edited to match, andthe README says what v1 means on Windows.
Depends on
cw.testing: the standalone characterize/replay harness (D4) #5 —cw.testing: the standalone characterize/replay harness (D4)Research & rationale: the canonical spec and the full fleet audit live in the private research ledger (https://github.com/thorwhalen/priv/discussions/65). Effort: small.