Compaction does not lose the unimportant things first.
Paste a session transcript, set the context budget your agent really gets after compaction, and see which facts survive. The cliff is the cheapest budget that still keeps everything the session depends on. Below it a rule the agent was given is gone, and nothing in the transcript says so.
A bicycle retailer's first line agent, 41 turns in. The refund policy is quoted with its exceptions, and a draft reply has been through four revisions.
At 42,100 tokens, every load bearing fact survives and 5 lower value facts are crowded out. That is exactly the cliff, so a token less and something load bearing starts to go.
Fact ledger
Support triage, sorted by how load bearing each fact is. Needs is the cheapest budget at which that fact survives whole.
| Fact | Tokens | Turns ago | Needs | Retention | Status |
|---|---|---|---|---|---|
charterIdentityload bearing You are Velo Support, the first line for a bicycle retailer. Plain, warm, no exclamation marks. Three worked sign-off examples follow. | 3,200 | 41 | 11,500 | 100% | Intactfits inside the budget |
confirm-orderInstructionload bearing Confirm the order number before discussing anything about an order. | 2,100 | 41 | 2,100 | 100% | Intactfits inside the budget |
escalateInstructionload bearing Escalate immediately on any mention of a lawyer, an injury, a chargeback or a regulator. Hand off to a named human rather than a queue. | 3,600 | 29 | 8,300 | 100% | Intactfits inside the budget |
kb-onlyConstraintload bearing Answer only from the knowledge base articles in scope. If the answer is not there, say you will check and escalate, with two examples of how that reads. | 6,800 | 33 | 25,500 | 100% | Intactfits inside the budget |
no-codesConstraintload bearing Never quote internal order status codes to a customer. Use the plain language mapping instead. | 2,600 | 40 | 4,700 | 100% | Intactfits inside the budget |
refund-policyConstraintload bearing Never promise a refund. Quote the refund policy, including its three exceptions, and route any refund request to a human. The policy text with exceptions is 9,400 tokens. | 9,400 | 38 | 42,100 | 100% | Intactfits inside the budget |
no-discountDecisionload bearing Decided not to offer a discount, because the courier record shows a signed delivery and the policy has no exception for disputed signatures. | 4,400 | 12 | 15,900 | 100% | Intactfits inside the budget |
tracking-outageErrorload bearing The tracking lookup at turn 24 returned nothing for forty minutes. The customer was told we would check back, and no check back has been sent. | 7,200 | 17 | 32,700 | 100% | Intactfits inside the budget |
contradictionRelation The signed delivery record contradicts the customer's claim, so any refund language is a promise the policy does not allow. | 2,800 | 4 | 18,700 | 100% | Intactfits inside the budget |
draft-replyArtifact Draft reply, revision four: acknowledges the missing delivery, repeats the courier signature, offers a replacement tyre at cost, and closes without promising a refund. | 26,000 | 2 | 101,100 | 0% | Crowdedcrowded out, low cost to lose |
internal-noteArtifact Internal note appended to the ticket summarising all three contacts, the outage and the current draft. | 14,000 | 1 | 66,100 | 0% | Crowdedcrowded out, low cost to lose |
contact-historyState Third contact about VB-88213. The two earlier conversations both ended with a refund request and a refusal, and the customer asked to speak to a manager on the second. | 6,200 | 18 | 52,100 | 0% | Crowdedcrowded out, low cost to lose |
customer-claimState The customer states nothing arrived and that the signature on the courier record is not hers. | 3,800 | 6 | 45,900 | 0% | Crowdedcrowded out, low cost to lose |
order-recordState Order VB-88213, Mara Ellison, two 700x28 tyres, dispatched Tuesday by courier, tracking 9V1 4471 8820, delivered and signed for Thursday at 14:20 by M ELLISON. | 9,000 | 22 | 75,100 | 0% | Crowdedcrowded out, low cost to lose |
Loss by kind
What is dropped at 42,100 tokens, grouped by what the fact is.
How this reading is produced
This is a model of pressure, not a measurement of any particular framework. It is deterministic: the same transcript and the same budget always give the same reading.
- Each fact carries a keep value: its weight divided by the square root of the tokens it occupies, lifted a little if it was restated recently. Short and important is kept before long and incidental.
- A budget keeps the highest keep-value facts until it runs out. A fact that does not fit keeps a shrinking chance rather than vanishing, because a summariser may preserve part of it.
- A fact at or above 0.8 weight is load bearing: losing it changes behaviour rather than degrading quality. Constraints, identity and instructions start there. State and drafts do not.
- The cliff is the cheapest budget that keeps every load bearing fact intact. That single number is the one worth carrying into a build.
Measure your own transcript
Tokens are declared per fact. Describe the real size of each block, because a one line policy with three quoted exceptions is not a one line cost.