Mutation testing checks whether your tests notice when the code changes. Kill every mutation and you know the suite cares about the decisions the code makes.

You can still be confidently wrong.

Suppose the code marks an invoice overdue thirty days after it was issued. The tests assert that exact rule and mutation testing confirms they fail when the calculation changes. Everything works perfectly, except the contract says payment is due thirty days after delivery.

No automated change to the code can discover that semantic gap. The expected behaviour has to enter the system through somebody who understands the agreement and an example precise enough to test.

This is where specification scenarios earn their place. Put the issue date and delivery date in the example, then state when the invoice becomes overdue. The test can now protect a domain decision instead of an implementation somebody happened to write.