Stuck trying to fix Thrumming Stone

On my last pull-request I added the card Thrumming Stone and the "Ripple" effect.
However, I discovered later that although my implementation works fine, it does not behave EXACTLY according to the rules.
In my old implementation, Thrumming Stone HAS (itself) a triggered ability that triggers when spells are cast, and this ability causes a ripple effect (which targets the spell that was cast).
However, according to the rules and the text of the card, Thrumming Stone's effect should be a STATIC CONTINUOUS EFFECT that applies to all spells that are cast, and GIVES them a Triggered Ability (that triggers as they are cast) which is Ripple.
I can't think right now of a scenario where this distinction would matter, but I want to adher to the rules rather than do a workaround.
So, to fix this, I did the following:
1. Created a "RippleAbility" (triggered ability) to wrap the "RippleEffect"
2. Made the Thrumming Stone have a static ability (instead of a triggered ability) which has a continuous effect (rather than a one-shot effect) that adds the RippleAbility to every (non-copy) spell on the stack. I used the example of Chief Engineer to do this, since it is essentially the same sort of behavior except that it gives spells "Convoke" instead of "Ripple".
So -
it works when a spell is cast from the hand,
however - it does not work correctly when a spell is revealed and cast (as part of the Ripple effect) from the library.
I've been trying to debug this for several hours and have yet come to any useful conclusion on why this is happening...
What I'm basically seeing is that ALL the trigger-checks for the RippleAbility always have the original card that was cast from the hand as the source of the ability, and this souce is never the card cast from the library.
However, it does seem like the triggered ability is added correctly (by the Thrumming Stone continuous effect) to the spell on the stack that was cast from the library - so I'm unsure why this is not working.
My suspicion is that it might be an issue of timing (i.e. the trigger being added after the point in time where it would have been triggered and checked), but I couldn't manage to figure out if that's the case or not - and on the face of it, it seemed like this isn't the case.
I would greatly appreciate if anyone could take a look at my code and maybe suggest a solution
My fork can be found in Github at:
https://.../klayhamn/mage
Thanks
However, I discovered later that although my implementation works fine, it does not behave EXACTLY according to the rules.
In my old implementation, Thrumming Stone HAS (itself) a triggered ability that triggers when spells are cast, and this ability causes a ripple effect (which targets the spell that was cast).
However, according to the rules and the text of the card, Thrumming Stone's effect should be a STATIC CONTINUOUS EFFECT that applies to all spells that are cast, and GIVES them a Triggered Ability (that triggers as they are cast) which is Ripple.
I can't think right now of a scenario where this distinction would matter, but I want to adher to the rules rather than do a workaround.
So, to fix this, I did the following:
1. Created a "RippleAbility" (triggered ability) to wrap the "RippleEffect"
2. Made the Thrumming Stone have a static ability (instead of a triggered ability) which has a continuous effect (rather than a one-shot effect) that adds the RippleAbility to every (non-copy) spell on the stack. I used the example of Chief Engineer to do this, since it is essentially the same sort of behavior except that it gives spells "Convoke" instead of "Ripple".
So -
it works when a spell is cast from the hand,
however - it does not work correctly when a spell is revealed and cast (as part of the Ripple effect) from the library.
I've been trying to debug this for several hours and have yet come to any useful conclusion on why this is happening...
What I'm basically seeing is that ALL the trigger-checks for the RippleAbility always have the original card that was cast from the hand as the source of the ability, and this souce is never the card cast from the library.
However, it does seem like the triggered ability is added correctly (by the Thrumming Stone continuous effect) to the spell on the stack that was cast from the library - so I'm unsure why this is not working.
My suspicion is that it might be an issue of timing (i.e. the trigger being added after the point in time where it would have been triggered and checked), but I couldn't manage to figure out if that's the case or not - and on the face of it, it seemed like this isn't the case.
I would greatly appreciate if anyone could take a look at my code and maybe suggest a solution

My fork can be found in Github at:
https://.../klayhamn/mage
Thanks