docs: plan the csv, json, markdown, rtf, xml and iwork modules - #674
Merged
Conversation
One PLAN.md per module, each written before its stage 1: what the repo does today, what the target shape is, the decisions taken up front and why, the stages in order, and what is deferred by decision. csv and json describe modules that already exist; markdown, rtf, xml and iwork describe ones that do not. Keep them honest as stages land. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ipdjdyMJ6LMVsfAnShvbm
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 59f7652211
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Two errors the review caught, both of which would have been written into the tokenizer as specified: - the space terminating a control word's numeric parameter is a delimiter and is consumed, so `\fs24 Text` starts at `T` and `\bin4 `'s payload starts after the space. The plan said no terminator was consumed, which injects a space into ordinary formatted text and shifts every binary read by one byte. - `\uN` is a UTF-16 code unit, not a code point. Anything above the BMP arrives as a surrogate pair of two `\uN`; appending each half turns an emoji into two replacement characters. Test list extended to cover both. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ipdjdyMJ6LMVsfAnShvbm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Generated with Claude Code
One
PLAN.mdper module, docs only — no code, no build changes.Each is written before its stage 1 and follows the same shape: what the repo
does today, the target, the decisions taken up front and why, the
stages in order, and what is deferred by decision.
csv/PLAN.mdjson/PLAN.mdmarkdown/PLAN.mdrtf/PLAN.mdpdf::ObjectParser, character formatting, paragraphs, tables, imagesxml/PLAN.mdiwork/PLAN.mdTwo things worth calling out for review:
AGENTS.mdfail-fast rule, on the grounds that the rule says throw where thespec dictates what to expect — RTF's spec dictates the opposite for unknown
control words, and iWork has no spec at all. Each enumerates what does still
throw.
decoder and a protobuf wire reader, because Apple's
.iwaframing is notstock Snappy framing and there are no
.protoschemas to generate from. Itsbyte-layout claims are verified against
test/data/input/odr-public/pages/empty.pages,which has been in the data repo since July 2025 without anything exercising it.