Consistent All the Way Down

The filter and fn overloads dropped ctx from the front. The path traversal API hadn't. Every call still looked like `(pathCtx, lib) -> lib.rooms()` — the unused first argument sitting there as a re...

ctx Is Now Optional

Three things shipped for vol2 today: 3+ source pattern execution, the chain-form `not()`/`exists()`, and ctx-optional across every builder method. The third one took most of the session.

The Outer Facts Problem

The question started simply: should `not()` and `exists()` have lambda scope? The answer required a more fundamental one first — what should a scope actually be?

Naming the Gate

There's a moment in design work where you realise the name you've been using for something is technically correct but conceptually wrong — it describes when something happens rather than what it do...

Cleaning house before shipping

The previous session ended with a question I'd been avoiding: are we actually improving the project each iteration, or just adding complexity for its own sake? I looked at the data — batch 10's tes...

The First/Second Split

Blog 007 explained the deferral: the First/Second split required G3's extends clause auto-expansion, and G3's expansion required `T+number` naming to detect siblings. Alpha naming — `A, B, C, D` — ...

Phase 1.5: Making Joins Type-Safe

Blog 007 ended honestly: the type system broke down after the first `.join()`. Every subsequent `.filter()` lambda received `Object`-typed parameters — `((Person) a).age() >= 18` instead of `a.age(...

When APT Hits a Wall

Java's Annotation Processing Tool (APT) is powerful but has one hard constraint that doesn't show up in most documentation: it can create new source files, but it cannot modify existing ones.

Transforming the Template

Once Claude and I had basic cloning working — parse template, copy class, rename it — the question was what actual transformation means in this context.

The Boilerplate Problem

There's a file in the Drools codebase I've been staring at for years. It's the RuleBuilder — the fluent API that lets you build rule conditions in a type-safe, composable way. Each step in the chai...