Description
Content ships on purpose, so this is not a redaction pass that drops it. It is the bound that keeps one enormous tool output from dominating an export, plus structural handling of values that are opaque anyway.
Codex reasoning.encrypted_content is encrypted with OpenAI’s key and is permanently undecodable; shipping it wastes the budget for nothing.
Acceptance Criteria
- #1 Every content-bearing field is bounded to logs.max_content_bytes and carries the ORIGINAL length plus a truncated flag
- #2 Bounding is applied after any structural handling, never before
- #3 Codex encrypted_content is replaced structurally rather than shipped; summary_text is kept
- #4 Bounding a JSON value leaves valid JSON
- #5 No behaviour here drops a prompt, an assistant message or tool output: a test asserts they survive
Definition of Done
- #1 just check passes: fmt-check, lint, build, test-short, probe-ci, dashboard-check and docs-links all clean
Implementation Plan
Wave 1 lane 2: implement bounded dimensions and structural content bounds within owned attr/redact files; run focused tests; root integrates and runs the final gate.
Final Summary
Content bounding preserves original size and truncation state after structural encrypted-content handling; synthetic fixtures prove bodies survive and JSON stays valid.