Zangief trigger doesn't cause opponent to sacrifice anything
Trigger:
After resolution:
This happened repeatedly with my other opponent as well.
so the ability triggered, went on the stack, and resolved, but the opponent was never prompted to sacrifice anything?
Yes, just confirmed with two clients, opponent's never prompted to sacrifice when the ability resolves.
Extra weird: I just had Zangief fight Zangief (simplest repro steps were both players using that deck) and the player that initiated the fight was prompted to sacrifice a noncreature, but the other player was not. May be related to the creature dying and LKI?
Confirmed, if both Zangiefs are indestructible then both players are asked to sacrifice a permanent.
this seems related to #9129 then
This is completely unrelated to #9129. That was an issue with the damage batch events. Zangief triggers on individual damage events.
Can you check this with your fix for #9129? I suspect that firing damage triggers before SBAs are checked may have fixed this issue.
I just checked and there is no change at all. That commit affected batch damage events. Individual damage events are never queued up, they are directly fired inside PermanentImpl.doDamage via Game.fireEvent. Zangief uses DealsDamageToACreatureTriggeredAbility which triggers on individual damage events (DAMAGED_PERMANENT).
I think there are (at least) two separate bugs here. The screenshot appears to show Zangief dealing damage during the main phase, presumably via a fight spell (what is visible of the log pane shows "M1"). In that situation, Zangief's ability triggers but doesn't do anything on resolving. When Zangief deals excess combat damage, however, his ability doesn't trigger at all.
[[Maarika, Brutal Gladiator]]
Reported again in discord today
Maarika, Brutal Gladiator - (Gatherer) (Scryfall) (EDHREC)
{2}{B}{R}{G} Legendary Creature — Human Warrior 7/4 Maarika, Brutal Gladiator must be blocked if able. As long as it's your turn, Maarika has indestructible. Whenever Maarika deals damage to a creature, if that creature was dealt excess damage this turn, that creature's controller sacrifices a noncreature, nonland permanent.
Possible reason: if you need permanent's info only (not real permanent) then getTargetPointer().getFirst can be replaced by getTargetPointer().getFirstTargetPermanentOrLKI. Maarika needs only controller info, so it must use LKI (don't test that fix).