Many lanes, one production
AI features change prompts, data, tools and model versions at the same time. Shared staging turns every change into a queue. Give each engineer a complete lane of their own, and make the gate into production the only thing they share.
The classic environment ladder of development, staging and production assumes two things: that most changes are code, and that most changes are independent of each other. AI delivery breaks both assumptions.
A single AI feature can touch a prompt, an extraction schema, a database table, a tool definition, an evaluation set and a model version, all at once. When two engineers work on different features in one shared staging environment, they collide constantly. One engineer's schema migration breaks the other's tests. Prompt versions overwrite each other. Long evaluation runs compete for the same fixtures and their results get mixed up. And somebody is always asking who is using staging this afternoon.
A complete lane for each engineer
The alternative is to give each engineer a complete, isolated lane. Each lane has:
- a local environment, plus a cloud staging deployment at a stable personal URL, so that callbacks always know where to go;
- its own database branch, seeded from the synthetic fund universe, with migrations applied independently of everyone else's;
- its own secrets, issued from a vault and valid only against sandbox providers;
- its own namespace in the prompt registry, so prompt versions never collide;
- its own sandbox registrations with the payment provider, the investor portal and the email service.
Modern infrastructure makes most of this cheap to set up: database branching, per-branch deployments, secrets managers that sync configuration into each environment, and tunnelling services with reserved domains for local work. The main cost is the automation that creates and tears down lanes, and that is worth writing once.
Creating a lane, step by step
Lanes should be created by a script, not a ticket. A typical sequence:
- 01Create a database branch from the template schema, and seed it with the current version of the synthetic universe.
- 02Issue sandbox-only secrets from the vault, with an expiry.
- 03Deploy the engineer's branch to a staging environment at their personal URL.
- 04Register that URL in each sandbox provider's webhook settings.
- 05Create the engineer's namespace in the prompt registry, copied from the current release.
- 06Run the smoke tests and the security cases.
- 07Tear the lane down automatically when the branch merges, or after a set period without activity.
If creating a lane takes more than a few minutes, engineers will start sharing them, and the collisions come back.
Common objections
"Lanes will drift from production." They will, which is why lanes are rebuilt often from the current release template, and why the gate, not the lane, is the final test.
"It costs too much." Most lanes sit idle most of the time. Scale them to zero when idle, and tear them down on merge.
"Our database cannot branch." Seeding a fresh schema from the synthetic universe on demand gives most of the same isolation. It is slower, but still far better than sharing.
Review by using, not only by reading
Because each lane has a stable URL and working sandbox integrations, reviewers can use a change as well as read it. They can open the lane's investor portal, trigger a test capital call for a fictional fund, watch the payment callback arrive and inspect the evidence line it produces. Reading a diff catches problems in the code. Using the lane catches problems in the product.
Give reviewers a short script for each change: the fictional fund to use, the steps to take, and the evidence they should expect to see at the end. A reviewer who follows the script and gets a different result has found something worth knowing, whatever the diff looked like.
This matters more as coding agents write more of the code. A diff of several hundred generated lines is hard to review line by line. A working flow with its evidence attached is not.
Model migrations start in a lane
A new model snapshot is tested in a lane first. That means running the full golden set, replaying recent inputs from the synthetic universe or an anonymised evaluation store, and comparing the new snapshot's output field by field with the current one's.
If it passes, the candidate moves to a shadow run in production for a full business cycle, then to a canary: one fund or one desk running on the new snapshot against an unchanged control3. Only then does it replace the old version everywhere. Providers give notice before retiring a model, at least 60 days at Anthropic4 and at least six months for generally available models at OpenAI5. Plan migrations well inside those windows, because a migration that has to be rushed is a migration that skips steps.
Data and secrets discipline
Two rules keep lanes safe.
No production data in lanes. Lanes run on the synthetic universe, which should be rich enough to include the awkward cases: excused investors, PIK elections, amended definitions, late wires. Use identifiers that cannot match real entities. If anonymised production samples are needed for evaluation, keep them in a controlled evaluation store, not in any lane.
Secrets live in a vault. They are short-lived, rotated, and never written into prompts or logs6. Each lane's credentials work only against sandboxes, so a leaked lane secret opens nothing that matters.
What it costs and what it buys
Lanes cost some infrastructure, most of it idle most of the time. They cost the automation to create and destroy them, and ongoing care of the synthetic data.
In return, engineers work in parallel without coordinating, reviews are faster and more realistic, model migrations are rehearsed before they matter, and releases stop being held hostage by the one feature that is not ready. Above all, production only ever receives changes that came through the gate.
The number of places where work happens should grow with the team. The number of paths into production should stay at one.

Sources
- 1Demystifying evals for AI agents. Anthropic, 2026-01-09. anthropic.com (opens in a new tab)
- 2LLM01:2025 Prompt Injection. OWASP GenAI Security Project, 2024-11. genai.owasp.org (opens in a new tab)
- 3Canarying Releases (Site Reliability Workbook). Google, 2018. sre.google (opens in a new tab)
- 4Model deprecations (Claude API docs). Anthropic, living document. platform.claude.com (opens in a new tab)
- 5Deprecations (OpenAI API docs). OpenAI, living document. developers.openai.com (opens in a new tab)
- 6Secrets Management Cheat Sheet. OWASP Cheat Sheet Series, living document. cheatsheetseries.owasp.org (opens in a new tab)




