And there will always be this tension between specification and implementation.
Any sufficiently complete specification inevitably takes on the flaws inherent with implementation.
But we can still make rough cuts, deciding if a bug is challenging design/deployment assumptions or revealing new ones.