Take-Home · Part 4

AI transcripts & how I used them

The real working process, not a summary of it — plus the three notes the brief reads most carefully: what I used, what I rejected, and where the tools helped least.

AI Transcript

Full session transcript

The complete Claude Code session — reading the handover doc, designing and building the validation library and its tests, and drafting the Part 1 review and Part 3 decisions.

Click here to view transcript.

What I used

Claude Code · Opus 4.8

Claude Code (Opus 4.8) for the whole exercise: reading the handover doc, designing and implementing the cross-field validation library and its tests, drafting the Part 1 review, and drafting the three Part 3 decisions. I worked from the real material — the actual brief, the handover doc, lib/validate.js, and the existing test suite were all in the model's context, not summaries of them. The full session transcript is attached; it is the working process, not an account of it.

A suggestion I rejected, and why

For the cross-field format, the model's natural pull was toward a single rich rule language — boolean composition (AND/OR/NOT), nesting, and arithmetic like a + b <= c: one clever rule type that could express anything. I rejected that in favour of a small set of discrete, well-defined rule types (compare and required_if), with the format designed to grow by adding types rather than by making one type cleverer.

The reason is the test the brief actually sets: someone has to write a correct rule for an unseen client from my README alone. A general expression engine is hard to document precisely and would fail that test, whereas two narrow rule types, each with an explicit schema table, pass it. The cost I accepted is that anything outside those two shapes needs a new rule type rather than a config tweak — which I state plainly in the README rather than implying the existing rules stretch further than they do.

Where the tools helped least

Two places.

Judgment calls that need a business bet, not a code fact

Decision 1 (silo vs pool) hinges on which market you're actually in and who you're willing to lose, and the model will argue either side equally well — so it cannot make that call for you.

Holding the whole submission's logic together

More concretely: the model produced a Decision 3 that answered for a shared PostgreSQL primary while Decision 1 had committed to full silo — a direct contradiction, since a silo fleet has no shared primary at 300 clients. It did not catch that its own answers were inconsistent across the three decisions. I caught it and had it rewrite Decision 3 to name the failure that actually exists in a silo (the migration/deploy fan-out across 300 databases). That is the clearest example of where the tool stops: it is fluent within one answer but does not hold the whole submission's logic together, and that is the human's job.

What I left out, and what I'm least confident about

The library ships two rule types, compare and required_if, with required_if fully documented (its own schema table in the README) and covered by tests across all four of its branches. What I deliberately did not build is anything beyond a single declared relationship per rule: boolean composition (AND/OR/NOT across several conditions), arithmetic (a + b <= c), and cross-record rules (constraints that span more than one submitted record). I named those as the stopping line rather than pretending the format reaches them — each would be a new rule type or a genuinely different evaluation model, not a tweak to what is there.

On Part 3, the cost model behind Decision 1 is asserted, not measured: I claim silo's provisioning and maintenance cost is worth the regulated market, but I have not priced it. And Decision 3's "the migration pipeline breaks first" is reasoned from the architecture, not observed under load. It is my best single answer, but I have not run a 300-tenant fleet to prove the migration fan-out beats the shared control plane or the observability layer to the wall. If I am wrong about anything, it is most likely that ranking: I am less certain that migrations specifically are first rather than one of two or three that go close together.