Claude Code First, specification version 0.1.0. The plain-language guide

Version 0.1.0. Grade R4/S3.

F404 Text crossing a Windows shell, codec or line-ending boundary changed bytes silently, and the remedies were byte-level checks

FieldValue
Statusactive
TopicEnvironment, permissions, and agent-facing products
GradeR4/S3
Casesroadkeep, Shio, polyweave, winwright, freewilly
Contrarynone
Harness factsnone

Claim

On the Windows machines these projects ran on, text passing through a shell heredoc, a PowerShell pipe, a locale code page or a mixed line-ending tree changed bytes without an error, the damage surfaced later and elsewhere, and each project answered with a mechanism that works on bytes (a declared terminator with a test, a stripped or refused byte-order mark, an explicit decode, a scan for double encoding) rather than with an instruction alone.

Mechanism

Each boundary applies a default the writer does not see: Windows PowerShell 5.1 prepends a byte-order mark when it pipes to a native command, Python's text=True decodes with the locale's code page (cp1252), a heredoc passes source through the shell's quoting and newline handling, and a checkout mixing CRLF and LF makes an edit anchored on one terminator match nothing. The writing process sees nothing wrong, so the defect is found by a parser, a downstream reader, or a count, often after it was committed.

Observations

Independence

Five origins. Every observation above is a failure recorded in its own project, on its own files, on its own date. polyweave's no-clobber.py also strips the PowerShell mark [polyweave@6d1c136:.claude/hooks/no-clobber.py#L59-L62], but that hook was written in another repository and imported, so it is not counted for polyweave.

Counter-evidence

None found at the pins. The freewilly observation concerns the product's handling of wsl.exe output rather than text the agent wrote, so it supports the boundary claim and not the narrower claim about agent edits; without it the recurrence is still four projects. The byte-level tests (roadkeep's mixed-terminator test, Shio's line-ending test, winwright's double-encoding walk) are not recorded as having failed after they were added.

Grade

R4: an independent failure in each of the five projects. S3: the sources count what was damaged: 45 and 11 modules in roadkeep, 308 files and seven pages in Shio, two files in winwright. No check encoding the claim is recorded as having failed after it was written, so S4 is not reached.