Preserve failed test evidence before you retry

Design a qualification harness that keeps the first failure, accounts for uncertain resources, and publishes useful evidence without exposing secrets.

October 25, 2026 · 5 min · Russell

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 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

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

A loopback-only proxy for prototyping northway's feed reader

How northway’s browser prototype keeps its API key off client JavaScript with a loopback-only Node proxy, before any of it reaches the production Pi build.

September 13, 2026 · 4 min · Russell

Keep SQLite data in a private child directory, not at the Docker volume root

Mounting a durable volume straight onto the directory you chmod’d in the image throws away that permission — bake a private child path instead.

September 4, 2026 · 4 min · Russell

Splitting one Dockerfile into API and maintenance images

A shared runtime stage plus two build targets keeps CLI maintenance tools out of the deployed API image, and a script proves it on every build.

September 3, 2026 · 5 min · Russell

Hardening a manual Claude Code review workflow in GitHub Actions

How a human-triggered ‘@claude review’ workflow got locked down to read-only, bounded-diff, revision-verified reviews after the official tag-mode example turned out to be implementation-capable by default.

September 1, 2026 · 5 min · Russell