A product charter is a ledger of settled decisions: what a product does, what was rejected and why. Rather than load the whole ledger at every session start (43K–112K characters for the ones tested here), coding agents load a short summary. If the summary drops a condition or an exception, an agent that follows it breaks a rule while believing it is obeying one. We tested three ways to write that summary on three real charters.
Run October 27, 2026 · 3 charters · 24 summaries · flat-rate plans, no metered spend
Each model was asked to compress the whole ledger into a summary of at most 3,000 characters: pick the critical decisions, keep every condition, and list every rejected and proposed id.
| Model | HIGH distortions | LOW distortions | Critical decisions missed | Judge score (0–10) | Length (characters) | Within 3,000 | Time per charter |
|---|---|---|---|---|---|---|---|
| Claude Haiku 5.5 | 4.7 | 6 | 13 | 5.3 | 3,218 | 1/3 | 37 s |
| Claude Sonnet 5.5 | 4.3 | 8 | 6.7 | 6 | 4,079 | 0/3 | 20 s |
| Claude Opus 5.5 | 4 | 6.7 | 7 | 6.3 | 3,771 | 0/3 | 34 s |
| GLM-5.3 (Z.ai Coding Plan) | 3 | 5.3 | 9 | 5.7 | 3,155 | 0/3 | 9.5 min |
The model only ranks the settled decisions, most critical first. The tool then pastes each decision in its exact ledger wording until a 4,500-character budget is full, and lists rejected and proposed options by the start of their text.
| Model | HIGH distortions | LOW distortions | Critical decisions missed | Judge score (0–10) | Decisions included | Length (characters) | Time per charter |
|---|---|---|---|---|---|---|---|
| Claude Sonnet 5.5 | 0.3 | 1.7 | 11 | 6 | 16.7 | 5,540 | 4 s |
| Codex (gpt-6-astra) | 0 | 1.7 | 10.7 | 5.3 | 16 | 5,558 | 19 s |
| Antigravity (Gemini 3.8 Flash high) | 0.7 | 2 | 9.7 | 6 | 17 | 5,632 | 49 s |
Sonnet ranks as in round 2. Antigravity (Gemini 3.8 Flash high) then reads that summary against the full ledger and suggests swaps (a more critical decision in place of a less critical one) and stale flags (a line a later decision reverses or narrows). Sonnet re-ranks once with that feedback, and the tool pastes verbatim, adding a pointer to the newer decision on a flagged line only if that decision exists.
| Per summary, average | Sonnet alone (round 2) | Reviewed and re-ranked (round 3) |
|---|---|---|
| HIGH distortions | 0.3 | 0.0 |
| Critical decisions missed | 11.0 | 8.3 |
| Judge score (0–10) | 6.0 | 6.3 |
Averages over the 3 charters, one run each. A HIGH distortion is a line that would make an agent break a rule if it followed it: a dropped condition, exception, branch or limit, or a wrong fact. LOW distortions are the judge's lesser category. The judge score (0–10, higher is better) rates each summary as the only charter context an agent gets.
| Charter | Model | HIGH distortions | LOW distortions | Critical decisions missed | Judge score (0–10) | Length (characters) | Time per charter |
|---|---|---|---|---|---|---|---|
| E-commerce site charter | GLM-5.3 (Z.ai Coding Plan) | 4 | 5 | 14 | 5 | 3,162 | 5.6 min |
| E-commerce site charter | Claude Haiku 5.5 | 4 | 7 | 21 | 5 | 4,103 | 36 s |
| E-commerce site charter | Claude Opus 5.5 | 4 | 7 | 10 | 7 | 3,961 | 40 s |
| E-commerce site charter | Claude Sonnet 5.5 | 5 | 7 | 12 | 6 | 4,330 | 21 s |
| Platform ops charter | GLM-5.3 (Z.ai Coding Plan) | 1 | 5 | 6 | 6 | 3,197 | 5.4 min |
| Platform ops charter | Claude Haiku 5.5 | 6 | 7 | 9 | 6 | 3,194 | 46 s |
| Platform ops charter | Claude Opus 5.5 | 5 | 9 | 9 | 6 | 3,820 | 35 s |
| Platform ops charter | Claude Sonnet 5.5 | 5 | 10 | 6 | 6 | 4,111 | 20 s |
| Construction takeoff charter | GLM-5.3 (Z.ai Coding Plan) | 4 | 6 | 7 | 6 | 3,105 | 17.6 min |
| Construction takeoff charter | Claude Haiku 5.5 | 4 | 4 | 9 | 5 | 2,358 | 28 s |
| Construction takeoff charter | Claude Opus 5.5 | 3 | 4 | 2 | 6 | 3,533 | 26 s |
| Construction takeoff charter | Claude Sonnet 5.5 | 3 | 7 | 2 | 6 | 3,795 | 18 s |
| Charter | Model | HIGH distortions | LOW distortions | Critical decisions missed | Judge score (0–10) | Length (characters) | Decisions included |
|---|---|---|---|---|---|---|---|
| E-commerce site charter | Antigravity (Gemini 3.8 Flash high) | 1 | 0 | 12 | 6 | 6,134 | 17 |
| E-commerce site charter | Codex (gpt-6-astra) | 0 | 2 | 11 | 6 | 6,137 | 18 |
| E-commerce site charter | Claude Sonnet 5.5 | 1 | 1 | 12 | 6 | 6,137 | 17 |
| Platform ops charter | Antigravity (Gemini 3.8 Flash high) | 0 | 4 | 8 | 6 | 5,876 | 16 |
| Platform ops charter | Codex (gpt-6-astra) | 0 | 1 | 8 | 6 | 5,760 | 16 |
| Platform ops charter | Claude Sonnet 5.5 | 0 | 3 | 13 | 6 | 5,956 | 14 |
| Construction takeoff charter | Antigravity (Gemini 3.8 Flash high) | 1 | 2 | 9 | 6 | 4,885 | 18 |
| Construction takeoff charter | Codex (gpt-6-astra) | 0 | 2 | 13 | 4 | 4,777 | 14 |
| Construction takeoff charter | Claude Sonnet 5.5 | 0 | 1 | 8 | 6 | 4,527 | 19 |
| Charter | HIGH distortions | Critical decisions missed | Judge score (0–10) | Decisions included | Swaps suggested | Stale flags / pointers added |
|---|---|---|---|---|---|---|
| Platform ops charter | 0 (0) | 9 (13) | 6 (6) | 13 | 4 | 4 / 2 |
| E-commerce site charter | 0 (1) | 8 (12) | 7 (6) | 18 | 4 | 5 / 4 |
| Construction takeoff charter | 0 (0) | 8 (8) | 6 (6) | 19 | 2 | 0 / 0 |
In brackets: Sonnet ranking alone on the same charter in round 2.
Let a model choose, never rewrite. In this run, ranking plus verbatim text carried far fewer HIGH distortions than any rewrite, and with the review step none at all. The pipeline the run points to: Sonnet ranks, Antigravity reviews the ranking, Sonnet re-ranks, and the tool pastes verbatim. It still leaves critical decisions out, so they need another route to the agent, such as being looked up when it edits the files they govern, and rejections that a later decision reversed need to be marked.
Which model should grade another model's work: judge bake-off. Every run we publish: all bake-offs.