Brings in 79 upstream commits via merge-upstream branch. Conflicts resolved
by taking the merge-upstream version, which contains all triaged fork-vs-upstream
decisions from the upstream-merge skill workflow.
See merge commit fe3b1ee for the detailed triage breakdown of the 15 both-changed
files (7 keep deleted, 1 keep local, 1 restore from upstream, 6 merge both).