Skip to content

Verified fixpoint gap matrix

States mean: SUPPORTED is native to the surface; EXPRESSIBLE-WITH-EFFORT requires caller-owned composition or a bounded rebuild loop; NO-HOOK means the inspected balancing surface exposes no hook for that pattern; NOT-APPLICABLE means the API is deliberately a raw assembler rather than a balancing surface; NOT-PROBED means no evidence was obtained. Raw probe evidence is in the adjacent handoff files.

Pattern Cardano Tx Tools (7bfe95b) Evolution SDK (@evolution-sdk/evolution 0.5.12) cardano-cli transaction build (11.0.0.0) cardano-api auto-balance (10.19.1.0)
P1 ordinary fee/change fixpoint SUPPORTED — unit check passed; balanceTx has a bounded loop and FeeNotConverged. SUPPORTEDbuild() exposes selection, change, fee, balance, and evaluation phases. SUPPORTEDtransaction build accepts fixed outputs plus a change address and produces an automatically balanced body. SUPPORTEDmakeTransactionBodyAutoBalance evaluates, fees, and balances a fixed TxBodyContent.
P2 fee-dependent outputs SUPPORTEDbalanceFeeLoop accepts Coin -> ... TxOut and iterates it. EXPRESSIBLE-WITH-EFFORTpayToAddress takes fixed assets, but post-build estimateFee() plus fresh independent build() calls permit an outer loop. NO-HOOK--tx-out ADDRESS VALUE is fixed; the flags expose no recomputation callback. EXPRESSIBLE-WITH-EFFORT — the input body is fixed and the balanced result is inspectable, so reconstruct TxBodyContent and call again.
P3 final-transaction observation hook SUPPORTEDPeek (ConwayTx -> Convergence a) observes candidates and signals Iterate/Ok. NO-HOOKtoTransaction() is only on the completed result; internal PhaseContext is not a public observation/re-entry callback. NO-HOOK--out-file writes the completed body; no callback or re-entry flag exists. NO-HOOK — the signature accepts fixed content and returns BalancedTxBody; it has no candidate callback.
P4 recursive redeemer/min-UTxO value SUPPORTED — passing MinUtxoSpec proves payTo -> peek observeTxOutCoin -> spendScript; full build closes fee/ExUnits recursion. EXPRESSIBLE-WITH-EFFORT — redeemer callbacks see only indexed inputs; inspect the built tx and reconstruct in an outer loop for final-output values. NO-HOOK — redeemer values/files are fixed command inputs and cannot read the body being built. EXPRESSIBLE-WITH-EFFORT — provide a recomputed fixed redeemer in a fresh TxBodyContent on each bounded outer iteration.
Pattern Cardano Serialization Lib (17.0.0) Pallas txbuilder (1.1.1) cardano-client-lib (0.8.0-pre5) Scalus (1.0.0)
P1 ordinary fee/change fixpoint SUPPORTEDadd_change_if_needed computes fee and change after fixed body fields are supplied. NOT-APPLICABLEbuild_conway_raw explicitly performs no balancing or fee/ExUnits calculation. SUPPORTEDbalanceTx composes fee calculation and change adjustment. SUPPORTEDcomplete and bounded balanceFeeAndChangeWithTokens select inputs, calculate fee, and adjust change.
P2 fee-dependent outputs EXPRESSIBLE-WITH-EFFORT — mutable set_fee, min_fee, and build permit an external bounded rebuild loop, but no output callback exists. NOT-APPLICABLE — raw construction requires the caller to provide the whole balancing algorithm. SUPPORTEDfeeCalculator(..., UpdateOutputFunction) passes the fee and mutable output list to application code. SUPPORTED — the internal balance loop invokes DiffHandler(Value, Transaction) for every fee-bearing candidate.
P3 final-transaction observation hook NO-HOOKbuild returns a body/transaction but no during-balance observation or re-entry callback exists. NOT-APPLICABLE — no balancing loop exists to observe or re-enter. SUPPORTED — any composable TxBuilder lambda receives the assembled mutable Transaction and context. SUPPORTEDDiffHandler receives the candidate Transaction inside the bounded balance loop and returns the next candidate.
P4 recursive redeemer/min-UTxO value EXPRESSIBLE-WITH-EFFORT — rebuild after inspecting build_tx, replacing the fixed redeemer/output and fee on each bounded pass. NOT-APPLICABLE — fixed raw redeemers and outputs are inputs to an assembler, not a recursive builder. EXPRESSIBLE-WITH-EFFORT — compose a transaction-transforming lambda with explicit bounded rebalance passes; no convergence abstraction was found. EXPRESSIBLE-WITH-EFFORT — delayed redeemers run before min-UTxO/fee balancing; recompute through a custom DiffHandler during its bounded loop.

Counts: SUPPORTED 14, EXPRESSIBLE-WITH-EFFORT 8, NO-HOOK 6, NOT-APPLICABLE 4, NOT-PROBED 0 (32 cells total).

Cardano Tx Tools E2E checks were skipped because they require a live node; its pure unit check, including BuildSpec and MinUtxoSpec, completed successfully. Evolution P1 was established by installed API inspection because the release did not include a provider-free payment fixture suitable for a small runtime probe.

Mesh SDK fixpoint gap column

Probe: @meshsdk/core 1.9.1. Raw installed-API evidence is in mesh-sdk.txt. States use the definitions from probe-1's gap matrix.

Pattern Mesh SDK (@meshsdk/core 1.9.1)
P1 ordinary fee/change fixpoint SUPPORTEDcomplete() sanitizes outputs, selects inputs, evaluates redeemers, and updates fee/change before returning CBOR.
P2 fee-dependent outputs EXPRESSIBLE-WITH-EFFORTtxOut takes fixed assets, but completed meshTxBuilderBody.fee/CBOR can drive a fresh-builder outer loop.
P3 final-transaction observation hook NO-HOOK — internal selection callbacks are not application hooks; the public API returns CBOR only after completion.
P4 recursive redeemer/min-UTxO value EXPRESSIBLE-WITH-EFFORT — redeemer methods take fixed data; inspect the completed body, recompute, and reconstruct within an external bound.

Updated totals across nine surfaces (36 cells): SUPPORTED 15, EXPRESSIBLE-WITH-EFFORT 10, NO-HOOK 7, NOT-APPLICABLE 4, NOT-PROBED 0.