Maybe this:
insert
into yourtable(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10)
select newid()
,a.col2
,a.col3
,a.col4
,a.col5
,a.col6
,a.col7
,a.col8
,'Step 3'
,a.col10
from yourtable as a
where a.col9 in ('Test','Hold','Go')
and not exists (select 1
from yourtable as b
where b.col2=a.col2
and b.col3=a.col3
and b.col4=a.col4
and b.col5=a.col5
and b.col6=a.col6
and b.col7=a.col7
and b.col8=a.col8
and b.col9='Step 3'
and b.col10=a.col10
)
;
or if col1 is defined with "default newid", you can omit col1 like this:
insert
into yourtable(col2,col3,col4,col5,col6,col7,col8,col9,col10)
select a.col2
,a.col3
,a.col4
,a.col5
,a.col6
,a.col7
,a.col8
,'Step 3'
,a.col10
from yourtable as a
where a.col9 in ('Test','Hold','Go')
and not exists (select 1
from yourtable as b
where b.col2=a.col2
and b.col3=a.col3
and b.col4=a.col4
and b.col5=a.col5
and b.col6=a.col6
and b.col7=a.col7
and b.col8=a.col8
and b.col9='Step 3'
and b.col10=a.col10
)
;