Draw missing pieces by splitting start_edge and stop_edge. Unfortunately PostGIS is having troubles with splitting line by a point (case of rounding), so you have to draw the line from starting point intersecting cutting edge (I'm drawing line from point of start to point that is in direction of nearest point on line and 2xdistance)
select foo.geom
from (
select (st_dump(
st_split(start_edge.geom_way,
st_makeline(ST_setsrid(ST_makepoint(start_x_4326,start_y_4326),4326),
(st_project(
ST_setsrid(ST_makepoint(start_x_4326,start_y_4326),4326)::geography,
ST_distance(ST_setsrid(ST_makepoint(start_x_4326,start_y_4326),4326)::geography,st_closestpoint(start_edge.geom_way,ST_setsrid(ST_makepoint(start_x_4326,start_y_4326),4326)))*2,
ST_azimuth(ST_setsrid(ST_makepoint(start_x_4326,start_y_4326),4326)::geography,st_closestpoint(start_edge.geom_way,ST_setsrid(ST_makepoint(start_x_4326,start_y_4326),4326)))))::geometry)))).geom as geom) as foo
where st_touches(foo.geom, result.geom)
into add_start_edge;
select foo.geom
from (
select (st_dump(
st_split(stop_edge.geom_way,
st_makeline(ST_setsrid(ST_makepoint(stop_x_4326,stop_y_4326),4326),
(st_project(
ST_setsrid(ST_makepoint(stop_x_4326,stop_y_4326),4326)::geography,
ST_distance(ST_setsrid(ST_makepoint(stop_x_4326,stop_y_4326),4326)::geography,st_closestpoint(stop_edge.geom_way,ST_setsrid(ST_makepoint(stop_x_4326,stop_y_4326),4326)))*2,
ST_azimuth(ST_setsrid(ST_makepoint(stop_x_4326,stop_y_4326),4326)::geography,st_closestpoint(stop_edge.geom_way,ST_setsrid(ST_makepoint(stop_x_4326,stop_y_4326),4326)))))::geometry)))).geom as geom) as foo
where st_touches(foo.geom, result.geom)
into add_stop_edge;