CLI help must not mutate your filesystem

Defer application boot and filesystem authority until your CLI framework has validated that a mutating command will actually execute.

October 24, 2026 · 4 min · Russell

Do not let generated content replace your homepage

Keep generated collection routes from replacing your application homepage when detail pages live at the root.

October 23, 2026 · 4 min · Russell

Do not construct authentication policy inside a login helper

Keep login, logout, eligibility, credential upgrades, and HTTP permission checks behind the authentication services configured by your application.

October 22, 2026 · 5 min · Russell

Test machine publishers through their real tools

Prove a machine publisher has the permissions it needs, and no broader authority, by exercising the registered tools it will actually call.

October 21, 2026 · 5 min · Russell

Five contracts a PHP listing layer should prove

Test filter semantics, cache invalidation, and installed package behavior before trusting a PHP listing layer.

October 20, 2026 · 4 min · Russell

A PSR-14 dispatcher does not promise Symfony's second argument

Keep event dispatch calls within the interface you inject, using a small Waaseyaa fix as a practical example.

October 19, 2026 · 3 min · Russell

Fixing a hardcoded revision key in Waaseyaa's entity storage

How Waaseyaa’s EntityRepository let entity types configure their revision-pointer column, but ten call sites still read the literal revision_id string, and how a single private accessor plus a two-way test closed the gap.

September 26, 2026 · 4 min · Russell

Adding a working skip link to Waaseyaa's operator shell

How Waaseyaa’s shared operator shell added a real skip link and hid decorative icons from assistive technology, including the focus trick that makes the link’s own jump work in every browser.

September 24, 2026 · 4 min · Russell

Configuring identity-only OAuth requests in Waaseyaa

How Waaseyaa’s oauth-provider package added optional, additive configuration so a consumer that only needs a stable Google or GitHub identity can skip the email lookup, the forced consent prompt, and the offline refresh-token grant.

September 23, 2026 · 5 min · Russell

Host-bound session and CSRF cookies in Waaseyaa

How Waaseyaa’s SessionCookiePolicy enforces the __Host- cookie prefix’s four constraints for both the session cookie and the CSRF double-submit cookie, and rejects misconfiguration at boot instead of failing silently in the browser.

September 19, 2026 · 6 min · Russell