os.IsNotExist does not recognize fs.ErrNotExist when wrapped by an fs.FS implementation. Switch to errors.Is(err, fs.ErrNotExist) so the "file not found" check works for both os.Open and fs.FS.Open.