One of my test cases is breaking in 4.12.1, presumably because of the new tree copying behavior. The issue is still present in 4.12.2. I'm not sure how to describe this well enough to turn into a ticket (assuming it's a bug), but here is a simple reproduction:
from bs4 import BeautifulSoup
html = "<ul></ul><li><span>1</span><span>2</span></li>"
soup = BeautifulSoup(html, "lxml")
ul_tag = soup.ul
li_tag =
soup.lili_tag.contents = li_tag.contents[1:]
li_tag.previous_sibling.append(li_tag)
print(soup)
# Output in 4.12.0: `<html><body><ul><li><span>2</span></li></ul></body></html>`
# Output in 4.12.2: `<html><body><ul><li><span>1</span><span>2</span></li></ul></body></html>`