You're right, and it makes the point from the other side. CLAUDE.md survives /compact because it lives on disk, outside the transcript, so the rules were never the fragile part. What has no disk home is the exploration: which file you read, the dead end you already ruled out, the decision and the reason for it. The summary flattens that, and it's the branch a tree with parent pointers would let you resume instead of re-derive. Which means we're pointing at the same failure. The open question is whether re-reading the rules is enough once the reasoning that applied them is gone.
One thing that makes the one-way compression easier to live with in Claude Code: the constraints don't have to survive inside the transcript. The memory docs say project-root CLAUDE.md is re-read from disk after /compact, and nested CLAUDE.md files and path-scoped rules reload when Claude reads a file they apply to. So what the summary loses is mostly the exploration, which is the part your tree would keep. The docs are also explicit that instructions given only in conversation don't come back.