Solution
I may have located the source of - but not the reason for - this problem.
The incorrectly-behaving included a file (the database connection file, not that that matters) using VIRTUAL. I changed it to a simple INCLUDE and the error went away and teh add to cart button showed the view cart page.
The page that behaved correctly used REQUIRE_ONCE.
Include gives a warning if it fails. Require is fatal.
The urgency has gone, but I would still be curious in any comments.