Thanks RThomas it looks all good.
I found a table which had records added previously using BCP. After BCP had been run the 'sp_addtabletocontents' stored procedure had been used.
I joined that table to the MSmerge_current_partition_mappings table, and found that some items in my table didn't have a corresponding MSmerge_current_partition_mappings record.
It seemed fishy, but the reason was very simple. The records in the table corresponded to a partition that no longer existed. I added the partition back in and closing the publications properties dialog took a while (it would have been adding the new MSmerge_current_partition_mappings records).
After that was done I could see that all records in my table had a corresponding MSmerge_current_partition_mappings record. It all checks out.