Symptom

A signature with so many positional parameters that the agent has to read the function definition into the before generating each invocation. The signature alone underspecifies the call; the agent must consult either the function body or recent call-site examples to know which positional slot corresponds to which domain meaning.

Goal

Each parameter is a domain concept the agent recognizes, or part of a named object the agent passes through without unpacking. The signature carries enough type and naming signal that the agent generates correct invocations from the type information alone; per-call drops to zero in the common case.

Smellier version

function book(name, email, street, city, zip, depart, arrive, seat) {
// ...
}

Fresher version

function book(traveler, address, trip) {
// ...
}
Example source: Illustrative example written for this site; the smell itself is catalogued in Martin Fowler's Refactoring (Addison-Wesley, 2018), see the chapter on Bad Smells in Code.
Pressure

Every call site is a chance to misorder arguments or miss one; even with the type checker, the agent pays retrieval cost on every invocation. Coincidentally-typed adjacent parameters mean even type-checked code can ship with the agent's positional swap intact — a silent bug class the agent can't catch without across every call.

Tradeoff

A new parameter object adds a class the agent loads to construct values; for one-use cases the is pure overhead. The agent pays one extra read on every invocation that constructs the object and one extra read on every read of the object's shape — the abstraction must justify these costs by being reused enough to amortize them.

Relief

Parameters bundled into a typed object are matched by name at every call site; the type checker catches missed fields as compile errors instead of silent positional swaps the agent would have to detect from context. The of every parameter rises; the agent's per-edit completeness-check cost contracts to one named type.

Trap

Synthesizing parameter objects that don't represent real domain concepts forces the agent through extra wrapping and unwrapping with no comprehension payoff — pure ceremony. The agent pays the of an additional type on every call, while gaining nothing in the structural signal the parameter object was supposed to provide.