Supervised software modernization

Ship breaking changes without breaking trust.

Forward turns migration documentation into an independently tested repair, then keeps production behind one exact human decision.

The product story

Documentation says what changed. Forward proves the release changed with it.

Maintainers should not have to choose between slow manual migrations and unchecked agent autonomy. Forward gives an agent room to reason and repair while evidence and release authority stay independent.

The hidden failure

A green test can still ship incomplete data.

Our controlled API moved from one flat response to cursor pagination. The shallow migration looked healthy, returned HTTP 200 and silently dropped three records.

The Forward promise

Turn a change notice into a release you can defend.

Forward connects the source, the repair, the independent checks and the approved artifact so every claim has an inspectable proof surface.

Understand the changeProve the repairControl the release
60%silent data loss exposed

Three of five records disappeared in the naive first-page implementation.

5/5records proven

The repaired artifact follows every cursor and returns the complete contract.

9/9lifecycle stages

Plan through govern is connected to a public proof surface.

2bounded attempts

Cold-start recovery retries only timeouts and stops after the second attempt.

Who this is for

Maintainers adopting breaking API, SDK or platform changes where familiar tests can miss new completeness requirements.

What generalises

Pin the source, derive checks with Duo, constrain the diff, verify independently, stage one immutable artifact and require exact approval.

How Forward works

From breaking-change notice to governed release.

A single traceable journey replaces disconnected research, coding, testing and deployment hand-offs.

01

State the intent

A maintainer opens a bounded migration issue.

02

Duo reasons

Duo reads the source, derives checks and repairs only allowed files.

03

CI proves

Independent tests, security scans and packaging bind the exact candidate.

04

Cloud stages

The immutable image is exercised on Google Cloud.

05

Human decides

Production requires approval of the exact SHA and image digest.

The blind spot

A shallow client passed its original single-page test while silently losing paginated records.

The Forward result

Duo corrected the bounded target; a separate oracle proved all pages, repeated-cursor rejection and duplicate-ID rejection.

The trust model

Useful autonomy, deliberately separated authority.

Forward is not another chatbot wrapper. Each actor has one clear job, and no actor can mark its own work safe for production.

Control boundary

No self-approval

Reasoning, verification and release remain separate.

Reason

GitLab Duo

Understands the source, creates checks and repairs bounded files.

Prove

Trusted CI + Codex

Independently tests, scans, packages and records evidence.

Decide

Human maintainer

Approves one exact SHA and image digest for production.

Open proof

The product story is backed by inspectable work.

Native Duo session pages can require GitLab access. Every runtime claim is therefore paired with a public issue, MR, pipeline or preserved output that judges can inspect without joining the private flow. Authenticated sessions, publicly corroborated.

Research · session 10020159

Source became executable checks

Duo retrieved the pinned migration contract, attributed three requirements and generated the checks that exposed the naive client.

Open public research receipt
Repair · sessions 10020321 + 10053961

Bounded candidate and runtime wiring

Duo changed allowed target files on one fixed-base branch and reused MR !1.

Inspect public MR !1
Rejection · session 10053026

Unsupported scope failed closed

An OAuth request targeting a forbidden file produced no edit, branch or merge request.

Open public rejection receipt
Reliability · sessions 10082353 + 10083336

Cloud failure drove two bounded repairs

The first canary still failed; Duo used that evidence for a narrower timeout repair that passed a confirmed cold-path replay.

Open public reliability receipt
GitLab lifecycle

All nine official stages, with evidence.

Each row names the responsible actor and links to a public proof surface. “Attention” is not presented as a pass.

01

Plan

GitLab Duo

Read a commit-pinned migration source and derived three traceable requirements.

verifiedResearch evidence
02

Create

GitLab Duo

Changed only the allowed adapter and runtime file, then made two bounded reliability repairs on the same auditable MR.

verifiedMerge request !1
03

Verify

Trusted CI

Ran generated checks, baseline tests, timeout/retry checks and a separate five-scenario oracle.

verifiedCandidate job
04

Package

Trusted CI

Built the exact candidate in public CI and Cloud Build; the staging release is pinned by digest.

verifiedImage job
05

Secure

Trusted CI

Passed dependency, static-analysis and secret scans in the current nine-job pipeline.

verifiedSecurity pipeline
06

Release

Human + CI

The maintainer approved the exact repaired SHA and digest; production now serves that same artifact.

verifiedProduction endpoint
07

Configure

Codex + Terraform

Provisioned least-privilege identities, keyless WIF and bounded Cloud Run services.

verifiedDeployment code
08

Monitor

Trusted CI

After both services scaled to zero, the first repaired staging request succeeded with all five records.

verifiedAcceptance report
09

Govern

Human + policy

Bound promotion to an exact candidate and image, with explicit production approval and staging-only recovery.

verifiedRelease evidence
Proof, not theatre

A small migration with production-grade controls.

Source-derived contract

Upgrade a controlled records client from a flat v1 response to a cursor-paginated v2 contract without losing records or weakening failure handling.

  1. Follow every next_cursor until the fixture returns null.
  2. Reject a repeated cursor instead of looping indefinitely.
  3. Reject duplicate record IDs according to the fixture-owned contract.

Immutable release identity

Candidate
fd454b2dfd1e68f216a5c96be47394c09ac9c320

Image
sha256:b1d6dc490559a9d7e9601577d5f73b74e26f4ae378d4da98ed32df67d9b95d1a

Controlled fixture. The records API and migration announcement are synthetic project assets, not a vendor announcement.