A class says what it HAS before it says what it DOES. A trait use, constant,
property, property hook or enum case declared BELOW a method is state a reader
meets by accident: one field two hundred lines down means the head of the class
can never be trusted as the whole inventory.
New `backend/class-layout` skill teaches the order — trait uses, constants,
properties (a hooked property IS a property), constructor, methods — and why a
crowded head means split the class, not scatter the state. Promotion in the
constructor signature is state at the top too, so it is never flagged.
Engine: a `whereClassMember()` selector (property/const/enum case/trait use) and
`AstNode::followsAMethodInItsClass()` — position read off the class body, no name
matching anywhere.
Calibrated on seven codebases: zero hits in laravel/framework and laravel-data
(both order properly), and every hit elsewhere read as genuine — Eloquent models
with `$fillable` under `newFactory()`, repositories declaring `$model` under the
constructor, a `const EXPLANATION` parked at the bottom of our own UntilGate. The
Spatie page fixtures declared their `#[Computed]` hooks below the constructor, so
those are moved up: the fixture is righteous except where it is marked.