how does codex context compaction work