TL;DR
- A coding agent given only a Jira ticket has to infer architecture, dependencies, and security constraints, so the same requirement can produce different implementations. Moving those decisions into an approved specification gives every later work order the same architectural context before code generation begins.
- A stale work order creates a traceable failure rather than a hidden one: the agent executes against a known specification version, so teams can identify exactly which requirement the implementation followed. Versioned Living Specifications matter when requirements change after architecture or stakeholder review.
- Parallel agents don’t solve coordination by themselves. Shared constraints and bounded work orders keep separate agents from making incompatible service-level decisions, while overlapping scopes still require correction before execution rather than after conflicting changes reach review.
- Review capacity becomes the limiting resource when agent execution expands faster than qualified human approval. Concentrating human decisions at defined architecture, security, and deployment gates reduces line-by-line review, but only while each gate has a specific control or evidence requirement.
- Legacy modernization exposes a separate dependency: agents need an accurate representation of the existing system before they generate a migration plan. Repository-derived assessment and ForgeScore address that discovery problem, but neither governance nor a stronger model fixes contradictory or incomplete requirements.
AI Software Factory: Specifications, Work Orders, And Governance
An agent working from a short Jira ticket for a tenant-scoped authorization change has to infer the service boundary, the last architecture decision on cross-tenant reads, and the compliance rule that blocks the fastest implementation path. None of that context lives in the ticket. Gartner projects that 90 percent of enterprise software engineers will use AI code assistants by 2028, up from under 14 percent in early 2024, so the number of implementation decisions made without that missing context multiplies across nearly every enterprise codebase rather than shrinking. One engineer described the outcome on r/node after inheriting an AI-assisted repository: tests passed, but the reasoning behind dozens of implementation choices had disappeared along with the chat session that produced them.
An AI software factory addresses that shortfall by moving specification, architecture, and approval ahead of code generation instead of chasing drift after the fact. This article covers how specifications control what an agent is permitted to build, how work orders bind execution to an approved scope, how governance and audit evidence attach to the pipeline as it runs, and where the model reaches genuine limits.
What An AI Software Factory Changes In Software Delivery
An AI software factory is a governed software delivery pipeline that turns business intent into specifications, architecture decisions, bounded execution units, and approval records before agents generate production code. The model has emerged as AI coding tools move from isolated code generation toward participation in requirements, design, testing, and delivery. Forge describes its factory around a spec-first sequence in which intent feeds specifications, architecture, user stories, testing, and application context before execution reaches an agent.
The practical problem appears in a tenant-scoped authorization change. A short Jira ticket might request a restriction on cross-tenant invoice access while leaving the service boundary, existing authorization middleware, claim requirements, and compliance constraints unstated. An agent can produce compiling code from that ticket, yet the missing decisions still have to come from somewhere, and different sessions can infer different answers. The rest of the article should use that authorization change as the running example, then trace where each decision belongs before implementation begins: specification, architecture approval, work-order authorization, security checks, acceptance validation, and audit traceability.
How Specifications Control Agent Execution
A specification is not documentation of a decision after the fact. It’s the mechanism that gives an agent the decision before generation starts, which changes what kind of failure shows up downstream and when someone catches it.
When Short Prompts Leave Architecture Undecided
Handed only the two-line prompt from the authorization example, a coding agent has no field for architecture, dependencies, or acceptance criteria. It infers them, and inference is where rework starts: one attempt calls the shared middleware, another writes a local check that skips the claim validation the prompt never mentioned. Forge’s documented workflow handles this differently. Intent gets structured into a formal artifact before a single specification is generated, and that artifact feeds a sequence covering PRD, BRD, and architecture documents before any work order exists. The middleware decision gets made once, in a stage built for making it, instead of separately inside every agent session that touches the endpoint.
Handing a complex requirement to an isolated agent forces the model to fill missing architectural details with plausible assumptions. Contrast this fragmented inference path with a governed spec-first workflow, where context is resolved once before any execution begins:
When Requirements Drift Between Delivery Artifacts
Drift shows up when the PRD one team reads and the ticket an agent executes stop being the same document in practice, even if they started as one. A requirement changes after a stakeholder review, but the architecture doc references the old version, and the work order an agent picks up next sprint still points at outdated acceptance criteria. Forge addresses this with what it calls a Living Specification: a versioned, machine-readable artifact where every downstream document, PRD, BRD, architecture, work orders, resolves against a specific version rather than a mutable current state. An agent executing a stale work order is executing a stale version on purpose, and that mismatch is visible in the traceability record rather than discovered during a merge conflict three weeks later.
When Architecture Decisions Arrive After Coding
Architecture review works when it happens before implementation choices lock in. It stops working once an agent has already generated several services and picked a synchronous call pattern and opened a pull request, because reviewers are now choosing between blocking a working feature or approving a pattern nobody wants to standardize on. Forge’s pipeline places architecture generation and approval before work orders exist, so database choices, service boundaries, and integration patterns get signed off while they still cost nothing to change.
The screen shows Forge generating a System Architecture Overview panel, with design principles such as tenant isolation and infrastructure-as-code mandates written out as machine-readable specification fields rather than prose notes. Look at how the isolation requirement is expressed as a structured constraint the downstream work order can reference directly, not a paragraph an agent has to reinterpret.
That sequencing is what turns architecture review from a veto exercised too late into a constraint an agent receives too early to violate.
How Work Orders Bound AI Coding Agents
A ticket names work. A work order authorizes it, and the difference between those two things determines whether an agent’s output is a starting point for review or evidence a reviewer can sign against.
When Agents Receive Tickets Without Execution Context
A conventional ticket says what to build. It rarely says which component owns the change, what’s out of scope, which prior architecture decision constrains the implementation, or who already approved the security review the change depends on. An agent executing without that information fills it with plausible guesses, and plausible is not the same as correct.
Forge’s documented model calls the alternative a Work Order: the execution unit that carries scope, constraints, and an approval chain, generated from an already-approved specification rather than typed fresh by whoever files the ticket. A reviewer checking this work order later needs the scope, the constraint list, and the traceability block visible without opening a second document, adapted here from Forge’s published work order schema for our tenant-isolation example:
{
"work_order_id": "WO-2026-0512",
"intent_ref": "INTENT-118",
"spec_ref": "FRD-BILLING-TENANT-AUTH-v1.0",
"authorized_by": "[email protected]",
"authorized_at": "2026-08-14T10:22:00Z",
"scope": {
"component": "billing-service",
"action": "restrict_cross_tenant_invoice_read",
"constraints": [
"must_use_shared_authorization_middleware",
"tenant_claim_check_required_before_query",
"no_new_caching_layer_for_tenant_scoped_reads"
]
},
"traceability": {
"business_requirement": "BR-BILLING-ISOLATION-004",
"security_review": "SEC-REVIEW-2026-0501",
"architecture_decision": "ADR-027"
},
"status": "approved",
"execution_agent": "claude-code-bridge"
} Every field here answers a question a bare ticket leaves open. The agent isn’t guessing whether a caching layer is acceptable; the constraint sits in scope.Constraints, machine-readable and enforced before commit.
When Parallel Agent Work Creates Conflicting Changes
Two agents implementing different services against the same system will diverge if each one is free to decide independently how those services should talk to each other. One might add an HTTP callback because it’s simpler locally, while the other assumes an event bus because a six-month-old decision said so, and only one of them read it.
Bounded work orders fix the coordination problem at the source rather than at merge time. When both agents pull constraints from the same context layer, an architecture rule such as internal services communicate over the event bus applies to both work orders identically, and neither agent decides on its own that a shortcut would be simpler. Forge documents this as a shared context layer feeding every work order, with human approval still required at defined handoffs rather than removed to enable parallelism. When work orders do conflict, that’s a signal the scope boundaries were drawn wrong, not a problem to resolve during code review.
When Generated Code Passes Tests But Violates Intent
Tests validate that code does what the test expects. They don’t validate that the test expected the right thing, and an agent grading its own work against tests it wrote from the same incomplete prompt will happily certify code that satisfies a requirement nobody specified.
Work-order-driven acceptance criteria close that distance because the criteria come from the approved specification, not from the same context window that produced the implementation. Forge’s execution model ties test generation and acceptance validation back to the work order’s traceability block, so a reviewer checking whether a change is done compares it against BR-BILLING-ISOLATION-004, not against whatever the agent decided counted as passing. The difference between code-level validation and requirement-level acceptance is the difference between a green test suite and a change a compliance reviewer will sign.
How Governance Fits Inside The Software Factory Pipeline
Governance that runs after code merges can only report what already happened. Governance that runs inside the pipeline can stop what shouldn’t happen, and that distinction is the entire argument for checking policy at generation time instead of at the end of a sprint.
When Security Review Happens After Implementation
A security review scheduled for the day before release inspects a decision that’s already been made across several pull requests. Reversing one of those decisions at that point means reopening code that’s already passed two other reviews, and the fastest path for everyone involved is to approve it and file a ticket for the fix.
Forge’s pipeline runs a Security Agent against every artifact as it generates, checking authorization coverage, secrets handling, and dependency risk before the corresponding work order is authorized, not after a pull request opens. Policy checks toggle by category, OWASP rules and internal coding standards among them, and every PRD, BRD, and architecture pass gets checked against whichever rules are enabled, with coverage tracked as specifications generate rather than reconstructed from a scan report later.
Waiting until the day before release to run security and compliance checks turns human review into a bottleneck. Modern factory pipelines embed non-negotiable, sequential policy gates directly into the build execution:
Each gate in this sequence acts as an impassable checkpoint that automatically collects audit evidence as work passes through. If a security threshold or compliance rule is violated, the pipeline halts execution long before code reaches a pull request.
When Audit Evidence Exists Across Separate Systems
An auditor asking how a specific line of production code got authorized shouldn’t need three different system owners and a week of Slack archaeology to answer the question. The answer should be a lookup.
Forge’s Requirements Traceability Matrix ties a requirement ID directly to the architecture decision, the work order, and the commit that implemented it, and the platform generates this automatically rather than as a spreadsheet someone updates when they remember to.
The screen shows Forge’s traceability matrix view, with requirement REQ-001 linked through to its authorized Work Order WO-001 and implementation status. Look at how partially traced items get flagged visually, since that’s the state a manual spreadsheet almost never surfaces until an audit forces someone to check.
Each gate behind that matrix has to produce a passing record before the next one runs, which is the mechanism that makes the audit trail exist without anyone filing a status update. Adapted from Forge’s documented modernization work order structure, a gate sequence for a regulated billing change reads like this:
# Forge Work Order Gates: Billing Tenant Isolation
intent: Restrict cross-tenant invoice reads on the billing service
preserve:
- Existing invoice retrieval latency SLA (p95 < 200ms)
- Audit trail retention: 7 years (SOC 2 CC7.2)
gates:
- step: architecture_review
requires: adr_027_approved
produces: implementation_draft
- step: security_scan
requires: implementation_draft
tool: SAST
blocks_on: CVE_severity > MEDIUM
- step: compliance_review
requires: security_scan_passed
reviewer: compliance_team
checklist: soc2_cc7_controls.yaml
- step: architecture_approval
requires: compliance_review_passed
approver: lead_architect No step in that sequence is optional, and nothing advances until the gate before it produces a passing record.
When Human Approval Becomes A Bottleneck
More execution work moving through agents doesn’t mean review can be skipped. It means review has to concentrate on the decisions that need a human, architecture direction, security exceptions, production deploys, rather than every line an agent writes.
Forge’s model configures approval gates at blueprint, build, or validation stages rather than requiring a manual pass over every diff. A human signs off once at each handoff a stage completes and waits for approval before the next one runs, instead of reviewing implementation details a bounded work order has already constrained. That’s a materially different review load than reading every generated line, and it’s the difference that lets throughput scale without approval becoming the queue everything waits behind.
How AI Software Factories Handle Existing Codebases
A legacy repository doesn’t ship with a change log an agent can trust. Whatever the code does today has usually drifted from whatever the last wiki page said it does, and that drift is where migration plans go wrong before a single line gets rewritten.
When Legacy Repositories Lack Trusted Documentation
Modernizing a system nobody fully documented starts with a choice: trust the stale documentation, trust the code, or spend weeks reconstructing what’s true through manual discovery. None of those options scale across a portfolio running into hundreds of applications. Forge ingests the repository directly rather than starting from a document someone wrote two reorganizations ago, deriving dependency maps and business rules from what the code and its data structures contain.
The screen shows Forge’s project initialization stage for a legacy modernization engagement, where an engineer describes the modernization objective and the platform begins structuring it into an Intent Profile alongside requirements and architecture rather than jumping straight to translated code. Look at how the platform flags missing detail in the submitted objective before any specification is generated.
That repository-derived context becomes the baseline every later specification checks against, instead of the tribal knowledge that leaves with whoever wrote the original system.
When Modernization Plans Ignore Existing Architecture
A migration plan built without understanding framework dependencies, test coverage, and existing architecture complexity can look clean on a slide and still not map to the system it’s supposed to replace. The mismatch surfaces during implementation, not during planning, which is the worst possible time.
Forge’s ForgeScore produces an eight-dimension assessment before any migration plan gets written, scoring security exposure, architecture health, and five further dimensions in minutes rather than weeks of manual consultant review. Prioritizing which module gets touched first requires a score teams can compare across the whole portfolio, and a representative output for a billing monolith reads like this:
ForgeScore Assessment - Billing Service (Legacy Monolith)
Security 41/100 2 medium CVEs, no tenant-claim validation on 3 endpoints
Architecture 38/100 Shared database access across 6 services, no bounded contexts
Performance 66/100 Acceptable under current load, no caching strategy documented
Compliance 52/100 SOC 2 evidence incomplete for two control families
Test Coverage 29/100 31% statement coverage, no contract tests on billing API
AI Readiness 44/100 Partial API surface, inconsistent auth scopes across endpoints
Tech Debt 35/100 Est. 1,240 hours to clear identified debt
Dependency Complexity 47/100 4 internal services and 2 external billing providers
Overall: 42/100
Recommended Strategy: Incremental service extraction with contract testing
Estimated Modernization Effort: 6-9 months (phased) That score is what informs the modernization blueprint. A module scoring 41 on security and 29 on test coverage gets an incremental extraction strategy with heavy regression testing, not a clean-slate rebuild plan that assumes coverage the codebase doesn’t have.
When AI Changes Increase Architectural Drift
Each work order that reconstructs the system’s context independently is a chance for two agents to reach different, incompatible conclusions about how the same legacy boundary should be crossed. Multiply that across a modernization program spanning dozens of components and drift compounds instead of resolving.
Forge reports 66 percent rework eliminated and 83 percent faster delivery in its published benchmark figures, attributed to bounded work orders carrying explicit scope, acceptance criteria, and architecture context rather than agent count alone. Those are the company’s own reported numbers rather than an independently measured study, and teams evaluating the claim should ask for the underlying methodology rather than take the percentage at face value.
Where AI Software Factories Meet Their Limits
None of the governance described so far fixes a specification nobody wrote correctly. A factory enforces what’s written down, and enforcing the wrong requirement with perfect traceability is still the wrong requirement, just with better paperwork attached.
When Better Models Don’t Fix Poor Specifications
A stronger model executes a bad specification faster and with more confidence, not less. If the intent document leaves the definition of done ambiguous, or two constraints in the same PRD contradict each other, the model resolves that ambiguity itself, silently, and the resulting code is wrong in a way the traceability matrix will faithfully document. Forge’s benchmark claim rests specifically on work orders carrying explicit scope and acceptance criteria; strip that specificity out and the governance layer still runs, but it’s governing noise instead of intent.
When Factory Throughput Exceeds Review Capacity
Five agents working in parallel produce five times the artifacts that need a human to read, sign, and stand behind. Review capacity doesn’t scale the same way agent capacity does, and a factory that measures success by parallel work orders in flight rather than reviewer load will eventually queue everything behind the same architects it always had. The constraint on throughput in a governed pipeline isn’t how many agents run at once. It’s how many qualified humans can approve their output without rubber-stamping it.
When Governance Adds More Process Than Control
An approval gate earns its place when it produces evidence a compliance team needs or blocks an action nobody wants shipped without review. A gate that exists because a previous incident happened once, three reorganizations ago, and nobody has since asked whether the constraint still applies, is manual coordination wearing a work order as a costume. Teams evaluating a factory should be able to name, for every gate, what it prevents or proves. If nobody in the room can answer that question, the gate should come out.
Choosing An AI Software Factory Around Control Boundaries
The decision comes down to control boundaries, not raw throughput. A team that needs persistent specifications, work orders bounded to an approved scope, traceability that survives an audit, and human approval sitting at defined points rather than scattered across pull request comments needs a factory model, not a faster coding agent bolted onto existing infrastructure.
This article covered how specifications lock architecture decisions before code generation, how work orders bind agent execution to an approved scope, how governance runs inline through security and compliance gates instead of trailing behind implementation, and how factories recover context from undocumented legacy systems while staying honest about where model quality stops compensating for a poorly written specification. Ask what a coding agent is missing on your next ticket: if the honest answer is context and authorization rather than typing speed, that’s the boundary worth building around.
FAQs
How Is An AI Software Factory Different From Coding Agents?
A coding agent generates code inside a single session with no persistent memory of prior architecture or compliance decisions. An AI software factory adds a governed pipeline around that agent: specifications, work orders, and approval gates that exist before and after generation. The agent still writes code; the factory decides what it’s authorized to write and keeps a record of who approved it.
Is An AI Software Factory The Same As The SDLC?
No. The SDLC is the full lifecycle from requirement to deployment, a model that predates AI by decades. An AI software factory is a specific implementation of that lifecycle, one where intent, specifications, and execution units are machine-readable and generated under human approval. AI-SDLC describes the broader shift; a software factory is the platform that runs it.
How Do AI Software Factories Handle Human Review?
Human review moves to defined handoff points, typically after intent approval, after architecture generation, and before deployment, rather than disappearing as agents do more execution work. Reviewers approve scope and constraints in a work order once, instead of reading every generated line. Ask which stages require sign-off before assuming the gate configuration is a real control.
What Happens When Multiple AI Agents Work On The Same Software?
Multiple agents working from the same context layer and bounded work orders generally avoid conflicting implementations, because shared architecture decisions apply identically to every work order pulling from that layer. Conflicts still happen when work order scope boundaries overlap or were drawn incorrectly. When that happens, it signals a specification problem to fix before the next execution round, not a merge conflict to resolve after the fact.