Repository navigation
Description
Throwaway measurement target for #18664. Bisection finished; this body is the record. Closed as completed.
What was measured
GitHub's refusal boundary for an issue body, in bytes, bracketed by writing bodies of chosen byte sizes through scripts/pm/post-stamped.mjs --body=18793 and reading each one back byte-exact. Exit 0 with read-back class identical = the platform stored every byte sent; exit 4 (EXIT_NOT_STORED) = the platform kept the OLD body and reported nothing.
Result: the largest body that stores is 262,144 bytes (256 KiB). 262,145 bytes is refused. The boundary is a single value, bracketed on both sides by writes from this run.
The bisection
| # | size sent (bytes) | chars | exit | class | verdict |
|---|---|---|---|---|---|
| 1 | 257,945 | 257,945 | 0 | identical | landed |
| 2 | 263,533 | 263,533 | 4 | not stored | refused |
| 3 | 260,739 | 260,739 | 0 | identical | landed |
| 4 | 262,136 | 262,136 | 0 | identical | landed |
| 5 | 262,834 | 262,834 | 4 | not stored | refused |
| 6 | 262,485 | 262,485 | 4 | not stored | refused |
| 7 | 262,310 | 262,310 | 4 | not stored | refused |
| 8 | 262,223 | 262,223 | 4 | not stored | refused |
| 9 | 262,179 | 262,179 | 4 | not stored | refused |
| 10 | 262,157 | 262,157 | 4 | not stored | refused |
| 11 | 262,146 | 262,146 | 4 | not stored | refused |
| 12 | 262,141 | 262,141 | 0 | identical | landed |
| 13 | 262,143 | 262,143 | 0 | identical | landed |
| 14 | 262,144 | 262,144 | 0 | identical | landed |
| 15 | 262,145 | 262,145 | 4 | not stored | refused |
| 16 | 262,145 | 222,145 | 4 | not stored | refused (multi-byte) |
| 17 | 262,144 | 222,144 | 0 | identical | landed (multi-byte) |
Rows 1 and 2 re-took the two endpoints the filing card reported, as this run's own bracket. Rows 3 to 15 bisected it to one byte.
The unit question, answered by measurement
Rows 16 and 17 fill the body with a 20,000-character run of U+4E2D (3 UTF-8 bytes each) plus ASCII padding, so byte length and character length differ by 40,000.
- Row 16 sends 262,145 bytes but only 222,145 characters. A limit counted in characters (or in UTF-16 code units, which are the same number here) would have accepted it with 40,000 to spare. It was refused.
- Row 17 is the positive control: the same multi-byte shape at 262,144 bytes / 222,144 characters landed, so the refusal in row 16 is the one extra byte and not the multi-byte content.
The platform counts UTF-8 BYTES. 262,144 = 256 KiB exactly.
One incidental reading
Every landed write above read back as identical — no trailing-newline strip (these bodies carry no trailing newline) and no synthesised footer on an ISSUE BODY. That is the cell post-stamped's header calls unmeasured; it stays unmeasured for a body that DOES end in the footer block, which none of these did.
Generated by Claude Code
Activity
feat(pm): declare COMMENT_BODY_LIMIT beside ISSUE_BODY_LIMIT, from it…
docs(workflows): five 65536 restatements re-worded to the measured ca…
fix(pm): a size refusal is a refusal — post-stamped stops reporting a…