The Software Factory

Rick Whalley

AWS Consumer Summit 2026, Exec and Leadership track

#2041 Add payee endpoint

POST /payees

All checks passed

#2042 Transaction history

GET /api/v2/getTxns

14/14 passing

#2043 Update account address

POST /address.update

Build green

#2044 Payment retry

log.info("retry", id)

All checks passed

#2045 Balance enquiry

console.log(customer)

Tests pass

#2046 Statement export

logger.debug(req.body)

31/31 passing

#2047 Standing order setup

throw new LimitError()

Build green

#2048 FX quote

return { ok: false, err }

All checks passed

#2049 Card freeze

catch (e) { return null }

Tests pass

#2050 Account closure

DELETE /accounts/{id}

9/9 passing

#2051 Limit override

print(f"by {user.email}")

Build green

#2052 Dispute submission

res.json({ error })

All checks passed

Individually impressive.
Collectively ungoverned.

The standard travels with the tooling.

The pipeline you already run Commit Lint Test Build Deploy Nobody remembers to run this; it just runs The same move, for AI-assisted delivery Foundations Analyse Design Build Verify Operate ADRs Security constraints Testing strategy

Where Kiro stops, and where the factory starts

The harness Kiro Where the business lives Policy document Product requirement Jira epic Foundations Analyse Design Agentic build Verify Operate Verified, deployable increment

One quality specification, running in both directions.

Acceptance criteria AC-31 A payment over £10,000 needs a second approver. governs what gets built The build Build instruction A payment over £10,000 needs a second approver. verifies what was produced The test suites Test scenario A payment over £10,000 needs a second approver.

The inversion

The usual model Confluence someone's head design doc, six months stale Accounts repo pipeline Payments repo pipeline Ledger repo pipeline Fraud repo pipeline Alerts repo pipeline The meta-repo model meta-repo harness organisation context ADRs NFRs service templates cross-cutting concerns factory plan Accounts Payments Ledger Fraud Alerts solid lines are contracts

The agent's scarce resource is context.

Factory plan System acceptance criteria Service contracts Event schemas Dependency graph Deployment order Accounts Per-service plan Payments Per-service plan Ledger Per-service plan Fraud Per-service plan Alerts Per-service plan Left to individual developers whatever they remembered to paste in

Change once. Propagate everywhere.

The usual model time Accounts Ledger Fraud Alerts drift prod PaymentInitiated event schema paymentId accountId amount purposeCode new The meta-repo model Factory plan changed once Accounts Ledger Fraud Alerts Deployment order stage gate 1 Ledger 2 Accounts 3 Payments 4 Fraud 5 Alerts

Every merged change is a breadcrumb.

Add purpose code to payment confirmation #2187

Merged factory-bot merged 6 commits into main from increment-14/accounts

Adds purposeCode to the PaymentInitiated consumer and the confirmation view.

Factory plan: FP-014, increment 14

Acceptance criteria: AC-31, AC-32

48 checks passed

Pull request#2187
Factory planFP-014
Stage gateDesign, signed off
Acceptance criteriaAC-31
Business requirementBR-7

ADR-019 changed once in the meta-repo the next build on every service follows it

The system is the unit.
Services are instances of a pattern.

meta-repo Service template Accounts Payments Ledger Fraud Alerts Factory plan

Bounded autonomy

Foundations Analyse Design Agentic build Verify Operate Human-led, machine-assisted Scope Spec scorecard: coverage and coherence Design Requirements vs acceptance criteria Acceptance criteria vs design Design vs plans Verified build End-to-end tests green Ready for production Infrastructure green Evidence attached Three attempts to remediate 1 2 3 Stop, report, escalate. Do not push. “Always ask” yes ops Approve? Yes “Run until it works” 2,418,306 tokens and rising

Operational today.

3 monthsClient's own estimate

4 weeksActual

Financial services proof of value, one slice of the system.

Programme extended to build the whole system.

  1. Policy document
  2. Product requirements
  3. Acceptance criteria
  4. Factory plan
  5. Per-service builds
  6. Verified system

One unbroken line of traceability

Also running in UK healthcare

Do your standards exist in a form an agent can act on?

Documents a developer might read

Home › Engineering › Standards and policies

  • Contract-first orderingWiki page, last edited 14 months ago
  • Logging and customer dataConfluence space, 37 child pages
  • Architecture principles v3 FINAL.pdfPDF, 2.4 MB
  • Security policy overview.pptxSlide deck, 48 slides

Behaviour an agent exhibits

  • Steering fileContract-first ordering
  • Injected constraintNo customer data in logs
  • HookArchitecture principles
  • Test scenarioSecurity policy

Write rules that say yes.

build test verify repeat The path to production Change advisory board next slot: three weeks Architecture review next slot: three weeks Threat modelling next slot: three weeks stage gate IF threat model attached was a threat modelling session AND ADRs honoured was an architecture review AND non-functional tests pass was a change advisory board THEN deploy

Two things to do when you get back.

  1. Pick your three most important engineering standards and ask where they live.
  2. Pick your slowest gate to production and ask what it would take to write it as a rule that says yes.

Individually impressive. Collectively ungoverned.