A class named OrderFactory whose only method mapped one flat structure onto another flat structure with different field names. The name mattered more than it should have: three…
A Shared namespace created for three value objects, containing 140 classes four years later. A shared kernel needs an admission rule or it becomes the place things go…
Checkout, set up PHP, restore the Composer cache, install — repeated in nine jobs across four workflows, with three of them a version behind. The shell key on…
A Dockerfile that switched to a non-root user, then switched back for one directory permission and never switched forward again. The line that switched to root was correct…
Adding permissive CORS headers so a dev server on 5173 can reach an API on 8080 means the development configuration differs from production in a security-relevant way. The…
Wrapping an error in a more meaningful one used to discard the original, or required a non-standard property that nothing displayed. The tracker support lagging is the practical…
8.1 gave pure intersection types and no way to make one nullable; 8.2 allows a union of intersections, which covers the case everybody hit first. The name describes…
A readonly property must have a type, so a readonly class containing an untyped property is a compile error rather than a silently ignored one. The type requirement…