Skip to main content

Command Palette

Search for a command to run...

A feature flag needs a release owner after the implementation changes hands

Updated
•4 min read•View as Markdown

AI disclosure: This article was drafted with AI assistance. The rollout below is an illustrative engineering example.

A feature flag lets a team merge code before exposing it to every customer. It also creates an easy misunderstanding during a handoff: someone delivers the implementation, the ticket moves forward, and nobody knows who can increase the rollout percentage.

Consider a fictional team adding a new search-results layout. The developer picking up the work can implement both branches and collect staging evidence. The release owner must still decide when the new branch becomes visible, which users qualify, and what observation would justify expansion. Those decisions need their own record.

Put release authority inside the brief

Start with the current behavior, the proposed behavior, and the default when the flag cannot be evaluated. For this example, a missing or failed flag lookup must retain the existing layout. Changing that fallback is outside the task.

The task author supplies the repository, the current flag identifier, the expected evaluation context, and a reviewer who understands the search experience. The runner uses their own authorized development tools. They do not need the author's provider login or production credentials to prepare a reviewable implementation.

Here is a staged brief that can travel with the work:

outcome: New search layout can be enabled through the existing flag.
flag: search_layout_v2
default: existing layout
implementation_scope:
  - render both branches using existing search data
  - test flag on, off, missing, and evaluation failure
  - prepare a staging comparison with synthetic queries
excluded:
  - changing production flag values
  - changing audience targeting or analytics definitions
  - merging or deploying without the separate release process
evidence:
  - branch and commit
  - checks run and their actual results
  - staging captures of both branches at the same viewport
  - known gaps and rollback instructions
acceptance_owner: search engineering reviewer
release_owner: designated on-call release engineer
stop_when:
  - the documented fallback differs from the existing implementation
  - targeting requires a new permission
  - the agreed observation signal is unavailable

The role names are placeholders to replace before execution. A production task needs named people, a real flag, and actual evidence paths.

Treat each expansion as a new decision

The staging review can accept the implementation without authorizing any production audience. A proposed rollout could progress from internal accounts to a small customer cohort and then to a wider audience. Each stage needs an approver and an observation window chosen for that service.

Avoid copying arbitrary percentages and time windows into the brief. Five percent may be useless on a low-volume product and excessive on a sensitive path. The release owner should choose cohorts using traffic, user impact, and the team's existing operating practices.

For every stage, record the current exposure, the intended next exposure, the exact build, and the decision. The runner's delivery report says what they implemented and observed. It should not say that an expansion was approved because the tests passed.

Make rollback answer a specific question

“Turn the flag off” is incomplete if the new branch writes state that the old branch cannot read. In this layout example, the brief deliberately limits the change to presentation and existing search data. The reviewer should confirm that premise rather than infer it from the title.

A practical review asks: Does disabling the flag restore the old layout without a deployment? Do cached decisions delay that change? Can one user see inconsistent behavior between requests? Does the fallback still work when the flag service is unavailable?

Those questions can reveal that this is more than a UI task. If so, the runner pauses and the author revises scope. A handoff should expose that discovery while there is still time to change the plan.

Keep the decision beside the delivery

For AI task handoff for teams, the useful artifact is a brief that preserves implementation evidence and the boundary around release decisions. Wagglet's request-to-review workflow describes the separation between preparation, delivery, and acceptance. This example adds an explicit release record so acceptance cannot be mistaken for permission to expand exposure.

Before accepting the implementation, the reviewer checks the four flag states, the changed files, the captures, and the rollback premise. Before changing production exposure, the release owner checks the accepted build and the observation plan.

That still leaves judgment with people who understand the service. The brief can make an omitted decision visible; it cannot choose safe traffic thresholds or make a release safe by itself.