Skip to content
RONEXER
Capability / Product Engineering

Engineered ForThe ReleasesAfter The First.

A product is not a project that happened to ship. Customers depend on last quarter's behaviour while next quarter is being built, and most structural decisions either keep that affordable or quietly stop it.

Talk to an Architect

Next Step / Technical Discovery

Boundary
What is product, and what is not
Variation
Configured, never branched
Change
Proven on a cohort before everyone
Compatibility
Broken on notice or not at all
04 Situations

Where a product stops being able to change

Not at launch. Somewhere past the point where enough accounts depend on enough behaviour that altering any of it requires a meeting.

  • 01

    The second large customer arrived with conditions

    THE FIRST FORK

    Nothing they asked for was unreasonable, and the quickest way to agree was a branch. Now each change is made twice, and the two copies have begun to disagree.

  • 02

    Nobody is willing to touch the schema

    FROZEN DATA

    The tables were shaped for the first version. Every account opened since holds data in that shape, and the migration has no volunteer.

  • 03

    The interface is a promise nobody wrote down

    ACCIDENTAL CONTRACT

    Consumers depend on fields never meant to be public, ordering that was never guaranteed, and a behaviour that began as a defect. All of it is the contract now.

  • 04

    Every release reaches everyone at once

    NO ROLLOUT CONTROL

    A change is live for every account or for none, so the safe move is to ship less. The roadmap settles to the pace of the most cautious customer.

06 Areas

What product engineering owns

The product, and the machinery that lets it keep being sold while it keeps being changed. The second half is what gets deferred, and what decides the ceiling.

  • 01

    Product architecture and boundary

    WHAT IS IN THE PRODUCT

    Where the product ends: the behaviour every customer receives, and the requests deliberately answered somewhere other than the source tree.

  • 02

    Tenancy, entitlements and plans

    WHO GETS WHAT

    Isolation between customers, and the entitlement model deciding which capabilities an account reaches without anyone shipping code to grant them.

  • 03

    Configuration and extension surfaces

    SUPPORTED VARIATION

    The places difference is designed to land — settings, rules, templates, webhooks — so a requirement has somewhere to go that upgrades with the rest.

  • 04

    Versioning and compatibility

    THE PUBLIC CONTRACT

    What the product has promised, how long the promise lasts, and how a change to it gets announced rather than discovered.

  • 05

    Release, rollout and telemetry

    CONTROLLED CHANGE

    Flags, cohorts, staged exposure, and the measurements that establish whether a change is working while it is still small enough to withdraw.

  • 06

    Operations and support tooling

    RUNNING IT

    What a support team needs to answer for one account — state, history, impersonation, limits — without a database console and an engineer on call.

What holds still, and what is free to move

A product that changes everything is unusable; a product that changes nothing is finished. The engineering question is which surfaces are promises and which are implementation — decided in advance rather than discovered.

Data shape

MOVES, WITH A PATH

Schemas change and old accounts keep working, because the migration carrying the previous shape forward is written before the change merges, not after somebody reports it.

Public interface

HOLDS UNTIL ANNOUNCED

What consumers may rely on is written down, versioned, and withdrawn on a published timetable — never by a deployment nobody outside the team expected.

Internal structure

FREE TO CHANGE

Anything not on the contract can be replaced without asking. The worth of a small promise is how much it leaves unpromised.

Customer variation

CONFIGURED, NOT BRANCHED

Difference lives in data rather than in code paths that exist for one account. A setting costs once; a branch costs on every release it survives.

New behaviour

OBSERVED BEFORE UNIVERSAL

A change is measured against real accounts while the previous path still stands, so withdrawing it is a decision rather than an incident.

The product boundary

Every product eventually meets a requirement it did not anticipate. Whether to accommodate it is not the question — accommodating customers is the business. Where the accommodation is permitted to live is, and the four answers are priced very differently.

Customisation is not the mistake; putting it in the wrong place is. Each step outward costs more to maintain than the one before, and only the last leaves two products under one name.

  1. 01Core

    Behaviour every customer receives

    The product's actual claim. Changing it changes it for everyone, which makes it the most expensive place to put one account's request.

    One implementation

  2. 02Configuration

    Difference the product expects

    Settings, rules, templates and limits, held as data. The variation is supported, tested and upgraded alongside everything else, because it never left the product.

    Inside the boundary

  3. 03Integration

    Difference the customer owns

    Webhooks, APIs and extension points where the customer's own system does the specific thing. It moves on their schedule and never enters the product's release.

    At the boundary

  4. 04Fork

    A second product, acquired by accident

    A branch held for one account. It works the same afternoon — the last inexpensive thing about it. Every change afterwards is made twice, and eventually made differently.

    Outside, and permanent

04 Phases

How a change reaches everyone

Not a project plan. This is what happens to one change between merge and the removal of what it replaced, repeated across accounts that never asked to be involved.

  1. 01Gate

    Merged, and not yet true

    The change reaches production behind a switch that is off. Deploying and releasing become separate events, which is the decision everything below depends on.

    • Feature flags
    • Trunk-based release
  2. 02Cohort

    True for chosen accounts

    A selected subset gets the new behaviour while the rest stay where they are. The comparison is between live accounts rather than between environments.

    • Staged exposure
    • Product telemetry
  3. 03Widen

    True by default

    Exposure grows while the measurements hold. The previous path stays in place, so reversing course is a configuration change instead of an emergency release.

    • Rollout schedule
    • Reversal switch
  4. 04Retire

    The old behaviour is withdrawn

    Announced, dated, and executed once telemetry shows the path is empty. Teams skip this step, and skipping it is how a product accumulates code nobody dares delete.

    • Deprecation notice
    • Removal date

What the product team is left holding

A requirement answered without a branch
A request to work differently resolves to a setting, an extension point, or a considered no — never a second copy of the codebase.
An interface that changes on notice
A consumer learns a field is going away from a deprecation notice with a date on it, not from their integration failing overnight.
A schema that can still move
Accounts opened before the current data model keep working, because each shape change shipped with the migration that carries them across.
A release that can be taken back
New behaviour proves itself on a subset first, and withdrawing it is a switch rather than a hotfix at the end of a long day.
Next Step / Technical Discovery

Bring a product carrying a branch you regret, an interface you can no longer change, or a release process that has turned the roadmap into a negotiation.