compaction-cliff.context loss, measured

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.

cliff 42,100
budget 42,100
Load bearing facts keptAll facts kept, by count
Usable context budget in tokens. The shaded area is the share of load bearing weight that survives. Both lines fall as the budget shrinks. The load bearing line is the one that matters, and the cliff is where it leaves the top of the chart.
42,100 tokens for facts, after 24,000 of window overhead40% of the usable window
Cliff42,100The cheapest budget that keeps every load bearing fact.CrowdedOnly expendable content is being dropped

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.

Load bearing kept100%
All content kept79%
Facts at risk5 / 14
Load bearing lost0

Fact ledger

Support triage, sorted by how load bearing each fact is. Needs is the cheapest budget at which that fact survives whole.

Retention is a modelled chance that the fact survives compaction at 42,100 tokens.
FactTokensTurns agoNeedsRetentionStatus
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,2004111,500
100%
Intactfits inside the budget
confirm-orderInstructionload bearing

Confirm the order number before discussing anything about an order.

2,100412,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,600298,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,8003325,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,600404,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,4003842,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,4001215,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,2001732,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,800418,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,0002101,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,000166,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,2001852,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,800645,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,0002275,100
0%
Crowdedcrowded out, low cost to lose

Loss by kind

What is dropped at 42,100 tokens, grouped by what the fact is.

Constraint3 of 3 kept
Identity1 of 1 kept
Instruction2 of 2 kept
Decision1 of 1 kept
Error1 of 1 kept
Relation1 of 1 kept
Artifact0 of 2 kept
State0 of 3 kept

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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
JSON with a window, an overhead and a facts array. Nothing leaves the browser.

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.