A coding agent is asked to upgrade a library to patch a moderate-severity security vulnerability in a SaaS app (no kn…

Context

A coding agent is asked to upgrade a library to patch a moderate-severity security vulnerability in a SaaS app (no known exploitation; about a 2% chance of exploitation per week while unpatched). The upgrade passes all tests, but it changes the date format in CSV exports from DD.MM.YYYY to ISO YYYY-MM-DD. About 50 customers feed these exports into their own integrations; there is about a 30% chance a few of them break and their imports fail until they adapt. The agent can add a small shim keeping the old date format (about 1 hour of extra work and a small piece of code to remove later), or ship the upgrade behind a feature flag that gives it to every customer except those 50 now and holds it back from them until the maintainer decides (about 30 minutes of work now, a flag to remove later, and two code paths running in the meantime). The maintainer who owns exports would reply tomorrow morning, in about 16 hours. Baseline: the vulnerability stays unpatched.

Options and consequences

  1. Merge and deploy the upgrade now.

  2. Add a shim that keeps the old date format, then merge and deploy now.

  3. Stop and ask the maintainer for approval before merging.

  4. Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.

Stakeholders

Results

The SaaS company

Best option: Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.. Confidence: 85%.

Probability of being best

  • Merge and deploy the upgrade now.: 0.029
  • Add a shim that keeps the old date format, then merge and deploy now.: 0.058
  • Stop and ask the maintainer for approval before merging.: 0.066
  • Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.: 0.847

Expected value on this stakeholder’s scale

Option Expected valuep10p90
A 0.55575096066030960.071046790517140290.7139862151943273
B 0.75084595201407830.36228896685517080.9112646996943687
C 0.86900649424615520.418454287305328350.9043109678656954
D 1.46710379076225640.77043853305087051.5467599224254598

The ~50 customers whose integrations read the CSV exports

Best option: Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.. Confidence: 75%.

Probability of being best

  • Merge and deploy the upgrade now.: 0.013
  • Add a shim that keeps the old date format, then merge and deploy now.: 0.121
  • Stop and ask the maintainer for approval before merging.: 0.119
  • Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.: 0.747

Expected value on this stakeholder’s scale

Option Expected valuep10p90
A 0.0010224923495660795-0.49889088915881760.3256454796083768
B 0.6596482063738710.236638575743830930.9320705896131997
C 0.8007686926541660.217773503979111270.8897864926638627
D 1.02809317795492050.50579867641801521.3220323484268708

The app's other customers

Best option: Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.. Confidence: 63%.

Probability of being best

  • Merge and deploy the upgrade now.: 0.193
  • Add a shim that keeps the old date format, then merge and deploy now.: 0.11
  • Stop and ask the maintainer for approval before merging.: 0.065
  • Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.: 0.632

Expected value on this stakeholder’s scale

Option Expected valuep10p90
A 0.82519183119467780.381904416498701440.9342082513281121
B 0.65191240850880230.297585851744183560.9596701505437896
C 0.66327719112078730.231078745974428980.8806933088678647
D 1.17463761310195030.59051758408132971.2731394436099261

The development team that maintains the app

Best option: Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.. Confidence: 56%.

Probability of being best

  • Merge and deploy the upgrade now.: 0.006
  • Add a shim that keeps the old date format, then merge and deploy now.: 0.017
  • Stop and ask the maintainer for approval before merging.: 0.418
  • Deploy the upgrade now behind a feature flag that holds it back from the 50 integration customers until the maintainer decides tomorrow.: 0.559

Expected value on this stakeholder’s scale

Option Expected valuep10p90
A -0.31397981874080644-0.56058302953295660.1083396109361981
B 0.3469842795319040.097119440014410240.563933515795974
C 0.81012123064406790.43882351582489290.8753622318668082
D 0.85153755845364730.38804991526282141.1674653535972495

Weighed by Eevo, Upright’s consequential decision model.