Bumping a PHP monorepo to 8.5: the mechanics

Sixty-seven packages, one CI matrix, one PHPStan target. What it takes to actually move the floor.

May 11, 2026 · 4 min · Russell

PHP 8.5 restraint: features we did not adopt

An upgrade is also a decision about what not to use. Property hooks, the pipe operator, and an array_find pass we mostly rejected.

May 11, 2026 · 6 min · Russell

The PHP 8.5 deprecation sweep: from 34 warnings to zero

Three deprecation categories. Twenty-nine call sites. A test corpus that surfaces them all.

May 11, 2026 · 4 min · Russell

Remember when server-side rendering was just rendering?

How Waaseyaa’s SSR package renders HTML the way PHP always has, with Twig templates, field formatters, and a theme chain loader, no JavaScript runtime required.

April 6, 2026 · 6 min · Russell

Domain routing in Waaseyaa: replacing a giant dispatcher with small routers

How Waaseyaa splits a monolithic controller dispatcher into domain-specific routers using a two-method interface.

April 5, 2026 · 5 min · Russell

The audit that started everything: how Waaseyaa designed an invariant-driven architectural review

How the Waaseyaa framework designed and ran a formal invariant-driven audit across 52 packages, what it found, and how those findings were turned into a dependency-ordered eight-milestone remediation program.

April 1, 2026 · 8 min · Russell

Waaseyaa governance series

A three-part series on how the Waaseyaa framework built a governed implementation platform: from invariant-driven audit through eight-milestone remediation to a batch-driven conformance engine.

April 1, 2026 · 1 min · Russell

Real-time messaging with Mercure SSE in PHP

How to build a real-time messaging system with Mercure server-sent events, covering threads, user blocking, and email digests.

March 28, 2026 · 4 min · Russell

Entity lifecycle hooks and batch operations in Waaseyaa

How to use preSave, postSave, preDelete, and postDelete hooks in Waaseyaa, with automatic pre-save validation and saveMany/deleteMany batch operations.

March 27, 2026 · 4 min · Russell

Managing LLM context in a real application

How Claudriel manages LLM context in production: conversation trimming, turn budgets, model fallback, prompt caching, and per-turn token telemetry.

March 27, 2026 · 6 min · Russell