Symptom

A class or interface whose surface mixes multiple cohesive sub-concepts; the agent reasoning about any single concept must skim past the others to find what it needs.

Goal

Each type has one purpose; the agent loads a small focused file to reason about any single concept.

Before the refactoring

class Person {
name;
officeAreaCode;
officeNumber;
telephoneNumber() { return `(${this.officeAreaCode}) ${this.officeNumber}`; }
}

After the refactoring

class Phone {
areaCode;
number;
toString() { return `(${this.areaCode}) ${this.number}`; }
}
class Person { name; phone; }
Example source: Illustrative example written for this site, not a quotation from any source.
Pressure

The agent's reasoning context per method inflates with unrelated members; changes to one concept require reasoning about all of them.

Tradeoff

Extracting too eagerly — 1-2 fields with no behavior — adds a file the agent must load with no encapsulation gain.

Relief

Each type holds one responsibility's data and methods; queries about one responsibility load only its file, and the unrelated payload that previously sat in the same window for every read is gone.

Trap

Extracting candidate concepts that are just trivial field groups creates files the agent must navigate without buying any encapsulation gain.