Ignore me. I have it working as it should be.
I was rebuilding this function, and forgot to remove the non acf function call later in the file – hence why it was running outside of the form submission.
Thanks @jarvis I’ll give this a shot. I did come up with a “solution” but it’s super hacky and vulnerable.
I wrote some JS to find all completed form elements above the “add row” button, set their attributes to hidden, and updated both display and pointer-events css attributes to none.
Of course, anyone savvy enough to inspect the code can undo all of this and still modify the data, but it’s unlikely.
I’ll give your approach a go though as that’s a lot safer! Thank you.