The bug
When a silk touch tool runs out of durability, the "empty slot" continues to act as though it has silk touch. Breaking blocks while this slot is selected will result in silk touch drops, until it changes.
How to reproduce
Run
/give @p diamond_shovel{Damage:1560,Enchantments:[{id:silk_touch,lvl:1s}]}
Break some grass in survival mode, the shovel will break
Continue breaking grass, silk touch will continue working even though the shovel is gone
Switching to another slot or updating item in selected slot will result in the correct drop
Do you use any datapacks?