My decal placing code essentially boils down to this:

function SWEP:PrimaryAttack()
   local tr = util.TraceLine({start = self:GetOwner():GetShootPos(), endpos = self:GetOwner():GetShootPos() + self:GetOwner():EyeAngles():Forward() * 64, filter = self:GetOwner()})
   if (IsFirstTimePredicted()) then
      util.Decal("ManhackCut", tr.HitPos - tr.HitNormal, tr.HitPos + tr.HitNormal, self:GetOwner())
   self:SetNextPrimaryFire(CurTime() + 10)
The decal seems to appear ~3 times, but is placed in quick succession over a period of about half a second. I overwrote util.Decal just to make sure nothing else was running it multiple times, and surely enough it was printed once serverside and once clientside. Tests were done in a listen server, and appears this way for the weapon owner. I did not check if other player's saw the same effect.

It looks like there was an attempt to fix this behaviour by Willox, but Robotboy claimed that he never added anything of the sort: