--- name: architecture-tradeoff-analysis description: "Use when: comparing two or more candidate architectures, designs, or technical approaches against weighted quality attributes: performance, consistency and correctness, operability, cost, evolvability, team fit — making what each option worsens explicit before the choice is made." argument-hint: "The candidate options, the quality attributes that matter with any known weights, and the constraints the choice must respect." --- # Architecture Tradeoff Analysis Compare candidate architectures against the quality attributes that actually matter, with every option's costs stated as plainly as its benefits. A comparison where one option has no downsides is advocacy; the downsides exist whether or not they are written down. ## When to Use Use when two or more candidate architectures, designs, or technical approaches need a structured comparison before a decision. Out of scope: recording the decision after it is made (a decision-record activity, not a comparison), single build-vs-adopt dependency decisions judged on maintenance, license, and exit dimensions, inventing candidate options the input does not name beyond the explicit `do-nothing` baseline rule below, running benchmarks or spikes to produce evidence, and product prioritization between features. ## Required Inputs - Two or more candidate options, named in the input. When only one option is supplied, add `do-nothing` (keep the current state) as the baseline second option and say so; if the input explicitly rules the baseline out, emit the BLOCK template asking for a second real option. - The quality attributes that matter for this choice, with weights when supplied. - Constraints the choice must respect (budget, deadline, compliance, existing stack), when supplied. If no options are provided at all, emit the BLOCK template; do not invent candidates. ## Attribute Set Score against the attributes the input names. When the input names none, use this default set: `performance`, `consistency-and-correctness`, `operability`, `cost`, `evolvability`, `team-fit`. The `Attribute set:` header line discloses whether the set was supplied or defaulted and names any dropped default with its one-line reason; add input-specific attributes freely. Weights: use supplied weights verbatim. When none are supplied, mark every attribute `weight: unstated` and do not invent a ranking between attributes. Without weights, recommend only when one option is at least as good on every attribute and better on at least one; otherwise report the per-attribute split and the deciding question. ## Scoring Per option per attribute, assign exactly one of: - `strong`: clearly better than the other options here, with the evidence or reasoning stated. - `adequate`: meets the need; neither differentiator nor risk. - `weak`: materially worse here; the concrete cost is stated. - `unknown`: the input gives no basis to judge; name what evidence would settle it. Every `unknown` cell gets a `### Score rationale` line naming the missing basis and a matching `### Evidence needed` entry naming the cheapest way to settle it. Every option must have at least one `weak` or `unknown` cell, including a `do-nothing` baseline. When every named attribute genuinely scores strong/adequate on evidence, do not corrupt a cell: add the input-specific attribute that carries the option's real cost (every option has one — migration effort, opportunity cost, complexity) and score it there. ## Rules - Score only on evidence or reasoning the input supports; `unknown` is the honest cell, not a failure. - The "what this option makes worse" line per option is mandatory and concrete. - Constraints are pass/fail, not scores: an option that violates a hard constraint is excluded from the recommendation but keeps its normally scored cells in the table; the `eliminated: ` mark lives on its `### Per-option costs` line. - Recommend only when the scores and weights support a recommendation; with unstated weights and split per-attribute outcomes, report the split and the deciding question instead of forcing a winner. - The decision itself belongs to the owner: the output ends with a recommendation or a deciding question, never with "decided". - Evidence gaps that block a responsible choice go under `### Evidence needed`, each with the cheapest way to get the evidence (spike, load test, reference check). ## Output Format ```markdown ## Architecture Tradeoff Analysis - Choice: - Constraints: - Attribute set: , or `none dropped`> - Attributes and weights: - Options: | Attribute |