A PSR-18 decorator ordering that was documented and still got reversed

A comment explaining why each layer is where it is, and a fifth layer inserted in the wrong place anyway.

$client = new LoggingClient(
    new CachingClient(          // ← added in July
        new RetryingClient(
            new SigningClient(
                new RateLimitedClient($psr18),
            ),
        ),
    ),
);

// the cache now stores a SIGNED request's response,
// keyed on a URI that does not include the signature.
// which works, until a cached response is served for a
// request whose signature has expired.

A comment describing an order is read by whoever changes it and not by whoever extends it, which is the failure mode of documentation as a mechanism. The fix is a test asserting the composition — three lines, constructing the stack and walking it — which is enforceable in a way a comment is not.