Skip to the content.

Generation Future Real-Options Model

Issue: #1666. Stream: gen/future. Status: research memo / scoring model for future-generation issues.

This page gives a future agent the valuation model needed to decide whether a gen/future issue should be carried, exercised, or retired, without rereading the generation epic (#1625).

Core Rule

A gen/future issue is an option, not a backlog entry. The fleet holds the right, but not the obligation, to invest in the direction later. Keeping that right open costs something; exercising it requires evidence. This model makes both explicit so the future lane pays its carry deliberately instead of accumulating permanently-parked bets (the anti-pattern docs/generation.md already names).

The model is a disposition model, not a priority model. Priority still answers how valuable or urgent an item is. Shared trunk still requires one main, explicit-path commits, and witnessed closes. Runtime feature gates still decide whether shipped code is visible. Real-options valuation answers a different question: given what we know now, is it still worth paying carry to keep this future option open, or has the evidence moved enough to exercise, demote, or retire it?

Generation stays orthogonal under this model in three ways:

Do not solve carry pressure with generation branches, hidden worktrees, or ungated runtime exposure.

Option Variables

Each gen/future issue is described by six variables. They are estimated ordinally (better/worse, cheaper/dearer), not cardinally: these are not tradeable assets and no honest cardinal price exists.

Symbol Name What it measures Source
V underlying value the decision, product, or market value if exercised with current evidence the issue’s ## Why; sharpened at each recheck
X exercise cost cost to promote and build: engineering, gate, dogfood, review capacity leaf tier + docs/generation-agent-capacity-model.md
C carry cost cost to keep the option open per recheck cycle: attention, recheck overhead, report tax, context pollution named explicitly below
σ uncertainty how much V could move before the decision window closes count of open assumptions / invalidating-assumption lines
T time to decision horizon until the option must be exercised, promoted, or retired the recheck cadence / market window
S strike evidence the witness condition that makes exercise rational the issue’s promotion criteria

Carry cost in detail

C is the variable #1666 explicitly asks to be valued. It is the price of not deciding. It compounds each recheck cycle an option stays open:

C_accumulated(issue) = sum of per-cycle carry across rechecks since intake

Carry is denominated in the scarce resources the capacity model already names:

A future issue with no named carry cost is not free; it has simply externalized its carry onto the lane. The model refuses that: every carried option states its C.

Disposition Rules

The six variables fold into one of four dispositions. This is the scoring surface — it produces a verb, not a number.

Disposition Promotion verb Fires when
exercise promote S has fired, V − X − C_accumulated is positive, and σ has fallen enough to commit. Move toward now/next.
hold park C is affordable, σ is high, T is open, S not yet fired. Keep open; recheck on the named cadence.
retire retire C_accumulated ≥ V, or S is structurally unreachable (an invalidating assumption fired), or a nearer stream superseded it.
hedge demote σ fell but V fell with it; keep as context but move to a cheaper/deeper carry tier.

The economically load-bearing rule is retire on accumulated carry. An option that never exercises and never dies is not a free option; it is a leak in the carry budget. The retirement disposition is what stops gen/future from becoming a graveyard of undead bets.

Carry budget

The gen/future lane has a finite carry budget. The sum of per-issue C across the lane must stay under it, or the lowest value-per-carry options retire first. Concretely:

if  Σ C(issue) over open gen/future issues  >  carry_budget:
        retire the issues with the lowest  V / C_accumulated
        until the lane is back under budget

carry_budget is set by operator judgement against the attention/recheck capacity the lane actually has; it is not a fixed number. The discipline is that the budget exists and that retirement is the release valve, not that the number is precise.

Exercise trigger contract

Every gen/future issue should name three things for the model to apply. These are the same three things the issue template already asks for; the model just makes them first-class rather than incidental:

  1. Strike witness S — the concrete evidence (test, command, benchmark, market signal, standards shift) that would make exercise rational.
  2. Recheck cadence — when carry C is next paid and the variables are re-estimated. A future issue with no recheck date is permanently parked, which is itself a retirement signal.
  3. Kill condition — which named invalidating assumption, if it fires, retires the option immediately rather than waiting for the next recheck.

Worked Example

A hypothetical gen/future issue: “Research whether fak should expose a hosted multi-tenant gateway as a product surface.”

Disposition today: hold. Carry is affordable, uncertainty is high, the strike has not fired. Recheck quarterly. Retire if the isolation proof cannot be strengthened within two recheck cycles (kill condition), or if C_accumulated exceeds the expected decision value before the strike fires.

This is the shape a gen/future memo should have: variables named, a disposition, a recheck date, and a kill condition.

Relationship To Existing Surfaces

This model composes with, and does not duplicate, the existing generation surfaces:

Promotion And Retirement Evidence

Promotion (exercise) evidence for this model is a re-estimation readout:

Demotion or retirement evidence is equally concrete:

Do not promote, demote, or retire by changing labels alone. Name the variable that moved and the witness that moved it.

Invalidating Assumptions

This model depends on these assumptions:

If these assumptions fail, replace the model with the stronger measured surface. Do not keep ordinal option math as an operator-facing fact once its inputs have stopped being honest.

Future Implementation Hooks

Reasonable next slices, each a separate issue:

Use docs/generation.md for the contract, docs/generation-agent-capacity-model.md for the capacity envelope, and docs/generation-loop-scheduling.md for admission and conflict arbitration.