Home / IntersectMBO / cardano-cli
May 12, 6-7 PM (0)
May 12, 7-8 PM (0)
May 12, 8-9 PM (1)
May 12, 9-10 PM (0)
May 12, 10-11 PM (0)
May 12, 11-12 AM (0)
May 13, 12-1 AM (0)
May 13, 1-2 AM (0)
May 13, 2-3 AM (0)
May 13, 3-4 AM (0)
May 13, 4-5 AM (0)
May 13, 5-6 AM (0)
May 13, 6-7 AM (0)
May 13, 7-8 AM (0)
May 13, 8-9 AM (0)
May 13, 9-10 AM (0)
May 13, 10-11 AM (0)
May 13, 11-12 PM (0)
May 13, 12-1 PM (0)
May 13, 1-2 PM (0)
May 13, 2-3 PM (0)
May 13, 3-4 PM (1)
May 13, 4-5 PM (1)
May 13, 5-6 PM (0)
May 13, 6-7 PM (0)
May 13, 7-8 PM (0)
May 13, 8-9 PM (0)
May 13, 9-10 PM (0)
May 13, 10-11 PM (0)
May 13, 11-12 AM (0)
May 14, 12-1 AM (0)
May 14, 1-2 AM (0)
May 14, 2-3 AM (0)
May 14, 3-4 AM (0)
May 14, 4-5 AM (0)
May 14, 5-6 AM (0)
May 14, 6-7 AM (0)
May 14, 7-8 AM (0)
May 14, 8-9 AM (0)
May 14, 9-10 AM (0)
May 14, 10-11 AM (0)
May 14, 11-12 PM (0)
May 14, 12-1 PM (0)
May 14, 1-2 PM (0)
May 14, 2-3 PM (0)
May 14, 3-4 PM (0)
May 14, 4-5 PM (0)
May 14, 5-6 PM (0)
May 14, 6-7 PM (1)
May 14, 7-8 PM (0)
May 14, 8-9 PM (2)
May 14, 9-10 PM (0)
May 14, 10-11 PM (1)
May 14, 11-12 AM (0)
May 15, 12-1 AM (0)
May 15, 1-2 AM (0)
May 15, 2-3 AM (0)
May 15, 3-4 AM (0)
May 15, 4-5 AM (0)
May 15, 5-6 AM (0)
May 15, 6-7 AM (0)
May 15, 7-8 AM (0)
May 15, 8-9 AM (0)
May 15, 9-10 AM (0)
May 15, 10-11 AM (0)
May 15, 11-12 PM (1)
May 15, 12-1 PM (1)
May 15, 1-2 PM (0)
May 15, 2-3 PM (1)
May 15, 3-4 PM (0)
May 15, 4-5 PM (0)
May 15, 5-6 PM (1)
May 15, 6-7 PM (1)
May 15, 7-8 PM (0)
May 15, 8-9 PM (0)
May 15, 9-10 PM (0)
May 15, 10-11 PM (0)
May 15, 11-12 AM (0)
May 16, 12-1 AM (0)
May 16, 1-2 AM (0)
May 16, 2-3 AM (0)
May 16, 3-4 AM (0)
May 16, 4-5 AM (0)
May 16, 5-6 AM (0)
May 16, 6-7 AM (0)
May 16, 7-8 AM (0)
May 16, 8-9 AM (0)
May 16, 9-10 AM (0)
May 16, 10-11 AM (0)
May 16, 11-12 PM (0)
May 16, 12-1 PM (0)
May 16, 1-2 PM (0)
May 16, 2-3 PM (0)
May 16, 3-4 PM (0)
May 16, 4-5 PM (0)
May 16, 5-6 PM (0)
May 16, 6-7 PM (0)
May 16, 7-8 PM (0)
May 16, 8-9 PM (0)
May 16, 9-10 PM (0)
May 16, 10-11 PM (0)
May 16, 11-12 AM (0)
May 17, 12-1 AM (0)
May 17, 1-2 AM (0)
May 17, 2-3 AM (0)
May 17, 3-4 AM (0)
May 17, 4-5 AM (0)
May 17, 5-6 AM (0)
May 17, 6-7 AM (0)
May 17, 7-8 AM (0)
May 17, 8-9 AM (0)
May 17, 9-10 AM (0)
May 17, 10-11 AM (0)
May 17, 11-12 PM (0)
May 17, 12-1 PM (0)
May 17, 1-2 PM (0)
May 17, 2-3 PM (0)
May 17, 3-4 PM (0)
May 17, 4-5 PM (0)
May 17, 5-6 PM (0)
May 17, 6-7 PM (0)
May 17, 7-8 PM (0)
May 17, 8-9 PM (0)
May 17, 9-10 PM (0)
May 17, 10-11 PM (0)
May 17, 11-12 AM (0)
May 18, 12-1 AM (0)
May 18, 1-2 AM (0)
May 18, 2-3 AM (0)
May 18, 3-4 AM (0)
May 18, 4-5 AM (0)
May 18, 5-6 AM (0)
May 18, 6-7 AM (0)
May 18, 7-8 AM (0)
May 18, 8-9 AM (0)
May 18, 9-10 AM (0)
May 18, 10-11 AM (0)
May 18, 11-12 PM (0)
May 18, 12-1 PM (0)
May 18, 1-2 PM (6)
May 18, 2-3 PM (0)
May 18, 3-4 PM (0)
May 18, 4-5 PM (0)
May 18, 5-6 PM (0)
May 18, 6-7 PM (1)
May 18, 7-8 PM (1)
May 18, 8-9 PM (0)
May 18, 9-10 PM (0)
May 18, 10-11 PM (0)
May 18, 11-12 AM (0)
May 19, 12-1 AM (0)
May 19, 1-2 AM (0)
May 19, 2-3 AM (0)
May 19, 3-4 AM (0)
May 19, 4-5 AM (0)
May 19, 5-6 AM (0)
May 19, 6-7 AM (0)
May 19, 7-8 AM (0)
May 19, 8-9 AM (0)
May 19, 9-10 AM (0)
May 19, 10-11 AM (0)
May 19, 11-12 PM (0)
May 19, 12-1 PM (0)
May 19, 1-2 PM (12)
May 19, 2-3 PM (0)
May 19, 3-4 PM (0)
May 19, 4-5 PM (1)
May 19, 5-6 PM (0)
May 19, 6-7 PM (0)
33 commits this week May 12, 2026 - May 19, 2026
Migrate to cardano-api 11.2.0.0 Certificate API
cardano-api #1210 removed the legacy 'Cardano.Api.Certificate' module
and stopped re-exporting Certificate-construction helpers from
'Cardano.Api'. Migrate cardano-cli to import the relevant types
('StakePoolRelay', 'StakePoolMetadataReference', 'StakePoolMetadata',
'DRepMetadata', 'KESPeriod', 'OperationalCertificate',
'OperationalCertificateIssueCounter', 'PoolId', 'StakePoolParameters',
helpers like 'issueOperationalCertificate', 'validateAndHashStakePoolMetadata',
'toShelleyPoolParams', 'hashDRepMetadata', 'getKesPeriod', 'getOpCertCount',
data instances 'Hash StakePoolMetadataHash' / 'Hash DRepMetadataHash',
'AsType AsOperationalCertificate' / 'AsType AsOperationalCertificateIssueCounter',
'MIRPot') from 'Cardano.Api.Experimental.Certificate' or
'Cardano.Api.Compatible.Certificate' as appropriate.

Drops vacuous 'hiding (make*Certificate)' / 'hiding (Certificate)'
clauses that referenced names no longer re-exported from 'Cardano.Api',
which had become '-Wdodgy-imports' errors under '-Werror'. Removes the
redundant 'Cardano.Ledger.Core' qualified import from
'Cardano.CLI.Read' that became unused after the cardano-api re-export
narrowing.
Migrate to experimental TxOut in createCompatibleTx
Adapt to cardano-api PR #1209, which removes the legacy 'TxOut CtxTx era'
from the Compatible and Experimental APIs:

  * 'createCompatibleTx' now takes '[Exp.TxOut (ShelleyLedgerEra era)]'
    plus a new 'Map L.DataHash (L.Data ...)' argument carrying any
    supplemental datum bodies. The legacy 'TxOut CtxTx era' bundled
    supplemental datums inside outputs; 'Exp.TxOut' only carries the
    datum hash, so callers thread the full datum bodies in explicitly.
  * The bridge helpers 'fromLegacyTxOut', 'legacyDatumToDatum',
    'supplementalDatumFromLegacy', 'toLedgerDatum', and the
    'DatumDecodingError' type are deleted from 'Cardano.Api.Experimental.Tx'.

Migration:

  * 'mkTxOut' and 'toTxOutInAnyEra' now return
    '(Exp.TxOut (ShelleyLedgerEra era), Map DataHash (L.Data ...))'
    directly, building the legacy 'TxOut CtxTx era' internally only as
    a stepping stone for 'toShelleyTxOutAny'.
  * 'createCompatibleTx' call site in 'Compatible/Transaction/Run.hs'
    folds the per-output supplemental datums via 'Map.unions' and
    passes them as the new argument.
  * 'toTxOutInEra' and 'toTxOutInShelleyBasedEra' in
    'EraBased/Transaction/Run.hs' delegate directly to 'mkTxOut' (the
    deleted 'fromLegacyTxOut' is gone).
  * 'TxCmdDatumDecodingError' is removed since the underlying
    'Exp.DatumDecodingError' is gone and the new conversion is total.
Remove non-Byron TxOut CtxTx/CtxUTxO usage from cardano-cli
Eliminate the legacy 'TxOut CtxTx era' and 'TxOut CtxUTxO era' type
signatures and pattern matches from cardano-cli's non-Byron code paths.
Byron-era code uses a separate pre-Shelley tx output model and is left
alone — 'Exp.TxOut' is not applicable there.

  * 'friendlyTxOut' in 'Compatible/Json/Friendly.hs' now takes
    'Exp.TxOut (LedgerEra era)' and reads address, value, and
    reference script directly via the ledger lenses ('addrTxOutL',
    'valueTxOutL', 'referenceScriptTxOutL'). The two call sites
    ('basePairs', 'friendlyReturnCollateral') wrap the body's ledger
    outputs with 'Exp.TxOut' instead of going through
    'fromShelleyTxOut → fromCtxUTxOTxOut'. The dead 'friendlyTxOutValue'
    helper is dropped.

  * 'filteredUTxOsToText' in 'EraBased/Query/Run.hs' now takes a
    'ShelleyBasedEra era' witness, converts the api 'UTxO era' to the
    ledger UTxO once via 'toLedgerUTxO', then renders each entry from
    '(TxIn, Exp.TxOut (ShelleyLedgerEra era))' using ledger lenses.
    The pre-Babbage datum slot has no uniform ledger representation,
    so the renderer emits an empty placeholder there and shows the
    babbage+ ledger datum elsewhere — debug-style output, no golden
    tests touched.

  * Removed 'validateTxReturnCollateral' from
    'Type/Error/TxValidationError.hs'. It was exported but never
    called outside its own module; the actual return-collateral
    construction in 'EraBased/Transaction/Run' builds
    'Exp.TxReturnCollateral' directly.

Remaining uses of legacy ctx-typed tx outputs in cardano-cli are
confined to Byron-only modules.
Migrate IncompleteTxBody and transaction commands to Exp.UnsignedTx
Drops the last remaining uses of the deprecated old-API transaction
body surface (`TxBody`, `getTxBody`, `getTxBodyAndWitnesses`,
`makeShelleyKeyWitness`, `makeSignedTransaction`,
`evaluateTransactionExecutionUnits` on a deprecated `TxBody`,
`getTxId . getTxBody`) from cardano-cli's source tree.

`IncompleteTxBody` is reworked from a `newtype` wrapping
`InAnyShelleyBasedEra TxBody` into a GADT existential carrying
`Exp.UnsignedTx (ShelleyLedgerEra era)` plus `IsShelleyBasedEra`
evidence. `readFileTxBody` pattern-matches `ShelleyTx _ ledgerTx`
directly and wraps as `Exp.UnsignedTx ledgerTx` — no `getTxBody`.

Consumers in `Transaction.Run` are migrated to:
- `makeShelleyKeyWitness'` (ledger-level body) and `addWitnesses` for
  signing — both non-deprecated and work for all Shelley-based eras,
  preserving pre-Conway support.
- `getTxIdShelley` for transaction IDs.
- `evaluateTransactionExecutionUnitsShelley` (operates on the ledger
  `Tx` directly) for `transaction calculate-plutus-script-cost`,
  preserving Alonzo+ era support.
- `Exp.evaluateTransactionFee` on `Exp.UnsignedTx` for
  `transaction calculate-min-fee` (already Conway+ via `sbeToEra`).

`TransactionView.Run` no longer needs the
`makeSignedTransaction []`-then-extract-ledger boundary that PR #1374
added — the new `readFileTxBody` returns `Exp.UnsignedTx` directly.

The TextEnvelope I/O boundary still uses `Tx era` and `ShelleyTx _`
(both non-deprecated), since `Exp.UnsignedTx`/`Exp.SignedTx` have no
`HasTextEnvelope` instance. The on-disk `.tx`/`.txbody` formats are
unchanged.

The compatible command path (`Cardano.CLI.Compatible.Transaction.Run`)
was already using non-deprecated symbols (`makeShelleyKeyWitness'`,
`addWitnesses`) and is unchanged by this commit.
Drop deprecated TxBody from TxBodyFile phantom
`TxBodyFile` was a `File (TxBody ())` whose phantom payload was only
ever used as a file-tag for option/parser plumbing; the bytes on disk
do not depend on it. Replace `TxBody ()` with a fresh empty
`TxBodyTag` data type so the alias no longer references the deprecated
`TxBody` from cardano-api PR #1200.

No on-disk format change. No call-site change beyond the alias itself.
Bump cardano-api to 11.2.0.0
cardano-api 11.2.0.0 is published to CHaP. Bump the
cardano-haskell-packages index-state past the publish
(2026-05-18T18:23:40Z), bump the cardano-cli cabal dep from ^>=11.1
to ^>=11.2, and bump the CHaP flake input accordingly.

11.2.0.0 introduces breaking changes that subsequent commits in this
PR migrate cardano-cli to: legacy TxOut removed (cardano-api #1209),
legacy Certificate type removed (#1210), and TxBody/TxBodyContent
deprecated (#1200).
Migrate to cardano-api 11.2.0.0 Certificate API
cardano-api #1210 removed the legacy 'Cardano.Api.Certificate' module
and stopped re-exporting Certificate-construction helpers from
'Cardano.Api'. Migrate cardano-cli to import the relevant types
('StakePoolRelay', 'StakePoolMetadataReference', 'StakePoolMetadata',
'DRepMetadata', 'KESPeriod', 'OperationalCertificate',
'OperationalCertificateIssueCounter', 'PoolId', 'StakePoolParameters',
helpers like 'issueOperationalCertificate', 'validateAndHashStakePoolMetadata',
'toShelleyPoolParams', 'hashDRepMetadata', 'getKesPeriod', 'getOpCertCount',
data instances 'Hash StakePoolMetadataHash' / 'Hash DRepMetadataHash',
'AsType AsOperationalCertificate' / 'AsType AsOperationalCertificateIssueCounter',
'MIRPot') from 'Cardano.Api.Experimental.Certificate' or
'Cardano.Api.Compatible.Certificate' as appropriate.

Drops vacuous 'hiding (make*Certificate)' / 'hiding (Certificate)'
clauses that referenced names no longer re-exported from 'Cardano.Api',
which had become '-Wdodgy-imports' errors under '-Werror'. Removes the
redundant 'Cardano.Ledger.Core' qualified import from
'Cardano.CLI.Read' that became unused after the cardano-api re-export
narrowing.
Migrate to experimental TxOut in createCompatibleTx
Adapt to cardano-api PR #1209, which removes the legacy 'TxOut CtxTx era'
from the Compatible and Experimental APIs:

  * 'createCompatibleTx' now takes '[Exp.TxOut (ShelleyLedgerEra era)]'
    plus a new 'Map L.DataHash (L.Data ...)' argument carrying any
    supplemental datum bodies. The legacy 'TxOut CtxTx era' bundled
    supplemental datums inside outputs; 'Exp.TxOut' only carries the
    datum hash, so callers thread the full datum bodies in explicitly.
  * The bridge helpers 'fromLegacyTxOut', 'legacyDatumToDatum',
    'supplementalDatumFromLegacy', 'toLedgerDatum', and the
    'DatumDecodingError' type are deleted from 'Cardano.Api.Experimental.Tx'.

Migration:

  * 'mkTxOut' and 'toTxOutInAnyEra' now return
    '(Exp.TxOut (ShelleyLedgerEra era), Map DataHash (L.Data ...))'
    directly, building the legacy 'TxOut CtxTx era' internally only as
    a stepping stone for 'toShelleyTxOutAny'.
  * 'createCompatibleTx' call site in 'Compatible/Transaction/Run.hs'
    folds the per-output supplemental datums via 'Map.unions' and
    passes them as the new argument.
  * 'toTxOutInEra' and 'toTxOutInShelleyBasedEra' in
    'EraBased/Transaction/Run.hs' delegate directly to 'mkTxOut' (the
    deleted 'fromLegacyTxOut' is gone).
  * 'TxCmdDatumDecodingError' is removed since the underlying
    'Exp.DatumDecodingError' is gone and the new conversion is total.

Temporary 'cabal.project' additions (to be removed once #1209 is
merged and the next cardano-api is published to CHaP):

  * 'source-repository-package' pointing at the PR branch so CI can
    build against the unpublished API.
  * Per-package '-Wwarn=deprecations -Wwarn=unused-imports' for
    cardano-cli. The PR branch is several commits ahead of
    cardano-api-11.1.0.0 and surfaces unrelated TxBody/TxBodyContent
    deprecations (cardano-api PR #1200) plus a redundant
    'Cardano.Ledger.Core' import in 'Cardano.CLI.Read' that became
    visible after upstream re-exports widened. Both are separate
    cleanups out of scope for this PR.
Remove non-Byron TxOut CtxTx/CtxUTxO usage from cardano-cli
Eliminate the legacy 'TxOut CtxTx era' and 'TxOut CtxUTxO era' type
signatures and pattern matches from cardano-cli's non-Byron code paths.
Byron-era code uses a separate pre-Shelley tx output model and is left
alone — 'Exp.TxOut' is not applicable there.

  * 'friendlyTxOut' in 'Compatible/Json/Friendly.hs' now takes
    'Exp.TxOut (LedgerEra era)' and reads address, value, and
    reference script directly via the ledger lenses ('addrTxOutL',
    'valueTxOutL', 'referenceScriptTxOutL'). The two call sites
    ('basePairs', 'friendlyReturnCollateral') wrap the body's ledger
    outputs with 'Exp.TxOut' instead of going through
    'fromShelleyTxOut → fromCtxUTxOTxOut'. The dead 'friendlyTxOutValue'
    helper is dropped.

  * 'filteredUTxOsToText' in 'EraBased/Query/Run.hs' now takes a
    'ShelleyBasedEra era' witness, converts the api 'UTxO era' to the
    ledger UTxO once via 'toLedgerUTxO', then renders each entry from
    '(TxIn, Exp.TxOut (ShelleyLedgerEra era))' using ledger lenses.
    The pre-Babbage datum slot has no uniform ledger representation,
    so the renderer emits an empty placeholder there and shows the
    babbage+ ledger datum elsewhere — debug-style output, no golden
    tests touched.

  * Removed 'validateTxReturnCollateral' from
    'Type/Error/TxValidationError.hs'. It was exported but never
    called outside its own module; the actual return-collateral
    construction in 'EraBased/Transaction/Run' builds
    'Exp.TxReturnCollateral' directly.

Remaining uses of legacy ctx-typed tx outputs in cardano-cli are
confined to Byron-only modules.
Migrate to cardano-api 11.2.0.0 Certificate API
cardano-api #1210 removed the legacy 'Cardano.Api.Certificate' module
and stopped re-exporting Certificate-construction helpers from
'Cardano.Api'. Migrate cardano-cli to import the relevant types
('StakePoolRelay', 'StakePoolMetadataReference', 'StakePoolMetadata',
'DRepMetadata', 'KESPeriod', 'OperationalCertificate',
'OperationalCertificateIssueCounter', 'PoolId', 'StakePoolParameters',
helpers like 'issueOperationalCertificate', 'validateAndHashStakePoolMetadata',
'toShelleyPoolParams', 'hashDRepMetadata', 'getKesPeriod', 'getOpCertCount',
data instances 'Hash StakePoolMetadataHash' / 'Hash DRepMetadataHash',
'AsType AsOperationalCertificate' / 'AsType AsOperationalCertificateIssueCounter',
'MIRPot') from 'Cardano.Api.Experimental.Certificate' or
'Cardano.Api.Compatible.Certificate' as appropriate.

Drops vacuous 'hiding (make*Certificate)' / 'hiding (Certificate)'
clauses that referenced names no longer re-exported from 'Cardano.Api',
which had become '-Wdodgy-imports' errors under '-Werror'. Removes the
redundant 'Cardano.Ledger.Core' qualified import from
'Cardano.CLI.Read' that became unused after the cardano-api re-export
narrowing.
Remove non-Byron TxOut CtxTx/CtxUTxO usage from cardano-cli
Eliminate the legacy 'TxOut CtxTx era' and 'TxOut CtxUTxO era' type
signatures and pattern matches from cardano-cli's non-Byron code paths.
Byron-era code uses a separate pre-Shelley tx output model and is left
alone — 'Exp.TxOut' is not applicable there.

  * 'friendlyTxOut' in 'Compatible/Json/Friendly.hs' now takes
    'Exp.TxOut (LedgerEra era)' and reads address, value, datum, and
    reference script directly via the ledger lenses ('addrTxOutL',
    'valueTxOutL', 'datumTxOutL', 'referenceScriptTxOutL'). The two
    call sites ('basePairs', 'friendlyReturnCollateral') wrap the
    body's ledger outputs with 'Exp.TxOut' instead of going through
    'fromShelleyTxOut → fromCtxUTxOTxOut'. The dead 'friendlyTxOutValue'
    helper is dropped.

  * 'filteredUTxOsToText' in 'EraBased/Query/Run.hs' now takes a
    'ShelleyBasedEra era' witness, converts the api 'UTxO era' to the
    ledger UTxO once via 'toLedgerUTxO', then renders each entry from
    '(TxIn, Exp.TxOut (ShelleyLedgerEra era))' using ledger lenses.
    The pre-Babbage datum slot has no uniform ledger representation,
    so the renderer emits an empty placeholder there and shows the
    babbage+ ledger datum elsewhere — debug-style output, no golden
    tests touched.

  * Removed 'validateTxReturnCollateral' from
    'Type/Error/TxValidationError.hs'. It was exported but never
    called outside its own module; the actual return-collateral
    construction in 'EraBased/Transaction/Run' builds
    'Exp.TxReturnCollateral' directly.

Remaining uses of legacy ctx-typed tx outputs in cardano-cli are
confined to Byron-only modules.
Migrate IncompleteTxBody and transaction commands to Exp.UnsignedTx
Drops the last remaining uses of the deprecated old-API transaction
body surface (`TxBody`, `getTxBody`, `getTxBodyAndWitnesses`,
`makeShelleyKeyWitness`, `makeSignedTransaction`,
`evaluateTransactionExecutionUnits` on a deprecated `TxBody`,
`getTxId . getTxBody`) from cardano-cli's source tree.

`IncompleteTxBody` is reworked from a `newtype` wrapping
`InAnyShelleyBasedEra TxBody` into a GADT existential carrying
`Exp.UnsignedTx (ShelleyLedgerEra era)` plus `IsShelleyBasedEra`
evidence. `readFileTxBody` pattern-matches `ShelleyTx _ ledgerTx`
directly and wraps as `Exp.UnsignedTx ledgerTx` — no `getTxBody`.

Consumers in `Transaction.Run` are migrated to:
- `makeShelleyKeyWitness'` (ledger-level body) and `addWitnesses` for
  signing — both non-deprecated and work for all Shelley-based eras,
  preserving pre-Conway support.
- `getTxIdShelley` for transaction IDs.
- `evaluateTransactionExecutionUnitsShelley` (operates on the ledger
  `Tx` directly) for `transaction calculate-plutus-script-cost`,
  preserving Alonzo+ era support.
- `Exp.evaluateTransactionFee` on `Exp.UnsignedTx` for
  `transaction calculate-min-fee` (already Conway+ via `sbeToEra`).

`TransactionView.Run` no longer needs the
`makeSignedTransaction []`-then-extract-ledger boundary that PR #1374
added — the new `readFileTxBody` returns `Exp.UnsignedTx` directly.

The TextEnvelope I/O boundary still uses `Tx era` and `ShelleyTx _`
(both non-deprecated), since `Exp.UnsignedTx`/`Exp.SignedTx` have no
`HasTextEnvelope` instance. The on-disk `.tx`/`.txbody` formats are
unchanged.

The compatible command path (`Cardano.CLI.Compatible.Transaction.Run`)
was already using non-deprecated symbols (`makeShelleyKeyWitness'`,
`addWitnesses`) and is unchanged by this commit.
Migrate to experimental TxOut in createCompatibleTx
Adapt to cardano-api PR #1209, which removes the legacy 'TxOut CtxTx era'
from the Compatible and Experimental APIs:

  * 'createCompatibleTx' now takes '[Exp.TxOut (ShelleyLedgerEra era)]'
    plus a new 'Map L.DataHash (L.Data ...)' argument carrying any
    supplemental datum bodies. The legacy 'TxOut CtxTx era' bundled
    supplemental datums inside outputs; 'Exp.TxOut' only carries the
    datum hash, so callers thread the full datum bodies in explicitly.
  * The bridge helpers 'fromLegacyTxOut', 'legacyDatumToDatum',
    'supplementalDatumFromLegacy', 'toLedgerDatum', and the
    'DatumDecodingError' type are deleted from 'Cardano.Api.Experimental.Tx'.

Migration:

  * 'mkTxOut' and 'toTxOutInAnyEra' now return
    '(Exp.TxOut (ShelleyLedgerEra era), Map DataHash (L.Data ...))'
    directly, building the legacy 'TxOut CtxTx era' internally only as
    a stepping stone for 'toShelleyTxOutAny'.
  * 'createCompatibleTx' call site in 'Compatible/Transaction/Run.hs'
    folds the per-output supplemental datums via 'Map.unions' and
    passes them as the new argument.
  * 'toTxOutInEra' and 'toTxOutInShelleyBasedEra' in
    'EraBased/Transaction/Run.hs' delegate directly to 'mkTxOut' (the
    deleted 'fromLegacyTxOut' is gone).
  * 'TxCmdDatumDecodingError' is removed since the underlying
    'Exp.DatumDecodingError' is gone and the new conversion is total.

Temporary 'cabal.project' additions (to be removed once #1209 is
merged and the next cardano-api is published to CHaP):

  * 'source-repository-package' pointing at the PR branch so CI can
    build against the unpublished API.
  * Per-package '-Wwarn=deprecations -Wwarn=unused-imports' for
    cardano-cli. The PR branch is several commits ahead of
    cardano-api-11.1.0.0 and surfaces unrelated TxBody/TxBodyContent
    deprecations (cardano-api PR #1200) plus a redundant
    'Cardano.Ledger.Core' import in 'Cardano.CLI.Read' that became
    visible after upstream re-exports widened. Both are separate
    cleanups out of scope for this PR.
Drop deprecated TxBody from TxBodyFile phantom
`TxBodyFile` was a `File (TxBody ())` whose phantom payload was only
ever used as a file-tag for option/parser plumbing; the bytes on disk
do not depend on it. Replace `TxBody ()` with a fresh empty
`TxBodyTag` data type so the alias no longer references the deprecated
`TxBody` from cardano-api PR #1200.

No on-disk format change. No call-site change beyond the alias itself.
Use Exp.Certificate constructors in cardano-cli
The four call sites that produced an Exp.Certificate via helpers in
Cardano.Api.Compatible.Certificate (makeStakePoolRegistrationCertificate,
makeStakeAddressRegistrationCertificate, makeMIRCertificate,
makeGenesisKeyDelegationCertificate) now build the ledger TxCert
directly and wrap it in Exp.Certificate. This severs cardano-cli's
dependency on those Compatible helpers and lets cardano-api eventually
deprecate them along with the old Certificate type.

Era-varying inputs (StakeRegistrationRequirements, Delegatee type
families) are inlined at each callsite. MIR and GenesisKeyDelegation
certificates remain pinned to BabbageEra since their on-chain
serialization is uniform across Shelley->Babbage.

For stake address registration the per-era case dispatches between
shelleyToBabbageReg (pre-Conway, no deposit, uses
ShelleyEraTxCert.mkRegTxCert) and createRegistrationCertificate
(Conway+), which validates the deposit is present and delegates to
Exp.makeStakeAddressRegistrationCertificate, rendering the era name
via prettyShow for the error message.

Compatible.Certificate.getTxCertWitness is retained where it extracts
the stake-credential witness from a ledger TxCert: it operates on
Ledger.TxCert directly and is independent of the old Certificate type.
A follow-up cardano-api change can re-export it under the experimental
API and that import can then move.