The Outcomes — Section 06

Build to UAT

One pipeline that behaves the same every time, ending at your own UAT

The Boundary

Everything up to UAT is yours to control. What happens after is not.

The brief was specific: streamline the build through to UAT, which is your environment. That is the right place to stop. Client acceptance, their change windows and their sign-off sit outside your control and should not be automated away.

Releases stay on request. A client asks and it ships, or a circular lands with a date. We are not proposing a fortnightly train — your customers are broker desks with real deadlines, and “it is in the release after next” loses you work. What changes is that every release is assembled the same way instead of from scratch.

Keep the trigger. Standardise the unit.
Same on-request releases. Six things that stop being improvised.
Part of a releaseTodayUnder this modelChanged?
TriggerClient request or circular, on demandClient request or circular, on demand—
What is in itWorked out in conversationComes from the approved change map✓
Test evidenceWhatever was run, reported verballySuite results attached, gate enforced✓
Release notesHand-written, shape variesAssembled in a fixed format✓
Migration scriptsSent separately, run by handPart of the pack, applied by the pipeline✓
Rollback planKnown to whoever deployed itPart of the pack, reviewed before UAT✓
Deploy to UATPartly manual, partly habitOne pipeline, one button✓
UAT sign-offHuman, with a nameHuman, with a name—
Standardised
Deliberately unchanged

The Pipeline

Five stages, each catching something the next one cannot

Commit to UAT, and what each stage catches

1. Commit gate build + linters + unit suite DOES NOT EXIST TODAY tests exist, nothing gates on them 2. Integration real DB, real database logic CATCHES database logic breaks that mocked tests never see 3. UI journeys Playwright on the React UI CATCHES a screen that renders but no longer refreshes 4. Critical-logic check ⚠ only if restricted zone touched CATCHES a calculated value that moved in the fourth decimal 5. DEPLOY TO YOUR UAT — ONE BUTTON same artefact · scripted migrations · smoke journeys on arrival UAT Pack published alongside the tester opens the environment already knowing what changed 6. Sign-off — still a person, with a name

Stage 1 is the cheapest big win in the whole plan

Tests exist. Nothing gates on them. So their signal is optional, and optional signals get ignored. Turning on an enforced gate costs a configuration change plus holding the line for two weeks. Expect the first week to be annoying — builds break for reasons unrelated to the change in hand. That is the accumulated cost of the tests having been optional, paid at once. It settles fast.

Four Kinds of Release, One Assembly Process

Different triggers and one extra gate each. The pipeline is the same.

KindTriggerExtra gate
Client feature A client asks for something new Product Owner confirms scope and criteria at intake
Product feature Roadmap work on the core product API contract verdict — anyone consuming the surface gets told before, not after
Regulatory SEBI or exchange circular, or a regulatory rule change Compliance sign-off, and the deadline tracked from the day the circular lands
Defect fix Found internally or reported by a client QA confirms severity and validity before it enters the queue

Regulatory releases get the most obvious benefit

A circular arrives with a date attached and no negotiating room. Today it triggers a scramble: work out what it means, find which modules implement that area, estimate. The Regulatory Watch Agent does the first two in an afternoon, so the estimate is grounded and the deadline conversation happens on day one instead of week two.

What the UAT Pack Contains

Assembled by the agent, reviewed by the release manager, read by the tester

📄

What changed

  • Summary in plain language, not a commit list
  • The requirement it traces back to
  • Regulatory reference where there is one
  • What was explicitly left out of scope
✅

What to test

  • Checklist derived from the acceptance criteria
  • Which automated tests already cover which criterion
  • What the automation cannot cover, flagged for a human
  • Test data or setup the tester needs
⚠

Known limitations

  • Defects found during the work and deliberately deferred
  • Anything the Domain Owner ruled on
  • Performance notes where a hot path was touched
  • Nothing hidden for the tester to discover
↶

How to undo it

  • Rollback steps, written before deployment not after
  • The down migration, tested
  • Config changes that need reverting too
  • Drilled quarterly so it is known to work

Target: answer “how soon?” with a number

By the end of Stage 4 you should be able to answer a client's question from the change class rather than from a feeling. That is a commercial capability as much as an engineering one, and it is the outcome your clients see most directly.