My heart started pounding as I initially read your post.
However, I began to relax a bit midway through as CJ’s response to the word “prick” was revealed.
What I see here is a significant peeling away of yet another layer.
As you already know, sometimes the mere act of bringing inner thoughts or feelings out into the atmosphere, onto the stage of the verbal ballet, is a positive step for the process of healing.
Perhaps on a subconscious level, you instinctively stepped in at a time when the opportunity presented itself, and lanced his wound.
CJ said something that jumped out at me,
Quote: "...it’s hard to deal with…and it doesn’t matter what ANYONE else thinks or feels…it’s how I feel”.
You responded (as I would have) by including yourself in the breakdown and by trying to help him see the measure of your forgiveness and your acceptance. I say ‘excellent’ and I believe he 'got it' and believes you.
Now I would make a suggestion to you here.
Because you have been (and continue to be), forgiving and magnanimous - the spotlight is clearly on him.
Perhaps the greatest help you can offer now is to LET him own his ghosts by simply validating whatever he shares with you.
A person with that kind of moral fiber most often has a need for some kind of repentance in order to move on.
If nobody else is going to beat him up…well then… he’ll just have to do it himself.
Moreover, as you and I do not believe that it is our place to punish, we are left with few options other than giving our S the room and the right to do so for themselves.
I see much hope here.
By the way, that letter you got from CJ is just what I've been wishing for as a present from my H. I may never get one, but I’m sure glad you did.