Home / Input Output / cardano-wallet
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 (1)
May 13, 9-10 AM (1)
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 (1)
May 13, 3-4 PM (0)
May 13, 4-5 PM (0)
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 (0)
May 14, 7-8 PM (0)
May 14, 8-9 PM (0)
May 14, 9-10 PM (0)
May 14, 10-11 PM (0)
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 (0)
May 15, 12-1 PM (0)
May 15, 1-2 PM (0)
May 15, 2-3 PM (0)
May 15, 3-4 PM (0)
May 15, 4-5 PM (0)
May 15, 5-6 PM (0)
May 15, 6-7 PM (0)
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 (0)
May 18, 2-3 PM (0)
May 18, 3-4 PM (1)
May 18, 4-5 PM (0)
May 18, 5-6 PM (0)
May 18, 6-7 PM (0)
May 18, 7-8 PM (0)
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 (1)
May 19, 7-8 AM (0)
May 19, 8-9 AM (2)
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 (1)
May 19, 2-3 PM (0)
May 19, 3-4 PM (0)
May 19, 4-5 PM (0)
May 19, 5-6 PM (0)
May 19, 6-7 PM (0)
May 19, 7-8 PM (0)
May 19, 8-9 PM (0)
May 19, 9-10 PM (0)
May 19, 10-11 PM (0)
May 19, 11-12 AM (0)
May 20, 12-1 AM (0)
May 20, 1-2 AM (0)
May 20, 2-3 AM (0)
8 commits this week May 13, 2026 - May 20, 2026
feat(5288): script-witness parity in Transaction.Ledger
Extend the ledger-native transaction builder
(`Cardano.Wallet.Shelley.Transaction.Ledger`) so it accepts every
script-witness shape currently consumed by the legacy
`Cardano.Wallet.Shelley.Transaction.mkUnsignedTx`:

  * native-script spending witnesses (`Map TxIn (Script KeyHash)`),
  * an optional staking script for withdrawals / certificates,
  * mint/burn `ScriptSource` values (local script and reference
    input), and
  * an output-attached reference script.

A new record `ScriptWitnesses` carries the four fields through
`buildLedgerTx` and `buildLedgerTxRaw` with a defaultable
`noScriptWitnesses` value; the two production call sites in this
module (`mkTransaction`, `constructUnsignedTxLedger`) and the three
pre-existing test call sites in `ledgerMintPlumbingSpec'` pass
`noScriptWitnesses` and remain behaviourally unchanged. The new
helper `installScriptWitnesses` sets the matching ledger lenses:
`referenceInputsTxBodyL` from `Right (ReferenceInput …)` mint
sources, the first-output `referenceScriptTxOutL` from
`swReferenceScript`, and `witsTxL . scriptTxWitsL` from
`swNativeInputs` values, `swStakingScript`, and local mint scripts
deduplicated to one witness per token policy id to match the legacy
`TxMintValue` merge.

A new `describe "ledger script-witness parity"` block in
`TransactionLedgerSpec` proves byte-for-byte equality between the
legacy and new builders in the recent era (Conway) across six
enumerated scenarios (US1 acceptance criteria 1-6 from spec.md)
and one bounded QuickCheck property
(`prop_buildLedgerTx_matches_mkUnsignedTx_on_script_witnesses`,
`withMaxSuccess 100`) that mixes random selections, mint sources,
staking scripts, and output reference scripts. Each comparison
asserts both body-CBOR equality (`serialize (eraProtVerLow @Conway)
(tx ^. bodyTxL)`) and witness-set equality
(`tx ^. witsTxL . scriptTxWitsL`). The legacy body is lifted to a
ledger `Tx Conway` via `fromCardanoApiTx . Cardano.makeSignedTransaction []`.

Dijkstra remains `pendingWith "TODO: Dijkstra"` (per #5209).
Plutus scripts remain out of scope. `mkUnsignedTx` and
`mkUnsignedTransaction` are unchanged.

Spec: specs/008-script-witness-parity/{spec,plan,data-model,research,quickstart}.md

Tasks: T010, T011, T012, T013
docs(5288): tasks for script-witness parity slice
One bisect-safe implementation slice folds T010 (RED: six failing
parity scenarios in TransactionLedgerSpec), T011 (GREEN:
ScriptWitnesses extension + plumbing in Transaction/Ledger.hs +
default updates at all five call sites), and T012 (regression
re-run of the broader TransactionLedger pattern) into a single
subagent commit. The brief in tasks.md is self-contained — the
subagent loads no process skill.

T000-T002 (bootstrap + spec + plan stops) are already done.
T020-T023 are orchestrator-owned finalisation chores (gate
re-run, PR body refresh, finalization audit, drop gate.sh +
mark ready) and do not require a subagent.
docs(5288): plan script-witness parity slice
One bisect-safe slice extends Transaction.Ledger with a
ScriptWitnesses carrier (native inputs, staking script, mint
sources, output reference script), plumbs it into the ledger
body and witness-set lenses listed in data-model.md, and proves
body+wits byte-equality against the legacy mkUnsignedTx route
on the six representative scenarios from spec.md. mkUnsignedTx
and mkUnsignedTransaction stay byte-identical to origin/master;
lib/integration/** is not touched; Dijkstra remains pendingWith.

research.md records the body-field map, the witness-set lens
choice (witsTxL . scriptTxWitsL at unsigned-build time), the
single-record API extension, and why the live-boundary
diagnostic returns "none" for this slice (pure-CBOR comparison
of two builders, no system boundary to cross).
docs(5243): spec, plan, research, tasks for ledger minting
Smallest first slice toward unblocking issue #5285 Story 1: plumb a
mint set through buildLedgerTx and buildLedgerTxRaw, translate the
wallet's (TokenMap, TokenMap) mint/burn pair to a single signed
ledger MultiAsset, and feed the real value from mkTransactionLedger
and constructUnsignedTxLedger. Script witnesses remain out of scope.

Artifacts: spec.md (2 P1 stories, 9 FRs, 5 SCs), plan.md (113 lines,
constitution pass, 6 design decisions), research.md (Phase 0 from
Explore agent: signed/unsigned asymmetry between TokenMap and
MultiAsset is the load-bearing surprise), data-model.md (netting
rule for mint/burn overlap), contracts/ledger-mint-translation.md
(P1-P8 converter properties, B1-B3 builder properties), tasks.md
(15 tasks across 5 phases mapping to three bisect-safe commits),
requirements checklist, quickstart for reviewers.
docs(5285): correct Story 1 scope — Wallet.hs is already migrated
Pre-flight grep on the implementation pass showed lib/wallet/src/Cardano/
Wallet.hs already imports certificateFrom{Delegation,Voting}ActionLedger
from Cardano.Wallet.Shelley.Transaction.Ledger and its 4 callsites at
2729, 2738, 3533, 3542 already use the *Ledger variants. The Phase-0
research had it wrong; plan.md, quickstart.md, and tasks.md inherited
the error. Spec.md was correct (line 18 already named the single
caller).

Slice scope shrinks from 'edit two files + delete two + cabal prune' to
'edit Shelley/Transaction.hs + delete two + cabal prune'. SC-001/SC-002,
FR-003, and the byte-equivalence proof are unaffected.
docs(5285): plan, research, data-model, contracts, quickstart
Phase 0 + Phase 1 speckit artifacts for issue #5285.

- plan.md (109 lines): three vertical slices, constitution check clean,
  Story 1 unblocked, Stories 2-3 blocked on Transaction.Ledger
  prerequisite ACs in #5243.
- research.md: full cardano-api symbol inventory in
  Shelley/Transaction.hs (~40 symbols across 4 imports), per-Story
  grouping, ledger replacements located.
- data-model.md: cardano-api -> ledger type map per Story.
- contracts/module-interface-invariants.md: exports that MUST stay
  signature-stable across all three slices.
- quickstart.md: ordered implementation walkthrough for Story 1
  (the unblocked slice; 5 callsites in Shelley/Transaction.hs,
  4 in Cardano/Wallet.hs, plus cabal prune and helper deletion).