Claude Code First, specification version 0.1.0. The plain-language guide
Version 0.1.0. Level 2. Best evidence grade R4/S3.
EP-3 A named encoding at a process boundary
A program in the project that reads text from another process MUST decode it with a named encoding rather than the locale's default.
| Field | Value |
|---|---|
| Keyword | MUST |
| Level | 2 |
| Checked | by judgement |
| Findings | F404, F405 |
| Harness facts | none |
| Threat | external: one platform, Windows |
| Status | active |
Rationale: on the corpus's machines the locale code page was cp1252. In Shio the agent's own patching called subprocess.run(text=True), which decoded with it and corrupted posted content; in polyweave a correct cp1252 byte was read by a pipe that decoded UTF-8; in freewilly two streams sharing one buffer were decoded as one (F404, R4/S3; F405). In each the writing process saw nothing wrong, and the fix was an explicit encoding, set once where the stream is opened. The rule depends on a platform fact, that a default decode follows the locale, which the findings record for Windows only.