Everyone is still asking the wrong question about AI and software engineering.
The question is not:
Can AI generate code?
It can.
It can generate functions, APIs, tests, documentation, Dockerfiles, CI scripts, SDKs, and entire project skeletons in seconds.
The better question is:
Can AI understand the workspace it is changing?
That answer is much less obvious.
And it is where many AI engineering workflows break.
The real bottleneck is not generation
Ask an AI assistant to add a new endpoint.
It will probably do it.
Ask it to create a service class.
It can do that too.
Ask it:
- Which services depend on this module?
- Which runtime owns this deployment?
- What breaks if this dependency changes?
- Which ports are already claimed?
- Which projects belong to this workspace?
- Which modules are allowed in this framework?
- Which checks must pass before handoff?
Now the answers get shaky.
Not because the model is weak.
Because the system is usually undocumented in a way software can understand.
The AI is not missing intelligence.
It is missing a map.
Repositories were designed for humans
A repository contains files.
Files contain code.
Humans read the code, remember the conventions, ask teammates, check Slack threads, infer architecture, and slowly build a mental model of the system.
AI agents try to do the same thing.
The problem is that humans can survive ambiguity.
AI systems are punished by it.
A typical repository rarely tells you, in one reliable place:
- service boundaries
- runtime ownership
- dependency contracts
- environment requirements
- exposed ports
- module locations
- architectural rules
- release gates
- handoff requirements
The information exists.
It is just scattered across source files, READMEs, comments, package scripts, Docker configs, CI workflows, and team memory.
That is not context.
That is archaeology.
A concrete example
Imagine a workspace with four backend projects:
-
support-api— FastAPI, public HTTP API, port8000 -
agent-runtime— FastAPI, internal AI runtime, port8100 -
event-worker— NestJS worker, queue processing -
admin-console— NestJS admin backend, port9200
Now ask an AI agent:
Add prompt management to the AI side and expose a health check.
In a repository-only world, the agent has to infer:
- Which project should receive the module?
- Is
prompt_opssupported by this framework? - Where should generated module files live?
- Is port
8000already used? - Should this be added to a registry?
- Does the workspace contract need to change?
- What verification should run afterward?
If the agent guesses wrong, the code may still look correct.
That is the dangerous part.
The pull request can be clean.
The architecture can still drift.
What a Workspace Contract changes
A Workspace Contract makes the system explicit.
Instead of forcing AI to reverse-engineer architecture from thousands of files, the workspace declares how the system is shaped.
Example:
{
"workspace": {
"name": "ai-support-agent-workspace",
"contractVersion": "1.0"
},
"projects": [
{
"name": "support-api",
"runtime": "python",
"framework": "fastapi.standard",
"ports": [{ "name": "http", "port": 8000 }]
},
{
"name": "agent-runtime",
"runtime": "python",
"framework": "fastapi.ddd",
"ports": [{ "name": "http", "port": 8100 }]
},
{
"name": "admin-console",
"runtime": "node",
"framework": "nestjs.standard",
"ports": [{ "name": "http", "port": 9200 }],
"modules": [
"free/business/admin_console",
"free/auth/rbac"
]
}
]
}
This does not replace code.
It gives code context.
The AI no longer has to guess where capabilities belong or which project owns a responsibility.
The toolchain can verify assumptions before code is generated.
The architecture becomes machine-readable.
That is the difference between code generation and workspace intelligence.
Bigger context windows will not fix this
There is a common assumption that larger context windows will solve AI coding problems.
They help.
But more context is not the same as better context.
A million tokens of source code are less useful than a small, accurate contract that says:
- these are the projects
- these are the runtimes
- these modules are installed
- these ports are reserved
- these rules must never be violated
- these checks prove the workspace is safe to ship
AI does not need every file first.
It needs the right model of the system first.
Then the files become useful.
Verification is the missing half
A Workspace Contract becomes powerful when it is connected to verification.
After AI changes a workspace, the toolchain should be able to check:
Workspace contract:
PASS all projects registered
PASS all ports unique
PASS all modules installed under canonical paths
PASS all framework/module combinations supported
PASS all customer handoff files present
Runtime checks:
PASS FastAPI services restore dependencies
PASS NestJS services install dependencies
PASS workspace archive can be exported
PASS workspace archive can be hydrated from scratch
The agent can generate.
The contract can constrain.
The verifier can prove.
Without that loop, AI output is just another source of unchecked change.
Final thought
The next generation of AI development platforms will not be built around repositories.
They will be built around workspaces.
The winning teams will not be the teams that generate the most code.
They will be the teams that make their systems easiest to understand, validate, evolve, and hand off.
The future of AI engineering is workspace-native.
And the best AI assistants will not simply write code.
They will understand the contract of the system they are changing.
What would your AI assistant know if your workspace had a contract?
Top comments (0)