Record Signal after Threshold Reach in GNU Radio
Sounds like you have a very workable approach:

Write a GNU Radio, Embedded Python, out-of-tree Python or C++, doesn't matter, which:


is a general block (not a sync_block)
has a member property triggered or similar, which is initialized to False in the constructor
has a member property threshold or similar, which is initialized to the value passed as constructor argument in the constructor
If triggered, then


copy input to output (specifically, min(len(input_items[0], noutput_items)), because in a general block, there's no guarantee that in- and output buffers have the same free space)
consume_each the number of items copied (tell GNU Radio you've processed this much input), and
return the number of items copied (you produced this much output).

else,


look for a super-threshold value in the input (numpy.any(numpy.abs(input_items[0]) &gt; threshold)
if no values are found:


consume_each(len(input_items[0]))
return 0 (you didn't produce any output)

if a value is found:


triggered = True
find the position of the first value larger than the threshold
consume_each as much items as are before that position
return 0 (you didn't produce any output, but your work method will be called again, with triggered set)




... and connect its output to a "Head" block, set to pass 10000 items; connect that to your file sink.