Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Compares 2+ candidate variants under parity discipline and returns a Pareto front (not a scalar winner) — declares the selection policy and parity plan BEFORE scoring, then scores each dimension across all variants in parallel to prevent anchoring bias. Make sure to use this skill whenever the user asks "A or B", "which is better", "compare X and Y", "trade-off between X and Y", "should we pick X or Y", "Pareto for these options", "PostgreSQL vs MySQL", "NATS vs Kafka", "library A vs library B"
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -21% | 0% |
Retrieve current FPF source first. Inspect a known SourceID or UnitID with haft_query(action="fpf", mode="inspect", identifier="..."); otherwise use mode="concern" with the comparison question and inspect the direct pattern body. Query returns source candidates, not a selected governing pattern or verdict.
Treat a concern result's candidate_set as incomplete navigation. Before relying on one candidate, inspect its exact identifier and direct pattern body. Keep several candidates live or abstain when the basis is insufficient. Never query after comparison merely to manufacture support for a verdict already reached.
Declare dimensions, indicator roles, parity, missing-data policy, and selection policy before scoring. Apply the same evidence window and scale to all candidates per dimension. Show constraints, dominated candidates, the Pareto front, uncertainty, weakest links, and evidence that could change the result.
This n-candidate comparison is Haft local practice, not automatically an A.19.CPM actual application or an A.19.SelectorMechanism result. Claim exact FPF conformance only when the current use also preserves each required binary CPM application, pair coverage, token-to-producer trace, claim scope and selected context slices, predicate basis, reference plane, evaluation window, and separate eligibility/output bindings recovered from the direct source.
Inline candidates are sufficient; frame and explore are not prerequisites. Persist only for explicit save intent or a concrete operator-named or agent-inferred receiving use supplied by current Work. A durable typed comparison requires an exact U.EntityRef, bounded context, an already projected portfolio, and independently addressable option Haft.ProjectRecordRef values. Preserve returned record_reference values; never derive them from artifact IDs. Missing references make typed projection underdetermined while the legacy carrier remains durable.
Do not use the legacy selected_ref for an ordinary typed comparison. It is excluded from Haft.PortfolioComparison: a Pareto front is not a winner, ChoiceResult, recommendation, or binding decision.
Other measured skills in the registry, with their headline benchmark lift.