Hello, I'm Salah.

I help engineering teams grow up.

By day I'm VP of Engineering at Salla, 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 leadershipScaling teamsAI-assisted engineeringBuilding in KSA
Currently working on

Building Lattice — a deterministic knowledge graph that ties every line of AI-written code back to the feature, and the requirement, that asked for it. Eleven parts in, and the theory behind it is now a preprint.

Read where it stands →
New paper · Preprint

Cleared the Bar, or Lowered It? An Assurance Lattice for Verifying AI-Generated Software Against IntentCoding agents can turn every check green by quietly weakening the requirement. This paper sets out a theory of assurance that tells a bar that was cleared from a bar that was lowered.

Read the paper →
Random read
⚄
Latest writing
01
Featured · AI EngineeringBuilding Lattice · Part 11 of 11

Cleared the Bar, or Lowered It? I Wrote the Theory Down.

Coding agents can turn every check green by weakening the requirement. Ten parts of building Lattice, now written up as a preprint: facts vs proxies, an assurance lattice, and why no checker can see a lowered bar.

aicode-generationverificationresearchlattice
Oct 2026·3 min read
02
AI Engineering

I Let an AI Name My Project. So Did Everyone Else.→

I named my project Lattice in thirty seconds. Then I found three strangers who built the same kind of tool with Claude and landed on the same name. When everyone ideates with the same model, the model becomes a hidden convergence engine.

ainamingconvergencelattice
Jun 2026
5 min
03
Building Lattice · Part 10 of 11

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
04
Building Lattice · Part 9 of 11

"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
05
Building Lattice · Part 8 of 11

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
06
Building Lattice · Part 7 of 11

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
07
Building Lattice · Part 6 of 11

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
08
Building Lattice · Part 5 of 11

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
09
Building Lattice · Part 4 of 11

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
10
Building Lattice · Part 3 of 11

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
11
Building Lattice · Part 2 of 11

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
12
Building Lattice · Part 1 of 11

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
13
Engineering Culture

Years of Experience Are Not Knowledge→

My first job handed me two bugs and one lesson I'm still unpacking. Years of experience tell you how long someone worked, not whether they ever searched.

careerengineering-culturesearchlearning
Jul 2018
4 min

Get in touch

Building something, hiring, or scaling a team? Let's talk.

Engineering leadership, AI-first ways of working, or a short call about a problem you're chewing on. Grab a time that works, or just email me.

Email me