Thank you for the response! I've applied your advice where I could, but I'm running into a couple of snags—show: won't parse and for whatever reason that |hiddentext) tag doesn't take. First off, for the sake of clarity, here's the code as it stands now, first in the main passage:
The table is [filled nearly end-to-end with cheese logs and crackers]<food1|, laden with [pendulous grapes]<food2|, and [creaks beneath the mighty load of the centerpiece: a golden-brown roast turkey]<food3|.
|hiddenlink)[ [[You're stuffed to the gills.->Digest1]]]
(mouseover-replace: ?food1)[coated with a fine dusting of crumbs and morsels outside your reach(replace: ?workarea)[(display: "Eaten Logic")]]
(mouseover-replace: ?food2)[skeletonized stems(replace: ?workarea)[(display: "Eaten Logic")]]
(mouseover-replace: ?food3)[strewn with bones picked clean and cracked open for precious marrow (replace: ?workarea)[(display: "Eaten Logic")]]
and in the child (I left out setting $eaten to 0; I have that set in a startup passage):
(set: $eaten to it + 1)
(if: $eaten is 3)[(show: ?hiddenlink)]
I left out the spacing and tabulation in your example formatting because in the initial run it was throwing off the formatting of the passage text—presumably there's a trick there I'm not grasping.
In any case, when I try to run the game as-written, the link that's supposed to be hidden, as well as the |hiddenlink) tag, are plainly visible, and I get this error back:
"I can't run the macro 'show:' because it doesn't exist."