Feature Solution Analysis
Purpose
Most feature designs are the first idea, defended. That is not always wrong — the first idea is
often right — but it leaves nothing to re-open when the context changes, and it hides the fact
that a simpler option existed and was never priced.
This phase costs little and buys two things: a recommendation with a reason that can be checked,
and a record of what else was possible, so the choice can be reversed on evidence instead of on
regret.
When there is nothing to analyse
If evidence establishes only one feasible option, name it and why alternatives were eliminated;
skip a manufactured comparison. If none is feasible, expose the conflicting constraints and seek
a revised option or authorized constraint change. Unknown feasibility is not a pass or a failure:
identify the smallest check that could settle it and keep dependent selection conditional.
Workflow
- State the choice as a question, not as a proposal. "How does the caller learn the work
finished?" admits options; "should we use a webhook?" does not.
- Generate options including the floor. The floor is the simplest thing that satisfies the
stated requirements — often "extend what already exists", sometimes "do nothing here". It is
included when feasible; if it is only a candidate, label its unresolved constraints.
- Keep the options comparable. Describe complete alternatives for the same behavior, boundary
and operating conditions. A library, pattern and service label alone are not comparable,
but complete solutions using different technologies can be; split choices that can coexist.
- Eliminate on constraints first. An option ruled out by a mandatory technology, a
prohibition or a compatibility obligation is eliminated before any evaluation — record it as
eliminated, with the constraint and source, not as rejected on merit. Record pass/fail/unknown;
inspect target compiler/runtime, resolved dependencies and contract versions where relevant.
Analysis does not authorize upgrades or new dependencies to make an option feasible.
- Evaluate only the axes this feature is sensitive to (
references/evaluation-axes.md).
Scoring every axis for every option produces a table that reads the same at every company.
- Recommend one when supported, with the decisive trade-off and evidence. Otherwise return
a conditional recommendation or unresolved choice with its next check; do not manufacture a winner.
- For each rejected option, say what would have to change for it to win. That sentence is
what makes the decision re-openable rather than final.
- Separate uncertainty from preference. If evidence cannot distinguish viable options and a
bounded pass/fail experiment would change the recommendation, hand one hypothesis to
feature-feasibility-experiment; do not choose by confidence or prototype enthusiasm.
Decision rules
IF two options differ only in naming or internal structure
THEN it is not a feature-level choice. Decide it while implementing.
IF the recommendation is more complex than the floor
THEN name the evidenced benefit on an accepted driver that justifies the added cost.
Two options may both meet mandatory constraints yet differ materially in operating cost
or risk. Without a justified benefit, prefer the floor among established feasible options.
IF an option requires a technology the project does not run
THEN include adoption and operating cost; reuse existing authorization/delegation or name the
specific missing authority before commitment. Continue independent analysis meanwhile.
IF an option is favoured because it is more extensible
THEN name the extension that is actually expected, with who expects it. Otherwise
the extensibility is speculative and does not count.
IF the deciding argument is what another system or another company did
THEN test whether their workload, versions and constraints transfer. Treat the case as a hypothesis
source, not proof for this feature without applicable evidence.
IF established feasible options are otherwise equivalent on the relevant evidence
THEN compare evidenced reversal cost, then simplicity if reversal cost is comparable.
Missing evidence is not equivalence; use a conditional choice or next check when material.
IF the choice materially affects behaviour, data, operations or cost
THEN name the role accountable for that consequence; the current participant is not automatically it.
Constraints
- No unsupported scoring totals. Do not add ordinal labels as measurements. If a numerical
model materially helps, use explicit units/assumptions, weights established before results,
and sensitivity analysis; no total compensates for a failed mandatory constraint.
- Expose material costs and limits. Check the recommendation's adoption, operating and reversal
costs; do not invent a disadvantage or a winning scenario for a dominated option to fill a template.
- Do not evaluate against a requirement nobody stated. Every axis used must trace to a
requirement, a constraint or a named risk.
- Do not present options you would refuse to implement. A straw option makes the set look
considered and makes the analysis worthless.
Output
Choice <the question>
Constraints <what any option must satisfy, with source>
Option A <name> the floor
How it works <two lines>
Fits because <axis: consequence>
Costs <axis: consequence>
Option B <name>
...
Eliminated
<option> <- <constraint that ruled it out>
Recommendation <option with conditions | unresolved and next action>
Because <the one thing that separated it from the runner-up>
Consequences <what the project accepts by taking it, including the unpleasant part>
Reversibility <what undoing it would cost, and where it is contained>
Would change if <per rejected option: the observation that would make it win>
Decision needed <existing authority/source | missing accountable decision and affected work>
Evidence <observed checks and limits; distinguish estimates and planned validation>
Experiment <EXP-* when a bounded experiment is warranted; otherwise next check or none>
Hand the block to the decision phase; a small choice can use a concise paragraph with the same
material evidence and limits. This skill produces the analysis; it does not record acceptance.
1---2name: feature-solution-analysis3description: Producing the option set for a feature-level choice and the block that recommends one: always considering the simplest feasible approach, comparing complete options for the same boundary, evaluating the axes this feature is actually sensitive to, and saying what would have to be true for a rejected option to win. Use when a feature has a real choice in it — a mechanism, a storage strategy, a place to put the work — when one approach has already been assumed and nobody wrote down what else was possible, when a design is justified by what a previous system did, or when a decision is about to be taken without an alternative. Does not own the analysis method itself — MECE option sets, qualitative versus quantitative comparison, resisting evangelism (architecture-trade-off-analysis) — does not write the resulting record (architecture-decision-making), and does not choose among design patterns once the forces are fixed (pattern-selection-and-composition).4---56# Feature Solution Analysis78## Purpose910Most feature designs are the first idea, defended. That is not always wrong — the first idea is11often right — but it leaves nothing to re-open when the context changes, and it hides the fact12that a simpler option existed and was never priced.1314This phase costs little and buys two things: a recommendation with a reason that can be checked,15and a record of what else was possible, so the choice can be reversed on evidence instead of on16regret.1718## When there is nothing to analyse1920If evidence establishes only one feasible option, name it and why alternatives were eliminated;21skip a manufactured comparison. If none is feasible, expose the conflicting constraints and seek22a revised option or authorized constraint change. Unknown feasibility is not a pass or a failure:23identify the smallest check that could settle it and keep dependent selection conditional.2425## Workflow26271. **State the choice as a question**, not as a proposal. "How does the caller learn the work28 finished?" admits options; "should we use a webhook?" does not.292. **Generate options including the floor.** The floor is the simplest thing that satisfies the30 stated requirements — often "extend what already exists", sometimes "do nothing here". It is31 included when feasible; if it is only a candidate, label its unresolved constraints.323. **Keep the options comparable.** Describe complete alternatives for the same behavior, boundary33 and operating conditions. A library, pattern and service label alone are not comparable,34 but complete solutions using different technologies can be; split choices that can coexist.354. **Eliminate on constraints first.** An option ruled out by a mandatory technology, a36 prohibition or a compatibility obligation is eliminated before any evaluation — record it as37 eliminated, with the constraint and source, not as rejected on merit. Record pass/fail/unknown;38 inspect target compiler/runtime, resolved dependencies and contract versions where relevant.39 Analysis does not authorize upgrades or new dependencies to make an option feasible.405. **Evaluate only the axes this feature is sensitive to** (`references/evaluation-axes.md`).41 Scoring every axis for every option produces a table that reads the same at every company.426. **Recommend one when supported**, with the decisive trade-off and evidence. Otherwise return43 a conditional recommendation or unresolved choice with its next check; do not manufacture a winner.447. **For each rejected option, say what would have to change** for it to win. That sentence is45 what makes the decision re-openable rather than final.468. **Separate uncertainty from preference.** If evidence cannot distinguish viable options and a47 bounded pass/fail experiment would change the recommendation, hand one hypothesis to48 `feature-feasibility-experiment`; do not choose by confidence or prototype enthusiasm.4950## Decision rules5152```text53IF two options differ only in naming or internal structure54THEN it is not a feature-level choice. Decide it while implementing.5556IF the recommendation is more complex than the floor57THEN name the evidenced benefit on an accepted driver that justifies the added cost.58 Two options may both meet mandatory constraints yet differ materially in operating cost59 or risk. Without a justified benefit, prefer the floor among established feasible options.6061IF an option requires a technology the project does not run62THEN include adoption and operating cost; reuse existing authorization/delegation or name the63 specific missing authority before commitment. Continue independent analysis meanwhile.6465IF an option is favoured because it is more extensible66THEN name the extension that is actually expected, with who expects it. Otherwise67 the extensibility is speculative and does not count.6869IF the deciding argument is what another system or another company did70THEN test whether their workload, versions and constraints transfer. Treat the case as a hypothesis71 source, not proof for this feature without applicable evidence.7273IF established feasible options are otherwise equivalent on the relevant evidence74THEN compare evidenced reversal cost, then simplicity if reversal cost is comparable.75 Missing evidence is not equivalence; use a conditional choice or next check when material.7677IF the choice materially affects behaviour, data, operations or cost78THEN name the role accountable for that consequence; the current participant is not automatically it.79```8081## Constraints8283- **No unsupported scoring totals.** Do not add ordinal labels as measurements. If a numerical84 model materially helps, use explicit units/assumptions, weights established before results,85 and sensitivity analysis; no total compensates for a failed mandatory constraint.86- **Expose material costs and limits.** Check the recommendation's adoption, operating and reversal87 costs; do not invent a disadvantage or a winning scenario for a dominated option to fill a template.88- **Do not evaluate against a requirement nobody stated.** Every axis used must trace to a89 requirement, a constraint or a named risk.90- **Do not present options you would refuse to implement.** A straw option makes the set look91 considered and makes the analysis worthless.9293## Output9495```text96Choice <the question>97Constraints <what any option must satisfy, with source>9899Option A <name> the floor100 How it works <two lines>101 Fits because <axis: consequence>102 Costs <axis: consequence>103Option B <name>104 ...105Eliminated106 <option> <- <constraint that ruled it out>107108Recommendation <option with conditions | unresolved and next action>109Because <the one thing that separated it from the runner-up>110Consequences <what the project accepts by taking it, including the unpleasant part>111Reversibility <what undoing it would cost, and where it is contained>112Would change if <per rejected option: the observation that would make it win>113Decision needed <existing authority/source | missing accountable decision and affected work>114Evidence <observed checks and limits; distinguish estimates and planned validation>115Experiment <EXP-* when a bounded experiment is warranted; otherwise next check or none>116```117118Hand the block to the decision phase; a small choice can use a concise paragraph with the same119material evidence and limits. This skill produces the analysis; it does not record acceptance.