Hello, I'm Salah.

I help engineering teams grow up.

By day I'm VP of Engineering at Salla, where a team I joined at 13 people is now 170+ engineers, building commerce software for 80,000+ merchants.

This is where I write it all down the hiring decisions, the architecture bets, the data, and the slow turn toward AI-first while it's still fresh enough to be honest about.

I write under my own name, because the work outlasts the title.

Engineering leadership Scaling teams AI-assisted engineering Building in KSA
Latest writing
01
Featured · AI Engineering Building Lattice · Part 10 of 10

I Changed My Mind on Purpose, to See What Would Break.

A hostile test: built a full Trello-style app under Lattice governance, planted a trap, then reversed a hard-delete decision mid-project. What held, what broke, and why 0.8.1 makes intent changes governed transactions.

aidogfoodinggovernancelattice
Jun 2026 · 2 min read
02
Building Lattice · Part 9 of 10

"Done" Is Not One Thing

Four different claims compressed into one word: declared, wired, correctly-meant, demonstrated. The meaning ceiling is the honest core — and steering for agent fleets lands too.

aiverificationagent-fleetslattice
Jun 2026
2 min
03
Building Lattice · Part 8 of 10

If Constraints Are Free, Which Constraints?

The April inversion said constraints are free for machines. It never said which constraints. Vertical slices, line caps, 500-word specs, and five structural checks that are true or false, nothing in between.

aiconstraintsarchitecturelattice
Jun 2026
2 min
04
Building Lattice · Part 7 of 10

The Question the Whole Stack Was Built to Ask

Three layers exist: requirements, features, code. I can finally compute the traceability matrix. Every criterion gets a blunt status — and I almost shipped the strong word for the weak fact.

aitraceabilityverificationlattice
May 2026
2 min
05
Building Lattice · Part 6 of 10

The Layer I Was Avoiding: Why Does Any of This Exist?

Features and entry points describe the system. Neither answers why it should exist. A BRD layer with provenance, approval, and drift detection — and the question of whether badges change behavior.

airequirementsbrdlattice
May 2026
2 min
06
Building Lattice · Part 5 of 10

Nobody Believes a JSON File

I showed the graph to a friend. Polite silence. The same data as web pages? Questions about the system, not the tool. A Go binary now boots a local UI with live updates.

aicode-generationuilattice
May 2026
2 min
07
Building Lattice · Part 4 of 10

Features Say What Code Means. Nothing Says Who Can Reach It.

I found a hole in the graph. Routes, CLI commands, cron jobs — the actual doors into the system. Entry points are now first-class artifacts, and dead code finally has a definition.

aicode-generationentry-pointslattice
May 2026
2 min
08
Building Lattice · Part 3 of 10

Reality Check: 1,900 Files Will Not Annotate Themselves

The greenfield story was comfortable. Then I pointed the tool at a real Laravel codebase and built an import pipeline that drafts links itself — with provenance tracking.

aicode-generationprovenancelattice
May 2026
2 min
09
Building Lattice · Part 2 of 10

Constraints Are Free for Machines (I Think)

Every rule humans reject as too much friction costs a machine nothing. A Go CLI, tree-sitter, and a bet that deterministic knowledge graphs can replace the re-explaining ritual.

aicode-generationknowledge-graphlattice
Apr 2026
2 min
10
Building Lattice · Part 1 of 10

The Trap of Vibe Coding: Is There a Better Way to Manage AI-Generated Code?

We've automated the production of legacy code. A look at why AI-generated projects rot, what spec-driven frameworks get right (and wrong), and the three goals worth chasing.

aicode-generationspec-driven-developmentlattice
Apr 2026
2 min