diff --git a/app/priv/blog/engineering/2026/04-09-a-thin-slice-for-federated-collaboration.md b/app/priv/blog/engineering/2026/04-09-a-thin-slice-for-federated-collaboration.md index ee76c60..5087604 100644 --- a/app/priv/blog/engineering/2026/04-09-a-thin-slice-for-federated-collaboration.md +++ b/app/priv/blog/engineering/2026/04-09-a-thin-slice-for-federated-collaboration.md @@ -110,7 +110,8 @@ Versioning is built in. Every export is numbered. If a BU enriches a case after Three things made the build feel unreasonably quick: -- **Spec-first design.** I wrote the domain rules in a spec language (Allium) before writing any code. Entities, enums, state machines, redaction rules, access-control tiers — all of it agreed on paper first. When it came time to code, the shape was already locked. Almost no rework. +- **Spec-first design.** I wrote the domain rules in a spec language ([Allium](https://juxt.github.io/allium/)) before writing any code. Entities, enums, state machines, redaction rules, access-control tiers — all of it agreed on paper first. When it came time to code, the shape was already locked. Almost no rework. + - **AI-assisted build loop.** The specs are machine-readable, so I could hand them to an LLM alongside the existing code and get implementation that actually matched the intent. The rare drift got caught fast because the spec was the source of truth. - **Phoenix LiveView.** Server-rendered reactivity. I built the whole UI — case explorer, bid prep wizard, nomination flow, CSV import, analytics — without a JavaScript framework. Forms, tables, charts, modals, all in one codebase.