Preserve app mutation keys through shared action runs

Closed
TE
18d ago
+3538-60

App action retries lost their original mutation key before reaching the shared router, allowing duplicate execution. Forward the provider's key unchanged; params cannot replace the key or origin.

Validation: all four regression methods pass on the reviewed fleet, covering replay, changed-intent conflicts, daemon command keys and keyless calls. The same regressions fail before the fix. Replay remains limited to the existing router cache lifetime.

Stacked on #21414.

Changelog

Fixed: App action retries retain their original mutation key.