May 13, 8-9 AM (44)
May 13, 9-10 AM (21)
May 13, 10-11 AM (22)
May 13, 11-12 PM (47)
May 13, 12-1 PM (25)
May 13, 1-2 PM (44)
May 13, 2-3 PM (57)
May 13, 3-4 PM (42)
May 13, 4-5 PM (33)
May 13, 5-6 PM (30)
May 13, 6-7 PM (51)
May 13, 7-8 PM (33)
May 13, 8-9 PM (9)
May 13, 9-10 PM (24)
May 13, 10-11 PM (30)
May 13, 11-12 AM (11)
May 14, 12-1 AM (18)
May 14, 1-2 AM (3)
May 14, 2-3 AM (4)
May 14, 3-4 AM (21)
May 14, 4-5 AM (11)
May 14, 5-6 AM (18)
May 14, 6-7 AM (18)
May 14, 7-8 AM (47)
May 14, 8-9 AM (53)
May 14, 9-10 AM (35)
May 14, 10-11 AM (20)
May 14, 11-12 PM (114)
May 14, 12-1 PM (54)
May 14, 1-2 PM (151)
May 14, 2-3 PM (32)
May 14, 3-4 PM (17)
May 14, 4-5 PM (14)
May 14, 5-6 PM (38)
May 14, 6-7 PM (12)
May 14, 7-8 PM (22)
May 14, 8-9 PM (37)
May 14, 9-10 PM (35)
May 14, 10-11 PM (27)
May 14, 11-12 AM (14)
May 15, 12-1 AM (18)
May 15, 1-2 AM (15)
May 15, 2-3 AM (5)
May 15, 3-4 AM (3)
May 15, 4-5 AM (13)
May 15, 5-6 AM (14)
May 15, 6-7 AM (10)
May 15, 7-8 AM (31)
May 15, 8-9 AM (23)
May 15, 9-10 AM (52)
May 15, 10-11 AM (71)
May 15, 11-12 PM (70)
May 15, 12-1 PM (73)
May 15, 1-2 PM (73)
May 15, 2-3 PM (66)
May 15, 3-4 PM (26)
May 15, 4-5 PM (13)
May 15, 5-6 PM (30)
May 15, 6-7 PM (29)
May 15, 7-8 PM (25)
May 15, 8-9 PM (8)
May 15, 9-10 PM (34)
May 15, 10-11 PM (34)
May 15, 11-12 AM (25)
May 16, 12-1 AM (2)
May 16, 1-2 AM (2)
May 16, 2-3 AM (3)
May 16, 3-4 AM (3)
May 16, 4-5 AM (0)
May 16, 5-6 AM (6)
May 16, 6-7 AM (2)
May 16, 7-8 AM (10)
May 16, 8-9 AM (1)
May 16, 9-10 AM (2)
May 16, 10-11 AM (1)
May 16, 11-12 PM (13)
May 16, 12-1 PM (11)
May 16, 1-2 PM (8)
May 16, 2-3 PM (15)
May 16, 3-4 PM (10)
May 16, 4-5 PM (2)
May 16, 5-6 PM (2)
May 16, 6-7 PM (2)
May 16, 7-8 PM (10)
May 16, 8-9 PM (6)
May 16, 9-10 PM (9)
May 16, 10-11 PM (29)
May 16, 11-12 AM (42)
May 17, 12-1 AM (9)
May 17, 1-2 AM (1)
May 17, 2-3 AM (0)
May 17, 3-4 AM (1)
May 17, 4-5 AM (0)
May 17, 5-6 AM (3)
May 17, 6-7 AM (2)
May 17, 7-8 AM (1)
May 17, 8-9 AM (1)
May 17, 9-10 AM (1)
May 17, 10-11 AM (6)
May 17, 11-12 PM (6)
May 17, 12-1 PM (4)
May 17, 1-2 PM (5)
May 17, 2-3 PM (9)
May 17, 3-4 PM (4)
May 17, 4-5 PM (8)
May 17, 5-6 PM (14)
May 17, 6-7 PM (10)
May 17, 7-8 PM (2)
May 17, 8-9 PM (4)
May 17, 9-10 PM (2)
May 17, 10-11 PM (20)
May 17, 11-12 AM (13)
May 18, 12-1 AM (10)
May 18, 1-2 AM (4)
May 18, 2-3 AM (5)
May 18, 3-4 AM (9)
May 18, 4-5 AM (14)
May 18, 5-6 AM (2)
May 18, 6-7 AM (37)
May 18, 7-8 AM (28)
May 18, 8-9 AM (35)
May 18, 9-10 AM (41)
May 18, 10-11 AM (43)
May 18, 11-12 PM (29)
May 18, 12-1 PM (136)
May 18, 1-2 PM (34)
May 18, 2-3 PM (89)
May 18, 3-4 PM (33)
May 18, 4-5 PM (45)
May 18, 5-6 PM (21)
May 18, 6-7 PM (16)
May 18, 7-8 PM (13)
May 18, 8-9 PM (23)
May 18, 9-10 PM (4)
May 18, 10-11 PM (25)
May 18, 11-12 AM (12)
May 19, 12-1 AM (7)
May 19, 1-2 AM (2)
May 19, 2-3 AM (9)
May 19, 3-4 AM (5)
May 19, 4-5 AM (10)
May 19, 5-6 AM (3)
May 19, 6-7 AM (53)
May 19, 7-8 AM (23)
May 19, 8-9 AM (46)
May 19, 9-10 AM (66)
May 19, 10-11 AM (30)
May 19, 11-12 PM (48)
May 19, 12-1 PM (79)
May 19, 1-2 PM (70)
May 19, 2-3 PM (41)
May 19, 3-4 PM (51)
May 19, 4-5 PM (15)
May 19, 5-6 PM (17)
May 19, 6-7 PM (18)
May 19, 7-8 PM (9)
May 19, 8-9 PM (21)
May 19, 9-10 PM (10)
May 19, 10-11 PM (28)
May 19, 11-12 AM (13)
May 20, 12-1 AM (21)
May 20, 1-2 AM (9)
May 20, 2-3 AM (4)
May 20, 3-4 AM (5)
May 20, 4-5 AM (9)
May 20, 5-6 AM (34)
May 20, 6-7 AM (46)
May 20, 7-8 AM (35)
May 20, 8-9 AM (14)
3,947 commits this week May 13, 2026 - May 20, 2026
refactor(5285): address unsigned builder review feedback
T014: buildLedgerTx now delegates to buildLedgerTxRaw with (Right cs),
removing the duplicate ledger-body construction. The public signature
and output bytes are unchanged; the focused parity spec confirms
mkUnsignedTx and buildLedgerTx still agree byte-for-byte.

T015: drop the local toLedgerCoin alias in
Cardano.Wallet.Shelley.Transaction.Unsigned and import the primitive
Cardano.Wallet.Primitive.Ledger.Convert.toLedgerCoin. toCardanoLovelace
remains in use for ledger Coin conversions in the fee and withdrawal
paths.

T016: add a non-empty assetsToBurn scenario to the ledger
script-witness parity suite, asserting that legacy mkUnsignedTx and
new buildLedgerTx encode the burn into the same ledger MultiAsset
(bodyTxL . mintTxBodyL) and produce equal body CBOR plus script
witnesses. The shared mintBurnFromMintingSources helper now threads
the selection's burn TokenMap instead of dropping it.

Verification:
  nix develop --quiet -c cabal test cardano-wallet-unit:unit -O0 -v0 \
    --test-options '--match="ledger script-witness parity"'
  -> 8 examples, 0 failures (6 prior + new "7. local burn" + property)
  rg -n "Cardano.Wallet.Transaction.(Delegation|Voting)" lib/wallet lib/unit
  -> no matches
  git diff --name-only origin/master...HEAD | rg '^lib/integration/'
  -> no matches

Tasks: T014, T015, T016
fix(sidecar): decouple sidecar from Amaru
C7 left a coupling: although `amaru-prober` now owns the Amaru composer
commands (`parallel_driver_amaru_started.sh`, `finally_amaru_started.sh`)
and the marker-derived setup-complete signal, the generic `sidecar`
still imported the Amaru contract via three env vars
(`AMARU_STARTUP_REQUIRED=true`, `AMARU_STARTUP_DIR`, `AMARU_RELAYS`),
mounted `amaru-startup:/amaru-startup:ro`, and ran `wait_for_amaru_startup`
inside `signal_ready` so that the sidecar's own setup-complete fired
only after every relay marker existed. That left two services both
gating Antithesis setup on Amaru and forced the sidecar source to know
about Amaru relay names, so the sidecar image could not be reused
unchanged across non-Amaru profiles.

Strip the Amaru contract from `components/sidecar/sidecar.sh`: drop the
`AMARU_STARTUP_REQUIRED` / `AMARU_STARTUP_DIR` / `AMARU_RELAYS` env
defaults, drop the `AMARU_RELAYS` validation case, delete the
`wait_for_amaru_startup` function and its call site in `signal_ready`.
The sidecar now signals setup-complete as soon as every cardano-node
producer responds to `cardano-cli ping --tip`, with no knowledge of any
relay topology beyond the convergence fleet.

Remove the matching wiring from both Amaru epoch profiles
(`testnets/cardano_amaru_epoch240/docker-compose.yaml`,
`testnets/cardano_amaru_epoch360/docker-compose.yaml`): drop the three
`AMARU_*` env vars from the sidecar service, drop the
`amaru-startup:/amaru-startup:ro` volume mount, and rewrite the leading
comment to state plainly that sidecar is Amaru-agnostic in those
profiles. `amaru-prober` continues to own the marker volume
read-only and the `/opt/antithesis/test/v1/amaru/` composer tree.

The base `cardano_amaru` profile is out of scope: it pins an older
sidecar image (`:fb26cec`) that still carries the Amaru composer command
inside `convergence/` and has no `amaru-prober` service; its own
migration is a separate slice. Update the operator-facing docs that
described the old sidecar marker-wait —
`testnets/cardano_amaru_epoch240/README.md`,
`testnets/cardano_amaru_epoch360/README.md`, and
`docs/testnets/cardano-amaru.md` — to attribute the marker-derived
setup-complete to `amaru-prober` in the epoch profiles. The committed
sidecar pin stays at `:18c836d` so moog's repository-based asset
validation keeps resolving; the orchestrator can bump the pin to the
HEAD-built sidecar tag once `publish-images.yaml` publishes it.

Refs #154
Tasks: C8

Verification:
- bash -n components/sidecar/sidecar.sh
- grep -rn -i amaru components/sidecar/ → empty
- INTERNAL_NETWORK=false docker compose -f
  testnets/cardano_amaru_epoch240/docker-compose.yaml config -q
- INTERNAL_NETWORK=false docker compose -f
  testnets/cardano_amaru_epoch360/docker-compose.yaml config -q
- Rendered sidecar service block for both epoch profiles contains no
  AMARU_* env and no amaru-startup mount; rendered amaru-prober block
  still carries AMARU_STARTUP_DIR, AMARU_RELAYS, and
  amaru-startup:/amaru-startup:ro
- nix build components/sidecar#docker-image → docker-image-sidecar.tar.gz;
  loaded as sidecar:b3b99bb-dirty. Inside the image, /bin/sidecar
  contains zero amaru references and /opt/antithesis/test/v1/ contains
  only the convergence/ tree (no amaru/)
- nix build components/amaru-prober#docker-image → loaded as
  amaru-prober:b3b99bb-dirty. /opt/antithesis/test/v1/amaru/ ships
  parallel_driver_amaru_started.sh, finally_amaru_started.sh, and
  helper_sdk_lib.sh, all executable, all bash -n clean. With
  AMARU_STARTUP_DIR=/tmp/markers and both relay marker files present,
  parallel_driver_amaru_started.sh and finally_amaru_started.sh both
  exit 0 (MAX_ATTEMPTS=1)