Fills the third of pallas-txbuilder's Conway TODOs (after auxiliary_data
+ certificates):
- StagingTransaction gains `voting_procedures: Option<Vec<u8>>` (opaque
CBOR — same Eq-derive workaround as auxiliary_data + certificates)
- Builder methods .voting_procedures(cbor_bytes) + .clear_voting_procedures()
- conway::build_conway_raw decodes via VotingProcedures::decode_fragment
and assigns to TransactionBody.voting_procedures
VotingProcedures is itself a NonEmptyKeyValuePairs<Voter,
NonEmptyKeyValuePairs<GovActionId, VotingProcedure>> map, so callers
pre-assemble the full map and encode once.
Tests:
- voting_procedures_plumb_through_to_tx_body — encode DRepKey vote-Yes
on a synthetic GovActionId, build, decode, assert round-trip
- no_voting_procedures_means_none — negative path
documents the three changes on feat-aux-data:
- pallas-txbuilder auxiliary_data plumbing
- pallas-txbuilder certificates plumbing
- pallas-addresses StakeAddress::new constructor
each tied to the upstream TODO it fills, with test additions noted.
records that aldabra consumes via [patch.crates-io] across all 7
pallas-* crates so cargo resolves the graph consistently.
PR upstream not yet submitted — plan locked in: split into three
separate PRs for review ergonomics.